uclibc-git-20140313.patch 4.1 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148711497115071151711527115371154711557115671157711587115971160711617116271163711647116571166711677116871169711707117171172711737117471175711767117771178711797118071181711827118371184711857118671187711887118971190711917119271193711947119571196711977119871199712007120171202712037120471205712067120771208712097121071211712127121371214712157121671217712187121971220712217122271223712247122571226712277122871229712307123171232712337123471235712367123771238712397124071241712427124371244712457124671247712487124971250712517125271253712547125571256712577125871259712607126171262712637126471265712667126771268712697127071271712727127371274712757127671277712787127971280712817128271283712847128571286712877128871289712907129171292712937129471295712967129771298712997130071301713027130371304713057130671307713087130971310713117131271313713147131571316713177131871319713207132171322713237132471325713267132771328713297133071331713327133371334713357133671337713387133971340713417134271343713447134571346713477134871349713507135171352713537135471355713567135771358713597136071361713627136371364713657136671367713687136971370713717137271373713747137571376713777137871379713807138171382713837138471385713867138771388713897139071391713927139371394713957139671397713987139971400714017140271403714047140571406714077140871409714107141171412714137141471415714167141771418714197142071421714227142371424714257142671427714287142971430714317143271433714347143571436714377143871439714407144171442714437144471445714467144771448714497145071451714527145371454714557145671457714587145971460714617146271463714647146571466714677146871469714707147171472714737147471475714767147771478714797148071481714827148371484714857148671487714887148971490714917149271493714947149571496714977149871499715007150171502715037150471505715067150771508715097151071511715127151371514715157151671517715187151971520715217152271523715247152571526715277152871529715307153171532715337153471535715367153771538715397154071541715427154371544715457154671547715487154971550715517155271553715547155571556715577155871559715607156171562715637156471565715667156771568715697157071571715727157371574715757157671577715787157971580715817158271583715847158571586715877158871589715907159171592715937159471595715967159771598715997160071601716027160371604716057160671607716087160971610716117161271613716147161571616716177161871619716207162171622716237162471625716267162771628716297163071631716327163371634716357163671637716387163971640716417164271643716447164571646716477164871649716507165171652716537165471655716567165771658716597166071661716627166371664716657166671667716687166971670716717167271673716747167571676716777167871679716807168171682716837168471685716867168771688716897169071691716927169371694716957169671697716987169971700717017170271703717047170571706717077170871709717107171171712717137171471715717167171771718717197172071721717227172371724717257172671727717287172971730717317173271733717347173571736717377173871739717407174171742717437174471745717467174771748717497175071751717527175371754717557175671757717587175971760717617176271763717647176571766717677176871769717707177171772717737177471775717767177771778717797178071781717827178371784717857178671787717887178971790717917179271793717947179571796717977179871799718007180171802718037180471805718067180771808718097181071811718127181371814718157181671817718187181971820718217182271823718247182571826718277182871829718307183171832718337183471835718367183771838718397184071841718427184371844718457184671847718487184971850718517185271853718547185571856718577185871859718607186171862718637186471865718667186771868718697187071871718727187371874718757187671877718787187971880718817188271883718847188571886718877188871889718907189171892718937189471895718967189771898718997190071901719027190371904719057190671907719087190971910719117191271913719147191571916719177191871919719207192171922719237192471925719267192771928719297193071931719327193371934719357193671937719387193971940719417194271943719447194571946719477194871949719507195171952719537195471955719567195771958719597196071961719627196371964719657196671967719687196971970719717197271973719747197571976719777197871979719807198171982719837198471985719867198771988719897199071991719927199371994719957199671997719987199972000720017200272003720047200572006720077200872009720107201172012720137201472015720167201772018720197202072021720227202372024720257202672027720287202972030720317203272033720347203572036720377203872039720407204172042720437204472045720467204772048720497205072051720527205372054720557205672057720587205972060720617206272063720647206572066720677206872069720707207172072720737207472075720767207772078720797208072081720827208372084720857208672087720887208972090720917209272093720947209572096720977209872099721007210172102721037210472105721067210772108721097211072111721127211372114721157211672117721187211972120721217212272123721247212572126721277212872129721307213172132721337213472135721367213772138721397214072141721427214372144721457214672147721487214972150721517215272153721547215572156721577215872159721607216172162721637216472165721667216772168721697217072171721727217372174721757217672177721787217972180721817218272183721847218572186721877218872189721907219172192721937219472195721967219772198721997220072201722027220372204722057220672207722087220972210722117221272213722147221572216722177221872219722207222172222722237222472225722267222772228722297223072231722327223372234722357223672237722387223972240722417224272243722447224572246722477224872249722507225172252722537225472255722567225772258722597226072261722627226372264722657226672267722687226972270722717227272273722747227572276722777227872279722807228172282722837228472285722867228772288722897229072291722927229372294722957229672297722987229972300723017230272303723047230572306723077230872309723107231172312723137231472315723167231772318723197232072321723227232372324723257232672327723287232972330723317233272333723347233572336723377233872339723407234172342723437234472345723467234772348723497235072351723527235372354723557235672357723587235972360723617236272363723647236572366723677236872369723707237172372723737237472375723767237772378723797238072381723827238372384723857238672387723887238972390723917239272393723947239572396723977239872399724007240172402724037240472405724067240772408724097241072411724127241372414724157241672417724187241972420724217242272423724247242572426724277242872429724307243172432724337243472435724367243772438724397244072441724427244372444724457244672447724487244972450724517245272453724547245572456724577245872459724607246172462724637246472465724667246772468724697247072471724727247372474724757247672477724787247972480724817248272483724847248572486724877248872489724907249172492724937249472495724967249772498724997250072501725027250372504725057250672507725087250972510725117251272513725147251572516725177251872519725207252172522725237252472525725267252772528725297253072531725327253372534725357253672537725387253972540725417254272543725447254572546725477254872549725507255172552725537255472555725567255772558725597256072561725627256372564725657256672567725687256972570725717257272573725747257572576725777257872579725807258172582725837258472585725867258772588725897259072591725927259372594725957259672597725987259972600726017260272603726047260572606726077260872609726107261172612726137261472615726167261772618726197262072621726227262372624726257262672627726287262972630726317263272633726347263572636726377263872639726407264172642726437264472645726467264772648726497265072651726527265372654726557265672657726587265972660726617266272663726647266572666726677266872669726707267172672726737267472675726767267772678726797268072681726827268372684726857268672687726887268972690726917269272693726947269572696726977269872699727007270172702727037270472705727067270772708727097271072711727127271372714727157271672717727187271972720727217272272723727247272572726727277272872729727307273172732727337273472735727367273772738727397274072741727427274372744727457274672747727487274972750727517275272753727547275572756727577275872759727607276172762727637276472765727667276772768727697277072771727727277372774727757277672777727787277972780727817278272783727847278572786727877278872789727907279172792727937279472795727967279772798727997280072801728027280372804728057280672807728087280972810728117281272813728147281572816728177281872819728207282172822728237282472825728267282772828728297283072831728327283372834728357283672837728387283972840728417284272843728447284572846728477284872849728507285172852728537285472855728567285772858728597286072861728627286372864728657286672867728687286972870728717287272873728747287572876728777287872879728807288172882728837288472885728867288772888728897289072891728927289372894728957289672897728987289972900729017290272903729047290572906729077290872909729107291172912729137291472915729167291772918729197292072921729227292372924729257292672927729287292972930729317293272933729347293572936729377293872939729407294172942729437294472945729467294772948729497295072951729527295372954729557295672957729587295972960729617296272963729647296572966729677296872969729707297172972729737297472975729767297772978729797298072981729827298372984729857298672987729887298972990729917299272993729947299572996729977299872999730007300173002730037300473005730067300773008730097301073011730127301373014730157301673017730187301973020730217302273023730247302573026730277302873029730307303173032730337303473035730367303773038730397304073041730427304373044730457304673047730487304973050730517305273053730547305573056730577305873059730607306173062730637306473065730667306773068730697307073071730727307373074730757307673077730787307973080730817308273083730847308573086730877308873089730907309173092730937309473095730967309773098730997310073101731027310373104731057310673107731087310973110731117311273113731147311573116731177311873119731207312173122731237312473125731267312773128731297313073131731327313373134731357313673137731387313973140731417314273143731447314573146731477314873149731507315173152731537315473155731567315773158731597316073161731627316373164731657316673167731687316973170731717317273173731747317573176731777317873179731807318173182731837318473185731867318773188731897319073191731927319373194731957319673197731987319973200732017320273203732047320573206732077320873209732107321173212732137321473215732167321773218732197322073221732227322373224732257322673227732287322973230732317323273233732347323573236732377323873239732407324173242732437324473245732467324773248732497325073251732527325373254732557325673257732587325973260732617326273263732647326573266732677326873269732707327173272732737327473275732767327773278732797328073281732827328373284732857328673287732887328973290732917329273293732947329573296732977329873299733007330173302733037330473305733067330773308733097331073311733127331373314733157331673317733187331973320733217332273323733247332573326733277332873329733307333173332733337333473335733367333773338733397334073341733427334373344733457334673347733487334973350733517335273353733547335573356733577335873359733607336173362733637336473365733667336773368733697337073371733727337373374733757337673377733787337973380733817338273383733847338573386733877338873389733907339173392733937339473395733967339773398733997340073401734027340373404734057340673407734087340973410734117341273413734147341573416734177341873419734207342173422734237342473425734267342773428734297343073431734327343373434734357343673437734387343973440734417344273443734447344573446734477344873449734507345173452734537345473455734567345773458734597346073461734627346373464734657346673467734687346973470734717347273473734747347573476734777347873479734807348173482734837348473485734867348773488734897349073491734927349373494734957349673497734987349973500735017350273503735047350573506735077350873509735107351173512735137351473515735167351773518735197352073521735227352373524735257352673527735287352973530735317353273533735347353573536735377353873539735407354173542735437354473545735467354773548735497355073551735527355373554735557355673557735587355973560735617356273563735647356573566735677356873569735707357173572735737357473575735767357773578735797358073581735827358373584735857358673587735887358973590735917359273593735947359573596735977359873599736007360173602736037360473605736067360773608736097361073611736127361373614736157361673617736187361973620736217362273623736247362573626736277362873629736307363173632736337363473635736367363773638736397364073641736427364373644736457364673647736487364973650736517365273653736547365573656736577365873659736607366173662736637366473665736667366773668736697367073671736727367373674736757367673677736787367973680736817368273683736847368573686736877368873689736907369173692736937369473695736967369773698736997370073701737027370373704737057370673707737087370973710737117371273713737147371573716737177371873719737207372173722737237372473725737267372773728737297373073731737327373373734737357373673737737387373973740737417374273743737447374573746737477374873749737507375173752737537375473755737567375773758737597376073761737627376373764737657376673767737687376973770737717377273773737747377573776737777377873779737807378173782737837378473785737867378773788737897379073791737927379373794737957379673797737987379973800738017380273803738047380573806738077380873809738107381173812738137381473815738167381773818738197382073821738227382373824738257382673827738287382973830738317383273833738347383573836738377383873839738407384173842738437384473845738467384773848738497385073851738527385373854738557385673857738587385973860738617386273863738647386573866738677386873869738707387173872738737387473875738767387773878738797388073881738827388373884738857388673887738887388973890738917389273893738947389573896738977389873899739007390173902739037390473905739067390773908739097391073911739127391373914739157391673917739187391973920739217392273923739247392573926739277392873929739307393173932739337393473935739367393773938739397394073941739427394373944739457394673947739487394973950739517395273953739547395573956739577395873959739607396173962739637396473965739667396773968739697397073971739727397373974739757397673977739787397973980739817398273983739847398573986739877398873989739907399173992739937399473995739967399773998739997400074001740027400374004740057400674007740087400974010740117401274013740147401574016740177401874019740207402174022740237402474025740267402774028740297403074031740327403374034740357403674037740387403974040740417404274043740447404574046740477404874049740507405174052740537405474055740567405774058740597406074061740627406374064740657406674067740687406974070740717407274073740747407574076740777407874079740807408174082740837408474085740867408774088740897409074091740927409374094740957409674097740987409974100741017410274103741047410574106741077410874109741107411174112741137411474115741167411774118741197412074121741227412374124741257412674127741287412974130741317413274133741347413574136741377413874139741407414174142741437414474145741467414774148741497415074151741527415374154741557415674157741587415974160741617416274163741647416574166741677416874169741707417174172741737417474175741767417774178741797418074181741827418374184741857418674187741887418974190741917419274193741947419574196741977419874199742007420174202742037420474205742067420774208742097421074211742127421374214742157421674217742187421974220742217422274223742247422574226742277422874229742307423174232742337423474235742367423774238742397424074241742427424374244742457424674247742487424974250742517425274253742547425574256742577425874259742607426174262742637426474265742667426774268742697427074271742727427374274742757427674277742787427974280742817428274283742847428574286742877428874289742907429174292742937429474295742967429774298742997430074301743027430374304743057430674307743087430974310743117431274313743147431574316743177431874319743207432174322743237432474325743267432774328743297433074331743327433374334743357433674337743387433974340743417434274343743447434574346743477434874349743507435174352743537435474355743567435774358743597436074361743627436374364743657436674367743687436974370743717437274373743747437574376743777437874379743807438174382743837438474385743867438774388743897439074391743927439374394743957439674397743987439974400744017440274403744047440574406744077440874409744107441174412744137441474415744167441774418744197442074421744227442374424744257442674427744287442974430744317443274433744347443574436744377443874439744407444174442744437444474445744467444774448744497445074451744527445374454744557445674457744587445974460744617446274463744647446574466744677446874469744707447174472744737447474475744767447774478744797448074481744827448374484744857448674487744887448974490744917449274493744947449574496744977449874499745007450174502745037450474505745067450774508745097451074511745127451374514745157451674517745187451974520745217452274523745247452574526745277452874529745307453174532745337453474535745367453774538745397454074541745427454374544745457454674547745487454974550745517455274553745547455574556745577455874559745607456174562745637456474565745667456774568745697457074571745727457374574745757457674577745787457974580745817458274583745847458574586745877458874589745907459174592745937459474595745967459774598745997460074601746027460374604746057460674607746087460974610746117461274613746147461574616746177461874619746207462174622746237462474625746267462774628746297463074631746327463374634746357463674637746387463974640746417464274643746447464574646746477464874649746507465174652746537465474655746567465774658746597466074661746627466374664746657466674667746687466974670746717467274673746747467574676746777467874679746807468174682746837468474685746867468774688746897469074691746927469374694746957469674697746987469974700747017470274703747047470574706747077470874709747107471174712747137471474715747167471774718747197472074721747227472374724747257472674727747287472974730747317473274733747347473574736747377473874739747407474174742747437474474745747467474774748747497475074751747527475374754747557475674757747587475974760747617476274763747647476574766747677476874769747707477174772747737477474775747767477774778747797478074781747827478374784747857478674787747887478974790747917479274793747947479574796747977479874799748007480174802748037480474805748067480774808748097481074811748127481374814748157481674817748187481974820748217482274823748247482574826748277482874829748307483174832748337483474835748367483774838748397484074841748427484374844748457484674847748487484974850748517485274853748547485574856748577485874859748607486174862748637486474865748667486774868748697487074871748727487374874748757487674877748787487974880748817488274883748847488574886748877488874889748907489174892748937489474895748967489774898748997490074901749027490374904749057490674907749087490974910749117491274913749147491574916749177491874919749207492174922749237492474925749267492774928749297493074931749327493374934749357493674937749387493974940749417494274943749447494574946749477494874949749507495174952749537495474955749567495774958749597496074961749627496374964749657496674967749687496974970749717497274973749747497574976749777497874979749807498174982749837498474985749867498774988749897499074991749927499374994749957499674997749987499975000750017500275003750047500575006750077500875009750107501175012750137501475015750167501775018750197502075021750227502375024750257502675027750287502975030750317503275033750347503575036750377503875039750407504175042750437504475045750467504775048750497505075051750527505375054750557505675057750587505975060750617506275063750647506575066750677506875069750707507175072750737507475075750767507775078750797508075081750827508375084750857508675087750887508975090750917509275093750947509575096750977509875099751007510175102751037510475105751067510775108751097511075111751127511375114751157511675117751187511975120751217512275123751247512575126751277512875129751307513175132751337513475135751367513775138751397514075141751427514375144751457514675147751487514975150751517515275153751547515575156751577515875159751607516175162751637516475165751667516775168751697517075171751727517375174751757517675177751787517975180751817518275183751847518575186751877518875189751907519175192751937519475195751967519775198751997520075201752027520375204752057520675207752087520975210752117521275213752147521575216752177521875219752207522175222752237522475225752267522775228752297523075231752327523375234752357523675237752387523975240752417524275243752447524575246752477524875249752507525175252752537525475255752567525775258752597526075261752627526375264752657526675267752687526975270752717527275273752747527575276752777527875279752807528175282752837528475285752867528775288752897529075291752927529375294752957529675297752987529975300753017530275303753047530575306753077530875309753107531175312753137531475315753167531775318753197532075321753227532375324753257532675327753287532975330753317533275333753347533575336753377533875339753407534175342753437534475345753467534775348753497535075351753527535375354753557535675357753587535975360753617536275363753647536575366753677536875369753707537175372753737537475375753767537775378753797538075381753827538375384753857538675387753887538975390753917539275393753947539575396753977539875399754007540175402754037540475405754067540775408754097541075411754127541375414754157541675417754187541975420754217542275423754247542575426754277542875429754307543175432754337543475435754367543775438754397544075441754427544375444754457544675447754487544975450754517545275453754547545575456754577545875459754607546175462754637546475465754667546775468754697547075471754727547375474754757547675477754787547975480754817548275483754847548575486754877548875489754907549175492754937549475495754967549775498754997550075501755027550375504755057550675507755087550975510755117551275513755147551575516755177551875519755207552175522755237552475525755267552775528755297553075531755327553375534755357553675537755387553975540755417554275543755447554575546755477554875549755507555175552755537555475555755567555775558755597556075561755627556375564755657556675567755687556975570755717557275573755747557575576755777557875579755807558175582755837558475585755867558775588755897559075591755927559375594755957559675597755987559975600756017560275603756047560575606756077560875609756107561175612756137561475615756167561775618756197562075621756227562375624756257562675627756287562975630756317563275633756347563575636756377563875639756407564175642756437564475645756467564775648756497565075651756527565375654756557565675657756587565975660756617566275663756647566575666756677566875669756707567175672756737567475675756767567775678756797568075681756827568375684756857568675687756887568975690756917569275693756947569575696756977569875699757007570175702757037570475705757067570775708757097571075711757127571375714757157571675717757187571975720757217572275723757247572575726757277572875729757307573175732757337573475735757367573775738757397574075741757427574375744757457574675747757487574975750757517575275753757547575575756757577575875759757607576175762757637576475765757667576775768757697577075771757727577375774757757577675777757787577975780757817578275783757847578575786757877578875789757907579175792757937579475795757967579775798757997580075801758027580375804758057580675807758087580975810758117581275813758147581575816758177581875819758207582175822758237582475825758267582775828758297583075831758327583375834758357583675837758387583975840758417584275843758447584575846758477584875849758507585175852758537585475855758567585775858758597586075861758627586375864758657586675867758687586975870758717587275873758747587575876758777587875879758807588175882758837588475885758867588775888758897589075891758927589375894758957589675897758987589975900759017590275903759047590575906759077590875909759107591175912759137591475915759167591775918759197592075921759227592375924759257592675927759287592975930759317593275933759347593575936759377593875939759407594175942759437594475945759467594775948759497595075951759527595375954759557595675957759587595975960759617596275963759647596575966759677596875969759707597175972759737597475975759767597775978759797598075981759827598375984759857598675987759887598975990759917599275993759947599575996759977599875999760007600176002760037600476005760067600776008760097601076011760127601376014760157601676017760187601976020760217602276023760247602576026760277602876029760307603176032760337603476035760367603776038760397604076041760427604376044760457604676047760487604976050760517605276053760547605576056760577605876059760607606176062760637606476065760667606776068760697607076071760727607376074760757607676077760787607976080760817608276083760847608576086760877608876089760907609176092760937609476095760967609776098760997610076101761027610376104761057610676107761087610976110761117611276113761147611576116761177611876119761207612176122761237612476125761267612776128761297613076131761327613376134761357613676137761387613976140761417614276143761447614576146761477614876149761507615176152761537615476155761567615776158761597616076161761627616376164761657616676167761687616976170761717617276173761747617576176761777617876179761807618176182761837618476185761867618776188761897619076191761927619376194761957619676197761987619976200762017620276203762047620576206762077620876209762107621176212762137621476215762167621776218762197622076221762227622376224762257622676227762287622976230762317623276233762347623576236762377623876239762407624176242762437624476245762467624776248762497625076251762527625376254762557625676257762587625976260762617626276263762647626576266762677626876269762707627176272762737627476275762767627776278762797628076281762827628376284762857628676287762887628976290762917629276293762947629576296762977629876299763007630176302763037630476305763067630776308763097631076311763127631376314763157631676317763187631976320763217632276323763247632576326763277632876329763307633176332763337633476335763367633776338763397634076341763427634376344763457634676347763487634976350763517635276353763547635576356763577635876359763607636176362763637636476365763667636776368763697637076371763727637376374763757637676377763787637976380763817638276383763847638576386763877638876389763907639176392763937639476395763967639776398763997640076401764027640376404764057640676407764087640976410764117641276413764147641576416764177641876419764207642176422764237642476425764267642776428764297643076431764327643376434764357643676437764387643976440764417644276443764447644576446764477644876449764507645176452764537645476455764567645776458764597646076461764627646376464764657646676467764687646976470764717647276473764747647576476764777647876479764807648176482764837648476485764867648776488764897649076491764927649376494764957649676497764987649976500765017650276503765047650576506765077650876509765107651176512765137651476515765167651776518765197652076521765227652376524765257652676527765287652976530765317653276533765347653576536765377653876539765407654176542765437654476545765467654776548765497655076551765527655376554765557655676557765587655976560765617656276563765647656576566765677656876569765707657176572765737657476575765767657776578765797658076581765827658376584765857658676587765887658976590765917659276593765947659576596765977659876599766007660176602766037660476605766067660776608766097661076611766127661376614766157661676617766187661976620766217662276623766247662576626766277662876629766307663176632766337663476635766367663776638766397664076641766427664376644766457664676647766487664976650766517665276653766547665576656766577665876659766607666176662766637666476665766667666776668766697667076671766727667376674766757667676677766787667976680766817668276683766847668576686766877668876689766907669176692766937669476695766967669776698766997670076701767027670376704767057670676707767087670976710767117671276713767147671576716767177671876719767207672176722767237672476725767267672776728767297673076731767327673376734767357673676737767387673976740767417674276743767447674576746767477674876749767507675176752767537675476755767567675776758767597676076761767627676376764767657676676767767687676976770767717677276773767747677576776767777677876779767807678176782767837678476785767867678776788767897679076791767927679376794767957679676797767987679976800768017680276803768047680576806768077680876809768107681176812768137681476815768167681776818768197682076821768227682376824768257682676827768287682976830768317683276833768347683576836768377683876839768407684176842768437684476845768467684776848768497685076851768527685376854768557685676857768587685976860768617686276863768647686576866768677686876869768707687176872768737687476875768767687776878768797688076881768827688376884768857688676887768887688976890768917689276893768947689576896768977689876899769007690176902769037690476905769067690776908769097691076911769127691376914769157691676917769187691976920769217692276923769247692576926769277692876929769307693176932769337693476935769367693776938769397694076941769427694376944769457694676947769487694976950769517695276953769547695576956769577695876959769607696176962769637696476965769667696776968769697697076971769727697376974769757697676977769787697976980769817698276983769847698576986769877698876989769907699176992769937699476995769967699776998769997700077001770027700377004770057700677007770087700977010770117701277013770147701577016770177701877019770207702177022770237702477025770267702777028770297703077031770327703377034770357703677037770387703977040770417704277043770447704577046770477704877049770507705177052770537705477055770567705777058770597706077061770627706377064770657706677067770687706977070770717707277073770747707577076770777707877079770807708177082770837708477085770867708777088770897709077091770927709377094770957709677097770987709977100771017710277103771047710577106771077710877109771107711177112771137711477115771167711777118771197712077121771227712377124771257712677127771287712977130771317713277133771347713577136771377713877139771407714177142771437714477145771467714777148771497715077151771527715377154771557715677157771587715977160771617716277163771647716577166771677716877169771707717177172771737717477175771767717777178771797718077181771827718377184771857718677187771887718977190771917719277193771947719577196771977719877199772007720177202772037720477205772067720777208772097721077211772127721377214772157721677217772187721977220772217722277223772247722577226772277722877229772307723177232772337723477235772367723777238772397724077241772427724377244772457724677247772487724977250772517725277253772547725577256772577725877259772607726177262772637726477265772667726777268772697727077271772727727377274772757727677277772787727977280772817728277283772847728577286772877728877289772907729177292772937729477295772967729777298772997730077301773027730377304773057730677307773087730977310773117731277313773147731577316773177731877319773207732177322773237732477325773267732777328773297733077331773327733377334773357733677337773387733977340773417734277343773447734577346773477734877349773507735177352773537735477355773567735777358773597736077361773627736377364773657736677367773687736977370773717737277373773747737577376773777737877379773807738177382773837738477385773867738777388773897739077391773927739377394773957739677397773987739977400774017740277403774047740577406774077740877409774107741177412774137741477415774167741777418774197742077421774227742377424774257742677427774287742977430774317743277433774347743577436774377743877439774407744177442774437744477445774467744777448774497745077451774527745377454774557745677457774587745977460774617746277463774647746577466774677746877469774707747177472774737747477475774767747777478774797748077481774827748377484774857748677487774887748977490774917749277493774947749577496774977749877499775007750177502775037750477505775067750777508775097751077511775127751377514775157751677517775187751977520775217752277523775247752577526775277752877529775307753177532775337753477535775367753777538775397754077541775427754377544775457754677547775487754977550775517755277553775547755577556775577755877559775607756177562775637756477565775667756777568775697757077571775727757377574775757757677577775787757977580775817758277583775847758577586775877758877589775907759177592775937759477595775967759777598775997760077601776027760377604776057760677607776087760977610776117761277613776147761577616776177761877619776207762177622776237762477625776267762777628776297763077631776327763377634776357763677637776387763977640776417764277643776447764577646776477764877649776507765177652776537765477655776567765777658776597766077661776627766377664776657766677667776687766977670776717767277673776747767577676776777767877679776807768177682776837768477685776867768777688776897769077691776927769377694776957769677697776987769977700777017770277703777047770577706777077770877709777107771177712777137771477715777167771777718777197772077721777227772377724777257772677727777287772977730777317773277733777347773577736777377773877739777407774177742777437774477745777467774777748777497775077751777527775377754777557775677757777587775977760777617776277763777647776577766777677776877769777707777177772777737777477775777767777777778777797778077781777827778377784777857778677787777887778977790777917779277793777947779577796777977779877799778007780177802778037780477805778067780777808778097781077811778127781377814778157781677817778187781977820778217782277823778247782577826778277782877829778307783177832778337783477835778367783777838778397784077841778427784377844778457784677847778487784977850778517785277853778547785577856778577785877859778607786177862778637786477865778667786777868778697787077871778727787377874778757787677877778787787977880778817788277883778847788577886778877788877889778907789177892778937789477895778967789777898778997790077901779027790377904779057790677907779087790977910779117791277913779147791577916779177791877919779207792177922779237792477925779267792777928779297793077931779327793377934779357793677937779387793977940779417794277943779447794577946779477794877949779507795177952779537795477955779567795777958779597796077961779627796377964779657796677967779687796977970779717797277973779747797577976779777797877979779807798177982779837798477985779867798777988779897799077991779927799377994779957799677997779987799978000780017800278003780047800578006780077800878009780107801178012780137801478015780167801778018780197802078021780227802378024780257802678027780287802978030780317803278033780347803578036780377803878039780407804178042780437804478045780467804778048780497805078051780527805378054780557805678057780587805978060780617806278063780647806578066780677806878069780707807178072780737807478075780767807778078780797808078081780827808378084780857808678087780887808978090780917809278093780947809578096780977809878099781007810178102781037810478105781067810778108781097811078111781127811378114781157811678117781187811978120781217812278123781247812578126781277812878129781307813178132781337813478135781367813778138781397814078141781427814378144781457814678147781487814978150781517815278153781547815578156781577815878159781607816178162781637816478165781667816778168781697817078171781727817378174781757817678177781787817978180781817818278183781847818578186781877818878189781907819178192781937819478195781967819778198781997820078201782027820378204782057820678207782087820978210782117821278213782147821578216782177821878219782207822178222782237822478225782267822778228782297823078231782327823378234782357823678237782387823978240782417824278243782447824578246782477824878249782507825178252782537825478255782567825778258782597826078261782627826378264782657826678267782687826978270782717827278273782747827578276782777827878279782807828178282782837828478285782867828778288782897829078291782927829378294782957829678297782987829978300783017830278303783047830578306783077830878309783107831178312783137831478315783167831778318783197832078321783227832378324783257832678327783287832978330783317833278333783347833578336783377833878339783407834178342783437834478345783467834778348783497835078351783527835378354783557835678357783587835978360783617836278363783647836578366783677836878369783707837178372783737837478375783767837778378783797838078381783827838378384783857838678387783887838978390783917839278393783947839578396783977839878399784007840178402784037840478405784067840778408784097841078411784127841378414784157841678417784187841978420784217842278423784247842578426784277842878429784307843178432784337843478435784367843778438784397844078441784427844378444784457844678447784487844978450784517845278453784547845578456784577845878459784607846178462784637846478465784667846778468784697847078471784727847378474784757847678477784787847978480784817848278483784847848578486784877848878489784907849178492784937849478495784967849778498784997850078501785027850378504785057850678507785087850978510785117851278513785147851578516785177851878519785207852178522785237852478525785267852778528785297853078531785327853378534785357853678537785387853978540785417854278543785447854578546785477854878549785507855178552785537855478555785567855778558785597856078561785627856378564785657856678567785687856978570785717857278573785747857578576785777857878579785807858178582785837858478585785867858778588785897859078591785927859378594785957859678597785987859978600786017860278603786047860578606786077860878609786107861178612786137861478615786167861778618786197862078621786227862378624786257862678627786287862978630786317863278633786347863578636786377863878639786407864178642786437864478645786467864778648786497865078651786527865378654786557865678657786587865978660786617866278663786647866578666786677866878669786707867178672786737867478675786767867778678786797868078681786827868378684786857868678687786887868978690786917869278693786947869578696786977869878699787007870178702787037870478705787067870778708787097871078711787127871378714787157871678717787187871978720787217872278723787247872578726787277872878729787307873178732787337873478735787367873778738787397874078741787427874378744787457874678747787487874978750787517875278753787547875578756787577875878759787607876178762787637876478765787667876778768787697877078771787727877378774787757877678777787787877978780787817878278783787847878578786787877878878789787907879178792787937879478795787967879778798787997880078801788027880378804788057880678807788087880978810788117881278813788147881578816788177881878819788207882178822788237882478825788267882778828788297883078831788327883378834788357883678837788387883978840788417884278843788447884578846788477884878849788507885178852788537885478855788567885778858788597886078861788627886378864788657886678867788687886978870788717887278873788747887578876788777887878879788807888178882788837888478885788867888778888788897889078891788927889378894788957889678897788987889978900789017890278903789047890578906789077890878909789107891178912789137891478915789167891778918789197892078921789227892378924789257892678927789287892978930789317893278933789347893578936789377893878939789407894178942789437894478945789467894778948789497895078951789527895378954789557895678957789587895978960789617896278963789647896578966789677896878969789707897178972789737897478975789767897778978789797898078981789827898378984789857898678987789887898978990789917899278993789947899578996789977899878999790007900179002790037900479005790067900779008790097901079011790127901379014790157901679017790187901979020790217902279023790247902579026790277902879029790307903179032790337903479035790367903779038790397904079041790427904379044790457904679047790487904979050790517905279053790547905579056790577905879059790607906179062790637906479065790667906779068790697907079071790727907379074790757907679077790787907979080790817908279083790847908579086790877908879089790907909179092790937909479095790967909779098790997910079101791027910379104791057910679107791087910979110791117911279113791147911579116791177911879119791207912179122791237912479125791267912779128791297913079131791327913379134791357913679137791387913979140791417914279143791447914579146791477914879149791507915179152791537915479155791567915779158791597916079161791627916379164791657916679167791687916979170791717917279173791747917579176791777917879179791807918179182791837918479185791867918779188791897919079191791927919379194791957919679197791987919979200792017920279203792047920579206792077920879209792107921179212792137921479215792167921779218792197922079221792227922379224792257922679227792287922979230792317923279233792347923579236792377923879239792407924179242792437924479245792467924779248792497925079251792527925379254792557925679257792587925979260792617926279263792647926579266792677926879269792707927179272792737927479275792767927779278792797928079281792827928379284792857928679287792887928979290792917929279293792947929579296792977929879299793007930179302793037930479305793067930779308793097931079311793127931379314793157931679317793187931979320793217932279323793247932579326793277932879329793307933179332793337933479335793367933779338793397934079341793427934379344793457934679347793487934979350793517935279353793547935579356793577935879359793607936179362793637936479365793667936779368793697937079371793727937379374793757937679377793787937979380793817938279383793847938579386793877938879389793907939179392793937939479395793967939779398793997940079401794027940379404794057940679407794087940979410794117941279413794147941579416794177941879419794207942179422794237942479425794267942779428794297943079431794327943379434794357943679437794387943979440794417944279443794447944579446794477944879449794507945179452794537945479455794567945779458794597946079461794627946379464794657946679467794687946979470794717947279473794747947579476794777947879479794807948179482794837948479485794867948779488794897949079491794927949379494794957949679497794987949979500795017950279503795047950579506795077950879509795107951179512795137951479515795167951779518795197952079521795227952379524795257952679527795287952979530795317953279533795347953579536795377953879539795407954179542795437954479545795467954779548795497955079551795527955379554795557955679557795587955979560795617956279563795647956579566795677956879569795707957179572795737957479575795767957779578795797958079581795827958379584795857958679587795887958979590795917959279593795947959579596795977959879599796007960179602796037960479605796067960779608796097961079611796127961379614796157961679617796187961979620796217962279623796247962579626796277962879629796307963179632796337963479635796367963779638796397964079641796427964379644796457964679647796487964979650796517965279653796547965579656796577965879659796607966179662796637966479665796667966779668796697967079671796727967379674796757967679677796787967979680796817968279683796847968579686796877968879689796907969179692796937969479695796967969779698796997970079701797027970379704797057970679707797087970979710797117971279713797147971579716797177971879719797207972179722797237972479725797267972779728797297973079731797327973379734797357973679737797387973979740797417974279743797447974579746797477974879749797507975179752797537975479755797567975779758797597976079761797627976379764797657976679767797687976979770797717977279773797747977579776797777977879779797807978179782797837978479785797867978779788797897979079791797927979379794797957979679797797987979979800798017980279803798047980579806798077980879809798107981179812798137981479815798167981779818798197982079821798227982379824798257982679827798287982979830798317983279833798347983579836798377983879839798407984179842798437984479845798467984779848798497985079851798527985379854798557985679857798587985979860798617986279863798647986579866798677986879869798707987179872798737987479875798767987779878798797988079881798827988379884798857988679887798887988979890798917989279893798947989579896798977989879899799007990179902799037990479905799067990779908799097991079911799127991379914799157991679917799187991979920799217992279923799247992579926799277992879929799307993179932799337993479935799367993779938799397994079941799427994379944799457994679947799487994979950799517995279953799547995579956799577995879959799607996179962799637996479965799667996779968799697997079971799727997379974799757997679977799787997979980799817998279983799847998579986799877998879989799907999179992799937999479995799967999779998799998000080001800028000380004800058000680007800088000980010800118001280013800148001580016800178001880019800208002180022800238002480025800268002780028800298003080031800328003380034800358003680037800388003980040800418004280043800448004580046800478004880049800508005180052800538005480055800568005780058800598006080061800628006380064800658006680067800688006980070800718007280073800748007580076800778007880079800808008180082800838008480085800868008780088800898009080091800928009380094800958009680097800988009980100801018010280103801048010580106801078010880109801108011180112801138011480115801168011780118801198012080121801228012380124801258012680127801288012980130801318013280133801348013580136801378013880139801408014180142801438014480145801468014780148801498015080151801528015380154801558015680157801588015980160801618016280163801648016580166801678016880169801708017180172801738017480175801768017780178801798018080181801828018380184801858018680187801888018980190801918019280193801948019580196801978019880199802008020180202802038020480205802068020780208802098021080211802128021380214802158021680217802188021980220802218022280223802248022580226802278022880229802308023180232802338023480235802368023780238802398024080241802428024380244802458024680247802488024980250802518025280253802548025580256802578025880259802608026180262802638026480265802668026780268802698027080271802728027380274802758027680277802788027980280802818028280283802848028580286802878028880289802908029180292802938029480295802968029780298802998030080301803028030380304803058030680307803088030980310803118031280313803148031580316803178031880319803208032180322803238032480325803268032780328803298033080331803328033380334803358033680337803388033980340803418034280343803448034580346803478034880349803508035180352803538035480355803568035780358803598036080361803628036380364803658036680367803688036980370803718037280373803748037580376803778037880379803808038180382803838038480385803868038780388803898039080391803928039380394803958039680397803988039980400804018040280403804048040580406804078040880409804108041180412804138041480415804168041780418804198042080421804228042380424804258042680427804288042980430804318043280433804348043580436804378043880439804408044180442804438044480445804468044780448804498045080451804528045380454804558045680457804588045980460804618046280463804648046580466804678046880469804708047180472804738047480475804768047780478804798048080481804828048380484804858048680487804888048980490804918049280493804948049580496804978049880499805008050180502805038050480505805068050780508805098051080511805128051380514805158051680517805188051980520805218052280523805248052580526805278052880529805308053180532805338053480535805368053780538805398054080541805428054380544805458054680547805488054980550805518055280553805548055580556805578055880559805608056180562805638056480565805668056780568805698057080571805728057380574805758057680577805788057980580805818058280583805848058580586805878058880589805908059180592805938059480595805968059780598805998060080601806028060380604806058060680607806088060980610806118061280613806148061580616806178061880619806208062180622806238062480625806268062780628806298063080631806328063380634806358063680637806388063980640806418064280643806448064580646806478064880649806508065180652806538065480655806568065780658806598066080661806628066380664806658066680667806688066980670806718067280673806748067580676806778067880679806808068180682806838068480685806868068780688806898069080691806928069380694806958069680697806988069980700807018070280703807048070580706807078070880709807108071180712807138071480715807168071780718807198072080721807228072380724807258072680727807288072980730807318073280733807348073580736807378073880739807408074180742807438074480745807468074780748807498075080751807528075380754807558075680757807588075980760807618076280763807648076580766807678076880769807708077180772807738077480775807768077780778807798078080781807828078380784807858078680787807888078980790807918079280793807948079580796807978079880799808008080180802808038080480805808068080780808808098081080811808128081380814808158081680817808188081980820808218082280823808248082580826808278082880829808308083180832808338083480835808368083780838808398084080841808428084380844808458084680847808488084980850808518085280853808548085580856808578085880859808608086180862808638086480865808668086780868808698087080871808728087380874808758087680877808788087980880808818088280883808848088580886808878088880889808908089180892808938089480895808968089780898808998090080901809028090380904809058090680907809088090980910809118091280913809148091580916809178091880919809208092180922809238092480925809268092780928809298093080931809328093380934809358093680937809388093980940809418094280943809448094580946809478094880949809508095180952809538095480955809568095780958809598096080961809628096380964809658096680967809688096980970809718097280973809748097580976809778097880979809808098180982809838098480985809868098780988809898099080991809928099380994809958099680997809988099981000810018100281003810048100581006810078100881009810108101181012810138101481015810168101781018810198102081021810228102381024810258102681027810288102981030810318103281033810348103581036810378103881039810408104181042810438104481045810468104781048810498105081051810528105381054810558105681057810588105981060810618106281063810648106581066810678106881069810708107181072810738107481075810768107781078810798108081081810828108381084810858108681087810888108981090810918109281093810948109581096810978109881099811008110181102811038110481105811068110781108811098111081111811128111381114811158111681117811188111981120811218112281123811248112581126811278112881129811308113181132811338113481135811368113781138811398114081141811428114381144811458114681147811488114981150811518115281153811548115581156811578115881159811608116181162811638116481165811668116781168811698117081171811728117381174811758117681177811788117981180811818118281183811848118581186811878118881189811908119181192811938119481195811968119781198811998120081201812028120381204812058120681207812088120981210812118121281213812148121581216812178121881219812208122181222812238122481225812268122781228812298123081231812328123381234812358123681237812388123981240812418124281243812448124581246812478124881249812508125181252812538125481255812568125781258812598126081261812628126381264812658126681267812688126981270812718127281273812748127581276812778127881279812808128181282812838128481285812868128781288812898129081291812928129381294812958129681297812988129981300813018130281303813048130581306813078130881309813108131181312813138131481315813168131781318813198132081321813228132381324813258132681327813288132981330813318133281333813348133581336813378133881339813408134181342813438134481345813468134781348813498135081351813528135381354813558135681357813588135981360813618136281363813648136581366813678136881369813708137181372813738137481375813768137781378813798138081381813828138381384813858138681387813888138981390813918139281393813948139581396813978139881399814008140181402814038140481405814068140781408814098141081411814128141381414814158141681417814188141981420814218142281423814248142581426814278142881429814308143181432814338143481435814368143781438814398144081441814428144381444814458144681447814488144981450814518145281453814548145581456814578145881459814608146181462814638146481465814668146781468814698147081471814728147381474814758147681477814788147981480814818148281483814848148581486814878148881489814908149181492814938149481495814968149781498814998150081501815028150381504815058150681507815088150981510815118151281513815148151581516815178151881519815208152181522815238152481525815268152781528815298153081531815328153381534815358153681537815388153981540815418154281543815448154581546815478154881549815508155181552815538155481555815568155781558815598156081561815628156381564815658156681567815688156981570815718157281573815748157581576815778157881579815808158181582815838158481585815868158781588815898159081591815928159381594815958159681597815988159981600816018160281603816048160581606816078160881609816108161181612816138161481615816168161781618816198162081621816228162381624816258162681627816288162981630816318163281633816348163581636816378163881639816408164181642816438164481645816468164781648816498165081651816528165381654816558165681657816588165981660816618166281663816648166581666816678166881669816708167181672816738167481675816768167781678816798168081681816828168381684816858168681687816888168981690816918169281693816948169581696816978169881699817008170181702817038170481705817068170781708817098171081711817128171381714817158171681717817188171981720817218172281723817248172581726817278172881729817308173181732817338173481735817368173781738817398174081741817428174381744817458174681747817488174981750817518175281753817548175581756817578175881759817608176181762817638176481765817668176781768817698177081771817728177381774817758177681777817788177981780817818178281783817848178581786817878178881789817908179181792817938179481795817968179781798817998180081801818028180381804818058180681807818088180981810818118181281813818148181581816818178181881819818208182181822818238182481825818268182781828818298183081831818328183381834818358183681837818388183981840818418184281843818448184581846818478184881849818508185181852818538185481855818568185781858818598186081861818628186381864818658186681867818688186981870818718187281873818748187581876818778187881879818808188181882818838188481885818868188781888818898189081891818928189381894818958189681897818988189981900819018190281903819048190581906819078190881909819108191181912819138191481915819168191781918819198192081921819228192381924819258192681927819288192981930819318193281933819348193581936819378193881939819408194181942819438194481945819468194781948819498195081951819528195381954819558195681957819588195981960819618196281963819648196581966819678196881969819708197181972819738197481975819768197781978819798198081981819828198381984819858198681987819888198981990819918199281993819948199581996819978199881999820008200182002820038200482005820068200782008820098201082011820128201382014820158201682017820188201982020820218202282023820248202582026820278202882029820308203182032820338203482035820368203782038820398204082041820428204382044820458204682047820488204982050820518205282053820548205582056820578205882059820608206182062820638206482065820668206782068820698207082071820728207382074820758207682077820788207982080820818208282083820848208582086820878208882089820908209182092820938209482095820968209782098820998210082101821028210382104821058210682107821088210982110821118211282113821148211582116821178211882119821208212182122821238212482125821268212782128821298213082131821328213382134821358213682137821388213982140821418214282143821448214582146821478214882149821508215182152821538215482155821568215782158821598216082161821628216382164821658216682167821688216982170821718217282173821748217582176821778217882179821808218182182821838218482185821868218782188821898219082191821928219382194821958219682197821988219982200822018220282203822048220582206822078220882209822108221182212822138221482215822168221782218822198222082221822228222382224822258222682227822288222982230822318223282233822348223582236822378223882239822408224182242822438224482245822468224782248822498225082251822528225382254822558225682257822588225982260822618226282263822648226582266822678226882269822708227182272822738227482275822768227782278822798228082281822828228382284822858228682287822888228982290822918229282293822948229582296822978229882299823008230182302823038230482305823068230782308823098231082311823128231382314823158231682317823188231982320823218232282323823248232582326823278232882329823308233182332823338233482335823368233782338823398234082341823428234382344823458234682347823488234982350823518235282353823548235582356823578235882359823608236182362823638236482365823668236782368823698237082371823728237382374823758237682377823788237982380823818238282383823848238582386823878238882389823908239182392823938239482395823968239782398823998240082401824028240382404824058240682407824088240982410824118241282413824148241582416824178241882419824208242182422824238242482425824268242782428824298243082431824328243382434824358243682437824388243982440824418244282443824448244582446824478244882449824508245182452824538245482455824568245782458824598246082461824628246382464824658246682467824688246982470824718247282473824748247582476824778247882479824808248182482824838248482485824868248782488824898249082491824928249382494824958249682497824988249982500825018250282503825048250582506825078250882509825108251182512825138251482515825168251782518825198252082521825228252382524825258252682527825288252982530825318253282533825348253582536825378253882539825408254182542825438254482545825468254782548825498255082551825528255382554825558255682557825588255982560825618256282563825648256582566825678256882569825708257182572825738257482575825768257782578825798258082581825828258382584825858258682587825888258982590825918259282593825948259582596825978259882599826008260182602826038260482605826068260782608826098261082611826128261382614826158261682617826188261982620826218262282623826248262582626826278262882629826308263182632826338263482635826368263782638826398264082641826428264382644826458264682647826488264982650826518265282653826548265582656826578265882659826608266182662826638266482665826668266782668826698267082671826728267382674826758267682677826788267982680826818268282683826848268582686826878268882689826908269182692826938269482695826968269782698826998270082701827028270382704827058270682707827088270982710827118271282713827148271582716827178271882719827208272182722827238272482725827268272782728827298273082731827328273382734827358273682737827388273982740827418274282743827448274582746827478274882749827508275182752827538275482755827568275782758827598276082761827628276382764827658276682767827688276982770827718277282773827748277582776827778277882779827808278182782827838278482785827868278782788827898279082791827928279382794827958279682797827988279982800828018280282803828048280582806828078280882809828108281182812828138281482815828168281782818828198282082821828228282382824828258282682827828288282982830828318283282833828348283582836828378283882839828408284182842828438284482845828468284782848828498285082851828528285382854828558285682857828588285982860828618286282863828648286582866828678286882869828708287182872828738287482875828768287782878828798288082881828828288382884828858288682887828888288982890828918289282893828948289582896828978289882899829008290182902829038290482905829068290782908829098291082911829128291382914829158291682917829188291982920829218292282923829248292582926829278292882929829308293182932829338293482935829368293782938829398294082941829428294382944829458294682947829488294982950829518295282953829548295582956829578295882959829608296182962829638296482965829668296782968829698297082971829728297382974829758297682977829788297982980829818298282983829848298582986829878298882989829908299182992829938299482995829968299782998829998300083001830028300383004830058300683007830088300983010830118301283013830148301583016830178301883019830208302183022830238302483025830268302783028830298303083031830328303383034830358303683037830388303983040830418304283043830448304583046830478304883049830508305183052830538305483055830568305783058830598306083061830628306383064830658306683067830688306983070830718307283073830748307583076830778307883079830808308183082830838308483085830868308783088830898309083091830928309383094830958309683097830988309983100831018310283103831048310583106831078310883109831108311183112831138311483115831168311783118831198312083121831228312383124831258312683127831288312983130831318313283133831348313583136831378313883139831408314183142831438314483145831468314783148831498315083151831528315383154831558315683157831588315983160831618316283163831648316583166831678316883169831708317183172831738317483175831768317783178831798318083181831828318383184831858318683187831888318983190831918319283193831948319583196831978319883199832008320183202832038320483205832068320783208832098321083211832128321383214832158321683217832188321983220832218322283223832248322583226832278322883229832308323183232832338323483235832368323783238832398324083241832428324383244832458324683247832488324983250832518325283253832548325583256832578325883259832608326183262832638326483265832668326783268832698327083271832728327383274832758327683277832788327983280832818328283283832848328583286832878328883289832908329183292832938329483295832968329783298832998330083301833028330383304833058330683307833088330983310833118331283313833148331583316833178331883319833208332183322833238332483325833268332783328833298333083331833328333383334833358333683337833388333983340833418334283343833448334583346833478334883349833508335183352833538335483355833568335783358833598336083361833628336383364833658336683367833688336983370833718337283373833748337583376833778337883379833808338183382833838338483385833868338783388833898339083391833928339383394833958339683397833988339983400834018340283403834048340583406834078340883409834108341183412834138341483415834168341783418834198342083421834228342383424834258342683427834288342983430834318343283433834348343583436834378343883439834408344183442834438344483445834468344783448834498345083451834528345383454834558345683457834588345983460834618346283463834648346583466834678346883469834708347183472834738347483475834768347783478834798348083481834828348383484834858348683487834888348983490834918349283493834948349583496834978349883499835008350183502835038350483505835068350783508835098351083511835128351383514835158351683517835188351983520835218352283523835248352583526835278352883529835308353183532835338353483535835368353783538835398354083541835428354383544835458354683547835488354983550835518355283553835548355583556835578355883559835608356183562835638356483565835668356783568835698357083571835728357383574835758357683577835788357983580835818358283583835848358583586835878358883589835908359183592835938359483595835968359783598835998360083601836028360383604836058360683607836088360983610836118361283613836148361583616836178361883619836208362183622836238362483625836268362783628836298363083631836328363383634836358363683637836388363983640836418364283643836448364583646836478364883649836508365183652836538365483655836568365783658836598366083661836628366383664836658366683667836688366983670836718367283673836748367583676836778367883679836808368183682836838368483685836868368783688836898369083691836928369383694836958369683697836988369983700837018370283703837048370583706837078370883709837108371183712837138371483715837168371783718837198372083721837228372383724837258372683727837288372983730837318373283733837348373583736837378373883739837408374183742837438374483745837468374783748837498375083751837528375383754837558375683757837588375983760837618376283763837648376583766837678376883769837708377183772837738377483775837768377783778837798378083781837828378383784837858378683787837888378983790837918379283793837948379583796837978379883799838008380183802838038380483805838068380783808838098381083811838128381383814838158381683817838188381983820838218382283823838248382583826838278382883829838308383183832838338383483835838368383783838838398384083841838428384383844838458384683847838488384983850838518385283853838548385583856838578385883859838608386183862838638386483865838668386783868838698387083871838728387383874838758387683877838788387983880838818388283883838848388583886838878388883889838908389183892838938389483895838968389783898838998390083901839028390383904839058390683907839088390983910839118391283913839148391583916839178391883919839208392183922839238392483925839268392783928839298393083931839328393383934839358393683937839388393983940839418394283943839448394583946839478394883949839508395183952839538395483955839568395783958839598396083961839628396383964839658396683967839688396983970839718397283973839748397583976839778397883979839808398183982839838398483985839868398783988839898399083991839928399383994839958399683997839988399984000840018400284003840048400584006840078400884009840108401184012840138401484015840168401784018840198402084021840228402384024840258402684027840288402984030840318403284033840348403584036840378403884039840408404184042840438404484045840468404784048840498405084051840528405384054840558405684057840588405984060840618406284063840648406584066840678406884069840708407184072840738407484075840768407784078840798408084081840828408384084840858408684087840888408984090840918409284093840948409584096840978409884099841008410184102841038410484105841068410784108841098411084111841128411384114841158411684117841188411984120841218412284123841248412584126841278412884129841308413184132841338413484135841368413784138841398414084141841428414384144841458414684147841488414984150841518415284153841548415584156841578415884159841608416184162841638416484165841668416784168841698417084171841728417384174841758417684177841788417984180841818418284183841848418584186841878418884189841908419184192841938419484195841968419784198841998420084201842028420384204842058420684207842088420984210842118421284213842148421584216842178421884219842208422184222842238422484225842268422784228842298423084231842328423384234842358423684237842388423984240842418424284243842448424584246842478424884249842508425184252842538425484255842568425784258842598426084261842628426384264842658426684267842688426984270842718427284273842748427584276842778427884279842808428184282842838428484285842868428784288842898429084291842928429384294842958429684297842988429984300843018430284303843048430584306843078430884309843108431184312843138431484315843168431784318843198432084321843228432384324843258432684327843288432984330843318433284333843348433584336843378433884339843408434184342843438434484345843468434784348843498435084351843528435384354843558435684357843588435984360843618436284363843648436584366843678436884369843708437184372843738437484375843768437784378843798438084381843828438384384843858438684387843888438984390843918439284393843948439584396843978439884399844008440184402844038440484405844068440784408844098441084411844128441384414844158441684417844188441984420844218442284423844248442584426844278442884429844308443184432844338443484435844368443784438844398444084441844428444384444844458444684447844488444984450844518445284453844548445584456844578445884459844608446184462844638446484465844668446784468844698447084471844728447384474844758447684477844788447984480844818448284483844848448584486844878448884489844908449184492844938449484495844968449784498844998450084501845028450384504845058450684507845088450984510845118451284513845148451584516845178451884519845208452184522845238452484525845268452784528845298453084531845328453384534845358453684537845388453984540845418454284543845448454584546845478454884549845508455184552845538455484555845568455784558845598456084561845628456384564845658456684567845688456984570845718457284573845748457584576845778457884579845808458184582845838458484585845868458784588845898459084591845928459384594845958459684597845988459984600846018460284603846048460584606846078460884609846108461184612846138461484615846168461784618846198462084621846228462384624846258462684627846288462984630846318463284633846348463584636846378463884639846408464184642846438464484645846468464784648846498465084651846528465384654846558465684657846588465984660846618466284663846648466584666846678466884669846708467184672846738467484675846768467784678846798468084681846828468384684846858468684687846888468984690846918469284693846948469584696846978469884699847008470184702847038470484705847068470784708847098471084711847128471384714847158471684717847188471984720847218472284723847248472584726847278472884729847308473184732847338473484735847368473784738847398474084741847428474384744847458474684747847488474984750847518475284753847548475584756847578475884759847608476184762847638476484765847668476784768847698477084771847728477384774847758477684777847788477984780847818478284783847848478584786847878478884789847908479184792847938479484795847968479784798847998480084801848028480384804848058480684807848088480984810848118481284813848148481584816848178481884819848208482184822848238482484825848268482784828848298483084831848328483384834848358483684837848388483984840848418484284843848448484584846848478484884849848508485184852848538485484855848568485784858848598486084861848628486384864848658486684867848688486984870848718487284873848748487584876848778487884879848808488184882848838488484885848868488784888848898489084891848928489384894848958489684897848988489984900849018490284903849048490584906849078490884909849108491184912849138491484915849168491784918849198492084921849228492384924849258492684927849288492984930849318493284933849348493584936849378493884939849408494184942849438494484945849468494784948849498495084951849528495384954849558495684957849588495984960849618496284963849648496584966849678496884969849708497184972849738497484975849768497784978849798498084981849828498384984849858498684987849888498984990849918499284993849948499584996849978499884999850008500185002850038500485005850068500785008850098501085011850128501385014850158501685017850188501985020850218502285023850248502585026850278502885029850308503185032850338503485035850368503785038850398504085041850428504385044850458504685047850488504985050850518505285053850548505585056850578505885059850608506185062850638506485065850668506785068850698507085071850728507385074850758507685077850788507985080850818508285083850848508585086850878508885089850908509185092850938509485095850968509785098850998510085101851028510385104851058510685107851088510985110851118511285113851148511585116851178511885119851208512185122851238512485125851268512785128851298513085131851328513385134851358513685137851388513985140851418514285143851448514585146851478514885149851508515185152851538515485155851568515785158851598516085161851628516385164851658516685167851688516985170851718517285173851748517585176851778517885179851808518185182851838518485185851868518785188851898519085191851928519385194851958519685197851988519985200852018520285203852048520585206852078520885209852108521185212852138521485215852168521785218852198522085221852228522385224852258522685227852288522985230852318523285233852348523585236852378523885239852408524185242852438524485245852468524785248852498525085251852528525385254852558525685257852588525985260852618526285263852648526585266852678526885269852708527185272852738527485275852768527785278852798528085281852828528385284852858528685287852888528985290852918529285293852948529585296852978529885299853008530185302853038530485305853068530785308853098531085311853128531385314853158531685317853188531985320853218532285323853248532585326853278532885329853308533185332853338533485335853368533785338853398534085341853428534385344853458534685347853488534985350853518535285353853548535585356853578535885359853608536185362853638536485365853668536785368853698537085371853728537385374853758537685377853788537985380853818538285383853848538585386853878538885389853908539185392853938539485395853968539785398853998540085401854028540385404854058540685407854088540985410854118541285413854148541585416854178541885419854208542185422854238542485425854268542785428854298543085431854328543385434854358543685437854388543985440854418544285443854448544585446854478544885449854508545185452854538545485455854568545785458854598546085461854628546385464854658546685467854688546985470854718547285473854748547585476854778547885479854808548185482854838548485485854868548785488854898549085491854928549385494854958549685497854988549985500855018550285503855048550585506855078550885509855108551185512855138551485515855168551785518855198552085521855228552385524855258552685527855288552985530855318553285533855348553585536855378553885539855408554185542855438554485545855468554785548855498555085551855528555385554855558555685557855588555985560855618556285563855648556585566855678556885569855708557185572855738557485575855768557785578855798558085581855828558385584855858558685587855888558985590855918559285593855948559585596855978559885599856008560185602856038560485605856068560785608856098561085611856128561385614856158561685617856188561985620856218562285623856248562585626856278562885629856308563185632856338563485635856368563785638856398564085641856428564385644856458564685647856488564985650856518565285653856548565585656856578565885659856608566185662856638566485665856668566785668856698567085671856728567385674856758567685677856788567985680856818568285683856848568585686856878568885689856908569185692856938569485695856968569785698856998570085701857028570385704857058570685707857088570985710857118571285713857148571585716857178571885719857208572185722857238572485725857268572785728857298573085731857328573385734857358573685737857388573985740857418574285743857448574585746857478574885749857508575185752857538575485755857568575785758857598576085761857628576385764857658576685767857688576985770857718577285773857748577585776857778577885779857808578185782857838578485785857868578785788857898579085791857928579385794857958579685797857988579985800858018580285803858048580585806858078580885809858108581185812858138581485815858168581785818858198582085821858228582385824858258582685827858288582985830858318583285833858348583585836858378583885839858408584185842858438584485845858468584785848858498585085851858528585385854858558585685857858588585985860858618586285863858648586585866858678586885869858708587185872858738587485875858768587785878858798588085881858828588385884858858588685887858888588985890858918589285893858948589585896858978589885899859008590185902859038590485905859068590785908859098591085911859128591385914859158591685917859188591985920859218592285923859248592585926859278592885929859308593185932859338593485935859368593785938859398594085941859428594385944859458594685947859488594985950859518595285953859548595585956859578595885959859608596185962859638596485965859668596785968859698597085971859728597385974859758597685977859788597985980859818598285983859848598585986859878598885989859908599185992859938599485995859968599785998859998600086001860028600386004860058600686007860088600986010860118601286013860148601586016860178601886019860208602186022860238602486025860268602786028860298603086031860328603386034860358603686037860388603986040860418604286043860448604586046860478604886049860508605186052860538605486055860568605786058860598606086061860628606386064860658606686067860688606986070860718607286073860748607586076860778607886079860808608186082860838608486085860868608786088860898609086091860928609386094860958609686097860988609986100861018610286103861048610586106861078610886109861108611186112861138611486115861168611786118861198612086121861228612386124861258612686127861288612986130861318613286133861348613586136861378613886139861408614186142861438614486145861468614786148861498615086151861528615386154861558615686157861588615986160861618616286163861648616586166861678616886169861708617186172861738617486175861768617786178861798618086181861828618386184861858618686187861888618986190861918619286193861948619586196861978619886199862008620186202862038620486205862068620786208862098621086211862128621386214862158621686217862188621986220862218622286223862248622586226862278622886229862308623186232862338623486235862368623786238862398624086241862428624386244862458624686247862488624986250862518625286253862548625586256862578625886259862608626186262862638626486265862668626786268862698627086271862728627386274862758627686277862788627986280862818628286283862848628586286862878628886289862908629186292862938629486295862968629786298862998630086301863028630386304863058630686307863088630986310863118631286313863148631586316863178631886319863208632186322863238632486325863268632786328863298633086331863328633386334863358633686337863388633986340863418634286343863448634586346863478634886349863508635186352863538635486355863568635786358863598636086361863628636386364863658636686367863688636986370863718637286373863748637586376863778637886379863808638186382863838638486385863868638786388863898639086391863928639386394863958639686397863988639986400864018640286403864048640586406864078640886409864108641186412864138641486415864168641786418864198642086421864228642386424864258642686427864288642986430864318643286433864348643586436864378643886439864408644186442864438644486445864468644786448864498645086451864528645386454864558645686457864588645986460864618646286463864648646586466864678646886469864708647186472864738647486475864768647786478864798648086481864828648386484864858648686487864888648986490864918649286493864948649586496864978649886499865008650186502865038650486505865068650786508865098651086511865128651386514865158651686517865188651986520865218652286523865248652586526865278652886529865308653186532865338653486535865368653786538865398654086541865428654386544865458654686547865488654986550865518655286553865548655586556865578655886559865608656186562865638656486565865668656786568865698657086571865728657386574865758657686577865788657986580865818658286583865848658586586865878658886589865908659186592865938659486595865968659786598865998660086601866028660386604866058660686607866088660986610866118661286613866148661586616866178661886619866208662186622866238662486625866268662786628866298663086631866328663386634866358663686637866388663986640866418664286643866448664586646866478664886649866508665186652866538665486655866568665786658866598666086661866628666386664866658666686667866688666986670866718667286673866748667586676866778667886679866808668186682866838668486685866868668786688866898669086691866928669386694866958669686697866988669986700867018670286703867048670586706867078670886709867108671186712867138671486715867168671786718867198672086721867228672386724867258672686727867288672986730867318673286733867348673586736867378673886739867408674186742867438674486745867468674786748867498675086751867528675386754867558675686757867588675986760867618676286763867648676586766867678676886769867708677186772867738677486775867768677786778867798678086781867828678386784867858678686787867888678986790867918679286793867948679586796867978679886799868008680186802868038680486805868068680786808868098681086811868128681386814868158681686817868188681986820868218682286823868248682586826868278682886829868308683186832868338683486835868368683786838868398684086841868428684386844868458684686847868488684986850868518685286853868548685586856868578685886859868608686186862868638686486865868668686786868868698687086871868728687386874868758687686877868788687986880868818688286883868848688586886868878688886889868908689186892868938689486895868968689786898868998690086901869028690386904869058690686907869088690986910869118691286913869148691586916869178691886919869208692186922869238692486925869268692786928869298693086931869328693386934869358693686937869388693986940869418694286943869448694586946869478694886949869508695186952869538695486955869568695786958869598696086961869628696386964869658696686967869688696986970869718697286973869748697586976869778697886979869808698186982869838698486985869868698786988869898699086991869928699386994869958699686997869988699987000870018700287003870048700587006870078700887009870108701187012870138701487015870168701787018870198702087021870228702387024870258702687027870288702987030870318703287033870348703587036870378703887039870408704187042870438704487045870468704787048870498705087051870528705387054870558705687057870588705987060870618706287063870648706587066870678706887069870708707187072870738707487075870768707787078870798708087081870828708387084870858708687087870888708987090870918709287093870948709587096870978709887099871008710187102871038710487105871068710787108871098711087111871128711387114871158711687117871188711987120871218712287123871248712587126871278712887129871308713187132871338713487135871368713787138871398714087141871428714387144871458714687147871488714987150871518715287153871548715587156871578715887159871608716187162871638716487165871668716787168871698717087171871728717387174871758717687177871788717987180871818718287183871848718587186871878718887189871908719187192871938719487195871968719787198871998720087201872028720387204872058720687207872088720987210872118721287213872148721587216872178721887219872208722187222872238722487225872268722787228872298723087231872328723387234872358723687237872388723987240872418724287243872448724587246872478724887249872508725187252872538725487255872568725787258872598726087261872628726387264872658726687267872688726987270872718727287273872748727587276872778727887279872808728187282872838728487285872868728787288872898729087291872928729387294872958729687297872988729987300873018730287303873048730587306873078730887309873108731187312873138731487315873168731787318873198732087321873228732387324873258732687327873288732987330873318733287333873348733587336873378733887339873408734187342873438734487345873468734787348873498735087351873528735387354873558735687357873588735987360873618736287363873648736587366873678736887369873708737187372873738737487375873768737787378873798738087381873828738387384873858738687387873888738987390873918739287393873948739587396873978739887399874008740187402874038740487405874068740787408874098741087411874128741387414874158741687417874188741987420874218742287423874248742587426874278742887429874308743187432874338743487435874368743787438874398744087441874428744387444874458744687447874488744987450874518745287453874548745587456874578745887459874608746187462874638746487465874668746787468874698747087471874728747387474874758747687477874788747987480874818748287483874848748587486874878748887489874908749187492874938749487495874968749787498874998750087501875028750387504875058750687507875088750987510875118751287513875148751587516875178751887519875208752187522875238752487525875268752787528875298753087531875328753387534875358753687537875388753987540875418754287543875448754587546875478754887549875508755187552875538755487555875568755787558875598756087561875628756387564875658756687567875688756987570875718757287573875748757587576875778757887579875808758187582875838758487585875868758787588875898759087591875928759387594875958759687597875988759987600876018760287603876048760587606876078760887609876108761187612876138761487615876168761787618876198762087621876228762387624876258762687627876288762987630876318763287633876348763587636876378763887639876408764187642876438764487645876468764787648876498765087651876528765387654876558765687657876588765987660876618766287663876648766587666876678766887669876708767187672876738767487675876768767787678876798768087681876828768387684876858768687687876888768987690876918769287693876948769587696876978769887699877008770187702877038770487705877068770787708877098771087711877128771387714877158771687717877188771987720877218772287723877248772587726877278772887729877308773187732877338773487735877368773787738877398774087741877428774387744877458774687747877488774987750877518775287753877548775587756877578775887759877608776187762877638776487765877668776787768877698777087771877728777387774877758777687777877788777987780877818778287783877848778587786877878778887789877908779187792877938779487795877968779787798877998780087801878028780387804878058780687807878088780987810878118781287813878148781587816878178781887819878208782187822878238782487825878268782787828878298783087831878328783387834878358783687837878388783987840878418784287843878448784587846878478784887849878508785187852878538785487855878568785787858878598786087861878628786387864878658786687867878688786987870878718787287873878748787587876878778787887879878808788187882878838788487885878868788787888878898789087891878928789387894878958789687897878988789987900879018790287903879048790587906879078790887909879108791187912879138791487915879168791787918879198792087921879228792387924879258792687927879288792987930879318793287933879348793587936879378793887939879408794187942879438794487945879468794787948879498795087951879528795387954879558795687957879588795987960879618796287963879648796587966879678796887969879708797187972879738797487975879768797787978879798798087981879828798387984879858798687987879888798987990879918799287993879948799587996879978799887999880008800188002880038800488005880068800788008880098801088011880128801388014880158801688017880188801988020880218802288023880248802588026880278802888029880308803188032880338803488035880368803788038880398804088041880428804388044880458804688047880488804988050880518805288053880548805588056880578805888059880608806188062880638806488065880668806788068880698807088071880728807388074880758807688077880788807988080880818808288083880848808588086880878808888089880908809188092880938809488095880968809788098880998810088101881028810388104881058810688107881088810988110881118811288113881148811588116881178811888119881208812188122881238812488125881268812788128881298813088131881328813388134881358813688137881388813988140881418814288143881448814588146881478814888149881508815188152881538815488155881568815788158881598816088161881628816388164881658816688167881688816988170881718817288173881748817588176881778817888179881808818188182881838818488185881868818788188881898819088191881928819388194881958819688197881988819988200882018820288203882048820588206882078820888209882108821188212882138821488215882168821788218882198822088221882228822388224882258822688227882288822988230882318823288233882348823588236882378823888239882408824188242882438824488245882468824788248882498825088251882528825388254882558825688257882588825988260882618826288263882648826588266882678826888269882708827188272882738827488275882768827788278882798828088281882828828388284882858828688287882888828988290882918829288293882948829588296882978829888299883008830188302883038830488305883068830788308883098831088311883128831388314883158831688317883188831988320883218832288323883248832588326883278832888329883308833188332883338833488335883368833788338883398834088341883428834388344883458834688347883488834988350883518835288353883548835588356883578835888359883608836188362883638836488365883668836788368883698837088371883728837388374883758837688377883788837988380883818838288383883848838588386883878838888389883908839188392883938839488395883968839788398883998840088401884028840388404884058840688407884088840988410884118841288413884148841588416884178841888419884208842188422884238842488425884268842788428884298843088431884328843388434884358843688437884388843988440884418844288443884448844588446884478844888449884508845188452884538845488455884568845788458884598846088461884628846388464884658846688467884688846988470884718847288473884748847588476884778847888479884808848188482884838848488485884868848788488884898849088491884928849388494884958849688497884988849988500885018850288503885048850588506885078850888509885108851188512885138851488515885168851788518885198852088521885228852388524885258852688527885288852988530885318853288533885348853588536885378853888539885408854188542885438854488545885468854788548885498855088551885528855388554885558855688557885588855988560885618856288563885648856588566885678856888569885708857188572885738857488575885768857788578885798858088581885828858388584885858858688587885888858988590885918859288593885948859588596885978859888599886008860188602886038860488605886068860788608886098861088611886128861388614886158861688617886188861988620886218862288623886248862588626886278862888629886308863188632886338863488635886368863788638886398864088641886428864388644886458864688647886488864988650886518865288653886548865588656886578865888659886608866188662886638866488665886668866788668886698867088671886728867388674886758867688677886788867988680886818868288683886848868588686886878868888689886908869188692886938869488695886968869788698886998870088701887028870388704887058870688707887088870988710887118871288713887148871588716887178871888719887208872188722887238872488725887268872788728887298873088731887328873388734887358873688737887388873988740887418874288743887448874588746887478874888749887508875188752887538875488755887568875788758887598876088761887628876388764887658876688767887688876988770887718877288773887748877588776887778877888779887808878188782887838878488785887868878788788887898879088791887928879388794887958879688797887988879988800888018880288803888048880588806888078880888809888108881188812888138881488815888168881788818888198882088821888228882388824888258882688827888288882988830888318883288833888348883588836888378883888839888408884188842888438884488845888468884788848888498885088851888528885388854888558885688857888588885988860888618886288863888648886588866888678886888869888708887188872888738887488875888768887788878888798888088881888828888388884888858888688887888888888988890888918889288893888948889588896888978889888899889008890188902889038890488905889068890788908889098891088911889128891388914889158891688917889188891988920889218892288923889248892588926889278892888929889308893188932889338893488935889368893788938889398894088941889428894388944889458894688947889488894988950889518895288953889548895588956889578895888959889608896188962889638896488965889668896788968889698897088971889728897388974889758897688977889788897988980889818898288983889848898588986889878898888989889908899188992889938899488995889968899788998889998900089001890028900389004890058900689007890088900989010890118901289013890148901589016890178901889019890208902189022890238902489025890268902789028890298903089031890328903389034890358903689037890388903989040890418904289043890448904589046890478904889049890508905189052890538905489055890568905789058890598906089061890628906389064890658906689067890688906989070890718907289073890748907589076890778907889079890808908189082890838908489085890868908789088890898909089091890928909389094890958909689097890988909989100891018910289103891048910589106891078910889109891108911189112891138911489115891168911789118891198912089121891228912389124891258912689127891288912989130891318913289133891348913589136891378913889139891408914189142891438914489145891468914789148891498915089151891528915389154891558915689157891588915989160891618916289163891648916589166891678916889169891708917189172891738917489175891768917789178891798918089181891828918389184891858918689187891888918989190891918919289193891948919589196891978919889199892008920189202892038920489205892068920789208892098921089211892128921389214892158921689217892188921989220892218922289223892248922589226892278922889229892308923189232892338923489235892368923789238892398924089241892428924389244892458924689247892488924989250892518925289253892548925589256892578925889259892608926189262892638926489265892668926789268892698927089271892728927389274892758927689277892788927989280892818928289283892848928589286892878928889289892908929189292892938929489295892968929789298892998930089301893028930389304893058930689307893088930989310893118931289313893148931589316893178931889319893208932189322893238932489325893268932789328893298933089331893328933389334893358933689337893388933989340893418934289343893448934589346893478934889349893508935189352893538935489355893568935789358893598936089361893628936389364893658936689367893688936989370893718937289373893748937589376893778937889379893808938189382893838938489385893868938789388893898939089391893928939389394893958939689397893988939989400894018940289403894048940589406894078940889409894108941189412894138941489415894168941789418894198942089421894228942389424894258942689427894288942989430894318943289433894348943589436894378943889439894408944189442894438944489445894468944789448894498945089451894528945389454894558945689457894588945989460894618946289463894648946589466894678946889469894708947189472894738947489475894768947789478894798948089481894828948389484894858948689487894888948989490894918949289493894948949589496894978949889499895008950189502895038950489505895068950789508895098951089511895128951389514895158951689517895188951989520895218952289523895248952589526895278952889529895308953189532895338953489535895368953789538895398954089541895428954389544895458954689547895488954989550895518955289553895548955589556895578955889559895608956189562895638956489565895668956789568895698957089571895728957389574895758957689577895788957989580895818958289583895848958589586895878958889589895908959189592895938959489595895968959789598895998960089601896028960389604896058960689607896088960989610896118961289613896148961589616896178961889619896208962189622896238962489625896268962789628896298963089631896328963389634896358963689637896388963989640896418964289643896448964589646896478964889649896508965189652896538965489655896568965789658896598966089661896628966389664896658966689667896688966989670896718967289673896748967589676896778967889679896808968189682896838968489685896868968789688896898969089691896928969389694896958969689697896988969989700897018970289703897048970589706897078970889709897108971189712897138971489715897168971789718897198972089721897228972389724897258972689727897288972989730897318973289733897348973589736897378973889739897408974189742897438974489745897468974789748897498975089751897528975389754897558975689757897588975989760897618976289763897648976589766897678976889769897708977189772897738977489775897768977789778897798978089781897828978389784897858978689787897888978989790897918979289793897948979589796897978979889799898008980189802898038980489805898068980789808898098981089811898128981389814898158981689817898188981989820898218982289823898248982589826898278982889829898308983189832898338983489835898368983789838898398984089841898428984389844898458984689847898488984989850898518985289853898548985589856898578985889859898608986189862898638986489865898668986789868898698987089871898728987389874898758987689877898788987989880898818988289883898848988589886898878988889889898908989189892898938989489895898968989789898898998990089901899028990389904899058990689907899088990989910899118991289913899148991589916899178991889919899208992189922899238992489925899268992789928899298993089931899328993389934899358993689937899388993989940899418994289943899448994589946899478994889949899508995189952899538995489955899568995789958899598996089961899628996389964899658996689967899688996989970899718997289973899748997589976899778997889979899808998189982899838998489985899868998789988899898999089991899928999389994899958999689997899988999990000900019000290003900049000590006900079000890009900109001190012900139001490015900169001790018900199002090021900229002390024900259002690027900289002990030900319003290033900349003590036900379003890039900409004190042900439004490045900469004790048900499005090051900529005390054900559005690057900589005990060900619006290063900649006590066900679006890069900709007190072900739007490075900769007790078900799008090081900829008390084900859008690087900889008990090900919009290093900949009590096900979009890099901009010190102901039010490105901069010790108901099011090111901129011390114901159011690117901189011990120901219012290123901249012590126901279012890129901309013190132901339013490135901369013790138901399014090141901429014390144901459014690147901489014990150901519015290153901549015590156901579015890159901609016190162901639016490165901669016790168901699017090171901729017390174901759017690177901789017990180901819018290183901849018590186901879018890189901909019190192901939019490195901969019790198901999020090201902029020390204902059020690207902089020990210902119021290213902149021590216902179021890219902209022190222902239022490225902269022790228902299023090231902329023390234902359023690237902389023990240902419024290243902449024590246902479024890249902509025190252902539025490255902569025790258902599026090261902629026390264902659026690267902689026990270902719027290273902749027590276902779027890279902809028190282902839028490285902869028790288902899029090291902929029390294902959029690297902989029990300903019030290303903049030590306903079030890309903109031190312903139031490315903169031790318903199032090321903229032390324903259032690327903289032990330903319033290333903349033590336903379033890339903409034190342903439034490345903469034790348903499035090351903529035390354903559035690357903589035990360903619036290363903649036590366903679036890369903709037190372903739037490375903769037790378903799038090381903829038390384903859038690387903889038990390903919039290393903949039590396903979039890399904009040190402904039040490405904069040790408904099041090411904129041390414904159041690417904189041990420904219042290423904249042590426904279042890429904309043190432904339043490435904369043790438904399044090441904429044390444904459044690447904489044990450904519045290453904549045590456904579045890459904609046190462904639046490465904669046790468904699047090471904729047390474904759047690477904789047990480904819048290483904849048590486904879048890489904909049190492904939049490495904969049790498904999050090501905029050390504905059050690507905089050990510905119051290513905149051590516905179051890519905209052190522905239052490525905269052790528905299053090531905329053390534905359053690537905389053990540905419054290543905449054590546905479054890549905509055190552905539055490555905569055790558905599056090561905629056390564905659056690567905689056990570905719057290573905749057590576905779057890579905809058190582905839058490585905869058790588905899059090591905929059390594905959059690597905989059990600906019060290603906049060590606906079060890609906109061190612906139061490615906169061790618906199062090621906229062390624906259062690627906289062990630906319063290633906349063590636906379063890639906409064190642906439064490645906469064790648906499065090651906529065390654906559065690657906589065990660906619066290663906649066590666906679066890669906709067190672906739067490675906769067790678906799068090681906829068390684906859068690687906889068990690906919069290693906949069590696906979069890699907009070190702907039070490705907069070790708907099071090711907129071390714907159071690717907189071990720907219072290723907249072590726907279072890729907309073190732907339073490735907369073790738907399074090741907429074390744907459074690747907489074990750907519075290753907549075590756907579075890759907609076190762907639076490765907669076790768907699077090771907729077390774907759077690777907789077990780907819078290783907849078590786907879078890789907909079190792907939079490795907969079790798907999080090801908029080390804908059080690807908089080990810908119081290813908149081590816908179081890819908209082190822908239082490825908269082790828908299083090831908329083390834908359083690837908389083990840908419084290843908449084590846908479084890849908509085190852908539085490855908569085790858908599086090861908629086390864908659086690867908689086990870908719087290873908749087590876908779087890879908809088190882908839088490885908869088790888908899089090891908929089390894908959089690897908989089990900909019090290903909049090590906909079090890909909109091190912909139091490915909169091790918909199092090921909229092390924909259092690927909289092990930909319093290933909349093590936909379093890939909409094190942909439094490945909469094790948909499095090951909529095390954909559095690957909589095990960909619096290963909649096590966909679096890969909709097190972909739097490975909769097790978909799098090981909829098390984909859098690987909889098990990909919099290993909949099590996909979099890999910009100191002910039100491005910069100791008910099101091011910129101391014910159101691017910189101991020910219102291023910249102591026910279102891029910309103191032910339103491035910369103791038910399104091041910429104391044910459104691047910489104991050910519105291053910549105591056910579105891059910609106191062910639106491065910669106791068910699107091071910729107391074910759107691077910789107991080910819108291083910849108591086910879108891089910909109191092910939109491095910969109791098910999110091101911029110391104911059110691107911089110991110911119111291113911149111591116911179111891119911209112191122911239112491125911269112791128911299113091131911329113391134911359113691137911389113991140911419114291143911449114591146911479114891149911509115191152911539115491155911569115791158911599116091161911629116391164911659116691167911689116991170911719117291173911749117591176911779117891179911809118191182911839118491185911869118791188911899119091191911929119391194911959119691197911989119991200912019120291203912049120591206912079120891209912109121191212912139121491215912169121791218912199122091221912229122391224912259122691227912289122991230912319123291233912349123591236912379123891239912409124191242912439124491245912469124791248912499125091251912529125391254912559125691257912589125991260912619126291263912649126591266912679126891269912709127191272912739127491275912769127791278912799128091281912829128391284912859128691287912889128991290912919129291293912949129591296912979129891299913009130191302913039130491305913069130791308913099131091311913129131391314913159131691317913189131991320913219132291323913249132591326913279132891329913309133191332913339133491335913369133791338913399134091341913429134391344913459134691347913489134991350913519135291353913549135591356913579135891359913609136191362913639136491365913669136791368913699137091371913729137391374913759137691377913789137991380913819138291383913849138591386913879138891389913909139191392913939139491395913969139791398913999140091401914029140391404914059140691407914089140991410914119141291413914149141591416914179141891419914209142191422914239142491425914269142791428914299143091431914329143391434914359143691437914389143991440914419144291443914449144591446914479144891449914509145191452914539145491455914569145791458914599146091461914629146391464914659146691467914689146991470914719147291473914749147591476914779147891479914809148191482914839148491485914869148791488914899149091491914929149391494914959149691497914989149991500915019150291503915049150591506915079150891509915109151191512915139151491515915169151791518915199152091521915229152391524915259152691527915289152991530915319153291533915349153591536915379153891539915409154191542915439154491545915469154791548915499155091551915529155391554915559155691557915589155991560915619156291563915649156591566915679156891569915709157191572915739157491575915769157791578915799158091581915829158391584915859158691587915889158991590915919159291593915949159591596915979159891599916009160191602916039160491605916069160791608916099161091611916129161391614916159161691617916189161991620916219162291623916249162591626916279162891629916309163191632916339163491635916369163791638916399164091641916429164391644916459164691647916489164991650916519165291653916549165591656916579165891659916609166191662916639166491665916669166791668916699167091671916729167391674916759167691677916789167991680916819168291683916849168591686916879168891689916909169191692916939169491695916969169791698916999170091701917029170391704917059170691707917089170991710917119171291713917149171591716917179171891719917209172191722917239172491725917269172791728917299173091731917329173391734917359173691737917389173991740917419174291743917449174591746917479174891749917509175191752917539175491755917569175791758917599176091761917629176391764917659176691767917689176991770917719177291773917749177591776917779177891779917809178191782917839178491785917869178791788917899179091791917929179391794917959179691797917989179991800918019180291803918049180591806918079180891809918109181191812918139181491815918169181791818918199182091821918229182391824918259182691827918289182991830918319183291833918349183591836918379183891839918409184191842918439184491845918469184791848918499185091851918529185391854918559185691857918589185991860918619186291863918649186591866918679186891869918709187191872918739187491875918769187791878918799188091881918829188391884918859188691887918889188991890918919189291893918949189591896918979189891899919009190191902919039190491905919069190791908919099191091911919129191391914919159191691917919189191991920919219192291923919249192591926919279192891929919309193191932919339193491935919369193791938919399194091941919429194391944919459194691947919489194991950919519195291953919549195591956919579195891959919609196191962919639196491965919669196791968919699197091971919729197391974919759197691977919789197991980919819198291983919849198591986919879198891989919909199191992919939199491995919969199791998919999200092001920029200392004920059200692007920089200992010920119201292013920149201592016920179201892019920209202192022920239202492025920269202792028920299203092031920329203392034920359203692037920389203992040920419204292043920449204592046920479204892049920509205192052920539205492055920569205792058920599206092061920629206392064920659206692067920689206992070920719207292073920749207592076920779207892079920809208192082920839208492085920869208792088920899209092091920929209392094920959209692097920989209992100921019210292103921049210592106921079210892109921109211192112921139211492115921169211792118921199212092121921229212392124921259212692127921289212992130921319213292133921349213592136921379213892139921409214192142921439214492145921469214792148921499215092151921529215392154921559215692157921589215992160921619216292163921649216592166921679216892169921709217192172921739217492175921769217792178921799218092181921829218392184921859218692187921889218992190921919219292193921949219592196921979219892199922009220192202922039220492205922069220792208922099221092211922129221392214922159221692217922189221992220922219222292223922249222592226922279222892229922309223192232922339223492235922369223792238922399224092241922429224392244922459224692247922489224992250922519225292253922549225592256922579225892259922609226192262922639226492265922669226792268922699227092271922729227392274922759227692277922789227992280922819228292283922849228592286922879228892289922909229192292922939229492295922969229792298922999230092301923029230392304923059230692307923089230992310923119231292313923149231592316923179231892319923209232192322923239232492325923269232792328923299233092331923329233392334923359233692337923389233992340923419234292343923449234592346923479234892349923509235192352923539235492355923569235792358923599236092361923629236392364923659236692367923689236992370923719237292373923749237592376923779237892379923809238192382923839238492385923869238792388923899239092391923929239392394923959239692397923989239992400924019240292403924049240592406924079240892409924109241192412924139241492415924169241792418924199242092421924229242392424924259242692427924289242992430924319243292433924349243592436924379243892439924409244192442924439244492445924469244792448924499245092451924529245392454924559245692457924589245992460924619246292463924649246592466924679246892469924709247192472924739247492475924769247792478924799248092481924829248392484924859248692487924889248992490924919249292493924949249592496924979249892499925009250192502925039250492505925069250792508925099251092511925129251392514925159251692517925189251992520925219252292523925249252592526925279252892529925309253192532925339253492535925369253792538925399254092541925429254392544925459254692547925489254992550925519255292553925549255592556925579255892559925609256192562925639256492565925669256792568925699257092571925729257392574925759257692577925789257992580925819258292583925849258592586925879258892589925909259192592925939259492595925969259792598925999260092601926029260392604926059260692607926089260992610926119261292613926149261592616926179261892619926209262192622926239262492625926269262792628926299263092631926329263392634926359263692637926389263992640926419264292643926449264592646926479264892649926509265192652926539265492655926569265792658926599266092661926629266392664926659266692667926689266992670926719267292673926749267592676926779267892679926809268192682926839268492685926869268792688926899269092691926929269392694926959269692697926989269992700927019270292703927049270592706927079270892709927109271192712927139271492715927169271792718927199272092721927229272392724927259272692727927289272992730927319273292733927349273592736927379273892739927409274192742927439274492745927469274792748927499275092751927529275392754927559275692757927589275992760927619276292763927649276592766927679276892769927709277192772927739277492775927769277792778927799278092781927829278392784927859278692787927889278992790927919279292793927949279592796927979279892799928009280192802928039280492805928069280792808928099281092811928129281392814928159281692817928189281992820928219282292823928249282592826928279282892829928309283192832928339283492835928369283792838928399284092841928429284392844928459284692847928489284992850928519285292853928549285592856928579285892859928609286192862928639286492865928669286792868928699287092871928729287392874928759287692877928789287992880928819288292883928849288592886928879288892889928909289192892928939289492895928969289792898928999290092901929029290392904929059290692907929089290992910929119291292913929149291592916929179291892919929209292192922929239292492925929269292792928929299293092931929329293392934929359293692937929389293992940929419294292943929449294592946929479294892949929509295192952929539295492955929569295792958929599296092961929629296392964929659296692967929689296992970929719297292973929749297592976929779297892979929809298192982929839298492985929869298792988929899299092991929929299392994929959299692997929989299993000930019300293003930049300593006930079300893009930109301193012930139301493015930169301793018930199302093021930229302393024930259302693027930289302993030930319303293033930349303593036930379303893039930409304193042930439304493045930469304793048930499305093051930529305393054930559305693057930589305993060930619306293063930649306593066930679306893069930709307193072930739307493075930769307793078930799308093081930829308393084930859308693087930889308993090930919309293093930949309593096930979309893099931009310193102931039310493105931069310793108931099311093111931129311393114931159311693117931189311993120931219312293123931249312593126931279312893129931309313193132931339313493135931369313793138931399314093141931429314393144931459314693147931489314993150931519315293153931549315593156931579315893159931609316193162931639316493165931669316793168931699317093171931729317393174931759317693177931789317993180931819318293183931849318593186931879318893189931909319193192931939319493195931969319793198931999320093201932029320393204932059320693207932089320993210932119321293213932149321593216932179321893219932209322193222932239322493225932269322793228932299323093231932329323393234932359323693237932389323993240932419324293243932449324593246932479324893249932509325193252932539325493255932569325793258932599326093261932629326393264932659326693267932689326993270932719327293273932749327593276932779327893279932809328193282932839328493285932869328793288932899329093291932929329393294932959329693297932989329993300933019330293303933049330593306933079330893309933109331193312933139331493315933169331793318933199332093321933229332393324933259332693327933289332993330933319333293333933349333593336933379333893339933409334193342933439334493345933469334793348933499335093351933529335393354933559335693357933589335993360933619336293363933649336593366933679336893369933709337193372933739337493375933769337793378933799338093381933829338393384933859338693387933889338993390933919339293393933949339593396933979339893399934009340193402934039340493405934069340793408934099341093411934129341393414934159341693417934189341993420934219342293423934249342593426934279342893429934309343193432934339343493435934369343793438934399344093441934429344393444934459344693447934489344993450934519345293453934549345593456934579345893459934609346193462934639346493465934669346793468934699347093471934729347393474934759347693477934789347993480934819348293483934849348593486934879348893489934909349193492934939349493495934969349793498934999350093501935029350393504935059350693507935089350993510935119351293513935149351593516935179351893519935209352193522935239352493525935269352793528935299353093531935329353393534935359353693537935389353993540935419354293543935449354593546935479354893549935509355193552935539355493555935569355793558935599356093561935629356393564935659356693567935689356993570935719357293573935749357593576935779357893579935809358193582935839358493585935869358793588935899359093591935929359393594935959359693597935989359993600936019360293603936049360593606936079360893609936109361193612936139361493615936169361793618936199362093621936229362393624936259362693627936289362993630936319363293633936349363593636936379363893639936409364193642936439364493645936469364793648936499365093651936529365393654936559365693657936589365993660936619366293663936649366593666936679366893669936709367193672936739367493675936769367793678936799368093681936829368393684936859368693687936889368993690936919369293693936949369593696936979369893699937009370193702937039370493705937069370793708937099371093711937129371393714937159371693717937189371993720937219372293723937249372593726937279372893729937309373193732937339373493735937369373793738937399374093741937429374393744937459374693747937489374993750937519375293753937549375593756937579375893759937609376193762937639376493765937669376793768937699377093771937729377393774937759377693777937789377993780937819378293783937849378593786937879378893789937909379193792937939379493795937969379793798937999380093801938029380393804938059380693807938089380993810938119381293813938149381593816938179381893819938209382193822938239382493825938269382793828938299383093831938329383393834938359383693837938389383993840938419384293843938449384593846938479384893849938509385193852938539385493855938569385793858938599386093861938629386393864938659386693867938689386993870938719387293873938749387593876938779387893879938809388193882938839388493885938869388793888938899389093891938929389393894938959389693897938989389993900939019390293903939049390593906939079390893909939109391193912939139391493915939169391793918939199392093921939229392393924939259392693927939289392993930939319393293933939349393593936939379393893939939409394193942939439394493945939469394793948939499395093951939529395393954939559395693957939589395993960939619396293963939649396593966939679396893969939709397193972939739397493975939769397793978939799398093981939829398393984939859398693987939889398993990939919399293993939949399593996939979399893999940009400194002940039400494005940069400794008940099401094011940129401394014940159401694017940189401994020940219402294023940249402594026940279402894029940309403194032940339403494035940369403794038940399404094041940429404394044940459404694047940489404994050940519405294053940549405594056940579405894059940609406194062940639406494065940669406794068940699407094071940729407394074940759407694077940789407994080940819408294083940849408594086940879408894089940909409194092940939409494095940969409794098940999410094101941029410394104941059410694107941089410994110941119411294113941149411594116941179411894119941209412194122941239412494125941269412794128941299413094131941329413394134941359413694137941389413994140941419414294143941449414594146941479414894149941509415194152941539415494155941569415794158941599416094161941629416394164941659416694167941689416994170941719417294173941749417594176941779417894179941809418194182941839418494185941869418794188941899419094191941929419394194941959419694197941989419994200942019420294203942049420594206942079420894209942109421194212942139421494215942169421794218942199422094221942229422394224942259422694227942289422994230942319423294233942349423594236942379423894239942409424194242942439424494245942469424794248942499425094251942529425394254942559425694257942589425994260942619426294263942649426594266942679426894269942709427194272942739427494275942769427794278942799428094281942829428394284942859428694287942889428994290942919429294293942949429594296942979429894299943009430194302943039430494305943069430794308943099431094311943129431394314943159431694317943189431994320943219432294323943249432594326943279432894329943309433194332943339433494335943369433794338943399434094341943429434394344943459434694347943489434994350943519435294353943549435594356943579435894359943609436194362943639436494365943669436794368943699437094371943729437394374943759437694377943789437994380943819438294383943849438594386943879438894389943909439194392943939439494395943969439794398943999440094401944029440394404944059440694407944089440994410944119441294413944149441594416944179441894419944209442194422944239442494425944269442794428944299443094431944329443394434944359443694437944389443994440944419444294443944449444594446944479444894449944509445194452944539445494455944569445794458944599446094461944629446394464944659446694467944689446994470944719447294473944749447594476944779447894479944809448194482944839448494485944869448794488944899449094491944929449394494944959449694497944989449994500945019450294503945049450594506945079450894509945109451194512945139451494515945169451794518945199452094521945229452394524945259452694527945289452994530945319453294533945349453594536945379453894539945409454194542945439454494545945469454794548945499455094551945529455394554945559455694557945589455994560945619456294563945649456594566945679456894569945709457194572945739457494575945769457794578945799458094581945829458394584945859458694587945889458994590945919459294593945949459594596945979459894599946009460194602946039460494605946069460794608946099461094611946129461394614946159461694617946189461994620946219462294623946249462594626946279462894629946309463194632946339463494635946369463794638946399464094641946429464394644946459464694647946489464994650946519465294653946549465594656946579465894659946609466194662946639466494665946669466794668946699467094671946729467394674946759467694677946789467994680946819468294683946849468594686946879468894689946909469194692946939469494695946969469794698946999470094701947029470394704947059470694707947089470994710947119471294713947149471594716947179471894719947209472194722947239472494725947269472794728947299473094731947329473394734947359473694737947389473994740947419474294743947449474594746947479474894749947509475194752947539475494755947569475794758947599476094761947629476394764947659476694767947689476994770947719477294773947749477594776947779477894779947809478194782947839478494785947869478794788947899479094791947929479394794947959479694797947989479994800948019480294803948049480594806948079480894809948109481194812948139481494815948169481794818948199482094821948229482394824948259482694827948289482994830948319483294833948349483594836948379483894839948409484194842948439484494845948469484794848948499485094851948529485394854948559485694857948589485994860948619486294863948649486594866948679486894869948709487194872948739487494875948769487794878948799488094881948829488394884948859488694887948889488994890948919489294893948949489594896948979489894899949009490194902949039490494905949069490794908949099491094911949129491394914949159491694917949189491994920949219492294923949249492594926949279492894929949309493194932949339493494935949369493794938949399494094941949429494394944949459494694947949489494994950949519495294953949549495594956949579495894959949609496194962949639496494965949669496794968949699497094971949729497394974949759497694977949789497994980949819498294983949849498594986949879498894989949909499194992949939499494995949969499794998949999500095001950029500395004950059500695007950089500995010950119501295013950149501595016950179501895019950209502195022950239502495025950269502795028950299503095031950329503395034950359503695037950389503995040950419504295043950449504595046950479504895049950509505195052950539505495055950569505795058950599506095061950629506395064950659506695067950689506995070950719507295073950749507595076950779507895079950809508195082950839508495085950869508795088950899509095091950929509395094950959509695097950989509995100951019510295103951049510595106951079510895109951109511195112951139511495115951169511795118951199512095121951229512395124951259512695127951289512995130951319513295133951349513595136951379513895139951409514195142951439514495145951469514795148951499515095151951529515395154951559515695157951589515995160951619516295163951649516595166951679516895169951709517195172951739517495175951769517795178951799518095181951829518395184951859518695187951889518995190951919519295193951949519595196951979519895199952009520195202952039520495205952069520795208952099521095211952129521395214952159521695217952189521995220952219522295223952249522595226952279522895229952309523195232952339523495235952369523795238952399524095241952429524395244952459524695247952489524995250952519525295253952549525595256952579525895259952609526195262952639526495265952669526795268952699527095271952729527395274952759527695277952789527995280952819528295283952849528595286952879528895289952909529195292952939529495295952969529795298952999530095301953029530395304953059530695307953089530995310953119531295313953149531595316953179531895319953209532195322953239532495325953269532795328953299533095331953329533395334953359533695337953389533995340953419534295343953449534595346953479534895349953509535195352953539535495355953569535795358953599536095361953629536395364953659536695367953689536995370953719537295373953749537595376953779537895379953809538195382953839538495385953869538795388953899539095391953929539395394953959539695397953989539995400954019540295403954049540595406954079540895409954109541195412954139541495415954169541795418954199542095421954229542395424954259542695427954289542995430954319543295433954349543595436954379543895439954409544195442954439544495445954469544795448954499545095451954529545395454954559545695457954589545995460954619546295463954649546595466954679546895469954709547195472954739547495475954769547795478954799548095481954829548395484954859548695487954889548995490954919549295493954949549595496954979549895499955009550195502955039550495505955069550795508955099551095511955129551395514955159551695517955189551995520955219552295523955249552595526955279552895529955309553195532955339553495535955369553795538955399554095541955429554395544955459554695547955489554995550955519555295553955549555595556955579555895559955609556195562955639556495565955669556795568955699557095571955729557395574955759557695577955789557995580955819558295583955849558595586955879558895589955909559195592955939559495595955969559795598955999560095601956029560395604956059560695607956089560995610956119561295613956149561595616956179561895619956209562195622956239562495625956269562795628956299563095631956329563395634956359563695637956389563995640956419564295643956449564595646956479564895649956509565195652956539565495655956569565795658956599566095661956629566395664956659566695667956689566995670956719567295673956749567595676956779567895679956809568195682956839568495685956869568795688956899569095691956929569395694956959569695697956989569995700957019570295703957049570595706957079570895709957109571195712957139571495715957169571795718957199572095721957229572395724957259572695727957289572995730957319573295733957349573595736957379573895739957409574195742957439574495745957469574795748957499575095751957529575395754957559575695757957589575995760957619576295763957649576595766957679576895769957709577195772957739577495775957769577795778957799578095781957829578395784957859578695787957889578995790957919579295793957949579595796957979579895799958009580195802958039580495805958069580795808958099581095811958129581395814958159581695817958189581995820958219582295823958249582595826958279582895829958309583195832958339583495835958369583795838958399584095841958429584395844958459584695847958489584995850958519585295853958549585595856958579585895859958609586195862958639586495865958669586795868958699587095871958729587395874958759587695877958789587995880958819588295883958849588595886958879588895889958909589195892958939589495895958969589795898958999590095901959029590395904959059590695907959089590995910959119591295913959149591595916959179591895919959209592195922959239592495925959269592795928959299593095931959329593395934959359593695937959389593995940959419594295943959449594595946959479594895949959509595195952959539595495955959569595795958959599596095961959629596395964959659596695967959689596995970959719597295973959749597595976959779597895979959809598195982959839598495985959869598795988959899599095991959929599395994959959599695997959989599996000960019600296003960049600596006960079600896009960109601196012960139601496015960169601796018960199602096021960229602396024960259602696027960289602996030960319603296033960349603596036960379603896039960409604196042960439604496045960469604796048960499605096051960529605396054960559605696057960589605996060960619606296063960649606596066960679606896069960709607196072960739607496075960769607796078960799608096081960829608396084960859608696087960889608996090960919609296093960949609596096960979609896099961009610196102961039610496105961069610796108961099611096111961129611396114961159611696117961189611996120961219612296123961249612596126961279612896129961309613196132961339613496135961369613796138961399614096141961429614396144961459614696147961489614996150961519615296153961549615596156961579615896159961609616196162961639616496165961669616796168961699617096171961729617396174961759617696177961789617996180961819618296183961849618596186961879618896189961909619196192961939619496195961969619796198961999620096201962029620396204962059620696207962089620996210962119621296213962149621596216962179621896219962209622196222962239622496225962269622796228962299623096231962329623396234962359623696237962389623996240962419624296243962449624596246962479624896249962509625196252962539625496255962569625796258962599626096261962629626396264962659626696267962689626996270962719627296273962749627596276962779627896279962809628196282962839628496285962869628796288962899629096291962929629396294962959629696297962989629996300963019630296303963049630596306963079630896309963109631196312963139631496315963169631796318963199632096321963229632396324963259632696327963289632996330963319633296333963349633596336963379633896339963409634196342963439634496345963469634796348963499635096351963529635396354963559635696357963589635996360963619636296363963649636596366963679636896369963709637196372963739637496375963769637796378963799638096381963829638396384963859638696387963889638996390963919639296393963949639596396963979639896399964009640196402964039640496405964069640796408964099641096411964129641396414964159641696417964189641996420964219642296423964249642596426964279642896429964309643196432964339643496435964369643796438964399644096441964429644396444964459644696447964489644996450964519645296453964549645596456964579645896459964609646196462964639646496465964669646796468964699647096471964729647396474964759647696477964789647996480964819648296483964849648596486964879648896489964909649196492964939649496495964969649796498964999650096501965029650396504965059650696507965089650996510965119651296513965149651596516965179651896519965209652196522965239652496525965269652796528965299653096531965329653396534965359653696537965389653996540965419654296543965449654596546965479654896549965509655196552965539655496555965569655796558965599656096561965629656396564965659656696567965689656996570965719657296573965749657596576965779657896579965809658196582965839658496585965869658796588965899659096591965929659396594965959659696597965989659996600966019660296603966049660596606966079660896609966109661196612966139661496615966169661796618966199662096621966229662396624966259662696627966289662996630966319663296633966349663596636966379663896639966409664196642966439664496645966469664796648966499665096651966529665396654966559665696657966589665996660966619666296663966649666596666966679666896669966709667196672966739667496675966769667796678966799668096681966829668396684966859668696687966889668996690966919669296693966949669596696966979669896699967009670196702967039670496705967069670796708967099671096711967129671396714967159671696717967189671996720967219672296723967249672596726967279672896729967309673196732967339673496735967369673796738967399674096741967429674396744967459674696747967489674996750967519675296753967549675596756967579675896759967609676196762967639676496765967669676796768967699677096771967729677396774967759677696777967789677996780967819678296783967849678596786967879678896789967909679196792967939679496795967969679796798967999680096801968029680396804968059680696807968089680996810968119681296813968149681596816968179681896819968209682196822968239682496825968269682796828968299683096831968329683396834968359683696837968389683996840968419684296843968449684596846968479684896849968509685196852968539685496855968569685796858968599686096861968629686396864968659686696867968689686996870968719687296873968749687596876968779687896879968809688196882968839688496885968869688796888968899689096891968929689396894968959689696897968989689996900969019690296903969049690596906969079690896909969109691196912969139691496915969169691796918969199692096921969229692396924969259692696927969289692996930969319693296933969349693596936969379693896939969409694196942969439694496945969469694796948969499695096951969529695396954969559695696957969589695996960969619696296963969649696596966969679696896969969709697196972969739697496975969769697796978969799698096981969829698396984969859698696987969889698996990969919699296993969949699596996969979699896999970009700197002970039700497005970069700797008970099701097011970129701397014970159701697017970189701997020970219702297023970249702597026970279702897029970309703197032970339703497035970369703797038970399704097041970429704397044970459704697047970489704997050970519705297053970549705597056970579705897059970609706197062970639706497065970669706797068970699707097071970729707397074970759707697077970789707997080970819708297083970849708597086970879708897089970909709197092970939709497095970969709797098970999710097101971029710397104971059710697107971089710997110971119711297113971149711597116971179711897119971209712197122971239712497125971269712797128971299713097131971329713397134971359713697137971389713997140971419714297143971449714597146971479714897149971509715197152971539715497155971569715797158971599716097161971629716397164971659716697167971689716997170971719717297173971749717597176971779717897179971809718197182971839718497185971869718797188971899719097191971929719397194971959719697197971989719997200972019720297203972049720597206972079720897209972109721197212972139721497215972169721797218972199722097221972229722397224972259722697227972289722997230972319723297233972349723597236972379723897239972409724197242972439724497245972469724797248972499725097251972529725397254972559725697257972589725997260972619726297263972649726597266972679726897269972709727197272972739727497275972769727797278972799728097281972829728397284972859728697287972889728997290972919729297293972949729597296972979729897299973009730197302973039730497305973069730797308973099731097311973129731397314973159731697317973189731997320973219732297323973249732597326973279732897329973309733197332973339733497335973369733797338973399734097341973429734397344973459734697347973489734997350973519735297353973549735597356973579735897359973609736197362973639736497365973669736797368973699737097371973729737397374973759737697377973789737997380973819738297383973849738597386973879738897389973909739197392973939739497395973969739797398973999740097401974029740397404974059740697407974089740997410974119741297413974149741597416974179741897419974209742197422974239742497425974269742797428974299743097431974329743397434974359743697437974389743997440974419744297443974449744597446974479744897449974509745197452974539745497455974569745797458974599746097461974629746397464974659746697467974689746997470974719747297473974749747597476974779747897479974809748197482974839748497485974869748797488974899749097491974929749397494974959749697497974989749997500975019750297503975049750597506975079750897509975109751197512975139751497515975169751797518975199752097521975229752397524975259752697527975289752997530975319753297533975349753597536975379753897539975409754197542975439754497545975469754797548975499755097551975529755397554975559755697557975589755997560975619756297563975649756597566975679756897569975709757197572975739757497575975769757797578975799758097581975829758397584975859758697587975889758997590975919759297593975949759597596975979759897599976009760197602976039760497605976069760797608976099761097611976129761397614976159761697617976189761997620976219762297623976249762597626976279762897629976309763197632976339763497635976369763797638976399764097641976429764397644976459764697647976489764997650976519765297653976549765597656976579765897659976609766197662976639766497665976669766797668976699767097671976729767397674976759767697677976789767997680976819768297683976849768597686976879768897689976909769197692976939769497695976969769797698976999770097701977029770397704977059770697707977089770997710977119771297713977149771597716977179771897719977209772197722977239772497725977269772797728977299773097731977329773397734977359773697737977389773997740977419774297743977449774597746977479774897749977509775197752977539775497755977569775797758977599776097761977629776397764977659776697767977689776997770977719777297773977749777597776977779777897779977809778197782977839778497785977869778797788977899779097791977929779397794977959779697797977989779997800978019780297803978049780597806978079780897809978109781197812978139781497815978169781797818978199782097821978229782397824978259782697827978289782997830978319783297833978349783597836978379783897839978409784197842978439784497845978469784797848978499785097851978529785397854978559785697857978589785997860978619786297863978649786597866978679786897869978709787197872978739787497875978769787797878978799788097881978829788397884978859788697887978889788997890978919789297893978949789597896978979789897899979009790197902979039790497905979069790797908979099791097911979129791397914979159791697917979189791997920979219792297923979249792597926979279792897929979309793197932979339793497935979369793797938979399794097941979429794397944979459794697947979489794997950979519795297953979549795597956979579795897959979609796197962979639796497965979669796797968979699797097971979729797397974979759797697977979789797997980979819798297983979849798597986979879798897989979909799197992979939799497995979969799797998979999800098001980029800398004980059800698007980089800998010980119801298013980149801598016980179801898019980209802198022980239802498025980269802798028980299803098031980329803398034980359803698037980389803998040980419804298043980449804598046980479804898049980509805198052980539805498055980569805798058980599806098061980629806398064980659806698067980689806998070980719807298073980749807598076980779807898079980809808198082980839808498085980869808798088980899809098091980929809398094980959809698097980989809998100981019810298103981049810598106981079810898109981109811198112981139811498115981169811798118981199812098121981229812398124981259812698127981289812998130981319813298133981349813598136981379813898139981409814198142981439814498145981469814798148981499815098151981529815398154981559815698157981589815998160981619816298163981649816598166981679816898169981709817198172981739817498175981769817798178981799818098181981829818398184981859818698187981889818998190981919819298193981949819598196981979819898199982009820198202982039820498205982069820798208982099821098211982129821398214982159821698217982189821998220982219822298223982249822598226982279822898229982309823198232982339823498235982369823798238982399824098241982429824398244982459824698247982489824998250982519825298253982549825598256982579825898259982609826198262982639826498265982669826798268982699827098271982729827398274982759827698277982789827998280982819828298283982849828598286982879828898289982909829198292982939829498295982969829798298982999830098301983029830398304983059830698307983089830998310983119831298313983149831598316983179831898319983209832198322983239832498325983269832798328983299833098331983329833398334983359833698337983389833998340983419834298343983449834598346983479834898349983509835198352983539835498355983569835798358983599836098361983629836398364983659836698367983689836998370983719837298373983749837598376983779837898379983809838198382983839838498385983869838798388983899839098391983929839398394983959839698397983989839998400984019840298403984049840598406984079840898409984109841198412984139841498415984169841798418984199842098421984229842398424984259842698427984289842998430984319843298433984349843598436984379843898439984409844198442984439844498445984469844798448984499845098451984529845398454984559845698457984589845998460984619846298463984649846598466984679846898469984709847198472984739847498475984769847798478984799848098481984829848398484984859848698487984889848998490984919849298493984949849598496984979849898499985009850198502985039850498505985069850798508985099851098511985129851398514985159851698517985189851998520985219852298523985249852598526985279852898529985309853198532985339853498535985369853798538985399854098541985429854398544985459854698547985489854998550985519855298553985549855598556985579855898559985609856198562985639856498565985669856798568985699857098571985729857398574985759857698577985789857998580985819858298583985849858598586985879858898589985909859198592985939859498595985969859798598985999860098601986029860398604986059860698607986089860998610986119861298613986149861598616986179861898619986209862198622986239862498625986269862798628986299863098631986329863398634986359863698637986389863998640986419864298643986449864598646986479864898649986509865198652986539865498655986569865798658986599866098661986629866398664986659866698667986689866998670986719867298673986749867598676986779867898679986809868198682986839868498685986869868798688986899869098691986929869398694986959869698697986989869998700987019870298703987049870598706987079870898709987109871198712987139871498715987169871798718987199872098721987229872398724987259872698727987289872998730987319873298733987349873598736987379873898739987409874198742987439874498745987469874798748987499875098751987529875398754987559875698757987589875998760987619876298763987649876598766987679876898769987709877198772987739877498775987769877798778987799878098781987829878398784987859878698787987889878998790987919879298793987949879598796987979879898799988009880198802988039880498805988069880798808988099881098811988129881398814988159881698817988189881998820988219882298823988249882598826988279882898829988309883198832988339883498835988369883798838988399884098841988429884398844988459884698847988489884998850988519885298853988549885598856988579885898859988609886198862988639886498865988669886798868988699887098871988729887398874988759887698877988789887998880988819888298883988849888598886988879888898889988909889198892988939889498895988969889798898988999890098901989029890398904989059890698907989089890998910989119891298913989149891598916989179891898919989209892198922989239892498925989269892798928989299893098931989329893398934989359893698937989389893998940989419894298943989449894598946989479894898949989509895198952989539895498955989569895798958989599896098961989629896398964989659896698967989689896998970989719897298973989749897598976989779897898979989809898198982989839898498985989869898798988989899899098991989929899398994989959899698997989989899999000990019900299003990049900599006990079900899009990109901199012990139901499015990169901799018990199902099021990229902399024990259902699027990289902999030990319903299033990349903599036990379903899039990409904199042990439904499045990469904799048990499905099051990529905399054990559905699057990589905999060990619906299063990649906599066990679906899069990709907199072990739907499075990769907799078990799908099081990829908399084990859908699087990889908999090990919909299093990949909599096990979909899099991009910199102991039910499105991069910799108991099911099111991129911399114991159911699117991189911999120991219912299123991249912599126991279912899129991309913199132991339913499135991369913799138991399914099141991429914399144991459914699147991489914999150991519915299153991549915599156991579915899159991609916199162991639916499165991669916799168991699917099171991729917399174991759917699177991789917999180991819918299183991849918599186991879918899189991909919199192991939919499195991969919799198991999920099201992029920399204992059920699207992089920999210992119921299213992149921599216992179921899219992209922199222992239922499225992269922799228992299923099231992329923399234992359923699237992389923999240992419924299243992449924599246992479924899249992509925199252992539925499255992569925799258992599926099261992629926399264992659926699267992689926999270992719927299273992749927599276992779927899279992809928199282992839928499285992869928799288992899929099291992929929399294992959929699297992989929999300993019930299303993049930599306993079930899309993109931199312993139931499315993169931799318993199932099321993229932399324993259932699327993289932999330993319933299333993349933599336993379933899339993409934199342993439934499345993469934799348993499935099351993529935399354993559935699357993589935999360993619936299363993649936599366993679936899369993709937199372993739937499375993769937799378993799938099381993829938399384993859938699387993889938999390993919939299393993949939599396993979939899399994009940199402994039940499405994069940799408994099941099411994129941399414994159941699417994189941999420994219942299423994249942599426994279942899429994309943199432994339943499435994369943799438994399944099441994429944399444994459944699447994489944999450994519945299453994549945599456994579945899459994609946199462994639946499465994669946799468994699947099471994729947399474994759947699477994789947999480994819948299483994849948599486994879948899489994909949199492994939949499495994969949799498994999950099501995029950399504995059950699507995089950999510995119951299513995149951599516995179951899519995209952199522995239952499525995269952799528995299953099531995329953399534995359953699537995389953999540995419954299543995449954599546995479954899549995509955199552995539955499555995569955799558995599956099561995629956399564995659956699567995689956999570995719957299573995749957599576995779957899579995809958199582995839958499585995869958799588995899959099591995929959399594995959959699597995989959999600996019960299603996049960599606996079960899609996109961199612996139961499615996169961799618996199962099621996229962399624996259962699627996289962999630996319963299633996349963599636996379963899639996409964199642996439964499645996469964799648996499965099651996529965399654996559965699657996589965999660996619966299663996649966599666996679966899669996709967199672996739967499675996769967799678996799968099681996829968399684996859968699687996889968999690996919969299693996949969599696996979969899699997009970199702997039970499705997069970799708997099971099711997129971399714997159971699717997189971999720997219972299723997249972599726997279972899729997309973199732997339973499735997369973799738997399974099741997429974399744997459974699747997489974999750997519975299753997549975599756997579975899759997609976199762997639976499765997669976799768997699977099771997729977399774997759977699777997789977999780997819978299783997849978599786997879978899789997909979199792997939979499795997969979799798997999980099801998029980399804998059980699807998089980999810998119981299813998149981599816998179981899819998209982199822998239982499825998269982799828998299983099831998329983399834998359983699837998389983999840998419984299843998449984599846998479984899849998509985199852998539985499855998569985799858998599986099861998629986399864998659986699867998689986999870998719987299873998749987599876998779987899879998809988199882998839988499885998869988799888998899989099891998929989399894998959989699897998989989999900999019990299903999049990599906999079990899909999109991199912999139991499915999169991799918999199992099921999229992399924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999100000100001100002100003100004100005100006100007100008100009100010100011100012100013100014100015100016100017100018100019100020100021100022100023100024100025100026100027100028100029100030100031100032100033100034100035100036100037100038100039100040100041100042100043100044100045100046100047100048100049100050100051100052100053100054100055100056100057100058100059100060100061100062100063100064100065100066100067100068100069100070100071100072100073100074100075100076100077100078100079100080100081100082100083100084100085100086100087100088100089100090100091100092100093100094100095100096100097100098100099100100100101100102100103100104100105100106100107100108100109100110100111100112100113100114100115100116100117100118100119100120100121100122100123100124100125100126100127100128100129100130100131100132100133100134100135100136100137100138100139100140100141100142100143100144100145100146100147100148100149100150100151100152100153100154100155100156100157100158100159100160100161100162100163100164100165100166100167100168100169100170100171100172100173100174100175100176100177100178100179100180100181100182100183100184100185100186100187100188100189100190100191100192100193100194100195100196100197100198100199100200100201100202100203100204100205100206100207100208100209100210100211100212100213100214100215100216100217100218100219100220100221100222100223100224100225100226100227100228100229100230100231100232100233100234100235100236100237100238100239100240100241100242100243100244100245100246100247100248100249100250100251100252100253100254100255100256100257100258100259100260100261100262100263100264100265100266100267100268100269100270100271100272100273100274100275100276100277100278100279100280100281100282100283100284100285100286100287100288100289100290100291100292100293100294100295100296100297100298100299100300100301100302100303100304100305100306100307100308100309100310100311100312100313100314100315100316100317100318100319100320100321100322100323100324100325100326100327100328100329100330100331100332100333100334100335100336100337100338100339100340100341100342100343100344100345100346100347100348100349100350100351100352100353100354100355100356100357100358100359100360100361100362100363100364100365100366100367100368100369100370100371100372100373100374100375100376100377100378100379100380100381100382100383100384100385100386100387100388100389100390100391100392100393100394100395100396100397100398100399100400100401100402100403100404100405100406100407100408100409100410100411100412100413100414100415100416100417100418100419100420100421100422100423100424100425100426100427100428100429100430100431100432100433100434100435100436100437100438100439100440100441100442100443100444100445100446100447100448100449100450100451100452100453100454100455100456100457100458100459100460100461100462100463100464100465100466100467100468100469100470100471100472100473100474100475100476100477100478100479100480100481100482100483100484100485100486100487100488100489100490100491100492100493100494100495100496100497100498100499100500100501100502100503100504100505100506100507100508100509100510100511100512100513100514100515100516100517100518100519100520100521100522100523100524100525100526100527100528100529100530100531100532100533100534100535100536100537100538100539100540100541100542100543100544100545100546100547100548100549100550100551100552100553100554100555100556100557100558100559100560100561100562100563100564100565100566100567100568100569100570100571100572100573100574100575100576100577100578100579100580100581100582100583100584100585100586100587100588100589100590100591100592100593100594100595100596100597100598100599100600100601100602100603100604100605100606100607100608100609100610100611100612100613100614100615100616100617100618100619100620100621100622100623100624100625100626100627100628100629100630100631100632100633100634100635100636100637100638100639100640100641100642100643100644100645100646100647100648100649100650100651100652100653100654100655100656100657100658100659100660100661100662100663100664100665100666100667100668100669100670100671100672100673100674100675100676100677100678100679100680100681100682100683100684100685100686100687100688100689100690100691100692100693100694100695100696100697100698100699100700100701100702100703100704100705100706100707100708100709100710100711100712100713100714100715100716100717100718100719100720100721100722100723100724100725100726100727100728100729100730100731100732100733100734100735100736100737100738100739100740100741100742100743100744100745100746100747100748100749100750100751100752100753100754100755100756100757100758100759100760100761100762100763100764100765100766100767100768100769100770100771100772100773100774100775100776100777100778100779100780100781100782100783100784100785100786100787100788100789100790100791100792100793100794100795100796100797100798100799100800100801100802100803100804100805100806100807100808100809100810100811100812100813100814100815100816100817100818100819100820100821100822100823100824100825100826100827100828100829100830100831100832100833100834100835100836100837100838100839100840100841100842100843100844100845100846100847100848100849100850100851100852100853100854100855100856100857100858100859100860100861100862100863100864100865100866100867100868100869100870100871100872100873100874100875100876100877100878100879100880100881100882100883100884100885100886100887100888100889100890100891100892100893100894100895100896100897100898100899100900100901100902100903100904100905100906100907100908100909100910100911100912100913100914100915100916100917100918100919100920100921100922100923100924100925100926100927100928100929100930100931100932100933100934100935100936100937100938100939100940100941100942100943100944100945100946100947100948100949100950100951100952100953100954100955100956100957100958100959100960100961100962100963100964100965100966100967100968100969100970100971100972100973100974100975100976100977100978100979100980100981100982100983100984100985100986100987100988100989100990100991100992100993100994100995100996100997100998100999101000101001101002101003101004101005101006101007101008101009101010101011101012101013101014101015101016101017101018101019101020101021101022101023101024101025101026101027101028101029101030101031101032101033101034101035101036101037101038101039101040101041101042101043101044101045101046101047101048101049101050101051101052101053101054101055101056101057101058101059101060101061101062101063101064101065101066101067101068101069101070101071101072101073101074101075101076101077101078101079101080101081101082101083101084101085101086101087101088101089101090101091101092101093101094101095101096101097101098101099101100101101101102101103101104101105101106101107101108101109101110101111101112101113101114101115101116101117101118101119101120101121101122101123101124101125101126101127101128101129101130101131101132101133101134101135101136101137101138101139101140101141101142101143101144101145101146101147101148101149101150101151101152101153101154101155101156101157101158101159101160101161101162101163101164101165101166101167101168101169101170101171101172101173101174101175101176101177101178101179101180101181101182101183101184101185101186101187101188101189101190101191101192101193101194101195101196101197101198101199101200101201101202101203101204101205101206101207101208101209101210101211101212101213101214101215101216101217101218101219101220101221101222101223101224101225101226101227101228101229101230101231101232101233101234101235101236101237101238101239101240101241101242101243101244101245101246101247101248101249101250101251101252101253101254101255101256101257101258101259101260101261101262101263101264101265101266101267101268101269101270101271101272101273101274101275101276101277101278101279101280101281101282101283101284101285101286101287101288101289101290101291101292101293101294101295101296101297101298101299101300101301101302101303101304101305101306101307101308101309101310101311101312101313101314101315101316101317101318101319101320101321101322101323101324101325101326101327101328101329101330101331101332101333101334101335101336101337101338101339101340101341101342101343101344101345101346101347101348101349101350101351101352101353101354101355101356101357101358101359101360101361101362101363101364101365101366101367101368101369101370101371101372101373101374101375101376101377101378101379101380101381101382101383101384101385101386101387101388101389101390101391101392101393101394101395101396101397101398101399101400101401101402101403101404101405101406101407101408101409101410101411101412101413101414101415101416101417101418101419101420101421101422101423101424101425101426101427101428101429101430101431101432101433101434101435101436101437101438101439101440101441101442101443101444101445101446101447101448101449101450101451101452101453101454101455101456101457101458101459101460101461101462101463101464101465101466101467101468101469101470101471101472101473101474101475101476101477101478101479101480101481101482101483101484101485101486101487101488101489101490101491101492101493101494101495101496101497101498101499101500101501101502101503101504101505101506101507101508101509101510101511101512101513101514101515101516101517101518101519101520101521101522101523101524101525101526101527101528101529101530101531101532101533101534101535101536101537101538101539101540101541101542101543101544101545101546101547101548101549101550101551101552101553101554101555101556101557101558101559101560101561101562101563101564101565101566101567101568101569101570101571101572101573101574101575101576101577101578101579101580101581101582101583101584101585101586101587101588101589101590101591101592101593101594101595101596101597101598101599101600101601101602101603101604101605101606101607101608101609101610101611101612101613101614101615101616101617101618101619101620101621101622101623101624101625101626101627101628101629101630101631101632101633101634101635101636101637101638101639101640101641101642101643101644101645101646101647101648101649101650101651101652101653101654101655101656101657101658101659101660101661101662101663101664101665101666101667101668101669101670101671101672101673101674101675101676101677101678101679101680101681101682101683101684101685101686101687101688101689101690101691101692101693101694101695101696101697101698101699101700101701101702101703101704101705101706101707101708101709101710101711101712101713101714101715101716101717101718101719101720101721101722101723101724101725101726101727101728101729101730101731101732101733101734101735101736101737101738101739101740101741101742101743101744101745101746101747101748101749101750101751101752101753101754101755101756101757101758101759101760101761101762101763101764101765101766101767101768101769101770101771101772101773101774101775101776101777101778101779101780101781101782101783101784101785101786101787101788101789101790101791101792101793101794101795101796101797101798101799101800101801101802101803101804101805101806101807101808101809101810101811101812101813101814101815101816101817101818101819101820101821101822101823101824101825101826101827101828101829101830101831101832101833101834101835101836101837101838101839101840101841101842101843101844101845101846101847101848101849101850101851101852101853101854101855101856101857101858101859101860101861101862101863101864101865101866101867101868101869101870101871101872101873101874101875101876101877101878101879101880101881101882101883101884101885101886101887101888101889101890101891101892101893101894101895101896101897101898101899101900101901101902101903101904101905101906101907101908101909101910101911101912101913101914101915101916101917101918101919101920101921101922101923101924101925101926101927101928101929101930101931101932101933101934101935101936101937101938101939101940101941101942101943101944101945101946101947101948101949101950101951101952101953101954101955101956101957101958101959101960101961101962101963101964101965101966101967101968101969101970101971101972101973101974101975101976101977101978101979101980101981101982101983101984101985101986101987101988101989101990101991101992101993101994101995101996101997101998101999102000102001102002102003102004102005102006102007102008102009102010102011102012102013102014102015102016102017102018102019102020102021102022102023102024102025102026102027102028102029102030102031102032102033102034102035102036102037102038102039102040102041102042102043102044102045102046102047102048102049102050102051102052102053102054102055102056102057102058102059102060102061102062102063102064102065102066102067102068102069102070102071102072102073102074102075102076102077102078102079102080102081102082102083102084102085102086102087102088102089102090102091102092102093102094102095102096102097102098102099102100102101102102102103102104102105102106102107102108102109102110102111102112102113102114102115102116102117102118102119102120102121102122102123102124102125102126102127102128102129102130102131102132102133102134102135102136102137102138102139102140102141102142102143102144102145102146102147102148102149102150102151102152102153102154102155102156102157102158102159102160102161102162102163102164102165102166102167102168102169102170102171102172102173102174102175102176102177102178102179102180102181102182102183102184102185102186102187102188102189102190102191102192102193102194102195102196102197102198102199102200102201102202102203102204102205102206102207102208102209102210102211102212102213102214102215102216102217102218102219102220102221102222102223102224102225102226102227102228102229102230102231102232102233102234102235102236102237102238102239102240102241102242102243102244102245102246102247102248102249102250102251102252102253102254102255102256102257102258102259102260102261102262102263102264102265102266102267102268102269102270102271102272102273102274102275102276102277102278102279102280102281102282102283102284102285102286102287102288102289102290102291102292102293102294102295102296102297102298102299102300102301102302102303102304102305102306102307102308102309102310102311102312102313102314102315102316102317102318102319102320102321102322102323102324102325102326102327102328102329102330102331102332102333102334102335102336102337102338102339102340102341102342102343102344102345102346102347102348102349102350102351102352102353102354102355102356102357102358102359102360102361102362102363102364102365102366102367102368102369102370102371102372102373102374102375102376102377102378102379102380102381102382102383102384102385102386102387102388102389102390102391102392102393102394102395102396102397102398102399102400102401102402102403102404102405102406102407102408102409102410102411102412102413102414102415102416102417102418102419102420102421102422102423102424102425102426102427102428102429102430102431102432102433102434102435102436102437102438102439102440102441102442102443102444102445102446102447102448102449102450102451102452102453102454102455102456102457102458102459102460102461102462102463102464102465102466102467102468102469102470102471102472102473102474102475102476102477102478102479102480102481102482102483102484102485102486102487102488102489102490102491102492102493102494102495102496102497102498102499102500102501102502102503102504102505102506102507102508102509102510102511102512102513102514102515102516102517102518102519102520102521102522102523102524102525102526102527102528102529102530102531102532102533102534102535102536102537102538102539102540102541102542102543102544102545102546102547102548102549102550102551102552102553102554102555102556102557102558102559102560102561102562102563102564102565102566102567102568102569102570102571102572102573102574102575102576102577102578102579102580102581102582102583102584102585102586102587102588102589102590102591102592102593102594102595102596102597102598102599102600102601102602102603102604102605102606102607102608102609102610102611102612102613102614102615102616102617102618102619102620102621102622102623102624102625102626102627102628102629102630102631102632102633102634102635102636102637102638102639102640102641102642102643102644102645102646102647102648102649102650102651102652102653102654102655102656102657102658102659102660102661102662102663102664102665102666102667102668102669102670102671102672102673102674102675102676102677102678102679102680102681102682102683102684102685102686102687102688102689102690102691102692102693102694102695102696102697102698102699102700102701102702102703102704102705102706102707102708102709102710102711102712102713102714102715102716102717102718102719102720102721102722102723102724102725102726102727102728102729102730102731102732102733102734102735102736102737102738102739102740102741102742102743102744102745102746102747102748102749102750102751102752102753102754102755102756102757102758102759102760102761102762102763102764102765102766102767102768102769102770102771102772102773102774102775102776102777102778102779102780102781102782102783102784102785102786102787102788102789102790102791102792102793102794102795102796102797102798102799102800102801102802102803102804102805102806102807102808102809102810102811102812102813102814102815102816102817102818102819102820102821102822102823102824102825102826102827102828102829102830102831102832102833102834102835102836102837102838102839102840102841102842102843102844102845102846102847102848102849102850102851102852102853102854102855102856102857102858102859102860102861102862102863102864102865102866102867102868102869102870102871102872102873102874102875102876102877102878102879102880102881102882102883102884102885102886102887102888102889102890102891102892102893102894102895102896102897102898102899102900102901102902102903102904102905102906102907102908102909102910102911102912102913102914102915102916102917102918102919102920102921102922102923102924102925102926102927102928102929102930102931102932102933102934102935102936102937102938102939102940102941102942102943102944102945102946102947102948102949102950102951102952102953102954102955102956102957102958102959102960102961102962102963102964102965102966102967102968102969102970102971102972102973102974102975102976102977102978102979102980102981102982102983102984102985102986102987102988102989102990102991102992102993102994102995102996102997102998102999103000103001103002103003103004103005103006103007103008103009103010103011103012103013103014103015103016103017103018103019103020103021103022103023103024103025103026103027103028103029103030103031103032103033103034103035103036103037103038103039103040103041103042103043103044103045103046103047103048103049103050103051103052103053103054103055103056103057103058103059103060103061103062103063103064103065103066103067103068103069103070103071103072103073103074103075103076103077103078103079103080103081103082103083103084103085103086103087103088103089103090103091103092103093103094103095103096103097103098103099103100103101103102103103103104103105103106103107103108103109103110103111103112103113103114103115103116103117103118103119103120103121103122103123103124103125103126103127103128103129103130103131103132103133103134103135103136103137103138103139103140103141103142103143103144103145103146103147103148103149103150103151103152103153103154103155103156103157103158103159103160103161103162103163103164103165103166103167103168103169103170103171103172103173103174103175103176103177103178103179103180103181103182103183103184103185103186103187103188103189103190103191103192103193103194103195103196103197103198103199103200103201103202103203103204103205103206103207103208103209103210103211103212103213103214103215103216103217103218103219103220103221103222103223103224103225103226103227103228103229103230103231103232103233103234103235103236103237103238103239103240103241103242103243103244103245103246103247103248103249103250103251103252103253103254103255103256103257103258103259103260103261103262103263103264103265103266103267103268103269103270103271103272103273103274103275103276103277103278103279103280103281103282103283103284103285103286103287103288103289103290103291103292103293103294103295103296103297103298103299103300103301103302103303103304103305103306103307103308103309103310103311103312103313103314103315103316103317103318103319103320103321103322103323103324103325103326103327103328103329103330103331103332103333103334103335103336103337103338103339103340103341103342103343103344103345103346103347103348103349103350103351103352103353103354103355103356103357103358103359103360103361103362103363103364103365103366103367103368103369103370103371103372103373103374103375103376103377103378103379103380103381103382103383103384103385103386103387103388103389103390103391103392103393103394103395103396103397103398103399103400103401103402103403103404103405103406103407103408103409103410103411103412103413103414103415103416103417103418103419103420103421103422103423103424103425103426103427103428103429103430103431103432103433103434103435103436103437103438103439103440103441103442103443103444103445103446103447103448103449103450103451103452103453103454103455103456103457103458103459103460103461103462103463103464103465103466103467103468103469103470103471103472103473103474103475103476103477103478103479103480103481103482103483103484103485103486103487103488103489103490103491103492103493103494103495103496103497103498103499103500103501103502103503103504103505103506103507103508103509103510103511103512103513103514103515103516103517103518103519103520103521103522103523103524103525103526103527103528103529103530103531103532103533103534103535103536103537103538103539103540103541103542103543103544103545103546103547103548103549103550103551103552103553103554103555103556103557103558103559103560103561103562103563103564103565103566103567103568103569103570103571103572103573103574103575103576103577103578103579103580103581103582103583103584103585103586103587103588103589103590103591103592103593103594103595103596103597103598103599103600103601103602103603103604103605103606103607103608103609103610103611103612103613103614103615103616103617103618103619103620103621103622103623103624103625103626103627103628103629103630103631103632103633103634103635103636103637103638103639103640103641103642103643103644103645103646103647103648103649103650103651103652103653103654103655103656103657103658103659103660103661103662103663103664103665103666103667103668103669103670103671103672103673103674103675103676103677103678103679103680103681103682103683103684103685103686103687103688103689103690103691103692103693103694103695103696103697103698103699103700103701103702103703103704103705103706103707103708103709103710103711103712103713103714103715103716103717103718103719103720103721103722103723103724103725103726103727103728103729103730103731103732103733103734103735103736103737103738103739103740103741103742103743103744103745103746103747103748103749103750103751103752103753103754103755103756103757103758103759103760103761103762103763103764103765103766103767103768103769103770103771103772103773103774103775103776103777103778103779103780103781103782103783103784103785103786103787103788103789103790103791103792103793103794103795103796103797103798103799103800103801103802103803103804103805103806103807103808103809103810103811103812103813103814103815103816103817103818103819103820103821103822103823103824103825103826103827103828103829103830103831103832103833103834103835103836103837103838103839103840103841103842103843103844103845103846103847103848103849103850103851103852103853103854103855103856103857103858103859103860103861103862103863103864103865103866103867103868103869103870103871103872103873103874103875103876103877103878103879103880103881103882103883103884103885103886103887103888103889103890103891103892103893103894103895103896103897103898103899103900103901103902103903103904103905103906103907103908103909103910103911103912103913103914103915103916103917103918103919103920103921103922103923103924103925103926103927103928103929103930103931103932103933103934103935103936103937103938103939103940103941103942103943103944103945103946103947103948103949103950103951103952103953103954103955103956103957103958103959103960103961103962103963103964103965103966103967103968103969103970103971103972103973103974103975103976103977103978103979103980103981103982103983103984103985103986103987103988103989103990103991103992103993103994103995103996103997103998103999104000104001104002104003104004104005104006104007104008104009104010104011104012104013104014104015104016104017104018104019104020104021104022104023104024104025104026104027104028104029104030104031104032104033104034104035104036104037104038104039104040104041104042104043104044104045104046104047104048104049104050104051104052104053104054104055104056104057104058104059104060104061104062104063104064104065104066104067104068104069104070104071104072104073104074104075104076104077104078104079104080104081104082104083104084104085104086104087104088104089104090104091104092104093104094104095104096104097104098104099104100104101104102104103104104104105104106104107104108104109104110104111104112104113104114104115104116104117104118104119104120104121104122104123104124104125104126104127104128104129104130104131104132104133104134104135104136104137104138104139104140104141104142104143104144104145104146104147104148104149104150104151104152104153104154104155104156104157104158104159104160104161104162104163104164104165104166104167104168104169104170104171104172104173104174104175104176104177104178104179104180104181104182104183104184104185104186104187104188104189104190104191104192104193104194104195104196104197104198104199104200104201104202104203104204104205104206104207104208104209104210104211104212104213104214104215104216104217104218104219104220104221104222104223104224104225104226104227104228104229104230104231104232104233104234104235104236104237104238104239104240104241104242104243104244104245104246104247104248104249104250104251104252104253104254104255104256104257104258104259104260104261104262104263104264104265104266104267104268104269104270104271104272104273104274104275104276104277104278104279104280104281104282104283104284104285104286104287104288104289104290104291104292104293104294104295104296104297104298104299104300104301104302104303104304104305104306104307104308104309104310104311104312104313104314104315104316104317104318104319104320104321104322104323104324104325104326104327104328104329104330104331104332104333104334104335104336104337104338104339104340104341104342104343104344104345104346104347104348104349104350104351104352104353104354104355104356104357104358104359104360104361104362104363104364104365104366104367104368104369104370104371104372104373104374104375104376104377104378104379104380104381104382104383104384104385104386104387104388104389104390104391104392104393104394104395104396104397104398104399104400104401104402104403104404104405104406104407104408104409104410104411104412104413104414104415104416104417104418104419104420104421104422104423104424104425104426104427104428104429104430104431104432104433104434104435104436104437104438104439104440104441104442104443104444104445104446104447104448104449104450104451104452104453104454104455104456104457104458104459104460104461104462104463104464104465104466104467104468104469104470104471104472104473104474104475104476104477104478104479104480104481104482104483104484104485104486104487104488104489104490104491104492104493104494104495104496104497104498104499104500104501104502104503104504104505104506104507104508104509104510104511104512104513104514104515104516104517104518104519104520104521104522104523104524104525104526104527104528104529104530104531104532104533104534104535104536104537104538104539104540104541104542104543104544104545104546104547104548104549104550104551104552104553104554104555104556104557104558104559104560104561104562104563104564104565104566104567104568104569104570104571104572104573104574104575104576104577104578104579104580104581104582104583104584104585104586104587104588104589104590104591104592104593104594104595104596104597104598104599104600104601104602104603104604104605104606104607104608104609104610104611104612104613104614104615104616104617104618104619104620104621104622104623104624104625104626104627104628104629104630104631104632104633104634104635104636104637104638104639104640104641104642104643104644104645104646104647104648104649104650104651104652104653104654104655104656104657104658104659104660104661104662104663104664104665104666104667104668104669104670104671104672104673104674104675104676104677104678104679104680104681104682104683104684104685104686104687104688104689104690104691104692104693104694104695104696104697104698104699104700104701104702104703104704104705104706104707104708104709104710104711104712104713104714104715104716104717104718104719104720104721104722104723104724104725104726104727104728104729104730104731104732104733104734104735104736104737104738104739104740104741104742104743104744104745104746104747104748104749104750104751104752104753104754104755104756104757104758104759104760104761104762104763104764104765104766104767104768104769104770104771104772104773104774104775104776104777104778104779104780104781104782104783104784104785104786104787104788104789104790104791104792104793104794104795104796104797104798104799104800104801104802104803104804104805104806104807104808104809104810104811104812104813104814104815104816104817104818104819104820104821104822104823104824104825104826104827104828104829104830104831104832104833104834104835104836104837104838104839104840104841104842104843104844104845104846104847104848104849104850104851104852104853104854104855104856104857104858104859104860104861104862104863104864104865104866104867104868104869104870104871104872104873104874104875104876104877104878104879104880104881104882104883104884104885104886104887104888104889104890104891104892104893104894104895104896104897104898104899104900104901104902104903104904104905104906104907104908104909104910104911104912104913104914104915104916104917104918104919104920104921104922104923104924104925104926104927104928104929104930104931104932104933104934104935104936104937104938104939104940104941104942104943104944104945104946104947104948104949104950104951104952104953104954104955104956104957104958104959104960104961104962104963104964104965104966104967104968104969104970104971104972104973104974104975104976104977104978104979104980104981104982104983104984104985104986104987104988104989104990104991104992104993104994104995104996104997104998104999105000105001105002105003105004105005105006105007105008105009105010105011105012105013105014105015105016105017105018105019105020105021105022105023105024105025105026105027105028105029105030105031105032105033105034105035105036105037105038105039105040105041105042105043105044105045105046105047105048105049105050105051105052105053105054105055105056105057105058105059105060105061105062105063105064105065105066105067105068105069105070105071105072105073105074105075105076105077105078105079105080105081105082105083105084105085105086105087105088105089105090105091105092105093105094105095105096105097105098105099105100105101105102105103105104105105105106105107105108105109105110105111105112105113105114105115105116105117105118105119105120105121105122105123105124105125105126105127105128105129105130105131105132105133105134105135105136105137105138105139105140105141105142105143105144105145105146105147105148105149105150105151105152105153105154105155105156105157105158105159105160105161105162105163105164105165105166105167105168105169105170105171105172105173105174105175105176105177105178105179105180105181105182105183105184105185105186105187105188105189105190105191105192105193105194105195105196105197105198105199105200105201105202105203105204105205105206105207105208105209105210105211105212105213105214105215105216105217105218105219105220105221105222105223105224105225105226105227105228105229105230105231105232105233105234105235105236105237105238105239105240105241105242105243105244105245105246105247105248105249105250105251105252105253105254105255105256105257105258105259105260105261105262105263105264105265105266105267105268105269105270105271105272105273105274105275105276105277105278105279105280105281105282105283105284105285105286105287105288105289105290105291105292105293105294105295105296105297105298105299105300105301105302105303105304105305105306105307105308105309105310105311105312105313105314105315105316105317105318105319105320105321105322105323105324105325105326105327105328105329105330105331105332105333105334105335105336105337105338105339105340105341105342105343105344105345105346105347105348105349105350105351105352105353105354105355105356105357105358105359105360105361105362105363105364105365105366105367105368105369105370105371105372105373105374105375105376105377105378105379105380105381105382105383105384105385105386105387105388105389105390105391105392105393105394105395105396105397105398105399105400105401105402105403105404105405105406105407105408105409105410105411105412105413105414105415105416105417105418105419105420105421105422105423105424105425105426105427105428105429105430105431105432105433105434105435105436105437105438105439105440105441105442105443105444105445105446105447105448105449105450105451105452105453105454105455105456105457105458105459105460105461105462105463105464105465105466105467105468105469105470105471105472105473105474105475105476105477105478105479105480105481105482105483105484105485105486105487105488105489105490105491105492105493105494105495105496105497105498105499105500105501105502105503105504105505105506105507105508105509105510105511105512105513105514105515105516105517105518105519105520105521105522105523105524105525105526105527105528105529105530105531105532105533105534105535105536105537105538105539105540105541105542105543105544105545105546105547105548105549105550105551105552105553105554105555105556105557105558105559105560105561105562105563105564105565105566105567105568105569105570105571105572105573105574105575105576105577105578105579105580105581105582105583105584105585105586105587105588105589105590105591105592105593105594105595105596105597105598105599105600105601105602105603105604105605105606105607105608105609105610105611105612105613105614105615105616105617105618105619105620105621105622105623105624105625105626105627105628105629105630105631105632105633105634105635105636105637105638105639105640105641105642105643105644105645105646105647105648105649105650105651105652105653105654105655105656105657105658105659105660105661105662105663105664105665105666105667105668105669105670105671105672105673105674105675105676105677105678105679105680105681105682105683105684105685105686105687105688105689105690105691105692105693105694105695105696105697105698105699105700105701105702105703105704105705105706105707105708105709105710105711105712105713105714105715105716105717105718105719105720105721105722105723105724105725105726105727105728105729105730105731105732105733105734105735105736105737105738105739105740105741105742105743105744105745105746105747105748105749105750105751105752105753105754105755105756105757105758105759105760105761105762105763105764105765105766105767105768105769105770105771105772105773105774105775105776105777105778105779105780105781105782105783105784105785105786105787105788105789105790105791105792105793105794105795105796105797105798105799105800105801105802105803105804105805105806105807105808105809105810105811105812105813105814105815105816105817105818105819105820105821105822105823105824105825105826105827105828105829105830105831105832105833105834105835105836105837105838105839105840105841105842105843105844105845105846105847105848105849105850105851105852105853105854105855105856105857105858105859105860105861105862105863105864105865105866105867105868105869105870105871105872105873105874105875105876105877105878105879105880105881105882105883105884105885105886105887105888105889105890105891105892105893105894105895105896105897105898105899105900105901105902105903105904105905105906105907105908105909105910105911105912105913105914105915105916105917105918105919105920105921105922105923105924105925105926105927105928105929105930105931105932105933105934105935105936105937105938105939105940105941105942105943105944105945105946105947105948105949105950105951105952105953105954105955105956105957105958105959105960105961105962105963105964105965105966105967105968105969105970105971105972105973105974105975105976105977105978105979105980105981105982105983105984105985105986105987105988105989105990105991105992105993105994105995105996105997105998105999106000106001106002106003106004106005106006106007106008106009106010106011106012106013106014106015106016106017106018106019106020106021106022106023106024106025106026106027106028106029106030106031106032106033106034106035106036106037106038106039106040106041106042106043106044106045106046106047106048106049106050106051106052106053106054106055106056106057106058106059106060106061106062106063106064106065106066106067106068106069106070106071106072106073106074106075106076106077106078106079106080106081106082106083106084106085106086106087106088106089106090106091106092106093106094106095106096106097106098106099106100106101106102106103106104106105106106106107106108106109106110106111106112106113106114106115106116106117106118106119106120106121106122106123106124106125106126106127106128106129106130106131106132106133106134106135106136106137106138106139106140106141106142106143106144106145106146106147106148106149106150106151106152106153106154106155106156106157106158106159106160106161106162106163106164106165106166106167106168106169106170106171106172106173106174106175106176106177106178106179106180106181106182106183106184106185106186106187106188106189106190106191106192106193106194106195106196106197106198106199106200106201106202106203106204106205106206106207106208106209106210106211106212106213106214106215106216106217106218106219106220106221106222106223106224106225106226106227106228106229106230106231106232106233106234106235106236106237106238106239106240106241106242106243106244106245106246106247106248106249106250106251106252106253106254106255106256106257106258106259106260106261106262106263106264106265106266106267106268106269106270106271106272106273106274106275106276106277106278106279106280106281106282106283106284106285106286106287106288106289106290106291106292106293106294106295106296106297106298106299106300106301106302106303106304106305106306106307106308106309106310106311106312106313106314106315106316106317106318106319106320106321106322106323106324106325106326106327106328106329106330106331106332106333106334106335106336106337106338106339106340106341106342106343106344106345106346106347106348106349106350106351106352106353106354106355106356106357106358106359106360106361106362106363106364106365106366106367106368106369106370106371106372106373106374106375106376106377106378106379106380106381106382106383106384106385106386106387106388106389106390106391106392106393106394106395106396106397106398106399106400106401106402106403106404106405106406106407106408106409106410106411106412106413106414106415106416106417106418106419106420106421106422106423106424106425106426106427106428106429106430106431106432106433106434106435106436106437106438106439106440106441106442106443106444106445106446106447106448106449106450106451106452106453106454106455106456106457106458106459106460106461106462106463106464106465106466106467106468106469106470106471106472106473106474106475106476106477106478106479106480106481106482106483106484106485106486106487106488106489106490106491106492106493106494106495106496106497106498106499106500106501106502106503106504106505106506106507106508106509106510106511106512106513106514106515106516106517106518106519106520106521106522106523106524106525106526106527106528106529106530106531106532106533106534106535106536106537106538106539106540106541106542106543106544106545106546106547106548106549106550106551106552106553106554106555106556106557106558106559106560106561106562106563106564106565106566106567106568106569106570106571106572106573106574106575106576106577106578106579106580106581106582106583106584106585106586106587106588106589106590106591106592106593106594106595106596106597106598106599106600106601106602106603106604106605106606106607106608106609106610106611106612106613106614106615106616106617106618106619106620106621106622106623106624106625106626106627106628106629106630106631106632106633106634106635106636106637106638106639106640106641106642106643106644106645106646106647106648106649106650106651106652106653106654106655106656106657106658106659106660106661106662106663106664106665106666106667106668106669106670106671106672106673106674106675106676106677106678106679106680106681106682106683106684106685106686106687106688106689106690106691106692106693106694106695106696106697106698106699106700106701106702106703106704106705106706106707106708106709106710106711106712106713106714106715106716106717106718106719106720106721106722106723106724106725106726106727106728106729106730106731106732106733106734106735106736106737106738106739106740106741106742106743106744106745106746106747106748106749106750106751106752106753106754106755106756106757106758106759106760106761106762106763106764106765106766106767106768106769106770106771106772106773106774106775106776106777106778106779106780106781106782106783106784106785106786106787106788106789106790106791106792106793106794106795106796106797106798106799106800106801106802106803106804106805106806106807106808106809106810106811106812106813106814106815106816106817106818106819106820106821106822106823106824106825106826106827106828106829106830106831106832106833106834106835106836106837106838106839106840106841106842106843106844106845106846106847106848106849106850106851106852106853106854106855106856106857106858106859106860106861106862106863106864106865106866106867106868106869106870106871106872106873106874106875106876106877106878106879106880106881106882106883106884106885106886106887106888106889106890106891106892106893106894106895106896106897106898106899106900106901106902106903106904106905106906106907106908106909106910106911106912106913106914106915106916106917106918106919106920106921106922106923106924106925106926106927106928106929106930106931106932106933106934106935106936106937106938106939106940106941106942106943106944106945106946106947106948106949106950106951106952106953106954106955106956106957106958106959106960106961106962106963106964106965106966106967106968106969106970106971106972106973106974106975106976106977106978106979106980106981106982106983106984106985106986106987106988106989106990106991106992106993106994106995106996106997106998106999107000107001107002107003107004107005107006107007107008107009107010107011107012107013107014107015107016107017107018107019107020107021107022107023107024107025107026107027107028107029107030107031107032107033107034107035107036107037107038107039107040107041107042107043107044107045107046107047107048107049107050107051107052107053107054107055107056107057107058107059107060107061107062107063107064107065107066107067107068107069107070107071107072107073107074107075107076107077107078107079107080107081107082107083107084107085107086107087107088107089107090107091107092107093107094107095107096107097107098107099107100107101107102107103107104107105107106107107107108107109107110107111107112107113107114107115107116107117107118107119107120107121107122107123107124107125107126107127107128107129107130107131107132107133107134107135107136107137107138107139107140107141107142107143107144107145107146107147107148107149107150107151107152107153107154107155107156107157107158107159107160107161107162107163107164107165107166107167107168107169107170107171107172107173107174107175107176107177107178107179107180107181107182107183107184107185107186107187107188107189107190107191107192107193107194107195107196107197107198107199107200107201107202107203107204107205107206107207107208107209107210107211107212107213107214107215107216107217107218107219107220107221107222107223107224107225107226107227107228107229107230107231107232107233107234107235107236107237107238107239107240107241107242107243107244107245107246107247107248107249107250107251107252107253107254107255107256107257107258107259107260107261107262107263107264107265107266107267107268107269107270107271107272107273107274107275107276107277107278107279107280107281107282107283107284107285107286107287107288107289107290107291107292107293107294107295107296107297107298107299107300107301107302107303107304107305107306107307107308107309107310107311107312107313107314107315107316107317107318107319107320107321107322107323107324107325107326107327107328107329107330107331107332107333107334107335107336107337107338107339107340107341107342107343107344107345107346107347107348107349107350107351107352107353107354107355107356107357107358107359107360107361107362107363107364107365107366107367107368107369107370107371107372107373107374107375107376107377107378107379107380107381107382107383107384107385107386107387107388107389107390107391107392107393107394107395107396107397107398107399107400107401107402107403107404107405107406107407107408107409107410107411107412107413107414107415107416107417107418107419107420107421107422107423107424107425107426107427107428107429107430107431107432107433107434107435107436107437107438107439107440107441107442107443107444107445107446107447107448107449107450107451107452107453107454107455107456107457107458107459107460107461107462107463107464107465107466107467107468107469107470107471107472107473107474107475107476107477107478107479107480107481107482107483107484107485107486107487107488107489107490107491107492107493107494107495107496107497107498107499107500107501107502107503107504107505107506107507107508107509107510107511107512107513107514107515107516107517107518107519107520107521107522107523107524107525107526107527107528107529107530107531107532107533107534107535107536107537107538107539107540107541107542107543107544107545107546107547107548107549107550107551107552107553107554107555107556107557107558107559107560107561107562107563107564107565107566107567107568107569107570107571107572107573107574107575107576107577107578107579107580107581107582107583107584107585107586107587107588107589107590107591107592107593107594107595107596107597107598107599107600107601107602107603107604107605107606107607107608107609107610107611107612107613107614107615107616107617107618107619107620107621107622107623107624107625107626107627107628107629107630107631107632107633107634107635107636107637107638107639107640107641107642107643107644107645107646107647107648107649107650107651107652107653107654107655107656107657107658107659107660107661107662107663107664107665107666107667107668107669107670107671107672107673107674107675107676107677107678107679107680107681107682107683107684107685107686107687107688107689107690107691107692107693107694107695107696107697107698107699107700107701107702107703107704107705107706107707107708107709107710107711107712107713107714107715107716107717107718107719107720107721107722107723107724107725107726107727107728107729107730107731107732107733107734107735107736107737107738107739107740107741107742107743107744107745107746107747107748107749107750107751107752107753107754107755107756107757107758107759107760107761107762107763107764107765107766107767107768107769107770107771107772107773107774107775107776107777107778107779107780107781107782107783107784107785107786107787107788107789107790107791107792107793107794107795107796107797107798107799107800107801107802107803107804107805107806107807107808107809107810107811107812107813107814107815107816107817107818107819107820107821107822107823107824107825107826107827107828107829107830107831107832107833107834107835107836107837107838107839107840107841107842107843107844107845107846107847107848107849107850107851107852107853107854107855107856107857107858107859107860107861107862107863107864107865107866107867107868107869107870107871107872107873107874107875107876107877107878107879107880107881107882107883107884107885107886107887107888107889107890107891107892107893107894107895107896107897107898107899107900107901107902107903107904107905107906107907107908107909107910107911107912107913107914107915107916107917107918107919107920107921107922107923107924107925107926107927107928107929107930107931107932107933107934107935107936107937107938107939107940107941107942107943107944107945107946107947107948107949107950107951107952107953107954107955107956107957107958107959107960107961107962107963107964107965107966107967107968107969107970107971107972107973107974107975107976107977107978107979107980107981107982107983107984107985107986107987107988107989107990107991107992107993107994107995107996107997107998107999108000108001108002108003108004108005108006108007108008108009108010108011108012108013108014108015108016108017108018108019108020108021108022108023108024108025108026108027108028108029108030108031108032108033108034108035108036108037108038108039108040108041108042108043108044108045108046108047108048108049108050108051108052108053108054108055108056108057108058108059108060108061108062108063108064108065108066108067108068108069108070108071108072108073108074108075108076108077108078108079108080108081108082108083108084108085108086108087108088108089108090108091108092108093108094108095108096108097108098108099108100108101108102108103108104108105108106108107108108108109108110108111108112108113108114108115108116108117108118108119108120108121108122108123108124108125108126108127108128108129108130108131108132108133108134108135108136108137108138108139108140108141108142108143108144108145108146108147108148108149108150108151108152108153108154108155108156108157108158108159108160108161108162108163108164108165108166108167108168108169108170108171108172108173108174108175108176108177108178108179108180108181108182108183108184108185108186108187108188108189108190108191108192108193108194108195108196108197108198108199108200108201108202108203108204108205108206108207108208108209108210108211108212108213108214108215108216108217108218108219108220108221108222108223108224108225108226108227108228108229108230108231108232108233108234108235108236108237108238108239108240108241108242108243108244108245108246108247108248108249108250108251108252108253108254108255108256108257108258108259108260108261108262108263108264108265108266108267108268108269108270108271108272108273108274108275108276108277108278108279108280108281108282108283108284108285108286108287108288108289108290108291108292108293108294108295108296108297108298108299108300108301108302108303108304108305108306108307108308108309108310108311108312108313108314108315108316108317108318108319108320108321108322108323108324108325108326108327108328108329108330108331108332108333108334108335108336108337108338108339108340108341108342108343108344108345108346108347108348108349108350108351108352108353108354108355108356108357108358108359108360108361108362108363108364108365108366108367108368108369108370108371108372108373108374108375108376108377108378108379108380108381108382108383108384108385108386108387108388108389108390108391108392108393108394108395108396108397108398108399108400108401108402108403108404108405108406108407108408108409108410108411108412108413108414108415108416108417108418108419108420108421108422108423108424108425108426108427108428108429108430108431108432108433108434108435108436108437108438108439108440108441108442108443108444108445108446108447108448108449108450108451108452108453108454108455108456108457108458108459108460108461108462108463108464108465108466108467108468108469108470108471108472108473108474108475108476108477108478108479108480108481108482108483108484108485108486108487108488108489108490108491108492108493108494108495108496108497108498108499108500108501108502108503108504108505108506108507108508108509108510108511108512108513108514108515108516108517108518108519108520108521108522108523108524108525108526108527108528108529108530108531108532108533108534108535108536108537108538108539108540108541108542108543108544108545108546108547108548108549108550108551108552108553108554108555108556108557108558108559108560108561108562108563108564108565108566108567108568108569108570108571108572108573108574108575108576108577108578108579108580108581108582108583108584108585108586108587108588108589108590108591108592108593108594108595108596108597108598108599108600108601108602108603108604108605108606108607108608108609108610108611108612108613108614108615108616108617108618108619108620108621108622108623108624108625108626108627108628108629108630108631108632108633108634108635108636108637108638108639108640108641108642108643108644108645108646108647108648108649108650108651108652108653108654108655108656108657108658108659108660108661108662108663108664108665108666108667108668108669108670108671108672108673108674108675108676108677108678108679108680108681108682108683108684108685108686108687108688108689108690108691108692108693108694108695108696108697108698108699108700108701108702108703108704108705108706108707108708108709108710108711108712108713108714108715108716108717108718108719108720108721108722108723108724108725108726108727108728108729108730108731108732108733108734108735108736108737108738108739108740108741108742108743108744108745108746108747108748108749108750108751108752108753108754108755108756108757108758108759108760108761108762108763108764108765108766108767108768108769108770108771108772108773108774108775108776108777108778108779108780108781108782108783108784108785108786108787108788108789108790108791108792108793108794108795108796108797108798108799108800108801108802108803108804108805108806108807108808108809108810108811108812108813108814108815108816108817108818108819108820108821108822108823108824108825108826108827108828108829108830108831108832108833108834108835108836108837108838108839108840108841108842108843108844108845108846108847108848108849108850108851108852108853108854108855108856108857108858108859108860108861108862108863108864108865108866108867108868108869108870108871108872108873108874108875108876108877108878108879108880108881108882108883108884108885108886108887108888108889108890108891108892108893108894108895108896108897108898108899108900108901108902108903108904108905108906108907108908108909108910108911108912108913108914108915108916108917108918108919108920108921108922108923108924108925108926108927108928108929108930108931108932108933108934108935108936108937108938108939108940108941108942108943108944108945108946108947108948108949108950108951108952108953108954108955108956108957108958108959108960108961108962108963108964108965108966108967108968108969108970108971108972108973108974108975108976108977108978108979108980108981108982108983108984108985108986108987108988108989108990108991108992108993108994108995108996108997108998108999109000109001109002109003109004109005109006109007109008109009109010109011109012109013109014109015109016109017109018109019109020109021109022109023109024109025109026109027109028109029109030109031109032109033109034109035109036109037109038109039109040109041109042109043109044109045109046109047109048109049109050109051109052109053109054109055109056109057109058109059109060109061109062109063109064109065109066109067109068109069109070109071109072109073109074109075109076109077109078109079109080109081109082109083109084109085109086109087109088109089109090109091109092109093109094109095109096109097109098109099109100109101109102109103109104109105109106109107109108109109109110109111109112109113109114109115109116109117109118109119109120109121109122109123109124109125109126109127109128109129109130109131109132109133109134109135109136109137109138109139109140109141109142109143109144109145109146109147109148109149109150109151109152109153109154109155109156109157109158109159109160109161109162109163109164109165109166109167109168109169109170109171109172109173109174109175109176109177109178109179109180109181109182109183109184109185109186109187109188109189109190109191109192109193109194109195109196109197109198109199109200109201109202109203109204109205109206109207109208109209109210109211109212109213109214109215109216109217109218109219109220109221109222109223109224109225109226109227109228109229109230109231109232109233109234109235109236109237109238109239109240109241109242109243109244109245109246109247109248109249109250109251109252109253109254109255109256109257109258109259109260109261109262109263109264109265109266109267109268109269109270109271109272109273109274109275109276109277109278109279109280109281109282109283109284109285109286109287109288109289109290109291109292109293109294109295109296109297109298109299109300109301109302109303109304109305109306109307109308109309109310109311109312109313109314109315109316109317109318109319109320109321109322109323109324109325109326109327109328109329109330109331109332109333109334109335109336109337109338109339109340109341109342109343109344109345109346109347109348109349109350109351109352109353109354109355109356109357109358109359109360109361109362109363109364109365109366109367109368109369109370109371109372109373109374109375109376109377109378109379109380109381109382109383109384109385109386109387109388109389109390109391109392109393109394109395109396109397109398109399109400109401109402109403109404109405109406109407109408109409109410109411109412109413109414109415109416109417109418109419109420109421109422109423109424109425109426109427109428109429109430109431109432109433109434109435109436109437109438109439109440109441109442109443109444109445109446109447109448109449109450109451109452109453109454109455109456109457109458109459109460109461109462109463109464109465109466109467109468109469109470109471109472109473109474109475109476109477109478109479109480109481109482109483109484109485109486109487109488109489109490109491109492109493109494109495109496109497109498109499109500109501109502109503109504109505109506109507109508109509109510109511109512109513109514109515109516109517109518109519109520109521109522109523109524109525109526109527109528109529109530109531109532109533109534109535109536109537109538109539109540109541109542109543109544109545109546109547109548109549109550109551109552109553109554109555109556109557109558109559109560109561109562109563109564109565109566109567109568109569109570109571109572109573109574109575109576109577109578109579109580109581109582109583109584109585109586109587109588109589109590109591109592109593109594109595109596109597109598109599109600109601109602109603109604109605109606109607109608109609109610109611109612109613109614109615109616109617109618109619109620109621109622109623109624109625109626109627109628109629109630109631109632109633109634109635109636109637109638109639109640109641109642109643109644109645109646109647109648109649109650109651109652109653109654109655109656109657109658109659109660109661109662109663109664109665109666109667109668109669109670109671109672109673109674109675109676109677109678109679109680109681109682109683109684109685109686109687109688109689109690109691109692109693109694109695109696109697109698109699109700109701109702109703109704109705109706109707109708109709109710109711109712109713109714109715109716109717109718109719109720109721109722109723109724109725109726109727109728109729109730109731109732109733109734109735109736109737109738109739109740109741109742109743109744109745109746109747109748109749109750109751109752109753109754109755109756109757109758109759109760109761109762109763109764109765109766109767109768109769109770109771109772109773109774109775109776109777109778109779109780109781109782109783109784109785109786109787109788109789109790109791109792109793109794109795109796109797109798109799109800109801109802109803109804109805109806109807109808109809109810109811109812109813109814109815109816109817109818109819109820109821109822109823109824109825109826109827109828109829109830109831109832109833109834109835109836109837109838109839109840109841109842109843109844109845109846109847109848109849109850109851109852109853109854109855109856109857109858109859109860109861109862109863109864109865109866109867109868109869109870109871109872109873109874109875109876109877109878109879109880109881109882109883109884109885109886109887109888109889109890109891109892109893109894109895109896109897109898109899109900109901109902109903109904109905109906109907109908109909109910109911109912109913109914109915109916109917109918109919109920109921109922109923109924109925109926109927109928109929109930109931109932109933109934109935109936109937109938109939109940109941109942109943109944109945109946109947109948109949109950109951109952109953109954109955109956109957109958109959109960109961109962109963109964109965109966109967109968109969109970109971109972109973109974109975109976109977109978109979109980109981109982109983109984109985109986109987109988109989109990109991109992109993109994109995109996109997109998109999110000110001110002110003110004110005110006110007110008110009110010110011110012110013110014110015110016110017110018110019110020110021110022110023110024110025110026110027110028110029110030110031110032110033110034110035110036110037110038110039110040110041110042110043110044110045110046110047110048110049110050110051110052110053110054110055110056110057110058110059110060110061110062110063110064110065110066110067110068110069110070110071110072110073110074110075110076110077110078110079110080110081110082110083110084110085110086110087110088110089110090110091110092110093110094110095110096110097110098110099110100110101110102110103110104110105110106110107110108110109110110110111110112110113110114110115110116110117110118110119110120110121110122110123110124110125110126110127110128110129110130110131110132110133110134110135110136110137110138110139110140110141110142110143110144110145110146110147110148110149110150110151110152110153110154110155110156110157110158110159110160110161110162110163110164110165110166110167110168110169110170110171110172110173110174110175110176110177110178110179110180110181110182110183110184110185110186110187110188110189110190110191110192110193110194110195110196110197110198110199110200110201110202110203110204110205110206110207110208110209110210110211110212110213110214110215110216110217110218110219110220110221110222110223110224110225110226110227110228110229110230110231110232110233110234110235110236110237110238110239110240110241110242110243110244110245110246110247110248110249110250110251110252110253110254110255110256110257110258110259110260110261110262110263110264110265110266110267110268110269110270110271110272110273110274110275110276110277110278110279110280110281110282110283110284110285110286110287110288110289110290110291110292110293110294110295110296110297110298110299110300110301110302110303110304110305110306110307110308110309110310110311110312110313110314110315110316110317110318110319110320110321110322110323110324110325110326110327110328110329110330110331110332110333110334110335110336110337110338110339110340110341110342110343110344110345110346110347110348110349110350110351110352110353110354110355110356110357110358110359110360110361110362110363110364110365110366110367110368110369110370110371110372110373110374110375110376110377110378110379110380110381110382110383110384110385110386110387110388110389110390110391110392110393110394110395110396110397110398110399110400110401110402110403110404110405110406110407110408110409110410110411110412110413110414110415110416110417110418110419110420110421110422110423110424110425110426110427110428110429110430110431110432110433110434110435110436110437110438110439110440110441110442110443110444110445110446110447110448110449110450110451110452110453110454110455110456110457110458110459110460110461110462110463110464110465110466110467110468110469110470110471110472110473110474110475110476110477110478110479110480110481110482110483110484110485110486110487110488110489110490110491110492110493110494110495110496110497110498110499110500110501110502110503110504110505110506110507110508110509110510110511110512110513110514110515110516110517110518110519110520110521110522110523110524110525110526110527110528110529110530110531110532110533110534110535110536110537110538110539110540110541110542110543110544110545110546110547110548110549110550110551110552110553110554110555110556110557110558110559110560110561110562110563110564110565110566110567110568110569110570110571110572110573110574110575110576110577110578110579110580110581110582110583110584110585110586110587110588110589110590110591110592110593110594110595110596110597110598110599110600110601110602110603110604110605110606110607110608110609110610110611110612110613110614110615110616110617110618110619110620110621110622110623110624110625110626110627110628110629110630110631110632110633110634110635110636110637110638110639110640110641110642110643110644110645110646110647110648110649110650110651110652110653110654110655110656110657110658110659110660110661110662110663110664110665110666110667110668110669110670110671110672110673110674110675110676110677110678110679110680110681110682110683110684110685110686110687110688110689110690110691110692110693110694110695110696110697110698110699110700110701110702110703110704110705110706110707110708110709110710110711110712110713110714110715110716110717110718110719110720110721110722110723110724110725110726110727110728110729110730110731110732110733110734110735110736110737110738110739110740110741110742110743110744110745110746110747110748110749110750110751110752110753110754110755110756110757110758110759110760110761110762110763110764110765110766110767110768110769110770110771110772110773110774110775110776110777110778110779110780110781110782110783110784110785110786110787110788110789110790110791110792110793110794110795110796110797110798110799110800110801110802110803110804110805110806110807110808110809110810110811110812110813110814110815110816110817110818110819110820110821110822110823110824110825110826110827110828110829110830110831110832110833110834110835110836110837110838110839110840110841110842110843110844110845110846110847110848110849110850110851110852110853110854110855110856110857110858110859110860110861110862110863110864110865110866110867110868110869110870110871110872110873110874110875110876110877110878110879110880110881110882110883110884110885110886110887110888110889110890110891110892110893110894110895110896110897110898110899110900110901110902110903110904110905110906110907110908110909110910110911110912110913110914110915110916110917110918110919110920110921110922110923110924110925110926110927110928110929110930110931110932110933110934110935110936110937110938110939110940110941110942110943110944110945110946110947110948110949110950110951110952110953110954110955110956110957110958110959110960110961110962110963110964110965110966110967110968110969110970110971110972110973110974110975110976110977110978110979110980110981110982110983110984110985110986110987110988110989110990110991110992110993110994110995110996110997110998110999111000111001111002111003111004111005111006111007111008111009111010111011111012111013111014111015111016111017111018111019111020111021111022111023111024111025111026111027111028111029111030111031111032111033111034111035111036111037111038111039111040111041111042111043111044111045111046111047111048111049111050111051111052111053111054111055111056111057111058111059111060111061111062111063111064111065111066111067111068111069111070111071111072111073111074111075111076111077111078111079111080111081111082111083111084111085111086111087111088111089111090111091111092111093111094111095111096111097111098111099111100111101111102111103111104111105111106111107111108111109111110111111111112111113111114111115111116111117111118111119111120111121111122111123111124111125111126111127111128111129111130111131111132111133111134111135111136111137111138111139111140111141111142111143111144111145111146111147111148111149111150111151111152111153111154111155111156111157111158111159111160111161111162111163111164111165111166111167111168111169111170111171111172111173111174111175111176111177111178111179111180111181111182111183111184111185111186111187111188111189111190111191111192111193111194111195111196111197111198111199111200111201111202111203111204111205111206111207111208111209111210111211111212111213111214111215111216111217111218111219111220111221111222111223111224111225111226111227111228111229111230111231111232111233111234111235111236111237111238111239111240111241111242111243111244111245111246111247111248111249111250111251111252111253111254111255111256111257111258111259111260111261111262111263111264111265111266111267111268111269111270111271111272111273111274111275111276111277111278111279111280111281111282111283111284111285111286111287111288111289111290111291111292111293111294111295111296111297111298111299111300111301111302111303111304111305111306111307111308111309111310111311111312111313111314111315111316111317111318111319111320111321111322111323111324111325111326111327111328111329111330111331111332111333111334111335111336111337111338111339111340111341111342111343111344111345111346111347111348111349111350111351111352111353111354111355111356111357111358111359111360111361111362111363111364111365111366111367111368111369111370111371111372111373111374111375111376111377111378111379111380111381111382111383111384111385111386111387111388111389111390111391111392111393111394111395111396111397111398111399111400111401111402111403111404111405111406111407111408111409111410111411111412111413111414111415111416111417111418111419111420111421111422111423111424111425111426111427111428111429111430111431111432111433111434111435111436111437111438111439111440111441111442111443111444111445111446111447111448111449111450111451111452111453111454111455111456111457111458111459111460111461111462111463111464111465111466111467111468111469111470111471111472111473111474111475111476111477111478111479111480111481111482111483111484111485111486111487111488111489111490111491111492111493111494111495111496111497111498111499111500111501111502111503111504111505111506111507111508111509111510111511111512111513111514111515111516111517111518111519111520111521111522111523111524111525111526111527111528111529111530111531111532111533111534111535111536111537111538111539111540111541111542111543111544111545111546111547111548111549111550111551111552111553111554111555111556111557111558111559111560111561111562111563111564111565111566111567111568111569111570111571111572111573111574111575111576111577111578111579111580111581111582111583111584111585111586111587111588111589111590111591111592111593111594111595111596111597111598111599111600111601111602111603111604111605111606111607111608111609111610111611111612111613111614111615111616111617111618111619111620111621111622111623111624111625111626111627111628111629111630111631111632111633111634111635111636111637111638111639111640111641111642111643111644111645111646111647111648111649111650111651111652111653111654111655111656111657111658111659111660111661111662111663111664111665111666111667111668111669111670111671111672111673111674111675111676111677111678111679111680111681111682111683111684111685111686111687111688111689111690111691111692111693111694111695111696111697111698111699111700111701111702111703111704111705111706111707111708111709111710111711111712111713111714111715111716111717111718111719111720111721111722111723111724111725111726111727111728111729111730111731111732111733111734111735111736111737111738111739111740111741111742111743111744111745111746111747111748111749111750111751111752111753111754111755111756111757111758111759111760111761111762111763111764111765111766111767111768111769111770111771111772111773111774111775111776111777111778111779111780111781111782111783111784111785111786111787111788111789111790111791111792111793111794111795111796111797111798111799111800111801111802111803111804111805111806111807111808111809111810111811111812111813111814111815111816111817111818111819111820111821111822111823111824111825111826111827111828111829111830111831111832111833111834111835111836111837111838111839111840111841111842111843111844111845111846111847111848111849111850111851111852111853111854111855111856111857111858111859111860111861111862111863111864111865111866111867111868111869111870111871111872111873111874111875111876111877111878111879111880111881111882111883111884111885111886111887111888111889111890111891111892111893111894111895111896111897111898111899111900111901111902111903111904111905111906111907111908111909111910111911111912111913111914111915111916111917111918111919111920111921111922111923111924111925111926111927111928111929111930111931111932111933111934111935111936111937111938111939111940111941111942111943111944111945111946111947111948111949111950111951111952111953111954111955111956111957111958111959111960111961111962111963111964111965111966111967111968111969111970111971111972111973111974111975111976111977111978111979111980111981111982111983111984111985111986111987111988111989111990111991111992111993111994111995111996111997111998111999112000112001112002112003112004112005112006112007112008112009112010112011112012112013112014112015112016112017112018112019112020112021112022112023112024112025112026112027112028112029112030112031112032112033112034112035112036112037112038112039112040112041112042112043112044112045112046112047112048112049112050112051112052112053112054112055112056112057112058112059112060112061112062112063112064112065112066112067112068112069112070112071112072112073112074112075112076112077112078112079112080112081112082112083112084112085112086112087112088112089112090112091112092112093112094112095112096112097112098112099112100112101112102112103112104112105112106112107112108112109112110112111112112112113112114112115112116112117112118112119112120112121112122112123112124112125112126112127112128112129112130112131112132112133112134112135112136112137112138112139112140112141112142112143112144112145112146112147112148112149112150112151112152112153112154112155112156112157112158112159112160112161112162112163112164112165112166112167112168112169112170112171112172112173112174112175112176112177112178112179112180112181112182112183112184112185112186112187112188112189112190112191112192112193112194112195112196112197112198112199112200112201112202112203112204112205112206112207112208112209112210112211112212112213112214112215112216112217112218112219112220112221112222112223112224112225112226112227112228112229112230112231112232112233112234112235112236112237112238112239112240112241112242112243112244112245112246112247112248112249112250112251112252112253112254112255112256112257112258112259112260112261112262112263112264112265112266112267112268112269112270112271112272112273112274112275112276112277112278112279112280112281112282112283112284112285112286112287112288112289112290112291112292112293112294112295112296112297112298112299112300112301112302112303112304112305112306112307112308112309112310112311112312112313112314112315112316112317112318112319112320112321112322112323112324112325112326112327112328112329112330112331112332112333112334112335112336112337112338112339112340112341112342112343112344112345112346112347112348112349112350112351112352112353112354112355112356112357112358112359112360112361112362112363112364112365112366112367112368112369112370112371112372112373112374112375112376112377112378112379112380112381112382112383112384112385112386112387112388112389112390112391112392112393112394112395112396112397112398112399112400112401112402112403112404112405112406112407112408112409112410112411112412112413112414112415112416112417112418112419112420112421112422112423112424112425112426112427112428112429112430112431112432112433112434112435112436112437112438112439112440112441112442112443112444112445112446112447112448112449112450112451112452112453112454112455112456112457112458112459112460112461112462112463112464112465112466112467112468112469112470112471112472112473112474112475112476112477112478112479112480112481112482112483112484112485112486112487112488112489112490112491112492112493112494112495112496112497112498112499112500112501112502112503112504112505112506112507112508112509112510112511112512112513112514112515112516112517112518112519112520112521112522112523112524112525112526112527112528112529112530112531112532112533112534112535112536112537112538112539112540112541112542112543112544112545112546112547112548112549112550112551112552112553112554112555112556112557112558112559112560112561112562112563112564112565112566112567112568112569112570112571112572112573112574112575112576112577112578112579112580112581112582112583112584112585112586112587112588112589112590112591112592112593112594112595112596112597112598112599112600112601112602112603112604112605112606112607112608112609112610112611112612112613112614112615112616112617112618112619112620112621112622112623112624112625112626112627112628112629112630112631112632112633112634112635112636112637112638112639112640112641112642112643112644112645112646112647112648112649112650112651112652112653112654112655112656112657112658112659112660112661112662112663112664112665112666112667112668112669112670112671112672112673112674112675112676112677112678112679112680112681112682112683112684112685112686112687112688112689112690112691112692112693112694112695112696112697112698112699112700112701112702112703112704112705112706112707112708112709112710112711112712112713112714112715112716112717112718112719112720112721112722112723112724112725112726112727112728112729112730112731112732112733112734112735112736112737112738112739112740112741112742112743112744112745112746112747112748112749112750112751112752112753112754112755112756112757112758112759112760112761112762112763112764112765112766112767112768112769112770112771112772112773112774112775112776112777112778112779112780112781112782112783112784112785112786112787112788112789112790112791112792112793112794112795112796112797112798112799112800112801112802112803112804112805112806112807112808112809112810112811112812112813112814112815112816112817112818112819112820112821112822112823112824112825112826112827112828112829112830112831112832112833112834112835112836112837112838112839112840112841112842112843112844112845112846112847112848112849112850112851112852112853112854112855112856112857112858112859112860112861112862112863112864112865112866112867112868112869112870112871112872112873112874112875112876112877112878112879112880112881112882112883112884112885112886112887112888112889112890112891112892112893112894112895112896112897112898112899112900112901112902112903112904112905112906112907112908112909112910112911112912112913112914112915112916112917112918112919112920112921112922112923112924112925112926112927112928112929112930112931112932112933112934112935112936112937112938112939112940112941112942112943112944112945112946112947112948112949112950112951112952112953112954112955112956112957112958112959112960112961112962112963112964112965112966112967112968112969112970112971112972112973112974112975112976112977112978112979112980112981112982112983112984112985112986112987112988112989112990112991112992112993112994112995112996112997112998112999113000113001113002113003113004113005113006113007113008113009113010113011113012113013113014113015113016113017113018113019113020113021113022113023113024113025113026113027113028113029113030113031113032113033113034113035113036113037113038113039113040113041113042113043113044113045113046113047113048113049113050113051113052113053113054113055113056113057113058113059113060113061113062113063113064113065113066113067113068113069113070113071113072113073113074113075113076113077113078113079113080113081113082113083113084113085113086113087113088113089113090113091113092113093113094113095113096113097113098113099113100113101113102113103113104113105113106113107113108113109113110113111113112113113113114113115113116113117113118113119113120113121113122113123113124113125113126113127113128113129113130113131113132113133113134113135113136113137113138113139113140113141113142113143113144113145113146113147113148113149113150113151113152113153113154113155113156113157113158113159113160113161113162113163113164113165113166113167113168113169113170113171113172113173113174113175113176113177113178113179113180113181113182113183113184113185113186113187113188113189113190113191113192113193113194113195113196113197113198113199113200113201113202113203113204113205113206113207113208113209113210113211113212113213113214113215113216113217113218113219113220113221113222113223113224113225113226113227113228113229113230113231113232113233113234113235113236113237113238113239113240113241113242113243113244113245113246113247113248113249113250113251113252113253113254113255113256113257113258113259113260113261113262113263113264113265113266113267113268113269113270113271113272113273113274113275113276113277113278113279113280113281113282113283113284113285113286113287113288113289113290113291113292113293113294113295113296113297113298113299113300113301113302113303113304113305113306113307113308113309113310113311113312113313113314113315113316113317113318113319113320113321113322113323113324113325113326113327113328113329113330113331113332113333113334113335113336113337113338113339113340113341113342113343113344113345113346113347113348113349113350113351113352113353113354113355113356113357113358113359113360113361113362113363113364113365113366113367113368113369113370113371113372113373113374113375113376113377113378113379113380113381113382113383113384113385113386113387113388113389113390113391113392113393113394113395113396113397113398113399113400113401113402113403113404113405113406113407113408113409113410113411113412113413113414113415113416113417113418113419113420113421113422113423113424113425113426113427113428113429113430113431113432113433113434113435113436113437113438113439113440113441113442113443113444113445113446113447113448113449113450113451113452113453113454113455113456113457113458113459113460113461113462113463113464113465113466113467113468113469113470113471113472113473113474113475113476113477113478113479113480113481113482113483113484113485113486113487113488113489113490113491113492113493113494113495113496113497113498113499113500113501113502113503113504113505113506113507113508113509113510113511113512113513113514113515113516113517113518113519113520113521113522113523113524113525113526113527113528113529113530113531113532113533113534113535113536113537113538113539113540113541113542113543113544113545113546113547113548113549113550113551113552113553113554113555113556113557113558113559113560113561113562113563113564113565113566113567113568113569113570113571113572113573113574113575113576113577113578113579113580113581113582113583113584113585113586113587113588113589113590113591113592113593113594113595113596113597113598113599113600113601113602113603113604113605113606113607113608113609113610113611113612113613113614113615113616113617113618113619113620113621113622113623113624113625113626113627113628113629113630113631113632113633113634113635113636113637113638113639113640113641113642113643113644113645113646113647113648113649113650113651113652113653113654113655113656113657113658113659113660113661113662113663113664113665113666113667113668113669113670113671113672113673113674113675113676113677113678113679113680113681113682113683113684113685113686113687113688113689113690113691113692113693113694113695113696113697113698113699113700113701113702113703113704113705113706113707113708113709113710113711113712113713113714113715113716113717113718113719113720113721113722113723113724113725113726113727113728113729113730113731113732113733113734113735113736113737113738113739113740113741113742113743113744113745113746113747113748113749113750113751113752113753113754113755113756113757113758113759113760113761113762113763113764113765113766113767113768113769113770113771113772113773113774113775113776113777113778113779113780113781113782113783113784113785113786113787113788113789113790113791113792113793113794113795113796113797113798113799113800113801113802113803113804113805113806113807113808113809113810113811113812113813113814113815113816113817113818113819113820113821113822113823113824113825113826113827113828113829113830113831113832113833113834113835113836113837113838113839113840113841113842113843113844113845113846113847113848113849113850113851113852113853113854113855113856113857113858113859113860113861113862113863113864113865113866113867113868113869113870113871113872113873113874113875113876113877113878113879113880113881113882113883113884113885113886113887113888113889113890113891113892113893113894113895113896113897113898113899113900113901113902113903113904113905113906113907113908113909113910113911113912113913113914113915113916113917113918113919113920113921113922113923113924113925113926113927113928113929113930113931113932113933113934113935113936113937113938113939113940113941113942113943113944113945113946113947113948113949113950113951113952113953113954113955113956113957113958113959113960113961113962113963113964113965113966113967113968113969113970113971113972113973113974113975113976113977113978113979113980113981113982113983113984113985113986113987113988113989113990113991113992113993113994113995113996113997113998113999114000114001114002114003114004114005114006114007114008114009114010114011114012114013114014114015114016114017114018114019114020114021114022114023114024114025114026114027114028114029114030114031114032114033114034114035114036114037114038114039114040114041114042114043114044114045114046114047114048114049114050114051114052114053114054114055114056114057114058114059114060114061114062114063114064114065114066114067114068114069114070114071114072114073114074114075114076114077114078114079114080114081114082114083114084114085114086114087114088114089114090114091114092114093114094114095114096114097114098114099114100114101114102114103114104114105114106114107114108114109114110114111114112114113114114114115114116114117114118114119114120114121114122114123114124114125114126114127114128114129114130114131114132114133114134114135114136114137114138114139114140114141114142114143114144114145114146114147114148114149114150114151114152114153114154114155114156114157114158114159114160114161114162114163114164114165114166114167114168114169114170114171114172114173114174114175114176114177114178114179114180114181114182114183114184114185114186114187114188114189114190114191114192114193114194114195114196114197114198114199114200114201114202114203114204114205114206114207114208114209114210114211114212114213114214114215114216114217114218114219114220114221114222114223114224114225114226114227114228114229114230114231114232114233114234114235114236114237114238114239114240114241114242114243114244114245114246114247114248114249114250114251114252114253114254114255114256114257114258114259114260114261114262114263114264114265114266114267114268114269114270114271114272114273114274114275114276114277114278114279114280114281114282114283114284114285114286114287114288114289114290114291114292114293114294114295114296114297114298114299114300114301114302114303114304114305114306114307114308114309114310114311114312114313114314114315114316114317114318114319114320114321114322114323114324114325114326114327114328114329114330114331114332114333114334114335114336114337114338114339114340114341114342114343114344114345114346114347114348114349114350114351114352114353114354114355114356114357114358114359114360114361114362114363114364114365114366114367114368114369114370114371114372114373114374114375114376114377114378114379114380114381114382114383114384114385114386114387114388114389114390114391114392114393114394114395114396114397114398114399114400114401114402114403114404114405114406114407114408114409114410114411114412114413114414114415114416114417114418114419114420114421114422114423114424114425114426114427114428114429114430114431114432114433114434114435114436114437114438114439114440114441114442114443114444114445114446114447114448114449114450114451114452114453114454114455114456114457114458114459114460114461114462114463114464114465114466114467114468114469114470114471114472114473114474114475114476114477114478114479114480114481114482114483114484114485114486114487114488114489114490114491114492114493114494114495114496114497114498114499114500114501114502114503114504114505114506114507114508114509114510114511114512114513114514114515114516114517114518114519114520114521114522114523114524114525114526114527114528114529114530114531114532114533114534114535114536114537114538114539114540114541114542114543114544114545114546114547114548114549114550114551114552114553114554114555114556114557114558114559114560114561114562114563114564114565114566114567114568114569114570114571114572114573114574114575114576114577114578114579114580114581114582114583114584114585114586114587114588114589114590114591114592114593114594114595114596114597114598114599114600114601114602114603114604114605114606114607114608114609114610114611114612114613114614114615114616114617114618114619114620114621114622114623114624114625114626114627114628114629114630114631114632114633114634114635114636114637114638114639114640114641114642114643114644114645114646114647114648114649114650114651114652114653114654114655114656114657114658114659114660114661114662114663114664114665114666114667114668114669114670114671114672114673114674114675114676114677114678114679114680114681114682114683114684114685114686114687114688114689114690114691114692114693114694114695114696114697114698114699114700114701114702114703114704114705114706114707114708114709114710114711114712114713114714114715114716114717114718114719114720114721114722114723114724114725114726114727114728114729114730114731114732114733114734114735114736114737114738114739114740114741114742114743114744114745114746114747114748114749114750114751114752114753114754114755114756114757114758114759114760114761114762114763114764114765114766114767114768114769114770114771114772114773114774114775114776114777114778114779114780114781114782114783114784114785114786114787114788114789114790114791114792114793114794114795114796114797114798114799114800114801114802114803114804114805114806114807114808114809114810114811114812114813114814114815114816114817114818114819114820114821114822114823114824114825114826114827114828114829114830114831114832114833114834114835114836114837114838114839114840114841114842114843114844114845114846114847114848114849114850114851114852114853114854114855114856114857114858114859114860114861114862114863114864114865114866114867114868114869114870114871114872114873114874114875114876114877114878114879114880114881114882114883114884114885114886114887114888114889114890114891114892114893114894114895114896114897114898114899114900114901114902114903114904114905114906114907114908114909114910114911114912114913114914114915114916114917114918114919114920114921114922114923114924114925114926114927114928114929114930114931114932114933114934114935114936114937114938114939114940114941114942114943114944114945114946114947114948114949114950114951114952114953114954114955114956114957114958114959114960114961114962114963114964114965114966114967114968114969114970114971114972114973114974114975114976114977114978114979114980114981114982114983114984114985114986114987114988114989114990114991114992114993114994114995114996114997114998114999115000115001115002115003115004115005115006115007115008115009115010115011115012115013115014115015115016115017115018115019115020115021115022115023115024115025115026115027115028115029115030115031115032115033115034115035115036115037115038115039115040115041115042115043115044115045115046115047115048115049115050115051115052115053115054115055115056115057115058115059115060115061115062115063115064115065115066115067115068115069115070115071115072115073115074115075115076115077115078115079115080115081115082115083115084115085115086115087115088115089115090115091115092115093115094115095115096115097115098115099115100115101115102115103115104115105115106115107115108115109115110115111115112115113115114115115115116115117115118115119115120115121115122115123115124115125115126115127115128115129115130115131115132115133115134115135115136115137115138115139115140115141115142115143115144115145115146115147115148115149115150115151115152115153115154115155115156115157115158115159115160115161115162115163115164115165115166115167115168115169115170115171115172115173115174115175115176115177115178115179115180115181115182115183115184115185115186115187115188115189115190115191115192115193115194115195115196115197115198115199115200115201115202115203115204115205115206115207115208115209115210115211115212115213115214115215115216115217115218115219115220115221115222115223115224115225115226115227115228115229115230115231115232115233115234115235115236115237115238115239115240115241115242115243115244115245115246115247115248115249115250115251115252115253115254115255115256115257115258115259115260115261115262115263115264115265115266115267115268115269115270115271115272115273115274115275115276115277115278115279115280115281115282115283115284115285115286115287115288115289115290115291115292115293115294115295115296115297115298115299115300115301115302115303115304115305115306115307115308115309115310115311115312115313115314115315115316115317115318115319115320115321115322115323115324115325115326115327115328115329115330115331115332115333115334115335115336115337115338115339115340115341115342115343115344115345115346115347115348115349115350115351115352115353115354115355115356115357115358115359115360115361115362115363115364115365115366115367115368115369115370115371115372115373115374115375115376115377115378115379115380115381115382115383115384115385115386115387115388115389115390115391115392115393115394115395115396115397115398115399115400115401115402115403115404115405115406115407115408115409115410115411115412115413115414115415115416115417115418115419115420115421115422115423115424115425115426115427115428115429115430115431115432115433115434115435115436115437115438115439115440115441115442115443115444115445115446115447115448115449115450115451115452115453115454115455115456115457115458115459115460115461115462115463115464115465115466115467115468115469115470115471115472115473115474115475115476115477115478115479115480115481115482115483115484115485115486115487115488115489115490115491115492115493115494115495115496115497115498115499115500115501115502115503115504115505115506115507115508115509115510115511115512115513115514115515115516115517115518115519115520115521115522115523115524115525115526115527115528115529115530115531115532115533115534115535115536115537115538115539115540115541115542115543115544115545115546115547115548115549115550115551115552115553115554115555115556115557115558115559115560115561115562115563115564115565115566115567115568115569115570115571115572115573115574115575115576115577115578115579115580115581115582115583115584115585115586115587115588115589115590115591115592115593115594115595115596115597115598115599115600115601115602115603115604115605115606115607115608115609115610115611115612115613115614115615115616115617115618115619115620115621115622115623115624115625115626115627115628115629115630115631115632115633115634115635115636115637115638115639115640115641115642115643115644115645115646115647115648115649115650115651115652115653115654115655115656115657115658115659115660115661115662115663115664115665115666115667115668115669115670115671115672115673115674115675115676115677115678115679115680115681115682115683115684115685115686115687115688115689115690115691115692115693115694115695115696115697115698115699115700115701115702115703115704115705115706115707115708115709115710115711115712115713115714115715115716115717115718115719115720115721115722115723115724115725115726115727115728115729115730115731115732115733115734115735115736115737115738115739115740115741115742115743115744115745115746115747115748115749115750115751115752115753115754115755115756115757115758115759115760115761115762115763115764115765115766115767115768115769115770115771115772115773115774115775115776115777115778115779115780115781115782115783115784115785115786115787115788115789115790115791115792115793115794115795115796115797115798115799115800115801115802115803115804115805115806115807115808115809115810115811115812115813115814115815115816115817115818115819115820115821115822115823115824115825115826115827115828115829115830115831115832115833115834115835115836115837115838115839115840115841115842115843115844115845115846115847115848115849115850115851115852115853115854115855115856115857115858115859115860115861115862115863115864115865115866115867115868115869115870115871115872115873115874115875115876115877115878115879115880115881115882115883115884115885115886115887115888115889115890115891115892115893115894115895115896115897115898115899115900115901115902115903115904115905115906115907115908115909115910115911115912115913115914115915115916115917115918115919115920115921115922115923115924115925115926115927115928115929115930115931115932115933115934115935115936115937115938115939115940115941115942115943115944115945115946115947115948115949115950115951115952115953115954115955115956115957115958115959115960115961115962115963115964115965115966115967115968115969115970115971115972115973115974115975115976115977115978115979115980115981115982115983115984115985115986115987115988115989115990115991115992115993115994115995115996115997115998115999116000116001116002116003116004116005116006116007116008116009116010116011116012116013116014116015116016116017116018116019116020116021116022116023116024116025116026116027116028116029116030116031116032116033116034116035116036116037116038116039116040116041116042116043116044116045116046116047116048116049116050116051116052116053116054116055116056116057116058116059116060116061116062116063116064116065116066116067116068116069116070116071116072116073116074116075116076116077116078116079116080116081116082116083116084116085116086116087116088116089116090116091116092116093116094116095116096116097116098116099116100116101116102116103116104116105
  1. diff -Nur uClibc-0.9.33.2/docs/man/arc4random.3 uClibc-git/docs/man/arc4random.3
  2. --- uClibc-0.9.33.2/docs/man/arc4random.3 1970-01-01 01:00:00.000000000 +0100
  3. +++ uClibc-git/docs/man/arc4random.3 2014-02-03 12:32:56.000000000 +0100
  4. @@ -0,0 +1,110 @@
  5. +.\" $OpenBSD: arc4random.3,v 1.19 2005/07/17 08:50:55 jaredy Exp $
  6. +.\"
  7. +.\" Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
  8. +.\" All rights reserved.
  9. +.\"
  10. +.\" Redistribution and use in source and binary forms, with or without
  11. +.\" modification, are permitted provided that the following conditions
  12. +.\" are met:
  13. +.\" 1. Redistributions of source code must retain the above copyright
  14. +.\" notice, this list of conditions and the following disclaimer.
  15. +.\" 2. Redistributions in binary form must reproduce the above copyright
  16. +.\" notice, this list of conditions and the following disclaimer in the
  17. +.\" documentation and/or other materials provided with the distribution.
  18. +.\" 3. All advertising materials mentioning features or use of this software
  19. +.\" must display the following acknowledgement:
  20. +.\" This product includes software developed by Niels Provos.
  21. +.\" 4. The name of the author may not be used to endorse or promote products
  22. +.\" derived from this software without specific prior written permission.
  23. +.\"
  24. +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  25. +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  26. +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  27. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  28. +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  29. +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  30. +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  31. +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  32. +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  33. +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34. +.\"
  35. +.\" Manual page, using -mandoc macros
  36. +.\"
  37. +.Dd April 15, 1997
  38. +.Dt ARC4RANDOM 3
  39. +.Os
  40. +.Sh NAME
  41. +.Nm arc4random ,
  42. +.Nm arc4random_stir ,
  43. +.Nm arc4random_addrandom
  44. +.Nd arc4 random number generator
  45. +.Sh SYNOPSIS
  46. +.Fd #include <stdlib.h>
  47. +.Ft uint32_t
  48. +.Fn arc4random "void"
  49. +.Ft void
  50. +.Fn arc4random_stir "void"
  51. +.Ft void
  52. +.Fn arc4random_addrandom "u_char *dat" "int datlen"
  53. +.Sh DESCRIPTION
  54. +The
  55. +.Fn arc4random
  56. +function provides a high quality 32-bit pseudo-random
  57. +number very quickly.
  58. +.Fn arc4random
  59. +seeds itself on a regular basis from the kernel strong random number
  60. +subsystem described in
  61. +.Xr random 4 .
  62. +On each call, an ARC4 generator is used to generate a new result.
  63. +The
  64. +.Fn arc4random
  65. +function uses the ARC4 cipher key stream generator,
  66. +which uses 8*8 8-bit S-Boxes.
  67. +The S-Boxes can be in about (2**1700) states.
  68. +.Pp
  69. +.Fn arc4random
  70. +fits into a middle ground not covered by other subsystems such as
  71. +the strong, slow, and resource expensive random
  72. +devices described in
  73. +.Xr random 4
  74. +versus the fast but poor quality interfaces described in
  75. +.Xr rand 3 ,
  76. +.Xr random 3 ,
  77. +and
  78. +.Xr drand48 3 .
  79. +.Pp
  80. +The
  81. +.Fn arc4random_stir
  82. +function reads data from a pseudo-random device, usually
  83. +.Pa /dev/urandom,
  84. +and uses it to permute the S-Boxes via
  85. +.Fn arc4random_addrandom .
  86. +.Pp
  87. +There is no need to call
  88. +.Fn arc4random_stir
  89. +before using
  90. +.Fn arc4random ,
  91. +since
  92. +.Fn arc4random
  93. +automatically initializes itself.
  94. +.Sh SEE ALSO
  95. +.Xr rand 3 ,
  96. +.Xr rand48 3 ,
  97. +.Xr random 3
  98. +.Sh HISTORY
  99. +An algorithm called
  100. +.Pa RC4
  101. +was designed by RSA Data Security, Inc.
  102. +It was considered a trade secret.
  103. +Because it was a trade secret, it obviously could not be patented.
  104. +A clone of this was posted anonymously to USENET and confirmed to
  105. +be equivalent by several sources who had access to the original cipher.
  106. +Because of the trade secret situation, RSA Data Security, Inc. can do
  107. +nothing about the release of the ARC4 algorithm.
  108. +Since
  109. +.Pa RC4
  110. +used to be a trade secret, the cipher is now referred to as
  111. +.Pa ARC4 .
  112. +.Pp
  113. +These functions first appeared in
  114. +.Ox 2.1 .
  115. diff -Nur uClibc-0.9.33.2/docs/PORTING uClibc-git/docs/PORTING
  116. --- uClibc-0.9.33.2/docs/PORTING 2012-05-15 09:20:09.000000000 +0200
  117. +++ uClibc-git/docs/PORTING 2014-02-03 12:32:56.000000000 +0100
  118. @@ -130,9 +130,6 @@
  119. ====================
  120. === Misc Cruft ===
  121. ====================
  122. -- utils/readelf.c - not really needed generally speaking, but might as well
  123. - add your arch to the giant EM_* list (describe_elf_hdr)
  124. -
  125. - MAINTAINERS - presumably you're going to submit this code back to mainline
  126. and since you're the only one who cares about this arch (right now), you
  127. should add yourself to the toplevel MAINTAINERS file. do it.
  128. diff -Nur uClibc-0.9.33.2/extra/config/check.sh uClibc-git/extra/config/check.sh
  129. --- uClibc-0.9.33.2/extra/config/check.sh 2012-05-15 09:20:09.000000000 +0200
  130. +++ uClibc-git/extra/config/check.sh 2014-02-03 12:32:56.000000000 +0100
  131. @@ -1,6 +1,6 @@
  132. #!/bin/sh
  133. # Needed for systems without gettext
  134. -$* -xc -o /dev/null - > /dev/null 2>&1 << EOF
  135. +$* -x c -o /dev/null - > /dev/null 2>&1 << EOF
  136. #include <libintl.h>
  137. int main()
  138. {
  139. diff -Nur uClibc-0.9.33.2/extra/config/conf.c uClibc-git/extra/config/conf.c
  140. --- uClibc-0.9.33.2/extra/config/conf.c 2012-05-15 09:20:09.000000000 +0200
  141. +++ uClibc-git/extra/config/conf.c 2014-02-03 12:32:56.000000000 +0100
  142. @@ -10,42 +10,48 @@
  143. #include <string.h>
  144. #include <time.h>
  145. #include <unistd.h>
  146. +#include <getopt.h>
  147. #include <sys/stat.h>
  148. #include <sys/time.h>
  149. +#include <errno.h>
  150. -#define LKC_DIRECT_LINK
  151. #include "lkc.h"
  152. static void conf(struct menu *menu);
  153. static void check_conf(struct menu *menu);
  154. +static void xfgets(char *str, int size, FILE *in);
  155. -enum {
  156. - ask_all,
  157. - ask_new,
  158. - ask_silent,
  159. - set_default,
  160. - set_yes,
  161. - set_mod,
  162. - set_no,
  163. - set_random
  164. -} input_mode = ask_all;
  165. -char *defconfig_file;
  166. +enum input_mode {
  167. + oldaskconfig,
  168. + silentoldconfig,
  169. + oldconfig,
  170. + allnoconfig,
  171. + allyesconfig,
  172. + allmodconfig,
  173. + alldefconfig,
  174. + randconfig,
  175. + defconfig,
  176. + savedefconfig,
  177. + listnewconfig,
  178. + olddefconfig,
  179. +} input_mode = oldaskconfig;
  180. static int indent = 1;
  181. +static int tty_stdio;
  182. static int valid_stdin = 1;
  183. static int sync_kconfig;
  184. static int conf_cnt;
  185. static char line[128];
  186. static struct menu *rootEntry;
  187. -static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
  188. -
  189. -static const char *get_help(struct menu *menu)
  190. +static void print_help(struct menu *menu)
  191. {
  192. - if (menu_has_help(menu))
  193. - return _(menu_get_help(menu));
  194. - else
  195. - return nohelp_text;
  196. + struct gstr help = str_new();
  197. +
  198. + menu_get_ext_help(menu, &help);
  199. +
  200. + printf("\n%s\n", str_get(&help));
  201. + str_free(&help);
  202. }
  203. static void strip(char *str)
  204. @@ -93,16 +99,19 @@
  205. }
  206. switch (input_mode) {
  207. - case ask_new:
  208. - case ask_silent:
  209. + case oldconfig:
  210. + case silentoldconfig:
  211. if (sym_has_value(sym)) {
  212. printf("%s\n", def);
  213. return 0;
  214. }
  215. check_stdin();
  216. - case ask_all:
  217. + /* fall through */
  218. + case oldaskconfig:
  219. fflush(stdout);
  220. - fgets(line, 128, stdin);
  221. + xfgets(line, 128, stdin);
  222. + if (!tty_stdio)
  223. + printf("\n");
  224. return 1;
  225. default:
  226. break;
  227. @@ -121,7 +130,7 @@
  228. return 1;
  229. }
  230. -int conf_string(struct menu *menu)
  231. +static int conf_string(struct menu *menu)
  232. {
  233. struct symbol *sym = menu->sym;
  234. const char *def;
  235. @@ -140,10 +149,11 @@
  236. case '?':
  237. /* print help */
  238. if (line[1] == '\n') {
  239. - printf("\n%s\n", get_help(menu));
  240. + print_help(menu);
  241. def = NULL;
  242. break;
  243. }
  244. + /* fall through */
  245. default:
  246. line[strlen(line)-1] = 0;
  247. def = line;
  248. @@ -156,14 +166,12 @@
  249. static int conf_sym(struct menu *menu)
  250. {
  251. struct symbol *sym = menu->sym;
  252. - int type;
  253. tristate oldval, newval;
  254. while (1) {
  255. printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
  256. if (sym->name)
  257. printf("(%s) ", sym->name);
  258. - type = sym_get_type(sym);
  259. putchar('[');
  260. oldval = sym_get_tristate_value(sym);
  261. switch (oldval) {
  262. @@ -220,7 +228,7 @@
  263. if (sym_set_tristate_value(sym, newval))
  264. return 0;
  265. help:
  266. - printf("\n%s\n", get_help(menu));
  267. + print_help(menu);
  268. }
  269. }
  270. @@ -228,11 +236,9 @@
  271. {
  272. struct symbol *sym, *def_sym;
  273. struct menu *child;
  274. - int type;
  275. bool is_new;
  276. sym = menu->sym;
  277. - type = sym_get_type(sym);
  278. is_new = !sym_has_value(sym);
  279. if (sym_is_changable(sym)) {
  280. conf_sym(menu);
  281. @@ -294,20 +300,21 @@
  282. printf("?");
  283. printf("]: ");
  284. switch (input_mode) {
  285. - case ask_new:
  286. - case ask_silent:
  287. + case oldconfig:
  288. + case silentoldconfig:
  289. if (!is_new) {
  290. cnt = def;
  291. printf("%d\n", cnt);
  292. break;
  293. }
  294. check_stdin();
  295. - case ask_all:
  296. + /* fall through */
  297. + case oldaskconfig:
  298. fflush(stdout);
  299. - fgets(line, 128, stdin);
  300. + xfgets(line, 128, stdin);
  301. strip(line);
  302. if (line[0] == '?') {
  303. - printf("\n%s\n", get_help(menu));
  304. + print_help(menu);
  305. continue;
  306. }
  307. if (!line[0])
  308. @@ -330,8 +337,8 @@
  309. }
  310. if (!child)
  311. continue;
  312. - if (line[strlen(line) - 1] == '?') {
  313. - printf("\n%s\n", get_help(child));
  314. + if (line[0] && line[strlen(line) - 1] == '?') {
  315. + print_help(child);
  316. continue;
  317. }
  318. sym_set_choice_value(sym, child->sym);
  319. @@ -360,10 +367,14 @@
  320. switch (prop->type) {
  321. case P_MENU:
  322. - if (input_mode == ask_silent && rootEntry != menu) {
  323. + if ((input_mode == silentoldconfig ||
  324. + input_mode == listnewconfig ||
  325. + input_mode == olddefconfig) &&
  326. + rootEntry != menu) {
  327. check_conf(menu);
  328. return;
  329. }
  330. + /* fall through */
  331. case P_COMMENT:
  332. prompt = menu_get_prompt(menu);
  333. if (prompt)
  334. @@ -418,10 +429,16 @@
  335. if (sym && !sym_has_value(sym)) {
  336. if (sym_is_changable(sym) ||
  337. (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
  338. - if (!conf_cnt++)
  339. - printf(_("*\n* Restart config...\n*\n"));
  340. - rootEntry = menu_get_parent_menu(menu);
  341. - conf(rootEntry);
  342. + if (input_mode == listnewconfig) {
  343. + if (sym->name && !sym_is_choice_value(sym)) {
  344. + printf("%s%s\n", CONFIG_, sym->name);
  345. + }
  346. + } else if (input_mode != olddefconfig) {
  347. + if (!conf_cnt++)
  348. + printf(_("*\n* Restart config...\n*\n"));
  349. + rootEntry = menu_get_parent_menu(menu);
  350. + conf(rootEntry);
  351. + }
  352. }
  353. }
  354. @@ -429,90 +446,170 @@
  355. check_conf(child);
  356. }
  357. +#if 00 // || !defined __UCLIBC__ || \
  358. + (defined UCLIBC_HAS_GETOPT_LONG || defined UCLIBC_HAS_GNU_GETOPT)
  359. +static struct option long_opts[] = {
  360. + {"oldaskconfig", no_argument, NULL, oldaskconfig},
  361. + {"oldconfig", no_argument, NULL, oldconfig},
  362. + {"silentoldconfig", no_argument, NULL, silentoldconfig},
  363. + {"defconfig", optional_argument, NULL, defconfig},
  364. + {"savedefconfig", required_argument, NULL, savedefconfig},
  365. + {"allnoconfig", no_argument, NULL, allnoconfig},
  366. + {"allyesconfig", no_argument, NULL, allyesconfig},
  367. + {"allmodconfig", no_argument, NULL, allmodconfig},
  368. + {"alldefconfig", no_argument, NULL, alldefconfig},
  369. + {"randconfig", no_argument, NULL, randconfig},
  370. + {"listnewconfig", no_argument, NULL, listnewconfig},
  371. + {"olddefconfig", no_argument, NULL, olddefconfig},
  372. + /*
  373. + * oldnoconfig is an alias of olddefconfig, because people already
  374. + * are dependent on its behavior(sets new symbols to their default
  375. + * value but not 'n') with the counter-intuitive name.
  376. + */
  377. + {"oldnoconfig", no_argument, NULL, olddefconfig},
  378. + {NULL, 0, NULL, 0}
  379. +};
  380. +
  381. +static void conf_usage(const char *progname)
  382. +{
  383. +
  384. + printf("Usage: %s [option] <kconfig-file>\n", progname);
  385. + printf("[option] is _one_ of the following:\n");
  386. + printf(" --listnewconfig List new options\n");
  387. + printf(" --oldaskconfig Start a new configuration using a line-oriented program\n");
  388. + printf(" --oldconfig Update a configuration using a provided .config as base\n");
  389. + printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n");
  390. + printf(" --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n");
  391. + printf(" --oldnoconfig An alias of olddefconfig\n");
  392. + printf(" --defconfig <file> New config with default defined in <file>\n");
  393. + printf(" --savedefconfig <file> Save the minimal current configuration to <file>\n");
  394. + printf(" --allnoconfig New config where all options are answered with no\n");
  395. + printf(" --allyesconfig New config where all options are answered with yes\n");
  396. + printf(" --allmodconfig New config where all options are answered with mod\n");
  397. + printf(" --alldefconfig New config with all symbols set to default\n");
  398. + printf(" --randconfig New config with random answer to all options\n");
  399. +}
  400. +#else
  401. +static void conf_usage(const char *progname)
  402. +{
  403. +
  404. + printf("Usage: %s [option] <kconfig-file>\n", progname);
  405. + printf("[option] is _one_ of the following:\n");
  406. + printf(" -a, --oldaskconfig Start a new configuration using a line-oriented program\n");
  407. + printf(" -s, --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n");
  408. + printf(" -o, --oldconfig Update a configuration using a provided .config as base\n");
  409. + printf(" -n, --allnoconfig New config where all options are answered with no\n");
  410. + printf(" -y, --allyesconfig New config where all options are answered with yes\n");
  411. + printf(" -m, --allmodconfig New config where all options are answered with mod\n");
  412. + printf(" -A, --alldefconfig New config with all symbols set to default\n");
  413. + printf(" -r, --randconfig New config with random answer to all options\n");
  414. + printf(" -D, --defconfig <file> New config with default defined in <file>\n");
  415. + printf(" -S, --savedefconfig <file> Save the minimal current configuration to <file>\n");
  416. + printf(" -l, --listnewconfig List new options\n");
  417. + printf(" -d, --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n");
  418. + printf(" --oldnoconfig An alias of olddefconfig\n");
  419. +
  420. +}
  421. +#endif
  422. +
  423. int main(int ac, char **av)
  424. {
  425. + const char *progname = av[0];
  426. int opt;
  427. - const char *name;
  428. - const char *configname = conf_get_configname();
  429. + const char *name, *defconfig_file = NULL /* gcc uninit */;
  430. struct stat tmpstat;
  431. setlocale(LC_ALL, "");
  432. bindtextdomain(PACKAGE, LOCALEDIR);
  433. textdomain(PACKAGE);
  434. - while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
  435. + tty_stdio = isatty(0) && isatty(1) && isatty(2);
  436. +
  437. +#if 00// !defined __UCLIBC__ || \
  438. + (defined UCLIBC_HAS_GETOPT_LONG || defined UCLIBC_HAS_GNU_GETOPT)
  439. + while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1)
  440. +#else
  441. + char *gch = "asonymArDSld";
  442. + while ((opt = getopt(ac, av, "asonymArD:S:ldh")) != -1)
  443. +#endif
  444. + {
  445. + char *x = memchr(gch, opt, strlen(gch));
  446. + if (x == NULL)
  447. + opt = '?';
  448. + else
  449. + opt = x - gch;
  450. + input_mode = (enum input_mode)opt;
  451. switch (opt) {
  452. - case 'o':
  453. - input_mode = ask_silent;
  454. - break;
  455. - case 's':
  456. - input_mode = ask_silent;
  457. + case silentoldconfig:
  458. sync_kconfig = 1;
  459. break;
  460. - case 'd':
  461. - input_mode = set_default;
  462. - break;
  463. - case 'D':
  464. - input_mode = set_default;
  465. + case defconfig:
  466. + case savedefconfig:
  467. defconfig_file = optarg;
  468. break;
  469. - case 'n':
  470. - input_mode = set_no;
  471. - break;
  472. - case 'm':
  473. - input_mode = set_mod;
  474. - break;
  475. - case 'y':
  476. - input_mode = set_yes;
  477. - break;
  478. - case 'r':
  479. + case randconfig:
  480. {
  481. struct timeval now;
  482. unsigned int seed;
  483. + char *seed_env;
  484. /*
  485. * Use microseconds derived seed,
  486. * compensate for systems where it may be zero
  487. */
  488. gettimeofday(&now, NULL);
  489. -
  490. seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
  491. - srand(seed);
  492. - input_mode = set_random;
  493. + seed_env = getenv("KCONFIG_SEED");
  494. + if( seed_env && *seed_env ) {
  495. + char *endp;
  496. + int tmp = (int)strtol(seed_env, &endp, 0);
  497. + if (*endp == '\0') {
  498. + seed = tmp;
  499. + }
  500. + }
  501. + fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed );
  502. + srand(seed);
  503. break;
  504. }
  505. - case 'h':
  506. - printf(_("See README for usage info\n"));
  507. - exit(0);
  508. + case oldaskconfig:
  509. + case oldconfig:
  510. + case allnoconfig:
  511. + case allyesconfig:
  512. + case allmodconfig:
  513. + case alldefconfig:
  514. + case listnewconfig:
  515. + case olddefconfig:
  516. break;
  517. - default:
  518. - fprintf(stderr, _("See README for usage info\n"));
  519. + case '?':
  520. + conf_usage(progname);
  521. exit(1);
  522. + break;
  523. }
  524. }
  525. if (ac == optind) {
  526. printf(_("%s: Kconfig file missing\n"), av[0]);
  527. + conf_usage(progname);
  528. exit(1);
  529. }
  530. name = av[optind];
  531. conf_parse(name);
  532. //zconfdump(stdout);
  533. if (sync_kconfig) {
  534. - if (stat(configname, &tmpstat)) {
  535. + name = conf_get_configname();
  536. + if (stat(name, &tmpstat)) {
  537. fprintf(stderr, _("***\n"
  538. - "*** You have not yet configured!\n"
  539. - "*** (missing .config file)\n"
  540. + "*** Configuration file \"%s\" not found!\n"
  541. "***\n"
  542. "*** Please run some configurator (e.g. \"make oldconfig\" or\n"
  543. "*** \"make menuconfig\" or \"make xconfig\").\n"
  544. - "***\n"));
  545. + "***\n"), name);
  546. exit(1);
  547. }
  548. }
  549. switch (input_mode) {
  550. - case set_default:
  551. + case defconfig:
  552. if (!defconfig_file)
  553. defconfig_file = conf_get_default_confname();
  554. if (conf_read(defconfig_file)) {
  555. @@ -522,31 +619,46 @@
  556. exit(1);
  557. }
  558. break;
  559. - case ask_silent:
  560. - case ask_all:
  561. - case ask_new:
  562. + case savedefconfig:
  563. + case silentoldconfig:
  564. + case oldaskconfig:
  565. + case oldconfig:
  566. + case listnewconfig:
  567. + case olddefconfig:
  568. conf_read(NULL);
  569. break;
  570. - case set_no:
  571. - case set_mod:
  572. - case set_yes:
  573. - case set_random:
  574. + case allnoconfig:
  575. + case allyesconfig:
  576. + case allmodconfig:
  577. + case alldefconfig:
  578. + case randconfig:
  579. name = getenv("KCONFIG_ALLCONFIG");
  580. - if (name && !stat(name, &tmpstat)) {
  581. - conf_read_simple(name, S_DEF_USER);
  582. + if (!name)
  583. + break;
  584. + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) {
  585. + if (conf_read_simple(name, S_DEF_USER)) {
  586. + fprintf(stderr,
  587. + _("*** Can't read seed configuration \"%s\"!\n"),
  588. + name);
  589. + exit(1);
  590. + }
  591. break;
  592. }
  593. switch (input_mode) {
  594. - case set_no: name = "allno.config"; break;
  595. - case set_mod: name = "allmod.config"; break;
  596. - case set_yes: name = "allyes.config"; break;
  597. - case set_random: name = "allrandom.config"; break;
  598. + case allnoconfig: name = "allno.config"; break;
  599. + case allyesconfig: name = "allyes.config"; break;
  600. + case allmodconfig: name = "allmod.config"; break;
  601. + case alldefconfig: name = "alldef.config"; break;
  602. + case randconfig: name = "allrandom.config"; break;
  603. default: break;
  604. }
  605. - if (!stat(name, &tmpstat))
  606. - conf_read_simple(name, S_DEF_USER);
  607. - else if (!stat("all.config", &tmpstat))
  608. - conf_read_simple("all.config", S_DEF_USER);
  609. + if (conf_read_simple(name, S_DEF_USER) &&
  610. + conf_read_simple("all.config", S_DEF_USER)) {
  611. + fprintf(stderr,
  612. + _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"),
  613. + name);
  614. + exit(1);
  615. + }
  616. break;
  617. default:
  618. break;
  619. @@ -557,41 +669,51 @@
  620. name = getenv("KCONFIG_NOSILENTUPDATE");
  621. if (name && *name) {
  622. fprintf(stderr,
  623. - _("\n*** configuration requires explicit update.\n\n"));
  624. + _("\n*** The configuration requires explicit update.\n\n"));
  625. return 1;
  626. }
  627. }
  628. - valid_stdin = isatty(0) && isatty(1) && isatty(2);
  629. + valid_stdin = tty_stdio;
  630. }
  631. switch (input_mode) {
  632. - case set_no:
  633. + case allnoconfig:
  634. conf_set_all_new_symbols(def_no);
  635. break;
  636. - case set_yes:
  637. + case allyesconfig:
  638. conf_set_all_new_symbols(def_yes);
  639. break;
  640. - case set_mod:
  641. + case allmodconfig:
  642. conf_set_all_new_symbols(def_mod);
  643. break;
  644. - case set_random:
  645. - conf_set_all_new_symbols(def_random);
  646. + case alldefconfig:
  647. + conf_set_all_new_symbols(def_default);
  648. + break;
  649. + case randconfig:
  650. + /* Really nothing to do in this loop */
  651. + while (conf_set_all_new_symbols(def_random)) ;
  652. break;
  653. - case set_default:
  654. + case defconfig:
  655. conf_set_all_new_symbols(def_default);
  656. break;
  657. - case ask_new:
  658. - case ask_all:
  659. + case savedefconfig:
  660. + break;
  661. + case oldaskconfig:
  662. rootEntry = &rootmenu;
  663. conf(&rootmenu);
  664. - input_mode = ask_silent;
  665. + input_mode = silentoldconfig;
  666. /* fall through */
  667. - case ask_silent:
  668. + case oldconfig:
  669. + case listnewconfig:
  670. + case olddefconfig:
  671. + case silentoldconfig:
  672. /* Update until a loop caused no more changes */
  673. do {
  674. conf_cnt = 0;
  675. check_conf(&rootmenu);
  676. - } while (conf_cnt);
  677. + } while (conf_cnt &&
  678. + (input_mode != listnewconfig &&
  679. + input_mode != olddefconfig));
  680. break;
  681. }
  682. @@ -607,7 +729,13 @@
  683. fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
  684. return 1;
  685. }
  686. - } else {
  687. + } else if (input_mode == savedefconfig) {
  688. + if (conf_write_defconfig(defconfig_file)) {
  689. + fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"),
  690. + defconfig_file);
  691. + return 1;
  692. + }
  693. + } else if (input_mode != listnewconfig) {
  694. if (conf_write(NULL)) {
  695. fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
  696. exit(1);
  697. @@ -615,3 +743,12 @@
  698. }
  699. return 0;
  700. }
  701. +
  702. +/*
  703. + * Helper function to facilitate fgets() by Jean Sacren.
  704. + */
  705. +void xfgets(char *str, int size, FILE *in)
  706. +{
  707. + if (fgets(str, size, in) == NULL)
  708. + fprintf(stderr, "\nError in reading or end of file.\n");
  709. +}
  710. diff -Nur uClibc-0.9.33.2/extra/config/confdata.c uClibc-git/extra/config/confdata.c
  711. --- uClibc-0.9.33.2/extra/config/confdata.c 2012-05-15 09:20:09.000000000 +0200
  712. +++ uClibc-git/extra/config/confdata.c 2014-02-03 12:32:56.000000000 +0100
  713. @@ -5,24 +5,27 @@
  714. #include <sys/stat.h>
  715. #include <ctype.h>
  716. +#include <errno.h>
  717. #include <fcntl.h>
  718. +#include <stdarg.h>
  719. #include <stdio.h>
  720. #include <stdlib.h>
  721. #include <string.h>
  722. #include <time.h>
  723. #include <unistd.h>
  724. -#include <libgen.h>
  725. -#define LKC_DIRECT_LINK
  726. #include "lkc.h"
  727. static void conf_warning(const char *fmt, ...)
  728. __attribute__ ((format (printf, 1, 2)));
  729. +static void conf_message(const char *fmt, ...)
  730. + __attribute__ ((format (printf, 1, 2)));
  731. +
  732. static const char *conf_filename;
  733. static int conf_lineno, conf_warnings, conf_unsaved;
  734. -const char conf_defname[] = "extra/Configs/defconfigs/$ARCH";
  735. +const char conf_defname[] = "arch/$ARCH/defconfig";
  736. static void conf_warning(const char *fmt, ...)
  737. {
  738. @@ -35,6 +38,29 @@
  739. conf_warnings++;
  740. }
  741. +static void conf_default_message_callback(const char *fmt, va_list ap)
  742. +{
  743. + printf("#\n# ");
  744. + vprintf(fmt, ap);
  745. + printf("\n#\n");
  746. +}
  747. +
  748. +static void (*conf_message_callback) (const char *fmt, va_list ap) =
  749. + conf_default_message_callback;
  750. +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap))
  751. +{
  752. + conf_message_callback = fn;
  753. +}
  754. +
  755. +static void conf_message(const char *fmt, ...)
  756. +{
  757. + va_list ap;
  758. +
  759. + va_start(ap, fmt);
  760. + if (conf_message_callback)
  761. + conf_message_callback(fmt, ap);
  762. +}
  763. +
  764. const char *conf_get_configname(void)
  765. {
  766. char *name = getenv("KCONFIG_CONFIG");
  767. @@ -42,6 +68,13 @@
  768. return name ? name : ".config";
  769. }
  770. +const char *conf_get_autoconfig_name(void)
  771. +{
  772. + char *name = getenv("KCONFIG_AUTOCONFIG");
  773. +
  774. + return name ? name : "include/config/auto.conf";
  775. +}
  776. +
  777. static char *conf_expand_value(const char *in)
  778. {
  779. struct symbol *sym;
  780. @@ -95,6 +128,7 @@
  781. sym->flags |= def_flags;
  782. break;
  783. }
  784. + /* fall through */
  785. case S_BOOLEAN:
  786. if (p[0] == 'y') {
  787. sym->def[def].tri = yes;
  788. @@ -107,7 +141,7 @@
  789. break;
  790. }
  791. conf_warning("symbol value '%s' invalid for %s", p, sym->name);
  792. - break;
  793. + return 1;
  794. case S_OTHER:
  795. if (*p != '"') {
  796. for (p2 = p; *p2 && !isspace(*p2); p2++)
  797. @@ -115,6 +149,7 @@
  798. sym->type = S_STRING;
  799. goto done;
  800. }
  801. + /* fall through */
  802. case S_STRING:
  803. if (*p++ != '"')
  804. break;
  805. @@ -129,6 +164,7 @@
  806. conf_warning("invalid string found");
  807. return 1;
  808. }
  809. + /* fall through */
  810. case S_INT:
  811. case S_HEX:
  812. done:
  813. @@ -146,10 +182,66 @@
  814. return 0;
  815. }
  816. +#define LINE_GROWTH 16
  817. +static int add_byte(int c, char **lineptr, size_t slen, size_t *n)
  818. +{
  819. + char *nline;
  820. + size_t new_size = slen + 1;
  821. + if (new_size > *n) {
  822. + new_size += LINE_GROWTH - 1;
  823. + new_size *= 2;
  824. + nline = realloc(*lineptr, new_size);
  825. + if (!nline)
  826. + return -1;
  827. +
  828. + *lineptr = nline;
  829. + *n = new_size;
  830. + }
  831. +
  832. + (*lineptr)[slen] = c;
  833. +
  834. + return 0;
  835. +}
  836. +
  837. +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream)
  838. +{
  839. + char *line = *lineptr;
  840. + size_t slen = 0;
  841. +
  842. + for (;;) {
  843. + int c = getc(stream);
  844. +
  845. + switch (c) {
  846. + case '\n':
  847. + if (add_byte(c, &line, slen, n) < 0)
  848. + goto e_out;
  849. + slen++;
  850. + /* fall through */
  851. + case EOF:
  852. + if (add_byte('\0', &line, slen, n) < 0)
  853. + goto e_out;
  854. + *lineptr = line;
  855. + if (slen == 0)
  856. + return -1;
  857. + return slen;
  858. + default:
  859. + if (add_byte(c, &line, slen, n) < 0)
  860. + goto e_out;
  861. + slen++;
  862. + }
  863. + }
  864. +
  865. +e_out:
  866. + line[slen-1] = '\0';
  867. + *lineptr = line;
  868. + return -1;
  869. +}
  870. +
  871. int conf_read_simple(const char *name, int def)
  872. {
  873. FILE *in = NULL;
  874. - char line[1024];
  875. + char *line = NULL;
  876. + size_t line_asize = 0;
  877. char *p, *p2;
  878. struct symbol *sym;
  879. int i, def_flags;
  880. @@ -164,8 +256,11 @@
  881. if (in)
  882. goto load;
  883. sym_add_change_count(1);
  884. - if (!sym_defconfig_list)
  885. + if (!sym_defconfig_list) {
  886. + if (modules_sym)
  887. + sym_calc_value(modules_sym);
  888. return 1;
  889. + }
  890. for_all_defaults(sym_defconfig_list, prop) {
  891. if (expr_calc_value(prop->visible.expr) == no ||
  892. @@ -174,9 +269,8 @@
  893. name = conf_expand_value(prop->expr->left.sym->name);
  894. in = zconf_fopen(name);
  895. if (in) {
  896. - printf(_("#\n"
  897. - "# using defaults found in %s\n"
  898. - "#\n"), name);
  899. + conf_message(_("using defaults found in %s"),
  900. + name);
  901. goto load;
  902. }
  903. }
  904. @@ -202,33 +296,33 @@
  905. case S_STRING:
  906. if (sym->def[def].val)
  907. free(sym->def[def].val);
  908. + /* fall through */
  909. default:
  910. sym->def[def].val = NULL;
  911. sym->def[def].tri = no;
  912. }
  913. }
  914. - while (fgets(line, sizeof(line), in)) {
  915. + while (compat_getline(&line, &line_asize, in) != -1) {
  916. conf_lineno++;
  917. sym = NULL;
  918. - switch (line[0]) {
  919. - case '#':
  920. - if (line[1] != ' ')
  921. + if (line[0] == '#') {
  922. + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_)))
  923. continue;
  924. - p = strchr(line + 2, ' ');
  925. + p = strchr(line + 2 + strlen(CONFIG_), ' ');
  926. if (!p)
  927. continue;
  928. *p++ = 0;
  929. if (strncmp(p, "is not set", 10))
  930. continue;
  931. if (def == S_DEF_USER) {
  932. - sym = sym_find(line + 2);
  933. + sym = sym_find(line + 2 + strlen(CONFIG_));
  934. if (!sym) {
  935. sym_add_change_count(1);
  936. - break;
  937. + goto setsym;
  938. }
  939. } else {
  940. - sym = sym_lookup(line + 2, 0);
  941. + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0);
  942. if (sym->type == S_UNKNOWN)
  943. sym->type = S_BOOLEAN;
  944. }
  945. @@ -244,13 +338,10 @@
  946. default:
  947. ;
  948. }
  949. - break;
  950. - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z':
  951. - p = strchr(line, '=');
  952. - if (!p) {
  953. - conf_warning("unexpected data '%s'", line);
  954. + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) {
  955. + p = strchr(line + strlen(CONFIG_), '=');
  956. + if (!p)
  957. continue;
  958. - }
  959. *p++ = 0;
  960. p2 = strchr(p, '\n');
  961. if (p2) {
  962. @@ -259,13 +350,13 @@
  963. *p2 = 0;
  964. }
  965. if (def == S_DEF_USER) {
  966. - sym = sym_find(line);
  967. + sym = sym_find(line + strlen(CONFIG_));
  968. if (!sym) {
  969. sym_add_change_count(1);
  970. - break;
  971. + goto setsym;
  972. }
  973. } else {
  974. - sym = sym_lookup(line, 0);
  975. + sym = sym_lookup(line + strlen(CONFIG_), 0);
  976. if (sym->type == S_UNKNOWN)
  977. sym->type = S_OTHER;
  978. }
  979. @@ -274,14 +365,12 @@
  980. }
  981. if (conf_set_sym_val(sym, def, def_flags, p))
  982. continue;
  983. - break;
  984. - case '\r':
  985. - case '\n':
  986. - break;
  987. - default:
  988. - conf_warning("unexpected data");
  989. + } else {
  990. + if (line[0] != '\r' && line[0] != '\n')
  991. + conf_warning("unexpected data");
  992. continue;
  993. }
  994. +setsym:
  995. if (sym && sym_is_choice_value(sym)) {
  996. struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
  997. switch (sym->def[def].tri) {
  998. @@ -302,6 +391,7 @@
  999. cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);
  1000. }
  1001. }
  1002. + free(line);
  1003. fclose(in);
  1004. if (modules_sym)
  1005. @@ -311,10 +401,8 @@
  1006. int conf_read(const char *name)
  1007. {
  1008. - struct symbol *sym, *choice_sym;
  1009. - struct property *prop;
  1010. - struct expr *e;
  1011. - int i, flags;
  1012. + struct symbol *sym;
  1013. + int i;
  1014. sym_set_change_count(0);
  1015. @@ -324,7 +412,7 @@
  1016. for_all_symbols(i, sym) {
  1017. sym_calc_value(sym);
  1018. if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))
  1019. - goto sym_ok;
  1020. + continue;
  1021. if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
  1022. /* check that calculated value agrees with saved value */
  1023. switch (sym->type) {
  1024. @@ -333,29 +421,18 @@
  1025. if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))
  1026. break;
  1027. if (!sym_is_choice(sym))
  1028. - goto sym_ok;
  1029. + continue;
  1030. + /* fall through */
  1031. default:
  1032. if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))
  1033. - goto sym_ok;
  1034. + continue;
  1035. break;
  1036. }
  1037. } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))
  1038. /* no previous value and not saved */
  1039. - goto sym_ok;
  1040. + continue;
  1041. conf_unsaved++;
  1042. /* maybe print value in verbose mode... */
  1043. - sym_ok:
  1044. - if (!sym_is_choice(sym))
  1045. - continue;
  1046. - /* The choice symbol only has a set value (and thus is not new)
  1047. - * if all its visible childs have values.
  1048. - */
  1049. - prop = sym_get_choice_prop(sym);
  1050. - flags = sym->flags;
  1051. - expr_list_for_each_sym(prop->expr, e, choice_sym)
  1052. - if (choice_sym->visible != no)
  1053. - flags &= choice_sym->flags;
  1054. - sym->flags &= flags | ~SYMBOL_DEF_USER;
  1055. }
  1056. for_all_symbols(i, sym) {
  1057. @@ -388,43 +465,300 @@
  1058. return 0;
  1059. }
  1060. +/*
  1061. + * Kconfig configuration printer
  1062. + *
  1063. + * This printer is used when generating the resulting configuration after
  1064. + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by
  1065. + * passing a non-NULL argument to the printer.
  1066. + *
  1067. + */
  1068. +static void
  1069. +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
  1070. +{
  1071. +
  1072. + switch (sym->type) {
  1073. + case S_BOOLEAN:
  1074. + case S_TRISTATE:
  1075. + if (*value == 'n') {
  1076. + bool skip_unset = (arg != NULL);
  1077. +
  1078. + if (!skip_unset)
  1079. + fprintf(fp, "# %s%s is not set\n",
  1080. + CONFIG_, sym->name);
  1081. + return;
  1082. + }
  1083. + break;
  1084. + default:
  1085. + break;
  1086. + }
  1087. +
  1088. + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value);
  1089. +}
  1090. +
  1091. +static void
  1092. +kconfig_print_comment(FILE *fp, const char *value, void *arg)
  1093. +{
  1094. + const char *p = value;
  1095. + size_t l;
  1096. +
  1097. + for (;;) {
  1098. + l = strcspn(p, "\n");
  1099. + fprintf(fp, "#");
  1100. + if (l) {
  1101. + fprintf(fp, " ");
  1102. + xfwrite(p, l, 1, fp);
  1103. + p += l;
  1104. + }
  1105. + fprintf(fp, "\n");
  1106. + if (*p++ == '\0')
  1107. + break;
  1108. + }
  1109. +}
  1110. +
  1111. +static struct conf_printer kconfig_printer_cb =
  1112. +{
  1113. + .print_symbol = kconfig_print_symbol,
  1114. + .print_comment = kconfig_print_comment,
  1115. +};
  1116. +
  1117. +/*
  1118. + * Header printer
  1119. + *
  1120. + * This printer is used when generating the `include/generated/autoconf.h' file.
  1121. + */
  1122. +static void
  1123. +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
  1124. +{
  1125. +
  1126. + switch (sym->type) {
  1127. + case S_BOOLEAN:
  1128. + case S_TRISTATE: {
  1129. + const char *suffix = "";
  1130. +
  1131. + switch (*value) {
  1132. + case 'n':
  1133. + break;
  1134. + case 'm':
  1135. + suffix = "_MODULE";
  1136. + /* fall through */
  1137. + default:
  1138. + fprintf(fp, "#define %s%s%s 1\n",
  1139. + CONFIG_, sym->name, suffix);
  1140. + }
  1141. + break;
  1142. + }
  1143. + case S_HEX: {
  1144. + const char *prefix = "";
  1145. +
  1146. + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X'))
  1147. + prefix = "0x";
  1148. + fprintf(fp, "#define %s%s %s%s\n",
  1149. + CONFIG_, sym->name, prefix, value);
  1150. + break;
  1151. + }
  1152. + case S_STRING:
  1153. + case S_INT:
  1154. + fprintf(fp, "#define %s%s %s\n",
  1155. + CONFIG_, sym->name, value);
  1156. + break;
  1157. + default:
  1158. + break;
  1159. + }
  1160. +
  1161. +}
  1162. +
  1163. +static void
  1164. +header_print_comment(FILE *fp, const char *value, void *arg)
  1165. +{
  1166. + const char *p = value;
  1167. + size_t l;
  1168. +
  1169. + fprintf(fp, "/*\n");
  1170. + for (;;) {
  1171. + l = strcspn(p, "\n");
  1172. + fprintf(fp, " *");
  1173. + if (l) {
  1174. + fprintf(fp, " ");
  1175. + xfwrite(p, l, 1, fp);
  1176. + p += l;
  1177. + }
  1178. + fprintf(fp, "\n");
  1179. + if (*p++ == '\0')
  1180. + break;
  1181. + }
  1182. + fprintf(fp, " */\n");
  1183. +}
  1184. +
  1185. +static struct conf_printer header_printer_cb =
  1186. +{
  1187. + .print_symbol = header_print_symbol,
  1188. + .print_comment = header_print_comment,
  1189. +};
  1190. +
  1191. +/*
  1192. + * Tristate printer
  1193. + *
  1194. + * This printer is used when generating the `include/config/tristate.conf' file.
  1195. + */
  1196. +static void
  1197. +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg)
  1198. +{
  1199. +
  1200. + if (sym->type == S_TRISTATE && *value != 'n')
  1201. + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value));
  1202. +}
  1203. +
  1204. +static struct conf_printer tristate_printer_cb =
  1205. +{
  1206. + .print_symbol = tristate_print_symbol,
  1207. + .print_comment = kconfig_print_comment,
  1208. +};
  1209. +
  1210. +static void conf_write_symbol(FILE *fp, struct symbol *sym,
  1211. + struct conf_printer *printer, void *printer_arg)
  1212. +{
  1213. + const char *str;
  1214. +
  1215. + switch (sym->type) {
  1216. + case S_OTHER:
  1217. + case S_UNKNOWN:
  1218. + break;
  1219. + case S_STRING:
  1220. + str = sym_get_string_value(sym);
  1221. + str = sym_escape_string_value(str);
  1222. + printer->print_symbol(fp, sym, str, printer_arg);
  1223. + free((void *)str);
  1224. + break;
  1225. + default:
  1226. + str = sym_get_string_value(sym);
  1227. + printer->print_symbol(fp, sym, str, printer_arg);
  1228. + }
  1229. +}
  1230. +
  1231. +static void
  1232. +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg)
  1233. +{
  1234. + char buf[256];
  1235. +
  1236. + snprintf(buf, sizeof(buf),
  1237. + "\n"
  1238. + "Automatically generated file; DO NOT EDIT.\n"
  1239. + "%s\n",
  1240. + rootmenu.prompt->text);
  1241. +
  1242. + printer->print_comment(fp, buf, printer_arg);
  1243. +}
  1244. +
  1245. +/*
  1246. + * Write out a minimal config.
  1247. + * All values that has default values are skipped as this is redundant.
  1248. + */
  1249. +int conf_write_defconfig(const char *filename)
  1250. +{
  1251. + struct symbol *sym;
  1252. + struct menu *menu;
  1253. + FILE *out;
  1254. +
  1255. + out = fopen(filename, "w");
  1256. + if (!out)
  1257. + return 1;
  1258. +
  1259. + sym_clear_all_valid();
  1260. +
  1261. + /* Traverse all menus to find all relevant symbols */
  1262. + menu = rootmenu.list;
  1263. +
  1264. + while (menu != NULL)
  1265. + {
  1266. + sym = menu->sym;
  1267. + if (sym == NULL) {
  1268. + if (!menu_is_visible(menu))
  1269. + goto next_menu;
  1270. + } else if (!sym_is_choice(sym)) {
  1271. + sym_calc_value(sym);
  1272. + if (!(sym->flags & SYMBOL_WRITE))
  1273. + goto next_menu;
  1274. + sym->flags &= ~SYMBOL_WRITE;
  1275. + /* If we cannot change the symbol - skip */
  1276. + if (!sym_is_changable(sym))
  1277. + goto next_menu;
  1278. + /* If symbol equals to default value - skip */
  1279. + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0)
  1280. + goto next_menu;
  1281. +
  1282. + /*
  1283. + * If symbol is a choice value and equals to the
  1284. + * default for a choice - skip.
  1285. + * But only if value is bool and equal to "y" and
  1286. + * choice is not "optional".
  1287. + * (If choice is "optional" then all values can be "n")
  1288. + */
  1289. + if (sym_is_choice_value(sym)) {
  1290. + struct symbol *cs;
  1291. + struct symbol *ds;
  1292. +
  1293. + cs = prop_get_symbol(sym_get_choice_prop(sym));
  1294. + ds = sym_choice_default(cs);
  1295. + if (!sym_is_optional(cs) && sym == ds) {
  1296. + if ((sym->type == S_BOOLEAN) &&
  1297. + sym_get_tristate_value(sym) == yes)
  1298. + goto next_menu;
  1299. + }
  1300. + }
  1301. + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
  1302. + }
  1303. +next_menu:
  1304. + if (menu->list != NULL) {
  1305. + menu = menu->list;
  1306. + }
  1307. + else if (menu->next != NULL) {
  1308. + menu = menu->next;
  1309. + } else {
  1310. + while ((menu = menu->parent)) {
  1311. + if (menu->next != NULL) {
  1312. + menu = menu->next;
  1313. + break;
  1314. + }
  1315. + }
  1316. + }
  1317. + }
  1318. + fclose(out);
  1319. + return 0;
  1320. +}
  1321. +
  1322. int conf_write(const char *name)
  1323. {
  1324. FILE *out;
  1325. struct symbol *sym;
  1326. struct menu *menu;
  1327. const char *basename;
  1328. - char dirname[128], tmpname[128], newname[128];
  1329. - int type, l;
  1330. const char *str;
  1331. - time_t now;
  1332. - int use_timestamp = 1;
  1333. - char *env;
  1334. + char tmpname[PATH_MAX+1], newname[PATH_MAX+1];
  1335. + char *env, *dirname = NULL;
  1336. - dirname[0] = 0;
  1337. - if (name == NULL)
  1338. - name = conf_get_configname();
  1339. if (name && name[0]) {
  1340. struct stat st;
  1341. char *slash;
  1342. if (!stat(name, &st) && S_ISDIR(st.st_mode)) {
  1343. - strcpy(dirname, name);
  1344. + dirname = strndup(name, strlen(name) + 1);
  1345. strcat(dirname, "/");
  1346. basename = conf_get_configname();
  1347. } else if ((slash = strrchr(name, '/'))) {
  1348. int size = slash - name + 1;
  1349. - memcpy(dirname, name, size);
  1350. - dirname[size] = 0;
  1351. + dirname = strndup(name, size);
  1352. if (slash[1])
  1353. basename = slash + 1;
  1354. else
  1355. basename = conf_get_configname();
  1356. } else
  1357. basename = name;
  1358. - } else
  1359. - basename = conf_get_configname();
  1360. -
  1361. + } else {
  1362. + dirname = strdup(conf_get_configname());
  1363. + basename = strdup(base_name(dirname));
  1364. + dirname = dir_name(dirname);
  1365. + }
  1366. sprintf(newname, "%s%s", dirname, basename);
  1367. env = getenv("KCONFIG_OVERWRITECONFIG");
  1368. if (!env || !*env) {
  1369. @@ -434,24 +768,11 @@
  1370. *tmpname = 0;
  1371. out = fopen(newname, "w");
  1372. }
  1373. + free(dirname);
  1374. if (!out)
  1375. return 1;
  1376. - sym = sym_lookup("VERSION", 0);
  1377. - sym_calc_value(sym);
  1378. - time(&now);
  1379. - env = getenv("KCONFIG_NOTIMESTAMP");
  1380. - if (env && *env)
  1381. - use_timestamp = 0;
  1382. -
  1383. - fprintf(out, _("#\n"
  1384. - "# Automatically generated make config: don't edit\n"
  1385. - "# Version: %s\n"
  1386. - "%s%s"
  1387. - "#\n"),
  1388. - sym_get_string_value(sym),
  1389. - use_timestamp ? "# " : "",
  1390. - use_timestamp ? ctime(&now) : "");
  1391. + conf_write_heading(out, &kconfig_printer_cb, NULL);
  1392. if (!conf_get_changed())
  1393. sym_clear_all_valid();
  1394. @@ -472,56 +793,11 @@
  1395. if (!(sym->flags & SYMBOL_WRITE))
  1396. goto next;
  1397. sym->flags &= ~SYMBOL_WRITE;
  1398. - type = sym->type;
  1399. - if (type == S_TRISTATE) {
  1400. - sym_calc_value(modules_sym);
  1401. - if (modules_sym->curr.tri == no)
  1402. - type = S_BOOLEAN;
  1403. - }
  1404. - switch (type) {
  1405. - case S_BOOLEAN:
  1406. - case S_TRISTATE:
  1407. - switch (sym_get_tristate_value(sym)) {
  1408. - case no:
  1409. - fprintf(out, "# %s is not set\n", sym->name);
  1410. - break;
  1411. - case mod:
  1412. - fprintf(out, "%s=m\n", sym->name);
  1413. - break;
  1414. - case yes:
  1415. - fprintf(out, "%s=y\n", sym->name);
  1416. - break;
  1417. - }
  1418. - break;
  1419. - case S_STRING:
  1420. - str = sym_get_string_value(sym);
  1421. - fprintf(out, "%s=\"", sym->name);
  1422. - while (1) {
  1423. - l = strcspn(str, "\"\\");
  1424. - if (l) {
  1425. - fwrite(str, l, 1, out);
  1426. - str += l;
  1427. - }
  1428. - if (!*str)
  1429. - break;
  1430. - fprintf(out, "\\%c", *str++);
  1431. - }
  1432. - fputs("\"\n", out);
  1433. - break;
  1434. - case S_HEX:
  1435. - str = sym_get_string_value(sym);
  1436. - if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
  1437. - fprintf(out, "%s=%s\n", sym->name, str);
  1438. - break;
  1439. - }
  1440. - case S_INT:
  1441. - str = sym_get_string_value(sym);
  1442. - fprintf(out, "%s=%s\n", sym->name, str);
  1443. - break;
  1444. - }
  1445. +
  1446. + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
  1447. }
  1448. - next:
  1449. +next:
  1450. if (menu->list) {
  1451. menu = menu->list;
  1452. continue;
  1453. @@ -538,38 +814,39 @@
  1454. fclose(out);
  1455. if (*tmpname) {
  1456. - strcat(dirname, basename);
  1457. + dirname = strndup(basename, strlen(basename) + 4);
  1458. strcat(dirname, ".old");
  1459. rename(newname, dirname);
  1460. + free(dirname);
  1461. if (rename(tmpname, newname))
  1462. return 1;
  1463. }
  1464. - printf(_("#\n"
  1465. - "# configuration written to %s\n"
  1466. - "#\n"), newname);
  1467. + conf_message(_("configuration written to %s"), newname);
  1468. sym_set_change_count(0);
  1469. return 0;
  1470. }
  1471. -int conf_split_config(void)
  1472. +static int conf_split_config(void)
  1473. {
  1474. - char *name, path[128], opwd[512];
  1475. + const char *name;
  1476. + char path[PATH_MAX+1], opwd[PATH_MAX+1];
  1477. char *s, *d, c;
  1478. struct symbol *sym;
  1479. struct stat sb;
  1480. int res, i, fd;
  1481. - name = getenv("KCONFIG_AUTOCONFIG");
  1482. - if (!name)
  1483. - name = "include/config/auto.conf";
  1484. - conf_read_simple(name, S_DEF_AUTO);
  1485. -
  1486. if (getcwd(opwd, sizeof(opwd)) == NULL)
  1487. return 1;
  1488. - if (chdir(dirname(strdup(name))))
  1489. + name = conf_get_autoconfig_name();
  1490. + conf_read_simple(name, S_DEF_AUTO);
  1491. +
  1492. + strcpy(path, name);
  1493. + dir_name(path);
  1494. +
  1495. + if (chdir(path))
  1496. return 1;
  1497. res = 0;
  1498. @@ -671,126 +948,85 @@
  1499. int conf_write_autoconf(void)
  1500. {
  1501. - char opwd[512];
  1502. struct symbol *sym;
  1503. - const char *str;
  1504. - char *name;
  1505. - FILE *out, *out_h;
  1506. - time_t now;
  1507. - int i, l;
  1508. + const char *name;
  1509. + char cfg_fname[PATH_MAX+1], tristate_fname[PATH_MAX+1],
  1510. + cfgh_fname[PATH_MAX+1];
  1511. + char *dirname;
  1512. + FILE *out, *tristate, *out_h;
  1513. + int i;
  1514. - if (getcwd(opwd, sizeof(opwd)) == NULL)
  1515. - return 1;
  1516. - if (chdir(dirname(strdup(conf_get_configname()))))
  1517. - return 1;
  1518. sym_clear_all_valid();
  1519. - file_write_dep("include/config/auto.conf.cmd");
  1520. + sprintf(cfg_fname, "%s.cmd", conf_get_autoconfig_name());
  1521. + file_write_dep(cfg_fname);
  1522. if (conf_split_config())
  1523. return 1;
  1524. - out = fopen(".tmpconfig", "w");
  1525. + dirname = dir_name(strdup(conf_get_configname()));
  1526. + sprintf(cfg_fname, "%s.tmpconfig", dirname);
  1527. + sprintf(tristate_fname, "%s.tmpconfig_tristate", dirname);
  1528. + sprintf(cfgh_fname, "%s.tmpconfig.h", dirname);
  1529. + free(dirname);
  1530. +
  1531. + out = fopen(cfg_fname, "w");
  1532. if (!out)
  1533. return 1;
  1534. - out_h = fopen(".tmpconfig.h", "w");
  1535. + tristate = fopen(tristate_fname, "w");
  1536. + if (!tristate) {
  1537. + fclose(out);
  1538. + return 1;
  1539. + }
  1540. +
  1541. + out_h = fopen(cfgh_fname, "w");
  1542. if (!out_h) {
  1543. fclose(out);
  1544. + fclose(tristate);
  1545. return 1;
  1546. }
  1547. - sym = sym_lookup("VERSION", 0);
  1548. - sym_calc_value(sym);
  1549. - time(&now);
  1550. - fprintf(out, "#\n"
  1551. - "# Automatically generated make config: don't edit\n"
  1552. - "# Version: %s\n"
  1553. - "# %s"
  1554. - "#\n",
  1555. - sym_get_string_value(sym), ctime(&now));
  1556. - fprintf(out_h, "/*\n"
  1557. - " * Automatically generated C config: don't edit\n"
  1558. - " * Version: %s\n"
  1559. - " * %s"
  1560. - " */\n"
  1561. - "#define AUTOCONF_INCLUDED\n",
  1562. - sym_get_string_value(sym), ctime(&now));
  1563. + conf_write_heading(out, &kconfig_printer_cb, NULL);
  1564. +
  1565. + conf_write_heading(tristate, &tristate_printer_cb, NULL);
  1566. +
  1567. + conf_write_heading(out_h, &header_printer_cb, NULL);
  1568. for_all_symbols(i, sym) {
  1569. sym_calc_value(sym);
  1570. if (!(sym->flags & SYMBOL_WRITE) || !sym->name)
  1571. continue;
  1572. - switch (sym->type) {
  1573. - case S_BOOLEAN:
  1574. - case S_TRISTATE:
  1575. - switch (sym_get_tristate_value(sym)) {
  1576. - case no:
  1577. - break;
  1578. - case mod:
  1579. - fprintf(out, "CONFIG_%s=m\n", sym->name);
  1580. - fprintf(out_h, "#define CONFIG_%s_MODULE 1\n", sym->name);
  1581. - break;
  1582. - case yes:
  1583. - fprintf(out, "%s=y\n", sym->name);
  1584. - fprintf(out_h, "#define %s 1\n", sym->name);
  1585. - break;
  1586. - }
  1587. - break;
  1588. - case S_STRING:
  1589. - str = sym_get_string_value(sym);
  1590. - fprintf(out, "%s=\"", sym->name);
  1591. - fprintf(out_h, "#define %s \"", sym->name);
  1592. - while (1) {
  1593. - l = strcspn(str, "\"\\");
  1594. - if (l) {
  1595. - fwrite(str, l, 1, out);
  1596. - fwrite(str, l, 1, out_h);
  1597. - str += l;
  1598. - }
  1599. - if (!*str)
  1600. - break;
  1601. - fprintf(out, "\\%c", *str);
  1602. - fprintf(out_h, "\\%c", *str);
  1603. - str++;
  1604. - }
  1605. - fputs("\"\n", out);
  1606. - fputs("\"\n", out_h);
  1607. - break;
  1608. - case S_HEX:
  1609. - str = sym_get_string_value(sym);
  1610. - if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
  1611. - fprintf(out, "%s=%s\n", sym->name, str);
  1612. - fprintf(out_h, "#define %s 0x%s\n", sym->name, str);
  1613. - break;
  1614. - }
  1615. - case S_INT:
  1616. - str = sym_get_string_value(sym);
  1617. - fprintf(out, "%s=%s\n", sym->name, str);
  1618. - fprintf(out_h, "#define %s %s\n", sym->name, str);
  1619. - break;
  1620. - default:
  1621. - break;
  1622. - }
  1623. +
  1624. + /* write symbol to auto.conf, tristate and header files */
  1625. + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1);
  1626. +
  1627. + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1);
  1628. +
  1629. + conf_write_symbol(out_h, sym, &header_printer_cb, NULL);
  1630. }
  1631. fclose(out);
  1632. + fclose(tristate);
  1633. fclose(out_h);
  1634. name = getenv("KCONFIG_AUTOHEADER");
  1635. if (!name)
  1636. - name = "include/config/autoconf.h";
  1637. - if (rename(".tmpconfig.h", name))
  1638. + name = "include/generated/autoconf.h";
  1639. + if (rename(cfgh_fname, name))
  1640. return 1;
  1641. - name = getenv("KCONFIG_AUTOCONFIG");
  1642. + name = getenv("KCONFIG_TRISTATE");
  1643. if (!name)
  1644. - name = "include/config/auto.conf";
  1645. + name = "include/config/tristate.conf";
  1646. + if (rename(tristate_fname, name))
  1647. + return 1;
  1648. + name = conf_get_autoconfig_name();
  1649. /*
  1650. * This must be the last step, kbuild has a dependency on auto.conf
  1651. * and this marks the successful completion of the previous steps.
  1652. */
  1653. - if (rename(".tmpconfig", name))
  1654. + if (rename(cfg_fname, name))
  1655. return 1;
  1656. - chdir(opwd);
  1657. +
  1658. return 0;
  1659. }
  1660. @@ -821,20 +1057,131 @@
  1661. conf_changed_callback = fn;
  1662. }
  1663. +static bool randomize_choice_values(struct symbol *csym)
  1664. +{
  1665. + struct property *prop;
  1666. + struct symbol *sym;
  1667. + struct expr *e;
  1668. + int cnt, def;
  1669. -void conf_set_all_new_symbols(enum conf_def_mode mode)
  1670. + /*
  1671. + * If choice is mod then we may have more items selected
  1672. + * and if no then no-one.
  1673. + * In both cases stop.
  1674. + */
  1675. + if (csym->curr.tri != yes)
  1676. + return false;
  1677. +
  1678. + prop = sym_get_choice_prop(csym);
  1679. +
  1680. + /* count entries in choice block */
  1681. + cnt = 0;
  1682. + expr_list_for_each_sym(prop->expr, e, sym)
  1683. + cnt++;
  1684. +
  1685. + /*
  1686. + * find a random value and set it to yes,
  1687. + * set the rest to no so we have only one set
  1688. + */
  1689. + def = (rand() % cnt);
  1690. +
  1691. + cnt = 0;
  1692. + expr_list_for_each_sym(prop->expr, e, sym) {
  1693. + if (def == cnt++) {
  1694. + sym->def[S_DEF_USER].tri = yes;
  1695. + csym->def[S_DEF_USER].val = sym;
  1696. + }
  1697. + else {
  1698. + sym->def[S_DEF_USER].tri = no;
  1699. + }
  1700. + sym->flags |= SYMBOL_DEF_USER;
  1701. + /* clear VALID to get value calculated */
  1702. + sym->flags &= ~SYMBOL_VALID;
  1703. + }
  1704. + csym->flags |= SYMBOL_DEF_USER;
  1705. + /* clear VALID to get value calculated */
  1706. + csym->flags &= ~(SYMBOL_VALID);
  1707. +
  1708. + return true;
  1709. +}
  1710. +
  1711. +void set_all_choice_values(struct symbol *csym)
  1712. {
  1713. - struct symbol *sym, *csym;
  1714. struct property *prop;
  1715. + struct symbol *sym;
  1716. struct expr *e;
  1717. - int i, cnt, def;
  1718. +
  1719. + prop = sym_get_choice_prop(csym);
  1720. +
  1721. + /*
  1722. + * Set all non-assinged choice values to no
  1723. + */
  1724. + expr_list_for_each_sym(prop->expr, e, sym) {
  1725. + if (!sym_has_value(sym))
  1726. + sym->def[S_DEF_USER].tri = no;
  1727. + }
  1728. + csym->flags |= SYMBOL_DEF_USER;
  1729. + /* clear VALID to get value calculated */
  1730. + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES);
  1731. +}
  1732. +
  1733. +bool conf_set_all_new_symbols(enum conf_def_mode mode)
  1734. +{
  1735. + struct symbol *sym, *csym;
  1736. + int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y
  1737. + * pty: probability of tristate = y
  1738. + * ptm: probability of tristate = m
  1739. + */
  1740. +
  1741. + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case
  1742. + * below, otherwise gcc whines about
  1743. + * -Wmaybe-uninitialized */
  1744. + if (mode == def_random) {
  1745. + int n, p[3];
  1746. + char *env = getenv("KCONFIG_PROBABILITY");
  1747. + n = 0;
  1748. + while( env && *env ) {
  1749. + char *endp;
  1750. + int tmp = strtol( env, &endp, 10 );
  1751. + if( tmp >= 0 && tmp <= 100 ) {
  1752. + p[n++] = tmp;
  1753. + } else {
  1754. + errno = ERANGE;
  1755. + perror( "KCONFIG_PROBABILITY" );
  1756. + exit( 1 );
  1757. + }
  1758. + env = (*endp == ':') ? endp+1 : endp;
  1759. + if( n >=3 ) {
  1760. + break;
  1761. + }
  1762. + }
  1763. + switch( n ) {
  1764. + case 1:
  1765. + pby = p[0]; ptm = pby/2; pty = pby-ptm;
  1766. + break;
  1767. + case 2:
  1768. + pty = p[0]; ptm = p[1]; pby = pty + ptm;
  1769. + break;
  1770. + case 3:
  1771. + pby = p[0]; pty = p[1]; ptm = p[2];
  1772. + break;
  1773. + }
  1774. +
  1775. + if( pty+ptm > 100 ) {
  1776. + errno = ERANGE;
  1777. + perror( "KCONFIG_PROBABILITY" );
  1778. + exit( 1 );
  1779. + }
  1780. + }
  1781. + bool has_changed = false;
  1782. for_all_symbols(i, sym) {
  1783. - if (sym_has_value(sym))
  1784. + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID))
  1785. continue;
  1786. switch (sym_get_type(sym)) {
  1787. case S_BOOLEAN:
  1788. case S_TRISTATE:
  1789. + has_changed = true;
  1790. switch (mode) {
  1791. case def_yes:
  1792. sym->def[S_DEF_USER].tri = yes;
  1793. @@ -846,7 +1193,15 @@
  1794. sym->def[S_DEF_USER].tri = no;
  1795. break;
  1796. case def_random:
  1797. - sym->def[S_DEF_USER].tri = (tristate)(rand() % 3);
  1798. + sym->def[S_DEF_USER].tri = no;
  1799. + cnt = rand() % 100;
  1800. + if (sym->type == S_TRISTATE) {
  1801. + if (cnt < pty)
  1802. + sym->def[S_DEF_USER].tri = yes;
  1803. + else if (cnt < (pty+ptm))
  1804. + sym->def[S_DEF_USER].tri = mod;
  1805. + } else if (cnt < pby)
  1806. + sym->def[S_DEF_USER].tri = yes;
  1807. break;
  1808. default:
  1809. continue;
  1810. @@ -862,51 +1217,35 @@
  1811. sym_clear_all_valid();
  1812. - if (mode != def_random)
  1813. - return;
  1814. /*
  1815. * We have different type of choice blocks.
  1816. - * If curr.tri equal to mod then we can select several
  1817. + * If curr.tri equals to mod then we can select several
  1818. * choice symbols in one block.
  1819. * In this case we do nothing.
  1820. - * If curr.tri equal yes then only one symbol can be
  1821. + * If curr.tri equals yes then only one symbol can be
  1822. * selected in a choice block and we set it to yes,
  1823. * and the rest to no.
  1824. */
  1825. + if (mode != def_random) {
  1826. + for_all_symbols(i, csym) {
  1827. + if ((sym_is_choice(csym) && !sym_has_value(csym)) ||
  1828. + sym_is_choice_value(csym))
  1829. + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES;
  1830. + }
  1831. + }
  1832. +
  1833. for_all_symbols(i, csym) {
  1834. if (sym_has_value(csym) || !sym_is_choice(csym))
  1835. continue;
  1836. sym_calc_value(csym);
  1837. -
  1838. - if (csym->curr.tri != yes)
  1839. - continue;
  1840. -
  1841. - prop = sym_get_choice_prop(csym);
  1842. -
  1843. - /* count entries in choice block */
  1844. - cnt = 0;
  1845. - expr_list_for_each_sym(prop->expr, e, sym)
  1846. - cnt++;
  1847. -
  1848. - /*
  1849. - * find a random value and set it to yes,
  1850. - * set the rest to no so we have only one set
  1851. - */
  1852. - def = (rand() % cnt);
  1853. -
  1854. - cnt = 0;
  1855. - expr_list_for_each_sym(prop->expr, e, sym) {
  1856. - if (def == cnt++) {
  1857. - sym->def[S_DEF_USER].tri = yes;
  1858. - csym->def[S_DEF_USER].val = sym;
  1859. - }
  1860. - else {
  1861. - sym->def[S_DEF_USER].tri = no;
  1862. - }
  1863. + if (mode == def_random)
  1864. + has_changed = randomize_choice_values(csym);
  1865. + else {
  1866. + set_all_choice_values(csym);
  1867. + has_changed = true;
  1868. }
  1869. - csym->flags |= SYMBOL_DEF_USER;
  1870. - /* clear VALID to get value calculated */
  1871. - csym->flags &= ~(SYMBOL_VALID);
  1872. }
  1873. +
  1874. + return has_changed;
  1875. }
  1876. diff -Nur uClibc-0.9.33.2/extra/config/expr.c uClibc-git/extra/config/expr.c
  1877. --- uClibc-0.9.33.2/extra/config/expr.c 2012-05-15 09:20:09.000000000 +0200
  1878. +++ uClibc-git/extra/config/expr.c 2014-02-03 12:32:56.000000000 +0100
  1879. @@ -7,15 +7,13 @@
  1880. #include <stdlib.h>
  1881. #include <string.h>
  1882. -#define LKC_DIRECT_LINK
  1883. #include "lkc.h"
  1884. #define DEBUG_EXPR 0
  1885. struct expr *expr_alloc_symbol(struct symbol *sym)
  1886. {
  1887. - struct expr *e = malloc(sizeof(*e));
  1888. - memset(e, 0, sizeof(*e));
  1889. + struct expr *e = xcalloc(1, sizeof(*e));
  1890. e->type = E_SYMBOL;
  1891. e->left.sym = sym;
  1892. return e;
  1893. @@ -23,8 +21,7 @@
  1894. struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
  1895. {
  1896. - struct expr *e = malloc(sizeof(*e));
  1897. - memset(e, 0, sizeof(*e));
  1898. + struct expr *e = xcalloc(1, sizeof(*e));
  1899. e->type = type;
  1900. e->left.expr = ce;
  1901. return e;
  1902. @@ -32,8 +29,7 @@
  1903. struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
  1904. {
  1905. - struct expr *e = malloc(sizeof(*e));
  1906. - memset(e, 0, sizeof(*e));
  1907. + struct expr *e = xcalloc(1, sizeof(*e));
  1908. e->type = type;
  1909. e->left.expr = e1;
  1910. e->right.expr = e2;
  1911. @@ -42,8 +38,7 @@
  1912. struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
  1913. {
  1914. - struct expr *e = malloc(sizeof(*e));
  1915. - memset(e, 0, sizeof(*e));
  1916. + struct expr *e = xcalloc(1, sizeof(*e));
  1917. e->type = type;
  1918. e->left.sym = s1;
  1919. e->right.sym = s2;
  1920. @@ -64,14 +59,14 @@
  1921. return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
  1922. }
  1923. -struct expr *expr_copy(struct expr *org)
  1924. +struct expr *expr_copy(const struct expr *org)
  1925. {
  1926. struct expr *e;
  1927. if (!org)
  1928. return NULL;
  1929. - e = malloc(sizeof(*org));
  1930. + e = xmalloc(sizeof(*org));
  1931. memcpy(e, org, sizeof(*org));
  1932. switch (org->type) {
  1933. case E_SYMBOL:
  1934. @@ -348,7 +343,7 @@
  1935. /*
  1936. * e1 || e2 -> ?
  1937. */
  1938. -struct expr *expr_join_or(struct expr *e1, struct expr *e2)
  1939. +static struct expr *expr_join_or(struct expr *e1, struct expr *e2)
  1940. {
  1941. struct expr *tmp;
  1942. struct symbol *sym1, *sym2;
  1943. @@ -412,7 +407,7 @@
  1944. return NULL;
  1945. }
  1946. -struct expr *expr_join_and(struct expr *e1, struct expr *e2)
  1947. +static struct expr *expr_join_and(struct expr *e1, struct expr *e2)
  1948. {
  1949. struct expr *tmp;
  1950. struct symbol *sym1, *sym2;
  1951. @@ -1013,6 +1008,48 @@
  1952. #endif
  1953. }
  1954. +static inline struct expr *
  1955. +expr_get_leftmost_symbol(const struct expr *e)
  1956. +{
  1957. +
  1958. + if (e == NULL)
  1959. + return NULL;
  1960. +
  1961. + while (e->type != E_SYMBOL)
  1962. + e = e->left.expr;
  1963. +
  1964. + return expr_copy(e);
  1965. +}
  1966. +
  1967. +/*
  1968. + * Given expression `e1' and `e2', returns the leaf of the longest
  1969. + * sub-expression of `e1' not containing 'e2.
  1970. + */
  1971. +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2)
  1972. +{
  1973. + struct expr *ret;
  1974. +
  1975. + switch (e1->type) {
  1976. + case E_OR:
  1977. + return expr_alloc_and(
  1978. + expr_simplify_unmet_dep(e1->left.expr, e2),
  1979. + expr_simplify_unmet_dep(e1->right.expr, e2));
  1980. + case E_AND: {
  1981. + struct expr *e;
  1982. + e = expr_alloc_and(expr_copy(e1), expr_copy(e2));
  1983. + e = expr_eliminate_dups(e);
  1984. + ret = (!expr_eq(e, e1)) ? e1 : NULL;
  1985. + expr_free(e);
  1986. + break;
  1987. + }
  1988. + default:
  1989. + ret = e1;
  1990. + break;
  1991. + }
  1992. +
  1993. + return expr_get_leftmost_symbol(ret);
  1994. +}
  1995. +
  1996. void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
  1997. {
  1998. if (!e) {
  1999. @@ -1087,7 +1124,7 @@
  2000. static void expr_print_file_helper(void *data, struct symbol *sym, const char *str)
  2001. {
  2002. - fwrite(str, strlen(str), 1, data);
  2003. + xfwrite(str, strlen(str), 1, data);
  2004. }
  2005. void expr_fprint(struct expr *e, FILE *out)
  2006. @@ -1097,7 +1134,32 @@
  2007. static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str)
  2008. {
  2009. - str_append((struct gstr*)data, str);
  2010. + struct gstr *gs = (struct gstr*)data;
  2011. + const char *sym_str = NULL;
  2012. +
  2013. + if (sym)
  2014. + sym_str = sym_get_string_value(sym);
  2015. +
  2016. + if (gs->max_width) {
  2017. + unsigned extra_length = strlen(str);
  2018. + const char *last_cr = strrchr(gs->s, '\n');
  2019. + unsigned last_line_length;
  2020. +
  2021. + if (sym_str)
  2022. + extra_length += 4 + strlen(sym_str);
  2023. +
  2024. + if (!last_cr)
  2025. + last_cr = gs->s;
  2026. +
  2027. + last_line_length = strlen(gs->s) - (last_cr - gs->s);
  2028. +
  2029. + if ((last_line_length + extra_length) > gs->max_width)
  2030. + str_append(gs, "\\\n");
  2031. + }
  2032. +
  2033. + str_append(gs, str);
  2034. + if (sym && sym->type != S_UNKNOWN)
  2035. + str_printf(gs, " [=%s]", sym_str);
  2036. }
  2037. void expr_gstr_print(struct expr *e, struct gstr *gs)
  2038. diff -Nur uClibc-0.9.33.2/extra/config/expr.h uClibc-git/extra/config/expr.h
  2039. --- uClibc-0.9.33.2/extra/config/expr.h 2012-05-15 09:20:09.000000000 +0200
  2040. +++ uClibc-git/extra/config/expr.h 2014-02-03 12:32:56.000000000 +0100
  2041. @@ -10,7 +10,9 @@
  2042. extern "C" {
  2043. #endif
  2044. +#include <assert.h>
  2045. #include <stdio.h>
  2046. +#include "list.h"
  2047. #ifndef __cplusplus
  2048. #include <stdbool.h>
  2049. #endif
  2050. @@ -18,14 +20,10 @@
  2051. struct file {
  2052. struct file *next;
  2053. struct file *parent;
  2054. - char *name;
  2055. + const char *name;
  2056. int lineno;
  2057. - int flags;
  2058. };
  2059. -#define FILE_BUSY 0x0001
  2060. -#define FILE_SCANNED 0x0002
  2061. -
  2062. typedef enum tristate {
  2063. no, mod, yes
  2064. } tristate;
  2065. @@ -83,10 +81,11 @@
  2066. tristate visible;
  2067. int flags;
  2068. struct property *prop;
  2069. + struct expr_value dir_dep;
  2070. struct expr_value rev_dep;
  2071. };
  2072. -#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
  2073. +#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
  2074. #define SYMBOL_CONST 0x0001 /* symbol is const */
  2075. #define SYMBOL_CHECK 0x0008 /* used during dependency checking */
  2076. @@ -107,9 +106,11 @@
  2077. #define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */
  2078. #define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */
  2079. +/* choice values need to be set before calculating this symbol value */
  2080. +#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000
  2081. +
  2082. #define SYMBOL_MAXLENGTH 256
  2083. -#define SYMBOL_HASHSIZE 257
  2084. -#define SYMBOL_HASHMASK 0xff
  2085. +#define SYMBOL_HASHSIZE 9973
  2086. /* A property represent the config options that can be associated
  2087. * with a config "symbol".
  2088. @@ -132,6 +133,7 @@
  2089. P_SELECT, /* select BAR */
  2090. P_RANGE, /* range 7..100 (for a symbol) */
  2091. P_ENV, /* value from environment variable */
  2092. + P_SYMBOL, /* where a symbol is defined */
  2093. };
  2094. struct property {
  2095. @@ -163,6 +165,7 @@
  2096. struct menu *list;
  2097. struct symbol *sym;
  2098. struct property *prompt;
  2099. + struct expr *visibility;
  2100. struct expr *dep;
  2101. unsigned int flags;
  2102. char *help;
  2103. @@ -174,7 +177,14 @@
  2104. #define MENU_CHANGED 0x0001
  2105. #define MENU_ROOT 0x0002
  2106. -#ifndef SWIG
  2107. +struct jump_key {
  2108. + struct list_head entries;
  2109. + size_t offset;
  2110. + struct menu *target;
  2111. + int index;
  2112. +};
  2113. +
  2114. +#define JUMP_NB 9
  2115. extern struct file *file_list;
  2116. extern struct file *current_file;
  2117. @@ -190,7 +200,7 @@
  2118. struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
  2119. struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
  2120. struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
  2121. -struct expr *expr_copy(struct expr *org);
  2122. +struct expr *expr_copy(const struct expr *org);
  2123. void expr_free(struct expr *e);
  2124. int expr_eq(struct expr *e1, struct expr *e2);
  2125. void expr_eliminate_eq(struct expr **ep1, struct expr **ep2);
  2126. @@ -205,6 +215,7 @@
  2127. struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);
  2128. void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);
  2129. struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);
  2130. +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2);
  2131. void expr_fprint(struct expr *e, FILE *out);
  2132. struct gstr; /* forward */
  2133. @@ -219,7 +230,6 @@
  2134. {
  2135. return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
  2136. }
  2137. -#endif
  2138. #ifdef __cplusplus
  2139. }
  2140. diff -Nur uClibc-0.9.33.2/extra/config/gconf.c uClibc-git/extra/config/gconf.c
  2141. --- uClibc-0.9.33.2/extra/config/gconf.c 2012-05-15 09:20:09.000000000 +0200
  2142. +++ uClibc-git/extra/config/gconf.c 2014-02-03 12:32:56.000000000 +0100
  2143. @@ -10,6 +10,7 @@
  2144. # include <config.h>
  2145. #endif
  2146. +#include <stdlib.h>
  2147. #include "lkc.h"
  2148. #include "images.c"
  2149. @@ -22,7 +23,6 @@
  2150. #include <string.h>
  2151. #include <unistd.h>
  2152. #include <time.h>
  2153. -#include <stdlib.h>
  2154. //#define DEBUG
  2155. @@ -30,13 +30,16 @@
  2156. SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW
  2157. };
  2158. +enum {
  2159. + OPT_NORMAL, OPT_ALL, OPT_PROMPT
  2160. +};
  2161. +
  2162. static gint view_mode = FULL_VIEW;
  2163. static gboolean show_name = TRUE;
  2164. static gboolean show_range = TRUE;
  2165. static gboolean show_value = TRUE;
  2166. -static gboolean show_all = FALSE;
  2167. -static gboolean show_debug = FALSE;
  2168. static gboolean resizeable = FALSE;
  2169. +static int opt_mode = OPT_NORMAL;
  2170. GtkWidget *main_wnd = NULL;
  2171. GtkWidget *tree1_w = NULL; // left frame
  2172. @@ -76,36 +79,7 @@
  2173. /* Helping/Debugging Functions */
  2174. -
  2175. -const char *dbg_print_stype(int val)
  2176. -{
  2177. - static char buf[256];
  2178. -
  2179. - bzero(buf, 256);
  2180. -
  2181. - if (val == S_UNKNOWN)
  2182. - strcpy(buf, "unknown");
  2183. - if (val == S_BOOLEAN)
  2184. - strcpy(buf, "boolean");
  2185. - if (val == S_TRISTATE)
  2186. - strcpy(buf, "tristate");
  2187. - if (val == S_INT)
  2188. - strcpy(buf, "int");
  2189. - if (val == S_HEX)
  2190. - strcpy(buf, "hex");
  2191. - if (val == S_STRING)
  2192. - strcpy(buf, "string");
  2193. - if (val == S_OTHER)
  2194. - strcpy(buf, "other");
  2195. -
  2196. -#ifdef DEBUG
  2197. - printf("%s", buf);
  2198. -#endif
  2199. -
  2200. - return buf;
  2201. -}
  2202. -
  2203. -const char *dbg_print_flags(int val)
  2204. +const char *dbg_sym_flags(int val)
  2205. {
  2206. static char buf[256];
  2207. @@ -131,40 +105,10 @@
  2208. strcat(buf, "auto/");
  2209. buf[strlen(buf) - 1] = '\0';
  2210. -#ifdef DEBUG
  2211. - printf("%s", buf);
  2212. -#endif
  2213. return buf;
  2214. }
  2215. -const char *dbg_print_ptype(int val)
  2216. -{
  2217. - static char buf[256];
  2218. -
  2219. - bzero(buf, 256);
  2220. -
  2221. - if (val == P_UNKNOWN)
  2222. - strcpy(buf, "unknown");
  2223. - if (val == P_PROMPT)
  2224. - strcpy(buf, "prompt");
  2225. - if (val == P_COMMENT)
  2226. - strcpy(buf, "comment");
  2227. - if (val == P_MENU)
  2228. - strcpy(buf, "menu");
  2229. - if (val == P_DEFAULT)
  2230. - strcpy(buf, "default");
  2231. - if (val == P_CHOICE)
  2232. - strcpy(buf, "choice");
  2233. -
  2234. -#ifdef DEBUG
  2235. - printf("%s", buf);
  2236. -#endif
  2237. -
  2238. - return buf;
  2239. -}
  2240. -
  2241. -
  2242. void replace_button_icon(GladeXML * xml, GdkDrawable * window,
  2243. GtkStyle * style, gchar * btn_name, gchar ** xpm)
  2244. {
  2245. @@ -189,7 +133,6 @@
  2246. GladeXML *xml;
  2247. GtkWidget *widget;
  2248. GtkTextBuffer *txtbuf;
  2249. - char title[256];
  2250. GtkStyle *style;
  2251. xml = glade_xml_new(glade_file, "window1", NULL);
  2252. @@ -266,9 +209,7 @@
  2253. /*"style", PANGO_STYLE_OBLIQUE, */
  2254. NULL);
  2255. - sprintf(title, _("uClibc v%s Configuration"),
  2256. - getenv("VERSION"));
  2257. - gtk_window_set_title(GTK_WINDOW(main_wnd), title);
  2258. + gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text);
  2259. gtk_widget_show(main_wnd);
  2260. }
  2261. @@ -312,7 +253,7 @@
  2262. gtk_tree_view_set_model(view, model1);
  2263. gtk_tree_view_set_headers_visible(view, TRUE);
  2264. - gtk_tree_view_set_rules_hint(view, FALSE);
  2265. + gtk_tree_view_set_rules_hint(view, TRUE);
  2266. column = gtk_tree_view_column_new();
  2267. gtk_tree_view_append_column(view, column);
  2268. @@ -344,8 +285,6 @@
  2269. static void renderer_edited(GtkCellRendererText * cell,
  2270. const gchar * path_string,
  2271. const gchar * new_text, gpointer user_data);
  2272. -static void renderer_toggled(GtkCellRendererToggle * cellrenderertoggle,
  2273. - gchar * arg1, gpointer user_data);
  2274. void init_right_tree(void)
  2275. {
  2276. @@ -357,7 +296,7 @@
  2277. gtk_tree_view_set_model(view, model2);
  2278. gtk_tree_view_set_headers_visible(view, TRUE);
  2279. - gtk_tree_view_set_rules_hint(view, FALSE);
  2280. + gtk_tree_view_set_rules_hint(view, TRUE);
  2281. column = gtk_tree_view_column_new();
  2282. gtk_tree_view_append_column(view, column);
  2283. @@ -379,8 +318,6 @@
  2284. "inconsistent", COL_BTNINC,
  2285. "visible", COL_BTNVIS,
  2286. "radio", COL_BTNRAD, NULL);
  2287. - /*g_signal_connect(G_OBJECT(renderer), "toggled",
  2288. - G_CALLBACK(renderer_toggled), NULL); */
  2289. renderer = gtk_cell_renderer_text_new();
  2290. gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
  2291. renderer, FALSE);
  2292. @@ -456,19 +393,9 @@
  2293. GtkTextBuffer *buffer;
  2294. GtkTextIter start, end;
  2295. const char *prompt = _(menu_get_prompt(menu));
  2296. - gchar *name;
  2297. - const char *help;
  2298. -
  2299. - help = menu_get_help(menu);
  2300. -
  2301. - /* Gettextize if the help text not empty */
  2302. - if ((help != 0) && (help[0] != 0))
  2303. - help = _(help);
  2304. + struct gstr help = str_new();
  2305. - if (menu->sym && menu->sym->name)
  2306. - name = g_strdup_printf(menu->sym->name);
  2307. - else
  2308. - name = g_strdup("");
  2309. + menu_get_ext_help(menu, &help);
  2310. buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
  2311. gtk_text_buffer_get_bounds(buffer, &start, &end);
  2312. @@ -478,14 +405,11 @@
  2313. gtk_text_buffer_get_end_iter(buffer, &end);
  2314. gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1,
  2315. NULL);
  2316. - gtk_text_buffer_insert_at_cursor(buffer, " ", 1);
  2317. - gtk_text_buffer_get_end_iter(buffer, &end);
  2318. - gtk_text_buffer_insert_with_tags(buffer, &end, name, -1, tag1,
  2319. - NULL);
  2320. gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
  2321. gtk_text_buffer_get_end_iter(buffer, &end);
  2322. - gtk_text_buffer_insert_with_tags(buffer, &end, help, -1, tag2,
  2323. + gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2,
  2324. NULL);
  2325. + str_free(&help);
  2326. }
  2327. @@ -710,20 +634,29 @@
  2328. void
  2329. -on_show_all_options1_activate(GtkMenuItem * menuitem, gpointer user_data)
  2330. +on_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data)
  2331. {
  2332. - show_all = GTK_CHECK_MENU_ITEM(menuitem)->active;
  2333. + opt_mode = OPT_NORMAL;
  2334. + gtk_tree_store_clear(tree2);
  2335. + display_tree(&rootmenu); /* instead of update_tree to speed-up */
  2336. +}
  2337. +
  2338. +void
  2339. +on_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data)
  2340. +{
  2341. + opt_mode = OPT_ALL;
  2342. gtk_tree_store_clear(tree2);
  2343. - display_tree(&rootmenu); // instead of update_tree to speed-up
  2344. + display_tree(&rootmenu); /* instead of update_tree to speed-up */
  2345. }
  2346. void
  2347. -on_show_debug_info1_activate(GtkMenuItem * menuitem, gpointer user_data)
  2348. +on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data)
  2349. {
  2350. - show_debug = GTK_CHECK_MENU_ITEM(menuitem)->active;
  2351. - update_tree(&rootmenu, NULL);
  2352. + opt_mode = OPT_PROMPT;
  2353. + gtk_tree_store_clear(tree2);
  2354. + display_tree(&rootmenu); /* instead of update_tree to speed-up */
  2355. }
  2356. @@ -732,7 +665,6 @@
  2357. GtkWidget *dialog;
  2358. const gchar *intro_text = _(
  2359. "Welcome to gkc, the GTK+ graphical configuration tool\n"
  2360. - "for uClibc.\n"
  2361. "For each option, a blank box indicates the feature is disabled, a\n"
  2362. "check indicates it is enabled, and a dot indicates that it is to\n"
  2363. "be compiled as a module. Clicking on the box will cycle through the three states.\n"
  2364. @@ -751,7 +683,7 @@
  2365. dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
  2366. GTK_DIALOG_DESTROY_WITH_PARENT,
  2367. GTK_MESSAGE_INFO,
  2368. - GTK_BUTTONS_CLOSE, intro_text);
  2369. + GTK_BUTTONS_CLOSE, "%s", intro_text);
  2370. g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
  2371. G_CALLBACK(gtk_widget_destroy),
  2372. GTK_OBJECT(dialog));
  2373. @@ -769,7 +701,7 @@
  2374. dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
  2375. GTK_DIALOG_DESTROY_WITH_PARENT,
  2376. GTK_MESSAGE_INFO,
  2377. - GTK_BUTTONS_CLOSE, about_text);
  2378. + GTK_BUTTONS_CLOSE, "%s", about_text);
  2379. g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
  2380. G_CALLBACK(gtk_widget_destroy),
  2381. GTK_OBJECT(dialog));
  2382. @@ -788,7 +720,7 @@
  2383. dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
  2384. GTK_DIALOG_DESTROY_WITH_PARENT,
  2385. GTK_MESSAGE_INFO,
  2386. - GTK_BUTTONS_CLOSE, license_text);
  2387. + GTK_BUTTONS_CLOSE, "%s", license_text);
  2388. g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
  2389. G_CALLBACK(gtk_widget_destroy),
  2390. GTK_OBJECT(dialog));
  2391. @@ -820,7 +752,6 @@
  2392. void on_single_clicked(GtkButton * button, gpointer user_data)
  2393. {
  2394. view_mode = SINGLE_VIEW;
  2395. - gtk_paned_set_position(GTK_PANED(hpaned), 0);
  2396. gtk_widget_hide(tree1_w);
  2397. current = &rootmenu;
  2398. display_tree_part();
  2399. @@ -846,7 +777,6 @@
  2400. void on_full_clicked(GtkButton * button, gpointer user_data)
  2401. {
  2402. view_mode = FULL_VIEW;
  2403. - gtk_paned_set_position(GTK_PANED(hpaned), 0);
  2404. gtk_widget_hide(tree1_w);
  2405. if (tree2)
  2406. gtk_tree_store_clear(tree2);
  2407. @@ -900,7 +830,7 @@
  2408. static void change_sym_value(struct menu *menu, gint col)
  2409. {
  2410. struct symbol *sym = menu->sym;
  2411. - tristate oldval, newval;
  2412. + tristate newval;
  2413. if (!sym)
  2414. return;
  2415. @@ -917,7 +847,6 @@
  2416. switch (sym_get_type(sym)) {
  2417. case S_BOOLEAN:
  2418. case S_TRISTATE:
  2419. - oldval = sym_get_tristate_value(sym);
  2420. if (!sym_tristate_within_range(sym, newval))
  2421. newval = yes;
  2422. sym_set_tristate_value(sym, newval);
  2423. @@ -954,35 +883,6 @@
  2424. display_tree_part(); //fixme: keep exp/coll
  2425. }
  2426. -static void renderer_toggled(GtkCellRendererToggle * cell,
  2427. - gchar * path_string, gpointer user_data)
  2428. -{
  2429. - GtkTreePath *path, *sel_path = NULL;
  2430. - GtkTreeIter iter, sel_iter;
  2431. - GtkTreeSelection *sel;
  2432. - struct menu *menu;
  2433. -
  2434. - path = gtk_tree_path_new_from_string(path_string);
  2435. - if (!gtk_tree_model_get_iter(model2, &iter, path))
  2436. - return;
  2437. -
  2438. - sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree2_w));
  2439. - if (gtk_tree_selection_get_selected(sel, NULL, &sel_iter))
  2440. - sel_path = gtk_tree_model_get_path(model2, &sel_iter);
  2441. - if (!sel_path)
  2442. - goto out1;
  2443. - if (gtk_tree_path_compare(path, sel_path))
  2444. - goto out2;
  2445. -
  2446. - gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
  2447. - toggle_sym_value(menu);
  2448. -
  2449. - out2:
  2450. - gtk_tree_path_free(sel_path);
  2451. - out1:
  2452. - gtk_tree_path_free(path);
  2453. -}
  2454. -
  2455. static gint column2index(GtkTreeViewColumn * column)
  2456. {
  2457. gint i;
  2458. @@ -1174,9 +1074,12 @@
  2459. row[COL_OPTION] =
  2460. g_strdup_printf("%s %s", _(menu_get_prompt(menu)),
  2461. - sym && sym_has_value(sym) ? "(NEW)" : "");
  2462. + sym && !sym_has_value(sym) ? "(NEW)" : "");
  2463. - if (show_all && !menu_is_visible(menu))
  2464. + if (opt_mode == OPT_ALL && !menu_is_visible(menu))
  2465. + row[COL_COLOR] = g_strdup("DarkGray");
  2466. + else if (opt_mode == OPT_PROMPT &&
  2467. + menu_has_prompt(menu) && !menu_is_visible(menu))
  2468. row[COL_COLOR] = g_strdup("DarkGray");
  2469. else
  2470. row[COL_COLOR] = g_strdup("Black");
  2471. @@ -1235,6 +1138,7 @@
  2472. row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
  2473. if (sym_is_choice(sym))
  2474. break;
  2475. + /* fall through */
  2476. case S_TRISTATE:
  2477. val = sym_get_tristate_value(sym);
  2478. switch (val) {
  2479. @@ -1373,7 +1277,6 @@
  2480. gboolean valid;
  2481. GtkTreeIter *sibling;
  2482. struct symbol *sym;
  2483. - struct property *prop;
  2484. struct menu *menu1, *menu2;
  2485. if (src == &rootmenu)
  2486. @@ -1382,7 +1285,6 @@
  2487. valid = gtk_tree_model_iter_children(model2, child2, dst);
  2488. for (child1 = src->list; child1; child1 = child1->next) {
  2489. - prop = child1->prompt;
  2490. sym = child1->sym;
  2491. reparse:
  2492. @@ -1399,16 +1301,20 @@
  2493. menu2 ? menu_get_prompt(menu2) : "nil");
  2494. #endif
  2495. - if (!menu_is_visible(child1) && !show_all) { // remove node
  2496. + if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) ||
  2497. + (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) ||
  2498. + (opt_mode == OPT_ALL && !menu_get_prompt(child1))) {
  2499. +
  2500. + /* remove node */
  2501. if (gtktree_iter_find_node(dst, menu1) != NULL) {
  2502. memcpy(&tmp, child2, sizeof(GtkTreeIter));
  2503. valid = gtk_tree_model_iter_next(model2,
  2504. child2);
  2505. gtk_tree_store_remove(tree2, &tmp);
  2506. if (!valid)
  2507. - return; // next parent
  2508. + return; /* next parent */
  2509. else
  2510. - goto reparse; // next child
  2511. + goto reparse; /* next child */
  2512. } else
  2513. continue;
  2514. }
  2515. @@ -1477,17 +1383,19 @@
  2516. && (tree == tree2))
  2517. continue;
  2518. - if (menu_is_visible(child) || show_all)
  2519. + if ((opt_mode == OPT_NORMAL && menu_is_visible(child)) ||
  2520. + (opt_mode == OPT_PROMPT && menu_has_prompt(child)) ||
  2521. + (opt_mode == OPT_ALL && menu_get_prompt(child)))
  2522. place_node(child, fill_row(child));
  2523. #ifdef DEBUG
  2524. printf("%*c%s: ", indent, ' ', menu_get_prompt(child));
  2525. printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : "");
  2526. - dbg_print_ptype(ptype);
  2527. + printf("%s", prop_get_type_name(ptype));
  2528. printf(" | ");
  2529. if (sym) {
  2530. - dbg_print_stype(sym->type);
  2531. + printf("%s", sym_type_name(sym->type));
  2532. printf(" | ");
  2533. - dbg_print_flags(sym->flags);
  2534. + printf("%s", dbg_sym_flags(sym->flags));
  2535. printf("\n");
  2536. } else
  2537. printf("\n");
  2538. @@ -1499,6 +1407,12 @@
  2539. if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
  2540. || (view_mode == FULL_VIEW)
  2541. || (view_mode == SPLIT_VIEW))*/
  2542. +
  2543. + /* Change paned position if the view is not in 'split mode' */
  2544. + if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) {
  2545. + gtk_paned_set_position(GTK_PANED(hpaned), 0);
  2546. + }
  2547. +
  2548. if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))
  2549. || (view_mode == FULL_VIEW)
  2550. || (view_mode == SPLIT_VIEW)) {
  2551. @@ -1557,10 +1471,6 @@
  2552. char *env;
  2553. gchar *glade_file;
  2554. -#ifndef LKC_DIRECT_LINK
  2555. - kconfig_load();
  2556. -#endif
  2557. -
  2558. bindtextdomain(PACKAGE, LOCALEDIR);
  2559. bind_textdomain_codeset(PACKAGE, "UTF-8");
  2560. textdomain(PACKAGE);
  2561. @@ -1582,12 +1492,6 @@
  2562. else
  2563. glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL);
  2564. - /* Load the interface and connect signals */
  2565. - init_main_window(glade_file);
  2566. - init_tree_model();
  2567. - init_left_tree();
  2568. - init_right_tree();
  2569. -
  2570. /* Conf stuffs */
  2571. if (ac > 1 && av[1][0] == '-') {
  2572. switch (av[1][1]) {
  2573. @@ -1607,6 +1511,12 @@
  2574. fixup_rootmenu(&rootmenu);
  2575. conf_read(NULL);
  2576. + /* Load the interface and connect signals */
  2577. + init_main_window(glade_file);
  2578. + init_tree_model();
  2579. + init_left_tree();
  2580. + init_right_tree();
  2581. +
  2582. switch (view_mode) {
  2583. case SINGLE_VIEW:
  2584. display_tree_part();
  2585. diff -Nur uClibc-0.9.33.2/extra/config/gconf.glade uClibc-git/extra/config/gconf.glade
  2586. --- uClibc-0.9.33.2/extra/config/gconf.glade 2012-05-15 09:20:09.000000000 +0200
  2587. +++ uClibc-git/extra/config/gconf.glade 2014-02-03 12:32:56.000000000 +0100
  2588. @@ -1,11 +1,10 @@
  2589. <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
  2590. -<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
  2591. <glade-interface>
  2592. <widget class="GtkWindow" id="window1">
  2593. <property name="visible">True</property>
  2594. - <property name="title" translatable="yes">Gtk uClibc Configurator</property>
  2595. + <property name="title" translatable="yes">Gtk uCLibc Configurator</property>
  2596. <property name="type">GTK_WINDOW_TOPLEVEL</property>
  2597. <property name="window_position">GTK_WIN_POS_NONE</property>
  2598. <property name="modal">False</property>
  2599. @@ -190,26 +189,40 @@
  2600. </child>
  2601. <child>
  2602. - <widget class="GtkCheckMenuItem" id="show_all_options1">
  2603. + <widget class="GtkRadioMenuItem" id="set_option_mode1">
  2604. + <property name="visible">True</property>
  2605. + <property name="tooltip" translatable="yes">Show normal options</property>
  2606. + <property name="label" translatable="yes">Show normal options</property>
  2607. + <property name="use_underline">True</property>
  2608. + <property name="active">True</property>
  2609. + <signal name="activate" handler="on_set_option_mode1_activate"/>
  2610. + </widget>
  2611. + </child>
  2612. +
  2613. + <child>
  2614. + <widget class="GtkRadioMenuItem" id="set_option_mode2">
  2615. <property name="visible">True</property>
  2616. <property name="tooltip" translatable="yes">Show all options</property>
  2617. <property name="label" translatable="yes">Show all _options</property>
  2618. <property name="use_underline">True</property>
  2619. <property name="active">False</property>
  2620. - <signal name="activate" handler="on_show_all_options1_activate"/>
  2621. + <property name="group">set_option_mode1</property>
  2622. + <signal name="activate" handler="on_set_option_mode2_activate"/>
  2623. </widget>
  2624. </child>
  2625. <child>
  2626. - <widget class="GtkCheckMenuItem" id="show_debug_info1">
  2627. + <widget class="GtkRadioMenuItem" id="set_option_mode3">
  2628. <property name="visible">True</property>
  2629. - <property name="tooltip" translatable="yes">Show masked options</property>
  2630. - <property name="label" translatable="yes">Show _debug info</property>
  2631. + <property name="tooltip" translatable="yes">Show all options with prompts</property>
  2632. + <property name="label" translatable="yes">Show all prompt options</property>
  2633. <property name="use_underline">True</property>
  2634. <property name="active">False</property>
  2635. - <signal name="activate" handler="on_show_debug_info1_activate"/>
  2636. + <property name="group">set_option_mode1</property>
  2637. + <signal name="activate" handler="on_set_option_mode3_activate"/>
  2638. </widget>
  2639. </child>
  2640. +
  2641. </widget>
  2642. </child>
  2643. </widget>
  2644. @@ -547,7 +560,7 @@
  2645. <property name="headers_visible">True</property>
  2646. <property name="rules_hint">False</property>
  2647. <property name="reorderable">False</property>
  2648. - <property name="enable_search">True</property>
  2649. + <property name="enable_search">False</property>
  2650. <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/>
  2651. <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/>
  2652. <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/>
  2653. @@ -582,7 +595,7 @@
  2654. <property name="headers_visible">True</property>
  2655. <property name="rules_hint">False</property>
  2656. <property name="reorderable">False</property>
  2657. - <property name="enable_search">True</property>
  2658. + <property name="enable_search">False</property>
  2659. <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/>
  2660. <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/>
  2661. <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/>
  2662. diff -Nur uClibc-0.9.33.2/extra/config/.gitignore uClibc-git/extra/config/.gitignore
  2663. --- uClibc-0.9.33.2/extra/config/.gitignore 2012-05-15 09:20:09.000000000 +0200
  2664. +++ uClibc-git/extra/config/.gitignore 2014-02-03 12:32:56.000000000 +0100
  2665. @@ -2,18 +2,21 @@
  2666. # Generated files
  2667. #
  2668. config*
  2669. -lex.*.c
  2670. +*.lex.c
  2671. *.tab.c
  2672. *.tab.h
  2673. zconf.hash.c
  2674. *.moc
  2675. -lkc_defs.h
  2676. +gconf.glade.h
  2677. +*.pot
  2678. +*.mo
  2679. #
  2680. # configuration programs
  2681. #
  2682. conf
  2683. mconf
  2684. +nconf
  2685. qconf
  2686. gconf
  2687. kxgettext
  2688. diff -Nur uClibc-0.9.33.2/extra/config/kconfig-language.txt uClibc-git/extra/config/kconfig-language.txt
  2689. --- uClibc-0.9.33.2/extra/config/kconfig-language.txt 2012-05-15 09:20:09.000000000 +0200
  2690. +++ uClibc-git/extra/config/kconfig-language.txt 2014-02-03 12:32:56.000000000 +0100
  2691. @@ -112,7 +112,13 @@
  2692. (no prompts anywhere) and for symbols with no dependencies.
  2693. That will limit the usefulness but on the other hand avoid
  2694. the illegal configurations all over.
  2695. - kconfig should one day warn about such things.
  2696. +
  2697. +- limiting menu display: "visible if" <expr>
  2698. + This attribute is only applicable to menu blocks, if the condition is
  2699. + false, the menu block is not displayed to the user (the symbols
  2700. + contained there can still be selected by other symbols, though). It is
  2701. + similar to a conditional "prompt" attribute for individual menu
  2702. + entries. Default value of "visible" is true.
  2703. - numerical ranges: "range" <symbol> <symbol> ["if" <expr>]
  2704. This allows to limit the range of possible input values for int
  2705. @@ -181,7 +187,7 @@
  2706. (7) Returns the result of max(/expr/, /expr/).
  2707. An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
  2708. -respectively for calculations). A menu entry becomes visible when it's
  2709. +respectively for calculations). A menu entry becomes visible when its
  2710. expression evaluates to 'm' or 'y'.
  2711. There are two types of symbols: constant and non-constant symbols.
  2712. @@ -268,7 +274,7 @@
  2713. choices:
  2714. - "choice"
  2715. + "choice" [symbol]
  2716. <choice options>
  2717. <choice block>
  2718. "endchoice"
  2719. @@ -282,6 +288,10 @@
  2720. can be compiled as modules.
  2721. A choice accepts another option "optional", which allows to set the
  2722. choice to 'n' and no entry needs to be selected.
  2723. +If no [symbol] is associated with a choice, then you can not have multiple
  2724. +definitions of that choice. If a [symbol] is associated to the choice,
  2725. +then you may define the same choice (ie. with the same entries) in another
  2726. +place.
  2727. comment:
  2728. @@ -300,7 +310,8 @@
  2729. "endmenu"
  2730. This defines a menu block, see "Menu structure" above for more
  2731. -information. The only possible options are dependencies.
  2732. +information. The only possible options are dependencies and "visible"
  2733. +attributes.
  2734. if:
  2735. @@ -322,7 +333,8 @@
  2736. "mainmenu" <prompt>
  2737. This sets the config program's title bar if the config program chooses
  2738. -to use it.
  2739. +to use it. It should be placed at the top of the configuration, before any
  2740. +other statement.
  2741. Kconfig hints
  2742. @@ -376,4 +388,3 @@
  2743. depends on BAR && m
  2744. limits FOO to module (=m) or disabled (=n).
  2745. -
  2746. diff -Nur uClibc-0.9.33.2/extra/config/kconfig_load.c uClibc-git/extra/config/kconfig_load.c
  2747. --- uClibc-0.9.33.2/extra/config/kconfig_load.c 2012-05-15 09:20:09.000000000 +0200
  2748. +++ uClibc-git/extra/config/kconfig_load.c 1970-01-01 01:00:00.000000000 +0100
  2749. @@ -1,35 +0,0 @@
  2750. -#include <dlfcn.h>
  2751. -#include <stdio.h>
  2752. -#include <stdlib.h>
  2753. -
  2754. -#include "lkc.h"
  2755. -
  2756. -#define P(name,type,arg) type (*name ## _p) arg
  2757. -#include "lkc_proto.h"
  2758. -#undef P
  2759. -
  2760. -void kconfig_load(void)
  2761. -{
  2762. - void *handle;
  2763. - char *error;
  2764. -
  2765. - handle = dlopen("./libkconfig.so", RTLD_LAZY);
  2766. - if (!handle) {
  2767. - handle = dlopen("./scripts/kconfig/libkconfig.so", RTLD_LAZY);
  2768. - if (!handle) {
  2769. - fprintf(stderr, "%s\n", dlerror());
  2770. - exit(1);
  2771. - }
  2772. - }
  2773. -
  2774. -#define P(name,type,arg) \
  2775. -{ \
  2776. - name ## _p = dlsym(handle, #name); \
  2777. - if ((error = dlerror())) { \
  2778. - fprintf(stderr, "%s\n", error); \
  2779. - exit(1); \
  2780. - } \
  2781. -}
  2782. -#include "lkc_proto.h"
  2783. -#undef P
  2784. -}
  2785. Binary files uClibc-0.9.33.2/extra/config/kconfig-to-uclibc.patch.gz and uClibc-git/extra/config/kconfig-to-uclibc.patch.gz differ
  2786. Binary files uClibc-0.9.33.2/extra/config/kconfig-to-uclibc.tar.gz and uClibc-git/extra/config/kconfig-to-uclibc.tar.gz differ
  2787. diff -Nur uClibc-0.9.33.2/extra/config/kxgettext.c uClibc-git/extra/config/kxgettext.c
  2788. --- uClibc-0.9.33.2/extra/config/kxgettext.c 2012-05-15 09:20:09.000000000 +0200
  2789. +++ uClibc-git/extra/config/kxgettext.c 2014-02-03 12:32:56.000000000 +0100
  2790. @@ -7,7 +7,6 @@
  2791. #include <stdlib.h>
  2792. #include <string.h>
  2793. -#define LKC_DIRECT_LINK
  2794. #include "lkc.h"
  2795. static char *escape(const char* text, char *bf, int len)
  2796. @@ -43,6 +42,10 @@
  2797. ++text;
  2798. goto next;
  2799. }
  2800. + else if (*text == '\\') {
  2801. + *bfp++ = '\\';
  2802. + len--;
  2803. + }
  2804. *bfp++ = *text++;
  2805. next:
  2806. --len;
  2807. @@ -59,11 +62,11 @@
  2808. struct file_line {
  2809. struct file_line *next;
  2810. - char* file;
  2811. - int lineno;
  2812. + const char *file;
  2813. + int lineno;
  2814. };
  2815. -static struct file_line *file_line__new(char *file, int lineno)
  2816. +static struct file_line *file_line__new(const char *file, int lineno)
  2817. {
  2818. struct file_line *self = malloc(sizeof(*self));
  2819. @@ -86,7 +89,8 @@
  2820. static struct message *message__list;
  2821. -static struct message *message__new(const char *msg, char *option, char *file, int lineno)
  2822. +static struct message *message__new(const char *msg, char *option,
  2823. + const char *file, int lineno)
  2824. {
  2825. struct message *self = malloc(sizeof(*self));
  2826. @@ -126,7 +130,8 @@
  2827. return m;
  2828. }
  2829. -static int message__add_file_line(struct message *self, char *file, int lineno)
  2830. +static int message__add_file_line(struct message *self, const char *file,
  2831. + int lineno)
  2832. {
  2833. int rc = -1;
  2834. struct file_line *fl = file_line__new(file, lineno);
  2835. @@ -141,7 +146,8 @@
  2836. return rc;
  2837. }
  2838. -static int message__add(const char *msg, char *option, char *file, int lineno)
  2839. +static int message__add(const char *msg, char *option, const char *file,
  2840. + int lineno)
  2841. {
  2842. int rc = 0;
  2843. char bf[16384];
  2844. @@ -162,7 +168,7 @@
  2845. return rc;
  2846. }
  2847. -void menu_build_message_list(struct menu *menu)
  2848. +static void menu_build_message_list(struct menu *menu)
  2849. {
  2850. struct menu *child;
  2851. @@ -207,7 +213,7 @@
  2852. "msgstr \"\"\n", self->msg);
  2853. }
  2854. -void menu__xgettext(void)
  2855. +static void menu__xgettext(void)
  2856. {
  2857. struct message *m = message__list;
  2858. diff -Nur uClibc-0.9.33.2/extra/config/lex.zconf.c_shipped uClibc-git/extra/config/lex.zconf.c_shipped
  2859. --- uClibc-0.9.33.2/extra/config/lex.zconf.c_shipped 2012-05-15 09:20:09.000000000 +0200
  2860. +++ uClibc-git/extra/config/lex.zconf.c_shipped 1970-01-01 01:00:00.000000000 +0100
  2861. @@ -1,2416 +0,0 @@
  2862. -
  2863. -#line 3 "scripts/kconfig/lex.zconf.c"
  2864. -
  2865. -#define YY_INT_ALIGNED short int
  2866. -
  2867. -/* A lexical scanner generated by flex */
  2868. -
  2869. -#define yy_create_buffer zconf_create_buffer
  2870. -#define yy_delete_buffer zconf_delete_buffer
  2871. -#define yy_flex_debug zconf_flex_debug
  2872. -#define yy_init_buffer zconf_init_buffer
  2873. -#define yy_flush_buffer zconf_flush_buffer
  2874. -#define yy_load_buffer_state zconf_load_buffer_state
  2875. -#define yy_switch_to_buffer zconf_switch_to_buffer
  2876. -#define yyin zconfin
  2877. -#define yyleng zconfleng
  2878. -#define yylex zconflex
  2879. -#define yylineno zconflineno
  2880. -#define yyout zconfout
  2881. -#define yyrestart zconfrestart
  2882. -#define yytext zconftext
  2883. -#define yywrap zconfwrap
  2884. -#define yyalloc zconfalloc
  2885. -#define yyrealloc zconfrealloc
  2886. -#define yyfree zconffree
  2887. -
  2888. -#define FLEX_SCANNER
  2889. -#define YY_FLEX_MAJOR_VERSION 2
  2890. -#define YY_FLEX_MINOR_VERSION 5
  2891. -#define YY_FLEX_SUBMINOR_VERSION 35
  2892. -#if YY_FLEX_SUBMINOR_VERSION > 0
  2893. -#define FLEX_BETA
  2894. -#endif
  2895. -
  2896. -/* First, we deal with platform-specific or compiler-specific issues. */
  2897. -
  2898. -/* begin standard C headers. */
  2899. -#include <stdio.h>
  2900. -#include <string.h>
  2901. -#include <errno.h>
  2902. -#include <stdlib.h>
  2903. -
  2904. -/* end standard C headers. */
  2905. -
  2906. -/* flex integer type definitions */
  2907. -
  2908. -#ifndef FLEXINT_H
  2909. -#define FLEXINT_H
  2910. -
  2911. -/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
  2912. -
  2913. -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
  2914. -
  2915. -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  2916. - * if you want the limit (max/min) macros for int types.
  2917. - */
  2918. -#ifndef __STDC_LIMIT_MACROS
  2919. -#define __STDC_LIMIT_MACROS 1
  2920. -#endif
  2921. -
  2922. -#include <inttypes.h>
  2923. -typedef int8_t flex_int8_t;
  2924. -typedef uint8_t flex_uint8_t;
  2925. -typedef int16_t flex_int16_t;
  2926. -typedef uint16_t flex_uint16_t;
  2927. -typedef int32_t flex_int32_t;
  2928. -typedef uint32_t flex_uint32_t;
  2929. -#else
  2930. -typedef signed char flex_int8_t;
  2931. -typedef short int flex_int16_t;
  2932. -typedef int flex_int32_t;
  2933. -typedef unsigned char flex_uint8_t;
  2934. -typedef unsigned short int flex_uint16_t;
  2935. -typedef unsigned int flex_uint32_t;
  2936. -
  2937. -/* Limits of integral types. */
  2938. -#ifndef INT8_MIN
  2939. -#define INT8_MIN (-128)
  2940. -#endif
  2941. -#ifndef INT16_MIN
  2942. -#define INT16_MIN (-32767-1)
  2943. -#endif
  2944. -#ifndef INT32_MIN
  2945. -#define INT32_MIN (-2147483647-1)
  2946. -#endif
  2947. -#ifndef INT8_MAX
  2948. -#define INT8_MAX (127)
  2949. -#endif
  2950. -#ifndef INT16_MAX
  2951. -#define INT16_MAX (32767)
  2952. -#endif
  2953. -#ifndef INT32_MAX
  2954. -#define INT32_MAX (2147483647)
  2955. -#endif
  2956. -#ifndef UINT8_MAX
  2957. -#define UINT8_MAX (255U)
  2958. -#endif
  2959. -#ifndef UINT16_MAX
  2960. -#define UINT16_MAX (65535U)
  2961. -#endif
  2962. -#ifndef UINT32_MAX
  2963. -#define UINT32_MAX (4294967295U)
  2964. -#endif
  2965. -
  2966. -#endif /* ! C99 */
  2967. -
  2968. -#endif /* ! FLEXINT_H */
  2969. -
  2970. -#ifdef __cplusplus
  2971. -
  2972. -/* The "const" storage-class-modifier is valid. */
  2973. -#define YY_USE_CONST
  2974. -
  2975. -#else /* ! __cplusplus */
  2976. -
  2977. -/* C99 requires __STDC__ to be defined as 1. */
  2978. -#if defined (__STDC__)
  2979. -
  2980. -#define YY_USE_CONST
  2981. -
  2982. -#endif /* defined (__STDC__) */
  2983. -#endif /* ! __cplusplus */
  2984. -
  2985. -#ifdef YY_USE_CONST
  2986. -#define yyconst const
  2987. -#else
  2988. -#define yyconst
  2989. -#endif
  2990. -
  2991. -/* Returned upon end-of-file. */
  2992. -#define YY_NULL 0
  2993. -
  2994. -/* Promotes a possibly negative, possibly signed char to an unsigned
  2995. - * integer for use as an array index. If the signed char is negative,
  2996. - * we want to instead treat it as an 8-bit unsigned char, hence the
  2997. - * double cast.
  2998. - */
  2999. -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  3000. -
  3001. -/* Enter a start condition. This macro really ought to take a parameter,
  3002. - * but we do it the disgusting crufty way forced on us by the ()-less
  3003. - * definition of BEGIN.
  3004. - */
  3005. -#define BEGIN (yy_start) = 1 + 2 *
  3006. -
  3007. -/* Translate the current start state into a value that can be later handed
  3008. - * to BEGIN to return to the state. The YYSTATE alias is for lex
  3009. - * compatibility.
  3010. - */
  3011. -#define YY_START (((yy_start) - 1) / 2)
  3012. -#define YYSTATE YY_START
  3013. -
  3014. -/* Action number for EOF rule of a given start state. */
  3015. -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  3016. -
  3017. -/* Special action meaning "start processing a new file". */
  3018. -#define YY_NEW_FILE zconfrestart(zconfin )
  3019. -
  3020. -#define YY_END_OF_BUFFER_CHAR 0
  3021. -
  3022. -/* Size of default input buffer. */
  3023. -#ifndef YY_BUF_SIZE
  3024. -#define YY_BUF_SIZE 16384
  3025. -#endif
  3026. -
  3027. -/* The state buf must be large enough to hold one state per character in the main buffer.
  3028. - */
  3029. -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
  3030. -
  3031. -#ifndef YY_TYPEDEF_YY_BUFFER_STATE
  3032. -#define YY_TYPEDEF_YY_BUFFER_STATE
  3033. -typedef struct yy_buffer_state *YY_BUFFER_STATE;
  3034. -#endif
  3035. -
  3036. -extern int zconfleng;
  3037. -
  3038. -extern FILE *zconfin, *zconfout;
  3039. -
  3040. -#define EOB_ACT_CONTINUE_SCAN 0
  3041. -#define EOB_ACT_END_OF_FILE 1
  3042. -#define EOB_ACT_LAST_MATCH 2
  3043. -
  3044. - #define YY_LESS_LINENO(n)
  3045. -
  3046. -/* Return all but the first "n" matched characters back to the input stream. */
  3047. -#define yyless(n) \
  3048. - do \
  3049. - { \
  3050. - /* Undo effects of setting up zconftext. */ \
  3051. - int yyless_macro_arg = (n); \
  3052. - YY_LESS_LINENO(yyless_macro_arg);\
  3053. - *yy_cp = (yy_hold_char); \
  3054. - YY_RESTORE_YY_MORE_OFFSET \
  3055. - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
  3056. - YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
  3057. - } \
  3058. - while ( 0 )
  3059. -
  3060. -#define unput(c) yyunput( c, (yytext_ptr) )
  3061. -
  3062. -#ifndef YY_TYPEDEF_YY_SIZE_T
  3063. -#define YY_TYPEDEF_YY_SIZE_T
  3064. -typedef size_t yy_size_t;
  3065. -#endif
  3066. -
  3067. -#ifndef YY_STRUCT_YY_BUFFER_STATE
  3068. -#define YY_STRUCT_YY_BUFFER_STATE
  3069. -struct yy_buffer_state
  3070. - {
  3071. - FILE *yy_input_file;
  3072. -
  3073. - char *yy_ch_buf; /* input buffer */
  3074. - char *yy_buf_pos; /* current position in input buffer */
  3075. -
  3076. - /* Size of input buffer in bytes, not including room for EOB
  3077. - * characters.
  3078. - */
  3079. - yy_size_t yy_buf_size;
  3080. -
  3081. - /* Number of characters read into yy_ch_buf, not including EOB
  3082. - * characters.
  3083. - */
  3084. - int yy_n_chars;
  3085. -
  3086. - /* Whether we "own" the buffer - i.e., we know we created it,
  3087. - * and can realloc() it to grow it, and should free() it to
  3088. - * delete it.
  3089. - */
  3090. - int yy_is_our_buffer;
  3091. -
  3092. - /* Whether this is an "interactive" input source; if so, and
  3093. - * if we're using stdio for input, then we want to use getc()
  3094. - * instead of fread(), to make sure we stop fetching input after
  3095. - * each newline.
  3096. - */
  3097. - int yy_is_interactive;
  3098. -
  3099. - /* Whether we're considered to be at the beginning of a line.
  3100. - * If so, '^' rules will be active on the next match, otherwise
  3101. - * not.
  3102. - */
  3103. - int yy_at_bol;
  3104. -
  3105. - int yy_bs_lineno; /**< The line count. */
  3106. - int yy_bs_column; /**< The column count. */
  3107. -
  3108. - /* Whether to try to fill the input buffer when we reach the
  3109. - * end of it.
  3110. - */
  3111. - int yy_fill_buffer;
  3112. -
  3113. - int yy_buffer_status;
  3114. -
  3115. -#define YY_BUFFER_NEW 0
  3116. -#define YY_BUFFER_NORMAL 1
  3117. - /* When an EOF's been seen but there's still some text to process
  3118. - * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  3119. - * shouldn't try reading from the input source any more. We might
  3120. - * still have a bunch of tokens to match, though, because of
  3121. - * possible backing-up.
  3122. - *
  3123. - * When we actually see the EOF, we change the status to "new"
  3124. - * (via zconfrestart()), so that the user can continue scanning by
  3125. - * just pointing zconfin at a new input file.
  3126. - */
  3127. -#define YY_BUFFER_EOF_PENDING 2
  3128. -
  3129. - };
  3130. -#endif /* !YY_STRUCT_YY_BUFFER_STATE */
  3131. -
  3132. -/* Stack of input buffers. */
  3133. -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
  3134. -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
  3135. -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
  3136. -
  3137. -/* We provide macros for accessing buffer states in case in the
  3138. - * future we want to put the buffer states in a more general
  3139. - * "scanner state".
  3140. - *
  3141. - * Returns the top of the stack, or NULL.
  3142. - */
  3143. -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
  3144. - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
  3145. - : NULL)
  3146. -
  3147. -/* Same as previous macro, but useful when we know that the buffer stack is not
  3148. - * NULL or when we need an lvalue. For internal use only.
  3149. - */
  3150. -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
  3151. -
  3152. -/* yy_hold_char holds the character lost when zconftext is formed. */
  3153. -static char yy_hold_char;
  3154. -static int yy_n_chars; /* number of characters read into yy_ch_buf */
  3155. -int zconfleng;
  3156. -
  3157. -/* Points to current character in buffer. */
  3158. -static char *yy_c_buf_p = (char *) 0;
  3159. -static int yy_init = 0; /* whether we need to initialize */
  3160. -static int yy_start = 0; /* start state number */
  3161. -
  3162. -/* Flag which is used to allow zconfwrap()'s to do buffer switches
  3163. - * instead of setting up a fresh zconfin. A bit of a hack ...
  3164. - */
  3165. -static int yy_did_buffer_switch_on_eof;
  3166. -
  3167. -void zconfrestart (FILE *input_file );
  3168. -void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
  3169. -YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
  3170. -void zconf_delete_buffer (YY_BUFFER_STATE b );
  3171. -void zconf_flush_buffer (YY_BUFFER_STATE b );
  3172. -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
  3173. -void zconfpop_buffer_state (void );
  3174. -
  3175. -static void zconfensure_buffer_stack (void );
  3176. -static void zconf_load_buffer_state (void );
  3177. -static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
  3178. -
  3179. -#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
  3180. -
  3181. -YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
  3182. -YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
  3183. -YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
  3184. -
  3185. -void *zconfalloc (yy_size_t );
  3186. -void *zconfrealloc (void *,yy_size_t );
  3187. -void zconffree (void * );
  3188. -
  3189. -#define yy_new_buffer zconf_create_buffer
  3190. -
  3191. -#define yy_set_interactive(is_interactive) \
  3192. - { \
  3193. - if ( ! YY_CURRENT_BUFFER ){ \
  3194. - zconfensure_buffer_stack (); \
  3195. - YY_CURRENT_BUFFER_LVALUE = \
  3196. - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
  3197. - } \
  3198. - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
  3199. - }
  3200. -
  3201. -#define yy_set_bol(at_bol) \
  3202. - { \
  3203. - if ( ! YY_CURRENT_BUFFER ){\
  3204. - zconfensure_buffer_stack (); \
  3205. - YY_CURRENT_BUFFER_LVALUE = \
  3206. - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
  3207. - } \
  3208. - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
  3209. - }
  3210. -
  3211. -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
  3212. -
  3213. -/* Begin user sect3 */
  3214. -
  3215. -#define zconfwrap(n) 1
  3216. -#define YY_SKIP_YYWRAP
  3217. -
  3218. -typedef unsigned char YY_CHAR;
  3219. -
  3220. -FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
  3221. -
  3222. -typedef int yy_state_type;
  3223. -
  3224. -extern int zconflineno;
  3225. -
  3226. -int zconflineno = 1;
  3227. -
  3228. -extern char *zconftext;
  3229. -#define yytext_ptr zconftext
  3230. -static yyconst flex_int16_t yy_nxt[][17] =
  3231. - {
  3232. - {
  3233. - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3234. - 0, 0, 0, 0, 0, 0, 0
  3235. - },
  3236. -
  3237. - {
  3238. - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
  3239. - 12, 12, 12, 12, 12, 12, 12
  3240. - },
  3241. -
  3242. - {
  3243. - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
  3244. - 12, 12, 12, 12, 12, 12, 12
  3245. - },
  3246. -
  3247. - {
  3248. - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
  3249. - 16, 16, 16, 18, 16, 16, 16
  3250. - },
  3251. -
  3252. - {
  3253. - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
  3254. - 16, 16, 16, 18, 16, 16, 16
  3255. -
  3256. - },
  3257. -
  3258. - {
  3259. - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
  3260. - 19, 19, 19, 19, 19, 19, 19
  3261. - },
  3262. -
  3263. - {
  3264. - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
  3265. - 19, 19, 19, 19, 19, 19, 19
  3266. - },
  3267. -
  3268. - {
  3269. - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
  3270. - 22, 22, 22, 22, 22, 25, 22
  3271. - },
  3272. -
  3273. - {
  3274. - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
  3275. - 22, 22, 22, 22, 22, 25, 22
  3276. - },
  3277. -
  3278. - {
  3279. - 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
  3280. - 33, 34, 35, 35, 36, 37, 38
  3281. -
  3282. - },
  3283. -
  3284. - {
  3285. - 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
  3286. - 33, 34, 35, 35, 36, 37, 38
  3287. - },
  3288. -
  3289. - {
  3290. - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
  3291. - -11, -11, -11, -11, -11, -11, -11
  3292. - },
  3293. -
  3294. - {
  3295. - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12,
  3296. - -12, -12, -12, -12, -12, -12, -12
  3297. - },
  3298. -
  3299. - {
  3300. - 11, -13, 39, 40, -13, -13, 41, -13, -13, -13,
  3301. - -13, -13, -13, -13, -13, -13, -13
  3302. - },
  3303. -
  3304. - {
  3305. - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
  3306. - -14, -14, -14, -14, -14, -14, -14
  3307. -
  3308. - },
  3309. -
  3310. - {
  3311. - 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
  3312. - 42, 42, 42, 42, 42, 42, 42
  3313. - },
  3314. -
  3315. - {
  3316. - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
  3317. - -16, -16, -16, -16, -16, -16, -16
  3318. - },
  3319. -
  3320. - {
  3321. - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17,
  3322. - -17, -17, -17, -17, -17, -17, -17
  3323. - },
  3324. -
  3325. - {
  3326. - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
  3327. - -18, -18, -18, 44, -18, -18, -18
  3328. - },
  3329. -
  3330. - {
  3331. - 11, 45, 45, -19, 45, 45, 45, 45, 45, 45,
  3332. - 45, 45, 45, 45, 45, 45, 45
  3333. -
  3334. - },
  3335. -
  3336. - {
  3337. - 11, -20, 46, 47, -20, -20, -20, -20, -20, -20,
  3338. - -20, -20, -20, -20, -20, -20, -20
  3339. - },
  3340. -
  3341. - {
  3342. - 11, 48, -21, -21, 48, 48, 48, 48, 48, 48,
  3343. - 48, 48, 48, 48, 48, 48, 48
  3344. - },
  3345. -
  3346. - {
  3347. - 11, 49, 49, 50, 49, -22, 49, 49, -22, 49,
  3348. - 49, 49, 49, 49, 49, -22, 49
  3349. - },
  3350. -
  3351. - {
  3352. - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
  3353. - -23, -23, -23, -23, -23, -23, -23
  3354. - },
  3355. -
  3356. - {
  3357. - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
  3358. - -24, -24, -24, -24, -24, -24, -24
  3359. -
  3360. - },
  3361. -
  3362. - {
  3363. - 11, 51, 51, 52, 51, 51, 51, 51, 51, 51,
  3364. - 51, 51, 51, 51, 51, 51, 51
  3365. - },
  3366. -
  3367. - {
  3368. - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
  3369. - -26, -26, -26, -26, -26, -26, -26
  3370. - },
  3371. -
  3372. - {
  3373. - 11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
  3374. - -27, -27, -27, -27, -27, -27, -27
  3375. - },
  3376. -
  3377. - {
  3378. - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
  3379. - -28, -28, -28, -28, 53, -28, -28
  3380. - },
  3381. -
  3382. - {
  3383. - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
  3384. - -29, -29, -29, -29, -29, -29, -29
  3385. -
  3386. - },
  3387. -
  3388. - {
  3389. - 11, 54, 54, -30, 54, 54, 54, 54, 54, 54,
  3390. - 54, 54, 54, 54, 54, 54, 54
  3391. - },
  3392. -
  3393. - {
  3394. - 11, -31, -31, -31, -31, -31, -31, 55, -31, -31,
  3395. - -31, -31, -31, -31, -31, -31, -31
  3396. - },
  3397. -
  3398. - {
  3399. - 11, -32, -32, -32, -32, -32, -32, -32, -32, -32,
  3400. - -32, -32, -32, -32, -32, -32, -32
  3401. - },
  3402. -
  3403. - {
  3404. - 11, -33, -33, -33, -33, -33, -33, -33, -33, -33,
  3405. - -33, -33, -33, -33, -33, -33, -33
  3406. - },
  3407. -
  3408. - {
  3409. - 11, -34, -34, -34, -34, -34, -34, -34, -34, -34,
  3410. - -34, 56, 57, 57, -34, -34, -34
  3411. -
  3412. - },
  3413. -
  3414. - {
  3415. - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
  3416. - -35, 57, 57, 57, -35, -35, -35
  3417. - },
  3418. -
  3419. - {
  3420. - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
  3421. - -36, -36, -36, -36, -36, -36, -36
  3422. - },
  3423. -
  3424. - {
  3425. - 11, -37, -37, 58, -37, -37, -37, -37, -37, -37,
  3426. - -37, -37, -37, -37, -37, -37, -37
  3427. - },
  3428. -
  3429. - {
  3430. - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
  3431. - -38, -38, -38, -38, -38, -38, 59
  3432. - },
  3433. -
  3434. - {
  3435. - 11, -39, 39, 40, -39, -39, 41, -39, -39, -39,
  3436. - -39, -39, -39, -39, -39, -39, -39
  3437. -
  3438. - },
  3439. -
  3440. - {
  3441. - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
  3442. - -40, -40, -40, -40, -40, -40, -40
  3443. - },
  3444. -
  3445. - {
  3446. - 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
  3447. - 42, 42, 42, 42, 42, 42, 42
  3448. - },
  3449. -
  3450. - {
  3451. - 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
  3452. - 42, 42, 42, 42, 42, 42, 42
  3453. - },
  3454. -
  3455. - {
  3456. - 11, -43, -43, -43, -43, -43, -43, -43, -43, -43,
  3457. - -43, -43, -43, -43, -43, -43, -43
  3458. - },
  3459. -
  3460. - {
  3461. - 11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
  3462. - -44, -44, -44, 44, -44, -44, -44
  3463. -
  3464. - },
  3465. -
  3466. - {
  3467. - 11, 45, 45, -45, 45, 45, 45, 45, 45, 45,
  3468. - 45, 45, 45, 45, 45, 45, 45
  3469. - },
  3470. -
  3471. - {
  3472. - 11, -46, 46, 47, -46, -46, -46, -46, -46, -46,
  3473. - -46, -46, -46, -46, -46, -46, -46
  3474. - },
  3475. -
  3476. - {
  3477. - 11, 48, -47, -47, 48, 48, 48, 48, 48, 48,
  3478. - 48, 48, 48, 48, 48, 48, 48
  3479. - },
  3480. -
  3481. - {
  3482. - 11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
  3483. - -48, -48, -48, -48, -48, -48, -48
  3484. - },
  3485. -
  3486. - {
  3487. - 11, 49, 49, 50, 49, -49, 49, 49, -49, 49,
  3488. - 49, 49, 49, 49, 49, -49, 49
  3489. -
  3490. - },
  3491. -
  3492. - {
  3493. - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
  3494. - -50, -50, -50, -50, -50, -50, -50
  3495. - },
  3496. -
  3497. - {
  3498. - 11, -51, -51, 52, -51, -51, -51, -51, -51, -51,
  3499. - -51, -51, -51, -51, -51, -51, -51
  3500. - },
  3501. -
  3502. - {
  3503. - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52,
  3504. - -52, -52, -52, -52, -52, -52, -52
  3505. - },
  3506. -
  3507. - {
  3508. - 11, -53, -53, -53, -53, -53, -53, -53, -53, -53,
  3509. - -53, -53, -53, -53, -53, -53, -53
  3510. - },
  3511. -
  3512. - {
  3513. - 11, 54, 54, -54, 54, 54, 54, 54, 54, 54,
  3514. - 54, 54, 54, 54, 54, 54, 54
  3515. -
  3516. - },
  3517. -
  3518. - {
  3519. - 11, -55, -55, -55, -55, -55, -55, -55, -55, -55,
  3520. - -55, -55, -55, -55, -55, -55, -55
  3521. - },
  3522. -
  3523. - {
  3524. - 11, -56, -56, -56, -56, -56, -56, -56, -56, -56,
  3525. - -56, 60, 57, 57, -56, -56, -56
  3526. - },
  3527. -
  3528. - {
  3529. - 11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
  3530. - -57, 57, 57, 57, -57, -57, -57
  3531. - },
  3532. -
  3533. - {
  3534. - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
  3535. - -58, -58, -58, -58, -58, -58, -58
  3536. - },
  3537. -
  3538. - {
  3539. - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
  3540. - -59, -59, -59, -59, -59, -59, -59
  3541. -
  3542. - },
  3543. -
  3544. - {
  3545. - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
  3546. - -60, 57, 57, 57, -60, -60, -60
  3547. - },
  3548. -
  3549. - } ;
  3550. -
  3551. -static yy_state_type yy_get_previous_state (void );
  3552. -static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
  3553. -static int yy_get_next_buffer (void );
  3554. -static void yy_fatal_error (yyconst char msg[] );
  3555. -
  3556. -/* Done after the current pattern has been matched and before the
  3557. - * corresponding action - sets up zconftext.
  3558. - */
  3559. -#define YY_DO_BEFORE_ACTION \
  3560. - (yytext_ptr) = yy_bp; \
  3561. - zconfleng = (size_t) (yy_cp - yy_bp); \
  3562. - (yy_hold_char) = *yy_cp; \
  3563. - *yy_cp = '\0'; \
  3564. - (yy_c_buf_p) = yy_cp;
  3565. -
  3566. -#define YY_NUM_RULES 33
  3567. -#define YY_END_OF_BUFFER 34
  3568. -/* This struct is not used in this scanner,
  3569. - but its presence is necessary. */
  3570. -struct yy_trans_info
  3571. - {
  3572. - flex_int32_t yy_verify;
  3573. - flex_int32_t yy_nxt;
  3574. - };
  3575. -static yyconst flex_int16_t yy_accept[61] =
  3576. - { 0,
  3577. - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  3578. - 34, 5, 4, 2, 3, 7, 8, 6, 32, 29,
  3579. - 31, 24, 28, 27, 26, 22, 17, 13, 16, 20,
  3580. - 22, 11, 12, 19, 19, 14, 22, 22, 4, 2,
  3581. - 3, 3, 1, 6, 32, 29, 31, 30, 24, 23,
  3582. - 26, 25, 15, 20, 9, 19, 19, 21, 10, 18
  3583. - } ;
  3584. -
  3585. -static yyconst flex_int32_t yy_ec[256] =
  3586. - { 0,
  3587. - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
  3588. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3589. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3590. - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
  3591. - 10, 1, 1, 1, 11, 12, 12, 13, 13, 13,
  3592. - 13, 13, 13, 13, 13, 13, 13, 1, 1, 1,
  3593. - 14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
  3594. - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  3595. - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  3596. - 1, 15, 1, 1, 13, 1, 13, 13, 13, 13,
  3597. -
  3598. - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  3599. - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  3600. - 13, 13, 1, 16, 1, 1, 1, 1, 1, 1,
  3601. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3602. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3603. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3604. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3605. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3606. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3607. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3608. -
  3609. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3610. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3611. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3612. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3613. - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  3614. - 1, 1, 1, 1, 1
  3615. - } ;
  3616. -
  3617. -extern int zconf_flex_debug;
  3618. -int zconf_flex_debug = 0;
  3619. -
  3620. -/* The intent behind this definition is that it'll catch
  3621. - * any uses of REJECT which flex missed.
  3622. - */
  3623. -#define REJECT reject_used_but_not_detected
  3624. -#define yymore() yymore_used_but_not_detected
  3625. -#define YY_MORE_ADJ 0
  3626. -#define YY_RESTORE_YY_MORE_OFFSET
  3627. -char *zconftext;
  3628. -#define YY_NO_INPUT 1
  3629. -
  3630. -/*
  3631. - * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  3632. - * Released under the terms of the GNU GPL v2.0.
  3633. - */
  3634. -
  3635. -#include <limits.h>
  3636. -#include <stdio.h>
  3637. -#include <stdlib.h>
  3638. -#include <string.h>
  3639. -#include <unistd.h>
  3640. -
  3641. -#define LKC_DIRECT_LINK
  3642. -#include "lkc.h"
  3643. -
  3644. -#define START_STRSIZE 16
  3645. -
  3646. -static struct {
  3647. - struct file *file;
  3648. - int lineno;
  3649. -} current_pos;
  3650. -
  3651. -static char *text;
  3652. -static int text_size, text_asize;
  3653. -
  3654. -struct buffer {
  3655. - struct buffer *parent;
  3656. - YY_BUFFER_STATE state;
  3657. -};
  3658. -
  3659. -struct buffer *current_buf;
  3660. -
  3661. -static int last_ts, first_ts;
  3662. -
  3663. -static void zconf_endhelp(void);
  3664. -static void zconf_endfile(void);
  3665. -
  3666. -void new_string(void)
  3667. -{
  3668. - text = malloc(START_STRSIZE);
  3669. - text_asize = START_STRSIZE;
  3670. - text_size = 0;
  3671. - *text = 0;
  3672. -}
  3673. -
  3674. -void append_string(const char *str, int size)
  3675. -{
  3676. - int new_size = text_size + size + 1;
  3677. - if (new_size > text_asize) {
  3678. - new_size += START_STRSIZE - 1;
  3679. - new_size &= -START_STRSIZE;
  3680. - text = realloc(text, new_size);
  3681. - text_asize = new_size;
  3682. - }
  3683. - memcpy(text + text_size, str, size);
  3684. - text_size += size;
  3685. - text[text_size] = 0;
  3686. -}
  3687. -
  3688. -void alloc_string(const char *str, int size)
  3689. -{
  3690. - text = malloc(size + 1);
  3691. - memcpy(text, str, size);
  3692. - text[size] = 0;
  3693. -}
  3694. -
  3695. -#define INITIAL 0
  3696. -#define COMMAND 1
  3697. -#define HELP 2
  3698. -#define STRING 3
  3699. -#define PARAM 4
  3700. -
  3701. -#ifndef YY_NO_UNISTD_H
  3702. -/* Special case for "unistd.h", since it is non-ANSI. We include it way
  3703. - * down here because we want the user's section 1 to have been scanned first.
  3704. - * The user has a chance to override it with an option.
  3705. - */
  3706. -#include <unistd.h>
  3707. -#endif
  3708. -
  3709. -#ifndef YY_EXTRA_TYPE
  3710. -#define YY_EXTRA_TYPE void *
  3711. -#endif
  3712. -
  3713. -static int yy_init_globals (void );
  3714. -
  3715. -/* Accessor methods to globals.
  3716. - These are made visible to non-reentrant scanners for convenience. */
  3717. -
  3718. -int zconflex_destroy (void );
  3719. -
  3720. -int zconfget_debug (void );
  3721. -
  3722. -void zconfset_debug (int debug_flag );
  3723. -
  3724. -YY_EXTRA_TYPE zconfget_extra (void );
  3725. -
  3726. -void zconfset_extra (YY_EXTRA_TYPE user_defined );
  3727. -
  3728. -FILE *zconfget_in (void );
  3729. -
  3730. -void zconfset_in (FILE * in_str );
  3731. -
  3732. -FILE *zconfget_out (void );
  3733. -
  3734. -void zconfset_out (FILE * out_str );
  3735. -
  3736. -int zconfget_leng (void );
  3737. -
  3738. -char *zconfget_text (void );
  3739. -
  3740. -int zconfget_lineno (void );
  3741. -
  3742. -void zconfset_lineno (int line_number );
  3743. -
  3744. -/* Macros after this point can all be overridden by user definitions in
  3745. - * section 1.
  3746. - */
  3747. -
  3748. -#ifndef YY_SKIP_YYWRAP
  3749. -#ifdef __cplusplus
  3750. -extern "C" int zconfwrap (void );
  3751. -#else
  3752. -extern int zconfwrap (void );
  3753. -#endif
  3754. -#endif
  3755. -
  3756. - static void yyunput (int c,char *buf_ptr );
  3757. -
  3758. -#ifndef yytext_ptr
  3759. -static void yy_flex_strncpy (char *,yyconst char *,int );
  3760. -#endif
  3761. -
  3762. -#ifdef YY_NEED_STRLEN
  3763. -static int yy_flex_strlen (yyconst char * );
  3764. -#endif
  3765. -
  3766. -#ifndef YY_NO_INPUT
  3767. -
  3768. -#ifdef __cplusplus
  3769. -static int yyinput (void );
  3770. -#else
  3771. -static int input (void );
  3772. -#endif
  3773. -
  3774. -#endif
  3775. -
  3776. -/* Amount of stuff to slurp up with each read. */
  3777. -#ifndef YY_READ_BUF_SIZE
  3778. -#define YY_READ_BUF_SIZE 8192
  3779. -#endif
  3780. -
  3781. -/* Copy whatever the last rule matched to the standard output. */
  3782. -#ifndef ECHO
  3783. -/* This used to be an fputs(), but since the string might contain NUL's,
  3784. - * we now use fwrite().
  3785. - */
  3786. -#define ECHO fwrite( zconftext, zconfleng, 1, zconfout )
  3787. -#endif
  3788. -
  3789. -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
  3790. - * is returned in "result".
  3791. - */
  3792. -#ifndef YY_INPUT
  3793. -#define YY_INPUT(buf,result,max_size) \
  3794. - errno=0; \
  3795. - while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
  3796. - { \
  3797. - if( errno != EINTR) \
  3798. - { \
  3799. - YY_FATAL_ERROR( "input in flex scanner failed" ); \
  3800. - break; \
  3801. - } \
  3802. - errno=0; \
  3803. - clearerr(zconfin); \
  3804. - }\
  3805. -\
  3806. -
  3807. -#endif
  3808. -
  3809. -/* No semi-colon after return; correct usage is to write "yyterminate();" -
  3810. - * we don't want an extra ';' after the "return" because that will cause
  3811. - * some compilers to complain about unreachable statements.
  3812. - */
  3813. -#ifndef yyterminate
  3814. -#define yyterminate() return YY_NULL
  3815. -#endif
  3816. -
  3817. -/* Number of entries by which start-condition stack grows. */
  3818. -#ifndef YY_START_STACK_INCR
  3819. -#define YY_START_STACK_INCR 25
  3820. -#endif
  3821. -
  3822. -/* Report a fatal error. */
  3823. -#ifndef YY_FATAL_ERROR
  3824. -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
  3825. -#endif
  3826. -
  3827. -/* end tables serialization structures and prototypes */
  3828. -
  3829. -/* Default declaration of generated scanner - a define so the user can
  3830. - * easily add parameters.
  3831. - */
  3832. -#ifndef YY_DECL
  3833. -#define YY_DECL_IS_OURS 1
  3834. -
  3835. -extern int zconflex (void);
  3836. -
  3837. -#define YY_DECL int zconflex (void)
  3838. -#endif /* !YY_DECL */
  3839. -
  3840. -/* Code executed at the beginning of each rule, after zconftext and zconfleng
  3841. - * have been set up.
  3842. - */
  3843. -#ifndef YY_USER_ACTION
  3844. -#define YY_USER_ACTION
  3845. -#endif
  3846. -
  3847. -/* Code executed at the end of each rule. */
  3848. -#ifndef YY_BREAK
  3849. -#define YY_BREAK break;
  3850. -#endif
  3851. -
  3852. -#define YY_RULE_SETUP \
  3853. - YY_USER_ACTION
  3854. -
  3855. -/** The main scanner function which does all the work.
  3856. - */
  3857. -YY_DECL
  3858. -{
  3859. - register yy_state_type yy_current_state;
  3860. - register char *yy_cp, *yy_bp;
  3861. - register int yy_act;
  3862. -
  3863. - int str = 0;
  3864. - int ts, i;
  3865. -
  3866. - if ( !(yy_init) )
  3867. - {
  3868. - (yy_init) = 1;
  3869. -
  3870. -#ifdef YY_USER_INIT
  3871. - YY_USER_INIT;
  3872. -#endif
  3873. -
  3874. - if ( ! (yy_start) )
  3875. - (yy_start) = 1; /* first start state */
  3876. -
  3877. - if ( ! zconfin )
  3878. - zconfin = stdin;
  3879. -
  3880. - if ( ! zconfout )
  3881. - zconfout = stdout;
  3882. -
  3883. - if ( ! YY_CURRENT_BUFFER ) {
  3884. - zconfensure_buffer_stack ();
  3885. - YY_CURRENT_BUFFER_LVALUE =
  3886. - zconf_create_buffer(zconfin,YY_BUF_SIZE );
  3887. - }
  3888. -
  3889. - zconf_load_buffer_state( );
  3890. - }
  3891. -
  3892. - while ( 1 ) /* loops until end-of-file is reached */
  3893. - {
  3894. - yy_cp = (yy_c_buf_p);
  3895. -
  3896. - /* Support of zconftext. */
  3897. - *yy_cp = (yy_hold_char);
  3898. -
  3899. - /* yy_bp points to the position in yy_ch_buf of the start of
  3900. - * the current run.
  3901. - */
  3902. - yy_bp = yy_cp;
  3903. -
  3904. - yy_current_state = (yy_start);
  3905. -yy_match:
  3906. - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
  3907. - ++yy_cp;
  3908. -
  3909. - yy_current_state = -yy_current_state;
  3910. -
  3911. -yy_find_action:
  3912. - yy_act = yy_accept[yy_current_state];
  3913. -
  3914. - YY_DO_BEFORE_ACTION;
  3915. -
  3916. -do_action: /* This label is used only to access EOF actions. */
  3917. -
  3918. - switch ( yy_act )
  3919. - { /* beginning of action switch */
  3920. -case 1:
  3921. -/* rule 1 can match eol */
  3922. -case 2:
  3923. -/* rule 2 can match eol */
  3924. -YY_RULE_SETUP
  3925. -{
  3926. - current_file->lineno++;
  3927. - return T_EOL;
  3928. -}
  3929. - YY_BREAK
  3930. -case 3:
  3931. -YY_RULE_SETUP
  3932. -
  3933. - YY_BREAK
  3934. -case 4:
  3935. -YY_RULE_SETUP
  3936. -{
  3937. - BEGIN(COMMAND);
  3938. -}
  3939. - YY_BREAK
  3940. -case 5:
  3941. -YY_RULE_SETUP
  3942. -{
  3943. - unput(zconftext[0]);
  3944. - BEGIN(COMMAND);
  3945. -}
  3946. - YY_BREAK
  3947. -
  3948. -case 6:
  3949. -YY_RULE_SETUP
  3950. -{
  3951. - struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
  3952. - BEGIN(PARAM);
  3953. - current_pos.file = current_file;
  3954. - current_pos.lineno = current_file->lineno;
  3955. - if (id && id->flags & TF_COMMAND) {
  3956. - zconflval.id = id;
  3957. - return id->token;
  3958. - }
  3959. - alloc_string(zconftext, zconfleng);
  3960. - zconflval.string = text;
  3961. - return T_WORD;
  3962. - }
  3963. - YY_BREAK
  3964. -case 7:
  3965. -YY_RULE_SETUP
  3966. -
  3967. - YY_BREAK
  3968. -case 8:
  3969. -/* rule 8 can match eol */
  3970. -YY_RULE_SETUP
  3971. -{
  3972. - BEGIN(INITIAL);
  3973. - current_file->lineno++;
  3974. - return T_EOL;
  3975. - }
  3976. - YY_BREAK
  3977. -
  3978. -case 9:
  3979. -YY_RULE_SETUP
  3980. -return T_AND;
  3981. - YY_BREAK
  3982. -case 10:
  3983. -YY_RULE_SETUP
  3984. -return T_OR;
  3985. - YY_BREAK
  3986. -case 11:
  3987. -YY_RULE_SETUP
  3988. -return T_OPEN_PAREN;
  3989. - YY_BREAK
  3990. -case 12:
  3991. -YY_RULE_SETUP
  3992. -return T_CLOSE_PAREN;
  3993. - YY_BREAK
  3994. -case 13:
  3995. -YY_RULE_SETUP
  3996. -return T_NOT;
  3997. - YY_BREAK
  3998. -case 14:
  3999. -YY_RULE_SETUP
  4000. -return T_EQUAL;
  4001. - YY_BREAK
  4002. -case 15:
  4003. -YY_RULE_SETUP
  4004. -return T_UNEQUAL;
  4005. - YY_BREAK
  4006. -case 16:
  4007. -YY_RULE_SETUP
  4008. -{
  4009. - str = zconftext[0];
  4010. - new_string();
  4011. - BEGIN(STRING);
  4012. - }
  4013. - YY_BREAK
  4014. -case 17:
  4015. -/* rule 17 can match eol */
  4016. -YY_RULE_SETUP
  4017. -BEGIN(INITIAL); current_file->lineno++; return T_EOL;
  4018. - YY_BREAK
  4019. -case 18:
  4020. -YY_RULE_SETUP
  4021. -/* ignore */
  4022. - YY_BREAK
  4023. -case 19:
  4024. -YY_RULE_SETUP
  4025. -{
  4026. - struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
  4027. - if (id && id->flags & TF_PARAM) {
  4028. - zconflval.id = id;
  4029. - return id->token;
  4030. - }
  4031. - alloc_string(zconftext, zconfleng);
  4032. - zconflval.string = text;
  4033. - return T_WORD;
  4034. - }
  4035. - YY_BREAK
  4036. -case 20:
  4037. -YY_RULE_SETUP
  4038. -/* comment */
  4039. - YY_BREAK
  4040. -case 21:
  4041. -/* rule 21 can match eol */
  4042. -YY_RULE_SETUP
  4043. -current_file->lineno++;
  4044. - YY_BREAK
  4045. -case 22:
  4046. -YY_RULE_SETUP
  4047. -
  4048. - YY_BREAK
  4049. -case YY_STATE_EOF(PARAM):
  4050. -{
  4051. - BEGIN(INITIAL);
  4052. - }
  4053. - YY_BREAK
  4054. -
  4055. -case 23:
  4056. -/* rule 23 can match eol */
  4057. -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
  4058. -(yy_c_buf_p) = yy_cp -= 1;
  4059. -YY_DO_BEFORE_ACTION; /* set up zconftext again */
  4060. -YY_RULE_SETUP
  4061. -{
  4062. - append_string(zconftext, zconfleng);
  4063. - zconflval.string = text;
  4064. - return T_WORD_QUOTE;
  4065. - }
  4066. - YY_BREAK
  4067. -case 24:
  4068. -YY_RULE_SETUP
  4069. -{
  4070. - append_string(zconftext, zconfleng);
  4071. - }
  4072. - YY_BREAK
  4073. -case 25:
  4074. -/* rule 25 can match eol */
  4075. -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
  4076. -(yy_c_buf_p) = yy_cp -= 1;
  4077. -YY_DO_BEFORE_ACTION; /* set up zconftext again */
  4078. -YY_RULE_SETUP
  4079. -{
  4080. - append_string(zconftext + 1, zconfleng - 1);
  4081. - zconflval.string = text;
  4082. - return T_WORD_QUOTE;
  4083. - }
  4084. - YY_BREAK
  4085. -case 26:
  4086. -YY_RULE_SETUP
  4087. -{
  4088. - append_string(zconftext + 1, zconfleng - 1);
  4089. - }
  4090. - YY_BREAK
  4091. -case 27:
  4092. -YY_RULE_SETUP
  4093. -{
  4094. - if (str == zconftext[0]) {
  4095. - BEGIN(PARAM);
  4096. - zconflval.string = text;
  4097. - return T_WORD_QUOTE;
  4098. - } else
  4099. - append_string(zconftext, 1);
  4100. - }
  4101. - YY_BREAK
  4102. -case 28:
  4103. -/* rule 28 can match eol */
  4104. -YY_RULE_SETUP
  4105. -{
  4106. - printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
  4107. - current_file->lineno++;
  4108. - BEGIN(INITIAL);
  4109. - return T_EOL;
  4110. - }
  4111. - YY_BREAK
  4112. -case YY_STATE_EOF(STRING):
  4113. -{
  4114. - BEGIN(INITIAL);
  4115. - }
  4116. - YY_BREAK
  4117. -
  4118. -case 29:
  4119. -YY_RULE_SETUP
  4120. -{
  4121. - ts = 0;
  4122. - for (i = 0; i < zconfleng; i++) {
  4123. - if (zconftext[i] == '\t')
  4124. - ts = (ts & ~7) + 8;
  4125. - else
  4126. - ts++;
  4127. - }
  4128. - last_ts = ts;
  4129. - if (first_ts) {
  4130. - if (ts < first_ts) {
  4131. - zconf_endhelp();
  4132. - return T_HELPTEXT;
  4133. - }
  4134. - ts -= first_ts;
  4135. - while (ts > 8) {
  4136. - append_string(" ", 8);
  4137. - ts -= 8;
  4138. - }
  4139. - append_string(" ", ts);
  4140. - }
  4141. - }
  4142. - YY_BREAK
  4143. -case 30:
  4144. -/* rule 30 can match eol */
  4145. -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
  4146. -(yy_c_buf_p) = yy_cp -= 1;
  4147. -YY_DO_BEFORE_ACTION; /* set up zconftext again */
  4148. -YY_RULE_SETUP
  4149. -{
  4150. - current_file->lineno++;
  4151. - zconf_endhelp();
  4152. - return T_HELPTEXT;
  4153. - }
  4154. - YY_BREAK
  4155. -case 31:
  4156. -/* rule 31 can match eol */
  4157. -YY_RULE_SETUP
  4158. -{
  4159. - current_file->lineno++;
  4160. - append_string("\n", 1);
  4161. - }
  4162. - YY_BREAK
  4163. -case 32:
  4164. -YY_RULE_SETUP
  4165. -{
  4166. - while (zconfleng) {
  4167. - if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
  4168. - break;
  4169. - zconfleng--;
  4170. - }
  4171. - append_string(zconftext, zconfleng);
  4172. - if (!first_ts)
  4173. - first_ts = last_ts;
  4174. - }
  4175. - YY_BREAK
  4176. -case YY_STATE_EOF(HELP):
  4177. -{
  4178. - zconf_endhelp();
  4179. - return T_HELPTEXT;
  4180. - }
  4181. - YY_BREAK
  4182. -
  4183. -case YY_STATE_EOF(INITIAL):
  4184. -case YY_STATE_EOF(COMMAND):
  4185. -{
  4186. - if (current_file) {
  4187. - zconf_endfile();
  4188. - return T_EOL;
  4189. - }
  4190. - fclose(zconfin);
  4191. - yyterminate();
  4192. -}
  4193. - YY_BREAK
  4194. -case 33:
  4195. -YY_RULE_SETUP
  4196. -YY_FATAL_ERROR( "flex scanner jammed" );
  4197. - YY_BREAK
  4198. -
  4199. - case YY_END_OF_BUFFER:
  4200. - {
  4201. - /* Amount of text matched not including the EOB char. */
  4202. - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
  4203. -
  4204. - /* Undo the effects of YY_DO_BEFORE_ACTION. */
  4205. - *yy_cp = (yy_hold_char);
  4206. - YY_RESTORE_YY_MORE_OFFSET
  4207. -
  4208. - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
  4209. - {
  4210. - /* We're scanning a new file or input source. It's
  4211. - * possible that this happened because the user
  4212. - * just pointed zconfin at a new source and called
  4213. - * zconflex(). If so, then we have to assure
  4214. - * consistency between YY_CURRENT_BUFFER and our
  4215. - * globals. Here is the right place to do so, because
  4216. - * this is the first action (other than possibly a
  4217. - * back-up) that will match for the new input source.
  4218. - */
  4219. - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  4220. - YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
  4221. - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
  4222. - }
  4223. -
  4224. - /* Note that here we test for yy_c_buf_p "<=" to the position
  4225. - * of the first EOB in the buffer, since yy_c_buf_p will
  4226. - * already have been incremented past the NUL character
  4227. - * (since all states make transitions on EOB to the
  4228. - * end-of-buffer state). Contrast this with the test
  4229. - * in input().
  4230. - */
  4231. - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
  4232. - { /* This was really a NUL. */
  4233. - yy_state_type yy_next_state;
  4234. -
  4235. - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
  4236. -
  4237. - yy_current_state = yy_get_previous_state( );
  4238. -
  4239. - /* Okay, we're now positioned to make the NUL
  4240. - * transition. We couldn't have
  4241. - * yy_get_previous_state() go ahead and do it
  4242. - * for us because it doesn't know how to deal
  4243. - * with the possibility of jamming (and we don't
  4244. - * want to build jamming into it because then it
  4245. - * will run more slowly).
  4246. - */
  4247. -
  4248. - yy_next_state = yy_try_NUL_trans( yy_current_state );
  4249. -
  4250. - yy_bp = (yytext_ptr) + YY_MORE_ADJ;
  4251. -
  4252. - if ( yy_next_state )
  4253. - {
  4254. - /* Consume the NUL. */
  4255. - yy_cp = ++(yy_c_buf_p);
  4256. - yy_current_state = yy_next_state;
  4257. - goto yy_match;
  4258. - }
  4259. -
  4260. - else
  4261. - {
  4262. - yy_cp = (yy_c_buf_p);
  4263. - goto yy_find_action;
  4264. - }
  4265. - }
  4266. -
  4267. - else switch ( yy_get_next_buffer( ) )
  4268. - {
  4269. - case EOB_ACT_END_OF_FILE:
  4270. - {
  4271. - (yy_did_buffer_switch_on_eof) = 0;
  4272. -
  4273. - if ( zconfwrap( ) )
  4274. - {
  4275. - /* Note: because we've taken care in
  4276. - * yy_get_next_buffer() to have set up
  4277. - * zconftext, we can now set up
  4278. - * yy_c_buf_p so that if some total
  4279. - * hoser (like flex itself) wants to
  4280. - * call the scanner after we return the
  4281. - * YY_NULL, it'll still work - another
  4282. - * YY_NULL will get returned.
  4283. - */
  4284. - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
  4285. -
  4286. - yy_act = YY_STATE_EOF(YY_START);
  4287. - goto do_action;
  4288. - }
  4289. -
  4290. - else
  4291. - {
  4292. - if ( ! (yy_did_buffer_switch_on_eof) )
  4293. - YY_NEW_FILE;
  4294. - }
  4295. - break;
  4296. - }
  4297. -
  4298. - case EOB_ACT_CONTINUE_SCAN:
  4299. - (yy_c_buf_p) =
  4300. - (yytext_ptr) + yy_amount_of_matched_text;
  4301. -
  4302. - yy_current_state = yy_get_previous_state( );
  4303. -
  4304. - yy_cp = (yy_c_buf_p);
  4305. - yy_bp = (yytext_ptr) + YY_MORE_ADJ;
  4306. - goto yy_match;
  4307. -
  4308. - case EOB_ACT_LAST_MATCH:
  4309. - (yy_c_buf_p) =
  4310. - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
  4311. -
  4312. - yy_current_state = yy_get_previous_state( );
  4313. -
  4314. - yy_cp = (yy_c_buf_p);
  4315. - yy_bp = (yytext_ptr) + YY_MORE_ADJ;
  4316. - goto yy_find_action;
  4317. - }
  4318. - break;
  4319. - }
  4320. -
  4321. - default:
  4322. - YY_FATAL_ERROR(
  4323. - "fatal flex scanner internal error--no action found" );
  4324. - } /* end of action switch */
  4325. - } /* end of scanning one token */
  4326. -} /* end of zconflex */
  4327. -
  4328. -/* yy_get_next_buffer - try to read in a new buffer
  4329. - *
  4330. - * Returns a code representing an action:
  4331. - * EOB_ACT_LAST_MATCH -
  4332. - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  4333. - * EOB_ACT_END_OF_FILE - end of file
  4334. - */
  4335. -static int yy_get_next_buffer (void)
  4336. -{
  4337. - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
  4338. - register char *source = (yytext_ptr);
  4339. - register int number_to_move, i;
  4340. - int ret_val;
  4341. -
  4342. - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
  4343. - YY_FATAL_ERROR(
  4344. - "fatal flex scanner internal error--end of buffer missed" );
  4345. -
  4346. - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
  4347. - { /* Don't try to fill the buffer, so this is an EOF. */
  4348. - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
  4349. - {
  4350. - /* We matched a single character, the EOB, so
  4351. - * treat this as a final EOF.
  4352. - */
  4353. - return EOB_ACT_END_OF_FILE;
  4354. - }
  4355. -
  4356. - else
  4357. - {
  4358. - /* We matched some text prior to the EOB, first
  4359. - * process it.
  4360. - */
  4361. - return EOB_ACT_LAST_MATCH;
  4362. - }
  4363. - }
  4364. -
  4365. - /* Try to read more data. */
  4366. -
  4367. - /* First move last chars to start of buffer. */
  4368. - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
  4369. -
  4370. - for ( i = 0; i < number_to_move; ++i )
  4371. - *(dest++) = *(source++);
  4372. -
  4373. - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  4374. - /* don't do the read, it's not guaranteed to return an EOF,
  4375. - * just force an EOF
  4376. - */
  4377. - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
  4378. -
  4379. - else
  4380. - {
  4381. - int num_to_read =
  4382. - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
  4383. -
  4384. - while ( num_to_read <= 0 )
  4385. - { /* Not enough room in the buffer - grow it. */
  4386. -
  4387. - /* just a shorter name for the current buffer */
  4388. - YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
  4389. -
  4390. - int yy_c_buf_p_offset =
  4391. - (int) ((yy_c_buf_p) - b->yy_ch_buf);
  4392. -
  4393. - if ( b->yy_is_our_buffer )
  4394. - {
  4395. - int new_size = b->yy_buf_size * 2;
  4396. -
  4397. - if ( new_size <= 0 )
  4398. - b->yy_buf_size += b->yy_buf_size / 8;
  4399. - else
  4400. - b->yy_buf_size *= 2;
  4401. -
  4402. - b->yy_ch_buf = (char *)
  4403. - /* Include room in for 2 EOB chars. */
  4404. - zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
  4405. - }
  4406. - else
  4407. - /* Can't grow it, we don't own it. */
  4408. - b->yy_ch_buf = 0;
  4409. -
  4410. - if ( ! b->yy_ch_buf )
  4411. - YY_FATAL_ERROR(
  4412. - "fatal error - scanner input buffer overflow" );
  4413. -
  4414. - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
  4415. -
  4416. - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
  4417. - number_to_move - 1;
  4418. -
  4419. - }
  4420. -
  4421. - if ( num_to_read > YY_READ_BUF_SIZE )
  4422. - num_to_read = YY_READ_BUF_SIZE;
  4423. -
  4424. - /* Read in more data. */
  4425. - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
  4426. - (yy_n_chars), (size_t) num_to_read );
  4427. -
  4428. - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  4429. - }
  4430. -
  4431. - if ( (yy_n_chars) == 0 )
  4432. - {
  4433. - if ( number_to_move == YY_MORE_ADJ )
  4434. - {
  4435. - ret_val = EOB_ACT_END_OF_FILE;
  4436. - zconfrestart(zconfin );
  4437. - }
  4438. -
  4439. - else
  4440. - {
  4441. - ret_val = EOB_ACT_LAST_MATCH;
  4442. - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
  4443. - YY_BUFFER_EOF_PENDING;
  4444. - }
  4445. - }
  4446. -
  4447. - else
  4448. - ret_val = EOB_ACT_CONTINUE_SCAN;
  4449. -
  4450. - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
  4451. - /* Extend the array by 50%, plus the number we really need. */
  4452. - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
  4453. - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
  4454. - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  4455. - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
  4456. - }
  4457. -
  4458. - (yy_n_chars) += number_to_move;
  4459. - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
  4460. - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
  4461. -
  4462. - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
  4463. -
  4464. - return ret_val;
  4465. -}
  4466. -
  4467. -/* yy_get_previous_state - get the state just before the EOB char was reached */
  4468. -
  4469. - static yy_state_type yy_get_previous_state (void)
  4470. -{
  4471. - register yy_state_type yy_current_state;
  4472. - register char *yy_cp;
  4473. -
  4474. - yy_current_state = (yy_start);
  4475. -
  4476. - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
  4477. - {
  4478. - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
  4479. - }
  4480. -
  4481. - return yy_current_state;
  4482. -}
  4483. -
  4484. -/* yy_try_NUL_trans - try to make a transition on the NUL character
  4485. - *
  4486. - * synopsis
  4487. - * next_state = yy_try_NUL_trans( current_state );
  4488. - */
  4489. - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
  4490. -{
  4491. - register int yy_is_jam;
  4492. -
  4493. - yy_current_state = yy_nxt[yy_current_state][1];
  4494. - yy_is_jam = (yy_current_state <= 0);
  4495. -
  4496. - return yy_is_jam ? 0 : yy_current_state;
  4497. -}
  4498. -
  4499. - static void yyunput (int c, register char * yy_bp )
  4500. -{
  4501. - register char *yy_cp;
  4502. -
  4503. - yy_cp = (yy_c_buf_p);
  4504. -
  4505. - /* undo effects of setting up zconftext */
  4506. - *yy_cp = (yy_hold_char);
  4507. -
  4508. - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
  4509. - { /* need to shift things up to make room */
  4510. - /* +2 for EOB chars. */
  4511. - register int number_to_move = (yy_n_chars) + 2;
  4512. - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
  4513. - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
  4514. - register char *source =
  4515. - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
  4516. -
  4517. - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  4518. - *--dest = *--source;
  4519. -
  4520. - yy_cp += (int) (dest - source);
  4521. - yy_bp += (int) (dest - source);
  4522. - YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
  4523. - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
  4524. -
  4525. - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
  4526. - YY_FATAL_ERROR( "flex scanner push-back overflow" );
  4527. - }
  4528. -
  4529. - *--yy_cp = (char) c;
  4530. -
  4531. - (yytext_ptr) = yy_bp;
  4532. - (yy_hold_char) = *yy_cp;
  4533. - (yy_c_buf_p) = yy_cp;
  4534. -}
  4535. -
  4536. -#ifndef YY_NO_INPUT
  4537. -#ifdef __cplusplus
  4538. - static int yyinput (void)
  4539. -#else
  4540. - static int input (void)
  4541. -#endif
  4542. -
  4543. -{
  4544. - int c;
  4545. -
  4546. - *(yy_c_buf_p) = (yy_hold_char);
  4547. -
  4548. - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
  4549. - {
  4550. - /* yy_c_buf_p now points to the character we want to return.
  4551. - * If this occurs *before* the EOB characters, then it's a
  4552. - * valid NUL; if not, then we've hit the end of the buffer.
  4553. - */
  4554. - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
  4555. - /* This was really a NUL. */
  4556. - *(yy_c_buf_p) = '\0';
  4557. -
  4558. - else
  4559. - { /* need more input */
  4560. - int offset = (yy_c_buf_p) - (yytext_ptr);
  4561. - ++(yy_c_buf_p);
  4562. -
  4563. - switch ( yy_get_next_buffer( ) )
  4564. - {
  4565. - case EOB_ACT_LAST_MATCH:
  4566. - /* This happens because yy_g_n_b()
  4567. - * sees that we've accumulated a
  4568. - * token and flags that we need to
  4569. - * try matching the token before
  4570. - * proceeding. But for input(),
  4571. - * there's no matching to consider.
  4572. - * So convert the EOB_ACT_LAST_MATCH
  4573. - * to EOB_ACT_END_OF_FILE.
  4574. - */
  4575. -
  4576. - /* Reset buffer status. */
  4577. - zconfrestart(zconfin );
  4578. -
  4579. - /*FALLTHROUGH*/
  4580. -
  4581. - case EOB_ACT_END_OF_FILE:
  4582. - {
  4583. - if ( zconfwrap( ) )
  4584. - return EOF;
  4585. -
  4586. - if ( ! (yy_did_buffer_switch_on_eof) )
  4587. - YY_NEW_FILE;
  4588. -#ifdef __cplusplus
  4589. - return yyinput();
  4590. -#else
  4591. - return input();
  4592. -#endif
  4593. - }
  4594. -
  4595. - case EOB_ACT_CONTINUE_SCAN:
  4596. - (yy_c_buf_p) = (yytext_ptr) + offset;
  4597. - break;
  4598. - }
  4599. - }
  4600. - }
  4601. -
  4602. - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
  4603. - *(yy_c_buf_p) = '\0'; /* preserve zconftext */
  4604. - (yy_hold_char) = *++(yy_c_buf_p);
  4605. -
  4606. - return c;
  4607. -}
  4608. -#endif /* ifndef YY_NO_INPUT */
  4609. -
  4610. -/** Immediately switch to a different input stream.
  4611. - * @param input_file A readable stream.
  4612. - *
  4613. - * @note This function does not reset the start condition to @c INITIAL .
  4614. - */
  4615. - void zconfrestart (FILE * input_file )
  4616. -{
  4617. -
  4618. - if ( ! YY_CURRENT_BUFFER ){
  4619. - zconfensure_buffer_stack ();
  4620. - YY_CURRENT_BUFFER_LVALUE =
  4621. - zconf_create_buffer(zconfin,YY_BUF_SIZE );
  4622. - }
  4623. -
  4624. - zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
  4625. - zconf_load_buffer_state( );
  4626. -}
  4627. -
  4628. -/** Switch to a different input buffer.
  4629. - * @param new_buffer The new input buffer.
  4630. - *
  4631. - */
  4632. - void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
  4633. -{
  4634. -
  4635. - /* TODO. We should be able to replace this entire function body
  4636. - * with
  4637. - * zconfpop_buffer_state();
  4638. - * zconfpush_buffer_state(new_buffer);
  4639. - */
  4640. - zconfensure_buffer_stack ();
  4641. - if ( YY_CURRENT_BUFFER == new_buffer )
  4642. - return;
  4643. -
  4644. - if ( YY_CURRENT_BUFFER )
  4645. - {
  4646. - /* Flush out information for old buffer. */
  4647. - *(yy_c_buf_p) = (yy_hold_char);
  4648. - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
  4649. - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  4650. - }
  4651. -
  4652. - YY_CURRENT_BUFFER_LVALUE = new_buffer;
  4653. - zconf_load_buffer_state( );
  4654. -
  4655. - /* We don't actually know whether we did this switch during
  4656. - * EOF (zconfwrap()) processing, but the only time this flag
  4657. - * is looked at is after zconfwrap() is called, so it's safe
  4658. - * to go ahead and always set it.
  4659. - */
  4660. - (yy_did_buffer_switch_on_eof) = 1;
  4661. -}
  4662. -
  4663. -static void zconf_load_buffer_state (void)
  4664. -{
  4665. - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  4666. - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
  4667. - zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
  4668. - (yy_hold_char) = *(yy_c_buf_p);
  4669. -}
  4670. -
  4671. -/** Allocate and initialize an input buffer state.
  4672. - * @param file A readable stream.
  4673. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
  4674. - *
  4675. - * @return the allocated buffer state.
  4676. - */
  4677. - YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
  4678. -{
  4679. - YY_BUFFER_STATE b;
  4680. -
  4681. - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
  4682. - if ( ! b )
  4683. - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
  4684. -
  4685. - b->yy_buf_size = size;
  4686. -
  4687. - /* yy_ch_buf has to be 2 characters longer than the size given because
  4688. - * we need to put in 2 end-of-buffer characters.
  4689. - */
  4690. - b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
  4691. - if ( ! b->yy_ch_buf )
  4692. - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
  4693. -
  4694. - b->yy_is_our_buffer = 1;
  4695. -
  4696. - zconf_init_buffer(b,file );
  4697. -
  4698. - return b;
  4699. -}
  4700. -
  4701. -/** Destroy the buffer.
  4702. - * @param b a buffer created with zconf_create_buffer()
  4703. - *
  4704. - */
  4705. - void zconf_delete_buffer (YY_BUFFER_STATE b )
  4706. -{
  4707. -
  4708. - if ( ! b )
  4709. - return;
  4710. -
  4711. - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
  4712. - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
  4713. -
  4714. - if ( b->yy_is_our_buffer )
  4715. - zconffree((void *) b->yy_ch_buf );
  4716. -
  4717. - zconffree((void *) b );
  4718. -}
  4719. -
  4720. -/* Initializes or reinitializes a buffer.
  4721. - * This function is sometimes called more than once on the same buffer,
  4722. - * such as during a zconfrestart() or at EOF.
  4723. - */
  4724. - static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
  4725. -
  4726. -{
  4727. - int oerrno = errno;
  4728. -
  4729. - zconf_flush_buffer(b );
  4730. -
  4731. - b->yy_input_file = file;
  4732. - b->yy_fill_buffer = 1;
  4733. -
  4734. - /* If b is the current buffer, then zconf_init_buffer was _probably_
  4735. - * called from zconfrestart() or through yy_get_next_buffer.
  4736. - * In that case, we don't want to reset the lineno or column.
  4737. - */
  4738. - if (b != YY_CURRENT_BUFFER){
  4739. - b->yy_bs_lineno = 1;
  4740. - b->yy_bs_column = 0;
  4741. - }
  4742. -
  4743. - b->yy_is_interactive = 0;
  4744. -
  4745. - errno = oerrno;
  4746. -}
  4747. -
  4748. -/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
  4749. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  4750. - *
  4751. - */
  4752. - void zconf_flush_buffer (YY_BUFFER_STATE b )
  4753. -{
  4754. - if ( ! b )
  4755. - return;
  4756. -
  4757. - b->yy_n_chars = 0;
  4758. -
  4759. - /* We always need two end-of-buffer characters. The first causes
  4760. - * a transition to the end-of-buffer state. The second causes
  4761. - * a jam in that state.
  4762. - */
  4763. - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  4764. - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  4765. -
  4766. - b->yy_buf_pos = &b->yy_ch_buf[0];
  4767. -
  4768. - b->yy_at_bol = 1;
  4769. - b->yy_buffer_status = YY_BUFFER_NEW;
  4770. -
  4771. - if ( b == YY_CURRENT_BUFFER )
  4772. - zconf_load_buffer_state( );
  4773. -}
  4774. -
  4775. -/** Pushes the new state onto the stack. The new state becomes
  4776. - * the current state. This function will allocate the stack
  4777. - * if necessary.
  4778. - * @param new_buffer The new state.
  4779. - *
  4780. - */
  4781. -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
  4782. -{
  4783. - if (new_buffer == NULL)
  4784. - return;
  4785. -
  4786. - zconfensure_buffer_stack();
  4787. -
  4788. - /* This block is copied from zconf_switch_to_buffer. */
  4789. - if ( YY_CURRENT_BUFFER )
  4790. - {
  4791. - /* Flush out information for old buffer. */
  4792. - *(yy_c_buf_p) = (yy_hold_char);
  4793. - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
  4794. - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  4795. - }
  4796. -
  4797. - /* Only push if top exists. Otherwise, replace top. */
  4798. - if (YY_CURRENT_BUFFER)
  4799. - (yy_buffer_stack_top)++;
  4800. - YY_CURRENT_BUFFER_LVALUE = new_buffer;
  4801. -
  4802. - /* copied from zconf_switch_to_buffer. */
  4803. - zconf_load_buffer_state( );
  4804. - (yy_did_buffer_switch_on_eof) = 1;
  4805. -}
  4806. -
  4807. -/** Removes and deletes the top of the stack, if present.
  4808. - * The next element becomes the new top.
  4809. - *
  4810. - */
  4811. -void zconfpop_buffer_state (void)
  4812. -{
  4813. - if (!YY_CURRENT_BUFFER)
  4814. - return;
  4815. -
  4816. - zconf_delete_buffer(YY_CURRENT_BUFFER );
  4817. - YY_CURRENT_BUFFER_LVALUE = NULL;
  4818. - if ((yy_buffer_stack_top) > 0)
  4819. - --(yy_buffer_stack_top);
  4820. -
  4821. - if (YY_CURRENT_BUFFER) {
  4822. - zconf_load_buffer_state( );
  4823. - (yy_did_buffer_switch_on_eof) = 1;
  4824. - }
  4825. -}
  4826. -
  4827. -/* Allocates the stack if it does not exist.
  4828. - * Guarantees space for at least one push.
  4829. - */
  4830. -static void zconfensure_buffer_stack (void)
  4831. -{
  4832. - int num_to_alloc;
  4833. -
  4834. - if (!(yy_buffer_stack)) {
  4835. -
  4836. - /* First allocation is just for 2 elements, since we don't know if this
  4837. - * scanner will even need a stack. We use 2 instead of 1 to avoid an
  4838. - * immediate realloc on the next call.
  4839. - */
  4840. - num_to_alloc = 1;
  4841. - (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
  4842. - (num_to_alloc * sizeof(struct yy_buffer_state*)
  4843. - );
  4844. - if ( ! (yy_buffer_stack) )
  4845. - YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
  4846. -
  4847. - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
  4848. -
  4849. - (yy_buffer_stack_max) = num_to_alloc;
  4850. - (yy_buffer_stack_top) = 0;
  4851. - return;
  4852. - }
  4853. -
  4854. - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
  4855. -
  4856. - /* Increase the buffer to prepare for a possible push. */
  4857. - int grow_size = 8 /* arbitrary grow size */;
  4858. -
  4859. - num_to_alloc = (yy_buffer_stack_max) + grow_size;
  4860. - (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
  4861. - ((yy_buffer_stack),
  4862. - num_to_alloc * sizeof(struct yy_buffer_state*)
  4863. - );
  4864. - if ( ! (yy_buffer_stack) )
  4865. - YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
  4866. -
  4867. - /* zero only the new slots.*/
  4868. - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
  4869. - (yy_buffer_stack_max) = num_to_alloc;
  4870. - }
  4871. -}
  4872. -
  4873. -/** Setup the input buffer state to scan directly from a user-specified character buffer.
  4874. - * @param base the character buffer
  4875. - * @param size the size in bytes of the character buffer
  4876. - *
  4877. - * @return the newly allocated buffer state object.
  4878. - */
  4879. -YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
  4880. -{
  4881. - YY_BUFFER_STATE b;
  4882. -
  4883. - if ( size < 2 ||
  4884. - base[size-2] != YY_END_OF_BUFFER_CHAR ||
  4885. - base[size-1] != YY_END_OF_BUFFER_CHAR )
  4886. - /* They forgot to leave room for the EOB's. */
  4887. - return 0;
  4888. -
  4889. - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
  4890. - if ( ! b )
  4891. - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
  4892. -
  4893. - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
  4894. - b->yy_buf_pos = b->yy_ch_buf = base;
  4895. - b->yy_is_our_buffer = 0;
  4896. - b->yy_input_file = 0;
  4897. - b->yy_n_chars = b->yy_buf_size;
  4898. - b->yy_is_interactive = 0;
  4899. - b->yy_at_bol = 1;
  4900. - b->yy_fill_buffer = 0;
  4901. - b->yy_buffer_status = YY_BUFFER_NEW;
  4902. -
  4903. - zconf_switch_to_buffer(b );
  4904. -
  4905. - return b;
  4906. -}
  4907. -
  4908. -/** Setup the input buffer state to scan a string. The next call to zconflex() will
  4909. - * scan from a @e copy of @a str.
  4910. - * @param yystr a NUL-terminated string to scan
  4911. - *
  4912. - * @return the newly allocated buffer state object.
  4913. - * @note If you want to scan bytes that may contain NUL values, then use
  4914. - * zconf_scan_bytes() instead.
  4915. - */
  4916. -YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
  4917. -{
  4918. -
  4919. - return zconf_scan_bytes(yystr,strlen(yystr) );
  4920. -}
  4921. -
  4922. -/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
  4923. - * scan from a @e copy of @a bytes.
  4924. - * @param bytes the byte buffer to scan
  4925. - * @param len the number of bytes in the buffer pointed to by @a bytes.
  4926. - *
  4927. - * @return the newly allocated buffer state object.
  4928. - */
  4929. -YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len )
  4930. -{
  4931. - YY_BUFFER_STATE b;
  4932. - char *buf;
  4933. - yy_size_t n;
  4934. - int i;
  4935. -
  4936. - /* Get memory for full buffer, including space for trailing EOB's. */
  4937. - n = _yybytes_len + 2;
  4938. - buf = (char *) zconfalloc(n );
  4939. - if ( ! buf )
  4940. - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
  4941. -
  4942. - for ( i = 0; i < _yybytes_len; ++i )
  4943. - buf[i] = yybytes[i];
  4944. -
  4945. - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
  4946. -
  4947. - b = zconf_scan_buffer(buf,n );
  4948. - if ( ! b )
  4949. - YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
  4950. -
  4951. - /* It's okay to grow etc. this buffer, and we should throw it
  4952. - * away when we're done.
  4953. - */
  4954. - b->yy_is_our_buffer = 1;
  4955. -
  4956. - return b;
  4957. -}
  4958. -
  4959. -#ifndef YY_EXIT_FAILURE
  4960. -#define YY_EXIT_FAILURE 2
  4961. -#endif
  4962. -
  4963. -static void yy_fatal_error (yyconst char* msg )
  4964. -{
  4965. - (void) fprintf( stderr, "%s\n", msg );
  4966. - exit( YY_EXIT_FAILURE );
  4967. -}
  4968. -
  4969. -/* Redefine yyless() so it works in section 3 code. */
  4970. -
  4971. -#undef yyless
  4972. -#define yyless(n) \
  4973. - do \
  4974. - { \
  4975. - /* Undo effects of setting up zconftext. */ \
  4976. - int yyless_macro_arg = (n); \
  4977. - YY_LESS_LINENO(yyless_macro_arg);\
  4978. - zconftext[zconfleng] = (yy_hold_char); \
  4979. - (yy_c_buf_p) = zconftext + yyless_macro_arg; \
  4980. - (yy_hold_char) = *(yy_c_buf_p); \
  4981. - *(yy_c_buf_p) = '\0'; \
  4982. - zconfleng = yyless_macro_arg; \
  4983. - } \
  4984. - while ( 0 )
  4985. -
  4986. -/* Accessor methods (get/set functions) to struct members. */
  4987. -
  4988. -/** Get the current line number.
  4989. - *
  4990. - */
  4991. -int zconfget_lineno (void)
  4992. -{
  4993. -
  4994. - return zconflineno;
  4995. -}
  4996. -
  4997. -/** Get the input stream.
  4998. - *
  4999. - */
  5000. -FILE *zconfget_in (void)
  5001. -{
  5002. - return zconfin;
  5003. -}
  5004. -
  5005. -/** Get the output stream.
  5006. - *
  5007. - */
  5008. -FILE *zconfget_out (void)
  5009. -{
  5010. - return zconfout;
  5011. -}
  5012. -
  5013. -/** Get the length of the current token.
  5014. - *
  5015. - */
  5016. -int zconfget_leng (void)
  5017. -{
  5018. - return zconfleng;
  5019. -}
  5020. -
  5021. -/** Get the current token.
  5022. - *
  5023. - */
  5024. -
  5025. -char *zconfget_text (void)
  5026. -{
  5027. - return zconftext;
  5028. -}
  5029. -
  5030. -/** Set the current line number.
  5031. - * @param line_number
  5032. - *
  5033. - */
  5034. -void zconfset_lineno (int line_number )
  5035. -{
  5036. -
  5037. - zconflineno = line_number;
  5038. -}
  5039. -
  5040. -/** Set the input stream. This does not discard the current
  5041. - * input buffer.
  5042. - * @param in_str A readable stream.
  5043. - *
  5044. - * @see zconf_switch_to_buffer
  5045. - */
  5046. -void zconfset_in (FILE * in_str )
  5047. -{
  5048. - zconfin = in_str ;
  5049. -}
  5050. -
  5051. -void zconfset_out (FILE * out_str )
  5052. -{
  5053. - zconfout = out_str ;
  5054. -}
  5055. -
  5056. -int zconfget_debug (void)
  5057. -{
  5058. - return zconf_flex_debug;
  5059. -}
  5060. -
  5061. -void zconfset_debug (int bdebug )
  5062. -{
  5063. - zconf_flex_debug = bdebug ;
  5064. -}
  5065. -
  5066. -static int yy_init_globals (void)
  5067. -{
  5068. - /* Initialization is the same as for the non-reentrant scanner.
  5069. - * This function is called from zconflex_destroy(), so don't allocate here.
  5070. - */
  5071. -
  5072. - (yy_buffer_stack) = 0;
  5073. - (yy_buffer_stack_top) = 0;
  5074. - (yy_buffer_stack_max) = 0;
  5075. - (yy_c_buf_p) = (char *) 0;
  5076. - (yy_init) = 0;
  5077. - (yy_start) = 0;
  5078. -
  5079. -/* Defined in main.c */
  5080. -#ifdef YY_STDINIT
  5081. - zconfin = stdin;
  5082. - zconfout = stdout;
  5083. -#else
  5084. - zconfin = (FILE *) 0;
  5085. - zconfout = (FILE *) 0;
  5086. -#endif
  5087. -
  5088. - /* For future reference: Set errno on error, since we are called by
  5089. - * zconflex_init()
  5090. - */
  5091. - return 0;
  5092. -}
  5093. -
  5094. -/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
  5095. -int zconflex_destroy (void)
  5096. -{
  5097. -
  5098. - /* Pop the buffer stack, destroying each element. */
  5099. - while(YY_CURRENT_BUFFER){
  5100. - zconf_delete_buffer(YY_CURRENT_BUFFER );
  5101. - YY_CURRENT_BUFFER_LVALUE = NULL;
  5102. - zconfpop_buffer_state();
  5103. - }
  5104. -
  5105. - /* Destroy the stack itself. */
  5106. - zconffree((yy_buffer_stack) );
  5107. - (yy_buffer_stack) = NULL;
  5108. -
  5109. - /* Reset the globals. This is important in a non-reentrant scanner so the next time
  5110. - * zconflex() is called, initialization will occur. */
  5111. - yy_init_globals( );
  5112. -
  5113. - return 0;
  5114. -}
  5115. -
  5116. -/*
  5117. - * Internal utility routines.
  5118. - */
  5119. -
  5120. -#ifndef yytext_ptr
  5121. -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
  5122. -{
  5123. - register int i;
  5124. - for ( i = 0; i < n; ++i )
  5125. - s1[i] = s2[i];
  5126. -}
  5127. -#endif
  5128. -
  5129. -#ifdef YY_NEED_STRLEN
  5130. -static int yy_flex_strlen (yyconst char * s )
  5131. -{
  5132. - register int n;
  5133. - for ( n = 0; s[n]; ++n )
  5134. - ;
  5135. -
  5136. - return n;
  5137. -}
  5138. -#endif
  5139. -
  5140. -void *zconfalloc (yy_size_t size )
  5141. -{
  5142. - return (void *) malloc( size );
  5143. -}
  5144. -
  5145. -void *zconfrealloc (void * ptr, yy_size_t size )
  5146. -{
  5147. - /* The cast to (char *) in the following accommodates both
  5148. - * implementations that use char* generic pointers, and those
  5149. - * that use void* generic pointers. It works with the latter
  5150. - * because both ANSI C and C++ allow castless assignment from
  5151. - * any pointer type to void*, and deal with argument conversions
  5152. - * as though doing an assignment.
  5153. - */
  5154. - return (void *) realloc( (char *) ptr, size );
  5155. -}
  5156. -
  5157. -void zconffree (void * ptr )
  5158. -{
  5159. - free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
  5160. -}
  5161. -
  5162. -#define YYTABLES_NAME "yytables"
  5163. -
  5164. -void zconf_starthelp(void)
  5165. -{
  5166. - new_string();
  5167. - last_ts = first_ts = 0;
  5168. - BEGIN(HELP);
  5169. -}
  5170. -
  5171. -static void zconf_endhelp(void)
  5172. -{
  5173. - zconflval.string = text;
  5174. - BEGIN(INITIAL);
  5175. -}
  5176. -
  5177. -/*
  5178. - * Try to open specified file with following names:
  5179. - * ./name
  5180. - * $(srctree)/name
  5181. - * The latter is used when srctree is separate from objtree
  5182. - * when compiling the kernel.
  5183. - * Return NULL if file is not found.
  5184. - */
  5185. -FILE *zconf_fopen(const char *name)
  5186. -{
  5187. - char *env, fullname[PATH_MAX+1];
  5188. - FILE *f;
  5189. -
  5190. - f = fopen(name, "r");
  5191. - if (!f && name != NULL && name[0] != '/') {
  5192. - env = getenv(SRCTREE);
  5193. - if (env) {
  5194. - sprintf(fullname, "%s/%s", env, name);
  5195. - f = fopen(fullname, "r");
  5196. - }
  5197. - }
  5198. - return f;
  5199. -}
  5200. -
  5201. -void zconf_initscan(const char *name)
  5202. -{
  5203. - zconfin = zconf_fopen(name);
  5204. - if (!zconfin) {
  5205. - printf("can't find file %s\n", name);
  5206. - exit(1);
  5207. - }
  5208. -
  5209. - current_buf = malloc(sizeof(*current_buf));
  5210. - memset(current_buf, 0, sizeof(*current_buf));
  5211. -
  5212. - current_file = file_lookup(name);
  5213. - current_file->lineno = 1;
  5214. - current_file->flags = FILE_BUSY;
  5215. -}
  5216. -
  5217. -void zconf_nextfile(const char *name)
  5218. -{
  5219. - struct file *file = file_lookup(name);
  5220. - struct buffer *buf = malloc(sizeof(*buf));
  5221. - memset(buf, 0, sizeof(*buf));
  5222. -
  5223. - current_buf->state = YY_CURRENT_BUFFER;
  5224. - zconfin = zconf_fopen(name);
  5225. - if (!zconfin) {
  5226. - printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
  5227. - exit(1);
  5228. - }
  5229. - zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
  5230. - buf->parent = current_buf;
  5231. - current_buf = buf;
  5232. -
  5233. - if (file->flags & FILE_BUSY) {
  5234. - printf("%s:%d: do not source '%s' from itself\n",
  5235. - zconf_curname(), zconf_lineno(), name);
  5236. - exit(1);
  5237. - }
  5238. - if (file->flags & FILE_SCANNED) {
  5239. - printf("%s:%d: file '%s' is already sourced from '%s'\n",
  5240. - zconf_curname(), zconf_lineno(), name,
  5241. - file->parent->name);
  5242. - exit(1);
  5243. - }
  5244. - file->flags |= FILE_BUSY;
  5245. - file->lineno = 1;
  5246. - file->parent = current_file;
  5247. - current_file = file;
  5248. -}
  5249. -
  5250. -static void zconf_endfile(void)
  5251. -{
  5252. - struct buffer *parent;
  5253. -
  5254. - current_file->flags |= FILE_SCANNED;
  5255. - current_file->flags &= ~FILE_BUSY;
  5256. - current_file = current_file->parent;
  5257. -
  5258. - parent = current_buf->parent;
  5259. - if (parent) {
  5260. - fclose(zconfin);
  5261. - zconf_delete_buffer(YY_CURRENT_BUFFER);
  5262. - zconf_switch_to_buffer(parent->state);
  5263. - }
  5264. - free(current_buf);
  5265. - current_buf = parent;
  5266. -}
  5267. -
  5268. -int zconf_lineno(void)
  5269. -{
  5270. - return current_pos.lineno;
  5271. -}
  5272. -
  5273. -char *zconf_curname(void)
  5274. -{
  5275. - return current_pos.file ? current_pos.file->name : "<none>";
  5276. -}
  5277. -
  5278. diff -Nur uClibc-0.9.33.2/extra/config/list.h uClibc-git/extra/config/list.h
  5279. --- uClibc-0.9.33.2/extra/config/list.h 1970-01-01 01:00:00.000000000 +0100
  5280. +++ uClibc-git/extra/config/list.h 2014-02-03 12:32:56.000000000 +0100
  5281. @@ -0,0 +1,131 @@
  5282. +#ifndef LIST_H
  5283. +#define LIST_H
  5284. +
  5285. +/*
  5286. + * Copied from include/linux/...
  5287. + */
  5288. +
  5289. +#undef offsetof
  5290. +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  5291. +
  5292. +/**
  5293. + * container_of - cast a member of a structure out to the containing structure
  5294. + * @ptr: the pointer to the member.
  5295. + * @type: the type of the container struct this is embedded in.
  5296. + * @member: the name of the member within the struct.
  5297. + *
  5298. + */
  5299. +#define container_of(ptr, type, member) ({ \
  5300. + const typeof( ((type *)0)->member ) *__mptr = (ptr); \
  5301. + (type *)( (char *)__mptr - offsetof(type,member) );})
  5302. +
  5303. +
  5304. +struct list_head {
  5305. + struct list_head *next, *prev;
  5306. +};
  5307. +
  5308. +
  5309. +#define LIST_HEAD_INIT(name) { &(name), &(name) }
  5310. +
  5311. +#define LIST_HEAD(name) \
  5312. + struct list_head name = LIST_HEAD_INIT(name)
  5313. +
  5314. +/**
  5315. + * list_entry - get the struct for this entry
  5316. + * @ptr: the &struct list_head pointer.
  5317. + * @type: the type of the struct this is embedded in.
  5318. + * @member: the name of the list_struct within the struct.
  5319. + */
  5320. +#define list_entry(ptr, type, member) \
  5321. + container_of(ptr, type, member)
  5322. +
  5323. +/**
  5324. + * list_for_each_entry - iterate over list of given type
  5325. + * @pos: the type * to use as a loop cursor.
  5326. + * @head: the head for your list.
  5327. + * @member: the name of the list_struct within the struct.
  5328. + */
  5329. +#define list_for_each_entry(pos, head, member) \
  5330. + for (pos = list_entry((head)->next, typeof(*pos), member); \
  5331. + &pos->member != (head); \
  5332. + pos = list_entry(pos->member.next, typeof(*pos), member))
  5333. +
  5334. +/**
  5335. + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
  5336. + * @pos: the type * to use as a loop cursor.
  5337. + * @n: another type * to use as temporary storage
  5338. + * @head: the head for your list.
  5339. + * @member: the name of the list_struct within the struct.
  5340. + */
  5341. +#define list_for_each_entry_safe(pos, n, head, member) \
  5342. + for (pos = list_entry((head)->next, typeof(*pos), member), \
  5343. + n = list_entry(pos->member.next, typeof(*pos), member); \
  5344. + &pos->member != (head); \
  5345. + pos = n, n = list_entry(n->member.next, typeof(*n), member))
  5346. +
  5347. +/**
  5348. + * list_empty - tests whether a list is empty
  5349. + * @head: the list to test.
  5350. + */
  5351. +static inline int list_empty(const struct list_head *head)
  5352. +{
  5353. + return head->next == head;
  5354. +}
  5355. +
  5356. +/*
  5357. + * Insert a new entry between two known consecutive entries.
  5358. + *
  5359. + * This is only for internal list manipulation where we know
  5360. + * the prev/next entries already!
  5361. + */
  5362. +static inline void __list_add(struct list_head *_new,
  5363. + struct list_head *prev,
  5364. + struct list_head *next)
  5365. +{
  5366. + next->prev = _new;
  5367. + _new->next = next;
  5368. + _new->prev = prev;
  5369. + prev->next = _new;
  5370. +}
  5371. +
  5372. +/**
  5373. + * list_add_tail - add a new entry
  5374. + * @new: new entry to be added
  5375. + * @head: list head to add it before
  5376. + *
  5377. + * Insert a new entry before the specified head.
  5378. + * This is useful for implementing queues.
  5379. + */
  5380. +static inline void list_add_tail(struct list_head *_new, struct list_head *head)
  5381. +{
  5382. + __list_add(_new, head->prev, head);
  5383. +}
  5384. +
  5385. +/*
  5386. + * Delete a list entry by making the prev/next entries
  5387. + * point to each other.
  5388. + *
  5389. + * This is only for internal list manipulation where we know
  5390. + * the prev/next entries already!
  5391. + */
  5392. +static inline void __list_del(struct list_head *prev, struct list_head *next)
  5393. +{
  5394. + next->prev = prev;
  5395. + prev->next = next;
  5396. +}
  5397. +
  5398. +#define LIST_POISON1 ((void *) 0x00100100)
  5399. +#define LIST_POISON2 ((void *) 0x00200200)
  5400. +/**
  5401. + * list_del - deletes entry from list.
  5402. + * @entry: the element to delete from the list.
  5403. + * Note: list_empty() on entry does not return true after this, the entry is
  5404. + * in an undefined state.
  5405. + */
  5406. +static inline void list_del(struct list_head *entry)
  5407. +{
  5408. + __list_del(entry->prev, entry->next);
  5409. + entry->next = (struct list_head*)LIST_POISON1;
  5410. + entry->prev = (struct list_head*)LIST_POISON2;
  5411. +}
  5412. +#endif
  5413. diff -Nur uClibc-0.9.33.2/extra/config/lkc.h uClibc-git/extra/config/lkc.h
  5414. --- uClibc-0.9.33.2/extra/config/lkc.h 2012-05-15 09:20:09.000000000 +0200
  5415. +++ uClibc-git/extra/config/lkc.h 2014-02-03 12:32:56.000000000 +0100
  5416. @@ -14,29 +14,37 @@
  5417. static inline const char *gettext(const char *txt) { return txt; }
  5418. static inline void textdomain(const char *domainname) {}
  5419. static inline void bindtextdomain(const char *name, const char *dir) {}
  5420. +static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; }
  5421. #endif
  5422. #ifdef __cplusplus
  5423. extern "C" {
  5424. #endif
  5425. -#ifdef LKC_DIRECT_LINK
  5426. #define P(name,type,arg) extern type name arg
  5427. -#else
  5428. -#include "lkc_defs.h"
  5429. -#define P(name,type,arg) extern type (*name ## _p) arg
  5430. -#endif
  5431. #include "lkc_proto.h"
  5432. #undef P
  5433. #define SRCTREE "srctree"
  5434. +#ifndef PACKAGE
  5435. #define PACKAGE "linux"
  5436. +#endif
  5437. +
  5438. #define LOCALEDIR "/usr/share/locale"
  5439. #define _(text) gettext(text)
  5440. #define N_(text) (text)
  5441. +#ifndef CONFIG_
  5442. +#define CONFIG_ "CONFIG_"
  5443. +#endif
  5444. +static inline const char *CONFIG_prefix(void)
  5445. +{
  5446. + return getenv( "CONFIG_" ) ?: CONFIG_;
  5447. +}
  5448. +#undef CONFIG_
  5449. +#define CONFIG_ CONFIG_prefix()
  5450. #define TF_COMMAND 0x0001
  5451. #define TF_PARAM 0x0002
  5452. @@ -61,35 +69,49 @@
  5453. enum symbol_type stype;
  5454. };
  5455. +extern int zconfdebug;
  5456. +
  5457. int zconfparse(void);
  5458. void zconfdump(FILE *out);
  5459. -
  5460. -extern int zconfdebug;
  5461. void zconf_starthelp(void);
  5462. FILE *zconf_fopen(const char *name);
  5463. void zconf_initscan(const char *name);
  5464. void zconf_nextfile(const char *name);
  5465. int zconf_lineno(void);
  5466. -char *zconf_curname(void);
  5467. +const char *zconf_curname(void);
  5468. /* confdata.c */
  5469. const char *conf_get_configname(void);
  5470. +const char *conf_get_autoconfig_name(void);
  5471. char *conf_get_default_confname(void);
  5472. void sym_set_change_count(int count);
  5473. void sym_add_change_count(int count);
  5474. -void conf_set_all_new_symbols(enum conf_def_mode mode);
  5475. +bool conf_set_all_new_symbols(enum conf_def_mode mode);
  5476. +void set_all_choice_values(struct symbol *csym);
  5477. +
  5478. +struct conf_printer {
  5479. + void (*print_symbol)(FILE *, struct symbol *, const char *, void *);
  5480. + void (*print_comment)(FILE *, const char *, void *);
  5481. +};
  5482. -/* kconfig_load.c */
  5483. -void kconfig_load(void);
  5484. +/* confdata.c and expr.c */
  5485. +static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out)
  5486. +{
  5487. + assert(len != 0);
  5488. +
  5489. + if (fwrite(str, len, count, out) != count)
  5490. + fprintf(stderr, "Error in writing or end of file.\n");
  5491. +}
  5492. /* menu.c */
  5493. -void menu_init(void);
  5494. +void _menu_init(void);
  5495. void menu_warn(struct menu *menu, const char *fmt, ...);
  5496. struct menu *menu_add_menu(void);
  5497. void menu_end_menu(void);
  5498. void menu_add_entry(struct symbol *sym);
  5499. void menu_end_entry(void);
  5500. void menu_add_dep(struct expr *dep);
  5501. +void menu_add_visibility(struct expr *dep);
  5502. struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
  5503. struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
  5504. void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
  5505. @@ -101,10 +123,19 @@
  5506. /* util.c */
  5507. struct file *file_lookup(const char *name);
  5508. int file_write_dep(const char *name);
  5509. +void *xmalloc(size_t size);
  5510. +void *xcalloc(size_t nmemb, size_t size);
  5511. +char *dir_name(char *path);
  5512. +char *base_name(char *path);
  5513. struct gstr {
  5514. size_t len;
  5515. char *s;
  5516. + /*
  5517. + * when max_width is not zero long lines in string s (if any) get
  5518. + * wrapped not to exceed the max_width value
  5519. + */
  5520. + int max_width;
  5521. };
  5522. struct gstr str_new(void);
  5523. struct gstr str_assign(const char *s);
  5524. @@ -120,6 +151,8 @@
  5525. void sym_clear_all_valid(void);
  5526. void sym_set_all_changed(void);
  5527. void sym_set_changed(struct symbol *sym);
  5528. +struct symbol *sym_choice_default(struct symbol *sym);
  5529. +const char *sym_get_string_default(struct symbol *sym);
  5530. struct symbol *sym_check_deps(struct symbol *sym);
  5531. struct property *prop_alloc(enum prop_type type, struct symbol *sym);
  5532. struct symbol *prop_get_symbol(struct property *prop);
  5533. diff -Nur uClibc-0.9.33.2/extra/config/lkc_proto.h uClibc-git/extra/config/lkc_proto.h
  5534. --- uClibc-0.9.33.2/extra/config/lkc_proto.h 2012-05-15 09:20:09.000000000 +0200
  5535. +++ uClibc-git/extra/config/lkc_proto.h 2014-02-03 12:32:56.000000000 +0100
  5536. @@ -1,28 +1,40 @@
  5537. +#include <stdarg.h>
  5538. /* confdata.c */
  5539. P(conf_parse,void,(const char *name));
  5540. P(conf_read,int,(const char *name));
  5541. P(conf_read_simple,int,(const char *name, int));
  5542. +P(conf_write_defconfig,int,(const char *name));
  5543. P(conf_write,int,(const char *name));
  5544. P(conf_write_autoconf,int,(void));
  5545. P(conf_get_changed,bool,(void));
  5546. P(conf_set_changed_callback, void,(void (*fn)(void)));
  5547. +P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap)));
  5548. /* menu.c */
  5549. P(rootmenu,struct menu,);
  5550. -P(menu_is_visible,bool,(struct menu *menu));
  5551. +P(menu_is_empty, bool, (struct menu *menu));
  5552. +P(menu_is_visible, bool, (struct menu *menu));
  5553. +P(menu_has_prompt, bool, (struct menu *menu));
  5554. P(menu_get_prompt,const char *,(struct menu *menu));
  5555. P(menu_get_root_menu,struct menu *,(struct menu *menu));
  5556. P(menu_get_parent_menu,struct menu *,(struct menu *menu));
  5557. P(menu_has_help,bool,(struct menu *menu));
  5558. P(menu_get_help,const char *,(struct menu *menu));
  5559. +P(get_symbol_str, void, (struct gstr *r, struct symbol *sym, struct list_head
  5560. + *head));
  5561. +P(get_relations_str, struct gstr, (struct symbol **sym_arr, struct list_head
  5562. + *head));
  5563. +P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help));
  5564. /* symbol.c */
  5565. P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
  5566. P(sym_lookup,struct symbol *,(const char *name, int flags));
  5567. P(sym_find,struct symbol *,(const char *name));
  5568. +P(sym_expand_string_value,const char *,(const char *in));
  5569. +P(sym_escape_string_value, const char *,(const char *in));
  5570. P(sym_re_search,struct symbol **,(const char *pattern));
  5571. P(sym_type_name,const char *,(enum symbol_type type));
  5572. P(sym_calc_value,void,(struct symbol *sym));
  5573. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/checklist.c uClibc-git/extra/config/lxdialog/checklist.c
  5574. --- uClibc-0.9.33.2/extra/config/lxdialog/checklist.c 2012-05-15 09:20:09.000000000 +0200
  5575. +++ uClibc-git/extra/config/lxdialog/checklist.c 2014-02-03 12:32:56.000000000 +0100
  5576. @@ -31,6 +31,10 @@
  5577. static void print_item(WINDOW * win, int choice, int selected)
  5578. {
  5579. int i;
  5580. + char *list_item = malloc(list_width + 1);
  5581. +
  5582. + strncpy(list_item, item_str(), list_width - item_x);
  5583. + list_item[list_width - item_x] = '\0';
  5584. /* Clear 'residue' of last item */
  5585. wattrset(win, dlg.menubox.atr);
  5586. @@ -41,16 +45,18 @@
  5587. wmove(win, choice, check_x);
  5588. wattrset(win, selected ? dlg.check_selected.atr
  5589. : dlg.check.atr);
  5590. - wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
  5591. + if (!item_is_tag(':'))
  5592. + wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
  5593. wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
  5594. - mvwaddch(win, choice, item_x, item_str()[0]);
  5595. + mvwaddch(win, choice, item_x, list_item[0]);
  5596. wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
  5597. - waddstr(win, (char *)item_str() + 1);
  5598. + waddstr(win, list_item + 1);
  5599. if (selected) {
  5600. wmove(win, choice, check_x + 1);
  5601. wrefresh(win);
  5602. }
  5603. + free(list_item);
  5604. }
  5605. /*
  5606. @@ -126,16 +132,16 @@
  5607. }
  5608. do_resize:
  5609. - if (getmaxy(stdscr) < (height + 6))
  5610. + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN))
  5611. return -ERRDISPLAYTOOSMALL;
  5612. - if (getmaxx(stdscr) < (width + 6))
  5613. + if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN))
  5614. return -ERRDISPLAYTOOSMALL;
  5615. max_choice = MIN(list_height, item_count());
  5616. /* center dialog box on screen */
  5617. - x = (COLS - width) / 2;
  5618. - y = (LINES - height) / 2;
  5619. + x = (getmaxx(stdscr) - width) / 2;
  5620. + y = (getmaxy(stdscr) - height) / 2;
  5621. draw_shadow(stdscr, y, x, height, width);
  5622. @@ -174,6 +180,7 @@
  5623. check_x = 0;
  5624. item_foreach()
  5625. check_x = MAX(check_x, strlen(item_str()) + 4);
  5626. + check_x = MIN(check_x, list_width);
  5627. check_x = (list_width - check_x) / 2;
  5628. item_x = check_x + 4;
  5629. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/check-lxdialog.sh uClibc-git/extra/config/lxdialog/check-lxdialog.sh
  5630. --- uClibc-0.9.33.2/extra/config/lxdialog/check-lxdialog.sh 2012-05-15 09:20:09.000000000 +0200
  5631. +++ uClibc-git/extra/config/lxdialog/check-lxdialog.sh 2014-02-03 12:32:56.000000000 +0100
  5632. @@ -4,7 +4,9 @@
  5633. # What library to link
  5634. ldflags()
  5635. {
  5636. - for ext in so a dylib ; do
  5637. + pkg-config --libs ncursesw 2>/dev/null && exit
  5638. + pkg-config --libs ncurses 2>/dev/null && exit
  5639. + for ext in so a dll.a dylib ; do
  5640. for lib in ncursesw ncurses curses ; do
  5641. $cc -print-file-name=lib${lib}.${ext} | grep -q /
  5642. if [ $? -eq 0 ]; then
  5643. @@ -19,14 +21,13 @@
  5644. # Where is ncurses.h?
  5645. ccflags()
  5646. {
  5647. - if [ -f /usr/include/ncursesw/ncurses.h ]; then
  5648. - echo '-I/usr/include/ncursesw -DCURSES_LOC="<ncurses.h>"'
  5649. - elif [ -f /usr/include/ncursesw/curses.h ]; then
  5650. - echo '-I/usr/include/ncursesw -DCURSES_LOC="<ncursesw/curses.h>"'
  5651. + if [ -f /usr/include/ncursesw/curses.h ]; then
  5652. + echo '-I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"'
  5653. + echo ' -DNCURSES_WIDECHAR=1'
  5654. elif [ -f /usr/include/ncurses/ncurses.h ]; then
  5655. echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
  5656. elif [ -f /usr/include/ncurses/curses.h ]; then
  5657. - echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"'
  5658. + echo '-I/usr/include/ncurses -DCURSES_LOC="<curses.h>"'
  5659. elif [ -f /usr/include/ncurses.h ]; then
  5660. echo '-DCURSES_LOC="<ncurses.h>"'
  5661. else
  5662. @@ -40,7 +41,7 @@
  5663. # Check if we can link to ncurses
  5664. check() {
  5665. - $cc -xc - -o $tmp 2>/dev/null <<'EOF'
  5666. + $cc -x c - -o $tmp 2>/dev/null <<'EOF'
  5667. #include CURSES_LOC
  5668. main() {}
  5669. EOF
  5670. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/dialog.h uClibc-git/extra/config/lxdialog/dialog.h
  5671. --- uClibc-0.9.33.2/extra/config/lxdialog/dialog.h 2012-05-15 09:20:09.000000000 +0200
  5672. +++ uClibc-git/extra/config/lxdialog/dialog.h 2014-02-03 12:32:56.000000000 +0100
  5673. @@ -106,8 +106,14 @@
  5674. int hl; /* highlight this item */
  5675. };
  5676. +struct subtitle_list {
  5677. + struct subtitle_list *next;
  5678. + const char *text;
  5679. +};
  5680. +
  5681. struct dialog_info {
  5682. const char *backtitle;
  5683. + struct subtitle_list *subtitles;
  5684. struct dialog_color screen;
  5685. struct dialog_color shadow;
  5686. struct dialog_color dialog;
  5687. @@ -144,6 +150,7 @@
  5688. */
  5689. extern struct dialog_info dlg;
  5690. extern char dialog_input_result[];
  5691. +extern int saved_x, saved_y; /* Needed in signal handler in mconf.c */
  5692. /*
  5693. * Function prototypes
  5694. @@ -193,8 +200,23 @@
  5695. int on_key_esc(WINDOW *win);
  5696. int on_key_resize(void);
  5697. +/* minimum (re)size values */
  5698. +#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */
  5699. +#define CHECKLIST_WIDTH_MIN 6
  5700. +#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */
  5701. +#define INPUTBOX_WIDTH_MIN 2
  5702. +#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */
  5703. +#define MENUBOX_WIDTH_MIN 65
  5704. +#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */
  5705. +#define TEXTBOX_WIDTH_MIN 8
  5706. +#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */
  5707. +#define YESNO_WIDTH_MIN 4
  5708. +#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */
  5709. +#define WINDOW_WIDTH_MIN 80
  5710. +
  5711. int init_dialog(const char *backtitle);
  5712. void set_dialog_backtitle(const char *backtitle);
  5713. +void set_dialog_subtitles(struct subtitle_list *subtitles);
  5714. void end_dialog(int x, int y);
  5715. void attr_clear(WINDOW * win, int height, int width, chtype attr);
  5716. void dialog_clear(void);
  5717. @@ -209,12 +231,17 @@
  5718. int dialog_yesno(const char *title, const char *prompt, int height, int width);
  5719. int dialog_msgbox(const char *title, const char *prompt, int height,
  5720. int width, int pause);
  5721. -int dialog_textbox(const char *title, const char *file, int height, int width);
  5722. +
  5723. +
  5724. +typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void
  5725. + *_data);
  5726. +int dialog_textbox(const char *title, char *tbuf, int initial_height,
  5727. + int initial_width, int *keys, int *_vscroll, int *_hscroll,
  5728. + update_text_fn update_text, void *data);
  5729. int dialog_menu(const char *title, const char *prompt,
  5730. const void *selected, int *s_scroll);
  5731. int dialog_checklist(const char *title, const char *prompt, int height,
  5732. int width, int list_height);
  5733. -extern char dialog_input_result[];
  5734. int dialog_inputbox(const char *title, const char *prompt, int height,
  5735. int width, const char *init);
  5736. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/inputbox.c uClibc-git/extra/config/lxdialog/inputbox.c
  5737. --- uClibc-0.9.33.2/extra/config/lxdialog/inputbox.c 2012-05-15 09:20:09.000000000 +0200
  5738. +++ uClibc-git/extra/config/lxdialog/inputbox.c 2014-02-03 12:32:56.000000000 +0100
  5739. @@ -45,7 +45,8 @@
  5740. const char *init)
  5741. {
  5742. int i, x, y, box_y, box_x, box_width;
  5743. - int input_x = 0, scroll = 0, key = 0, button = -1;
  5744. + int input_x = 0, key = 0, button = -1;
  5745. + int show_x, len, pos;
  5746. char *instr = dialog_input_result;
  5747. WINDOW *dialog;
  5748. @@ -55,14 +56,14 @@
  5749. strcpy(instr, init);
  5750. do_resize:
  5751. - if (getmaxy(stdscr) <= (height - 2))
  5752. + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN))
  5753. return -ERRDISPLAYTOOSMALL;
  5754. - if (getmaxx(stdscr) <= (width - 2))
  5755. + if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN))
  5756. return -ERRDISPLAYTOOSMALL;
  5757. /* center dialog box on screen */
  5758. - x = (COLS - width) / 2;
  5759. - y = (LINES - height) / 2;
  5760. + x = (getmaxx(stdscr) - width) / 2;
  5761. + y = (getmaxy(stdscr) - height) / 2;
  5762. draw_shadow(stdscr, y, x, height, width);
  5763. @@ -97,14 +98,17 @@
  5764. wmove(dialog, box_y, box_x);
  5765. wattrset(dialog, dlg.inputbox.atr);
  5766. - input_x = strlen(instr);
  5767. + len = strlen(instr);
  5768. + pos = len;
  5769. - if (input_x >= box_width) {
  5770. - scroll = input_x - box_width + 1;
  5771. + if (len >= box_width) {
  5772. + show_x = len - box_width + 1;
  5773. input_x = box_width - 1;
  5774. for (i = 0; i < box_width - 1; i++)
  5775. - waddch(dialog, instr[scroll + i]);
  5776. + waddch(dialog, instr[show_x + i]);
  5777. } else {
  5778. + show_x = 0;
  5779. + input_x = len;
  5780. waddstr(dialog, instr);
  5781. }
  5782. @@ -121,45 +125,104 @@
  5783. case KEY_UP:
  5784. case KEY_DOWN:
  5785. break;
  5786. - case KEY_LEFT:
  5787. - continue;
  5788. - case KEY_RIGHT:
  5789. - continue;
  5790. case KEY_BACKSPACE:
  5791. case 127:
  5792. - if (input_x || scroll) {
  5793. + if (pos) {
  5794. wattrset(dialog, dlg.inputbox.atr);
  5795. - if (!input_x) {
  5796. - scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
  5797. - wmove(dialog, box_y, box_x);
  5798. - for (i = 0; i < box_width; i++)
  5799. - waddch(dialog,
  5800. - instr[scroll + input_x + i] ?
  5801. - instr[scroll + input_x + i] : ' ');
  5802. - input_x = strlen(instr) - scroll;
  5803. + if (input_x == 0) {
  5804. + show_x--;
  5805. } else
  5806. input_x--;
  5807. - instr[scroll + input_x] = '\0';
  5808. - mvwaddch(dialog, box_y, input_x + box_x, ' ');
  5809. +
  5810. + if (pos < len) {
  5811. + for (i = pos - 1; i < len; i++) {
  5812. + instr[i] = instr[i+1];
  5813. + }
  5814. + }
  5815. +
  5816. + pos--;
  5817. + len--;
  5818. + instr[len] = '\0';
  5819. + wmove(dialog, box_y, box_x);
  5820. + for (i = 0; i < box_width; i++) {
  5821. + if (!instr[show_x + i]) {
  5822. + waddch(dialog, ' ');
  5823. + break;
  5824. + }
  5825. + waddch(dialog, instr[show_x + i]);
  5826. + }
  5827. wmove(dialog, box_y, input_x + box_x);
  5828. wrefresh(dialog);
  5829. }
  5830. continue;
  5831. + case KEY_LEFT:
  5832. + if (pos > 0) {
  5833. + if (input_x > 0) {
  5834. + wmove(dialog, box_y, --input_x + box_x);
  5835. + } else if (input_x == 0) {
  5836. + show_x--;
  5837. + wmove(dialog, box_y, box_x);
  5838. + for (i = 0; i < box_width; i++) {
  5839. + if (!instr[show_x + i]) {
  5840. + waddch(dialog, ' ');
  5841. + break;
  5842. + }
  5843. + waddch(dialog, instr[show_x + i]);
  5844. + }
  5845. + wmove(dialog, box_y, box_x);
  5846. + }
  5847. + pos--;
  5848. + }
  5849. + continue;
  5850. + case KEY_RIGHT:
  5851. + if (pos < len) {
  5852. + if (input_x < box_width - 1) {
  5853. + wmove(dialog, box_y, ++input_x + box_x);
  5854. + } else if (input_x == box_width - 1) {
  5855. + show_x++;
  5856. + wmove(dialog, box_y, box_x);
  5857. + for (i = 0; i < box_width; i++) {
  5858. + if (!instr[show_x + i]) {
  5859. + waddch(dialog, ' ');
  5860. + break;
  5861. + }
  5862. + waddch(dialog, instr[show_x + i]);
  5863. + }
  5864. + wmove(dialog, box_y, input_x + box_x);
  5865. + }
  5866. + pos++;
  5867. + }
  5868. + continue;
  5869. default:
  5870. if (key < 0x100 && isprint(key)) {
  5871. - if (scroll + input_x < MAX_LEN) {
  5872. + if (len < MAX_LEN) {
  5873. wattrset(dialog, dlg.inputbox.atr);
  5874. - instr[scroll + input_x] = key;
  5875. - instr[scroll + input_x + 1] = '\0';
  5876. + if (pos < len) {
  5877. + for (i = len; i > pos; i--)
  5878. + instr[i] = instr[i-1];
  5879. + instr[pos] = key;
  5880. + } else {
  5881. + instr[len] = key;
  5882. + }
  5883. + pos++;
  5884. + len++;
  5885. + instr[len] = '\0';
  5886. +
  5887. if (input_x == box_width - 1) {
  5888. - scroll++;
  5889. - wmove(dialog, box_y, box_x);
  5890. - for (i = 0; i < box_width - 1; i++)
  5891. - waddch(dialog, instr [scroll + i]);
  5892. + show_x++;
  5893. } else {
  5894. - wmove(dialog, box_y, input_x++ + box_x);
  5895. - waddch(dialog, key);
  5896. + input_x++;
  5897. + }
  5898. +
  5899. + wmove(dialog, box_y, box_x);
  5900. + for (i = 0; i < box_width; i++) {
  5901. + if (!instr[show_x + i]) {
  5902. + waddch(dialog, ' ');
  5903. + break;
  5904. + }
  5905. + waddch(dialog, instr[show_x + i]);
  5906. }
  5907. + wmove(dialog, box_y, input_x + box_x);
  5908. wrefresh(dialog);
  5909. } else
  5910. flash(); /* Alarm user about overflow */
  5911. @@ -180,7 +243,7 @@
  5912. case KEY_LEFT:
  5913. switch (button) {
  5914. case -1:
  5915. - button = 1; /* Indicates "Cancel" button is selected */
  5916. + button = 1; /* Indicates "Help" button is selected */
  5917. print_buttons(dialog, height, width, 1);
  5918. break;
  5919. case 0:
  5920. @@ -204,7 +267,7 @@
  5921. print_buttons(dialog, height, width, 0);
  5922. break;
  5923. case 0:
  5924. - button = 1; /* Indicates "Cancel" button is selected */
  5925. + button = 1; /* Indicates "Help" button is selected */
  5926. print_buttons(dialog, height, width, 1);
  5927. break;
  5928. case 1:
  5929. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/menubox.c uClibc-git/extra/config/lxdialog/menubox.c
  5930. --- uClibc-0.9.33.2/extra/config/lxdialog/menubox.c 2012-05-15 09:20:09.000000000 +0200
  5931. +++ uClibc-git/extra/config/lxdialog/menubox.c 2014-02-03 12:32:56.000000000 +0100
  5932. @@ -154,12 +154,14 @@
  5933. */
  5934. static void print_buttons(WINDOW * win, int height, int width, int selected)
  5935. {
  5936. - int x = width / 2 - 16;
  5937. + int x = width / 2 - 28;
  5938. int y = height - 2;
  5939. print_button(win, gettext("Select"), y, x, selected == 0);
  5940. print_button(win, gettext(" Exit "), y, x + 12, selected == 1);
  5941. print_button(win, gettext(" Help "), y, x + 24, selected == 2);
  5942. + print_button(win, gettext(" Save "), y, x + 36, selected == 3);
  5943. + print_button(win, gettext(" Load "), y, x + 48, selected == 4);
  5944. wmove(win, y, x + 1 + 12 * selected);
  5945. wrefresh(win);
  5946. @@ -191,7 +193,7 @@
  5947. do_resize:
  5948. height = getmaxy(stdscr);
  5949. width = getmaxx(stdscr);
  5950. - if (height < 15 || width < 65)
  5951. + if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN)
  5952. return -ERRDISPLAYTOOSMALL;
  5953. height -= 4;
  5954. @@ -201,8 +203,8 @@
  5955. max_choice = MIN(menu_height, item_count());
  5956. /* center dialog box on screen */
  5957. - x = (COLS - width) / 2;
  5958. - y = (LINES - height) / 2;
  5959. + x = (getmaxx(stdscr) - width) / 2;
  5960. + y = (getmaxy(stdscr) - height) / 2;
  5961. draw_shadow(stdscr, y, x, height, width);
  5962. @@ -301,10 +303,11 @@
  5963. }
  5964. }
  5965. - if (i < max_choice ||
  5966. - key == KEY_UP || key == KEY_DOWN ||
  5967. - key == '-' || key == '+' ||
  5968. - key == KEY_PPAGE || key == KEY_NPAGE) {
  5969. + if (item_count() != 0 &&
  5970. + (i < max_choice ||
  5971. + key == KEY_UP || key == KEY_DOWN ||
  5972. + key == '-' || key == '+' ||
  5973. + key == KEY_PPAGE || key == KEY_NPAGE)) {
  5974. /* Remove highligt of current item */
  5975. print_item(scroll + choice, choice, FALSE);
  5976. @@ -372,7 +375,7 @@
  5977. case TAB:
  5978. case KEY_RIGHT:
  5979. button = ((key == KEY_LEFT ? --button : ++button) < 0)
  5980. - ? 2 : (button > 2 ? 0 : button);
  5981. + ? 4 : (button > 4 ? 0 : button);
  5982. print_buttons(dialog, height, width, button);
  5983. wrefresh(menu);
  5984. @@ -383,6 +386,10 @@
  5985. case 'n':
  5986. case 'm':
  5987. case '/':
  5988. + case 'h':
  5989. + case '?':
  5990. + case 'z':
  5991. + case '\n':
  5992. /* save scroll info */
  5993. *s_scroll = scroll;
  5994. delwin(menu);
  5995. @@ -390,30 +397,26 @@
  5996. item_set(scroll + choice);
  5997. item_set_selected(1);
  5998. switch (key) {
  5999. + case 'h':
  6000. + case '?':
  6001. + return 2;
  6002. case 's':
  6003. - return 3;
  6004. case 'y':
  6005. - return 3;
  6006. + return 5;
  6007. case 'n':
  6008. - return 4;
  6009. + return 6;
  6010. case 'm':
  6011. - return 5;
  6012. + return 7;
  6013. case ' ':
  6014. - return 6;
  6015. + return 8;
  6016. case '/':
  6017. - return 7;
  6018. + return 9;
  6019. + case 'z':
  6020. + return 10;
  6021. + case '\n':
  6022. + return button;
  6023. }
  6024. return 0;
  6025. - case 'h':
  6026. - case '?':
  6027. - button = 2;
  6028. - case '\n':
  6029. - *s_scroll = scroll;
  6030. - delwin(menu);
  6031. - delwin(dialog);
  6032. - item_set(scroll + choice);
  6033. - item_set_selected(1);
  6034. - return button;
  6035. case 'e':
  6036. case 'x':
  6037. key = KEY_ESC;
  6038. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/textbox.c uClibc-git/extra/config/lxdialog/textbox.c
  6039. --- uClibc-0.9.33.2/extra/config/lxdialog/textbox.c 2012-05-15 09:20:09.000000000 +0200
  6040. +++ uClibc-git/extra/config/lxdialog/textbox.c 2014-02-03 12:32:56.000000000 +0100
  6041. @@ -22,23 +22,25 @@
  6042. #include "dialog.h"
  6043. static void back_lines(int n);
  6044. -static void print_page(WINDOW * win, int height, int width);
  6045. -static void print_line(WINDOW * win, int row, int width);
  6046. +static void print_page(WINDOW *win, int height, int width, update_text_fn
  6047. + update_text, void *data);
  6048. +static void print_line(WINDOW *win, int row, int width);
  6049. static char *get_line(void);
  6050. static void print_position(WINDOW * win);
  6051. static int hscroll;
  6052. static int begin_reached, end_reached, page_length;
  6053. -static const char *buf;
  6054. -static const char *page;
  6055. +static char *buf;
  6056. +static char *page;
  6057. /*
  6058. * refresh window content
  6059. */
  6060. static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw,
  6061. - int cur_y, int cur_x)
  6062. + int cur_y, int cur_x, update_text_fn update_text,
  6063. + void *data)
  6064. {
  6065. - print_page(box, boxh, boxw);
  6066. + print_page(box, boxh, boxw, update_text, data);
  6067. print_position(dialog);
  6068. wmove(dialog, cur_y, cur_x); /* Restore cursor position */
  6069. wrefresh(dialog);
  6070. @@ -47,14 +49,18 @@
  6071. /*
  6072. * Display text from a file in a dialog box.
  6073. + *
  6074. + * keys is a null-terminated array
  6075. + * update_text() may not add or remove any '\n' or '\0' in tbuf
  6076. */
  6077. -int dialog_textbox(const char *title, const char *tbuf,
  6078. - int initial_height, int initial_width)
  6079. +int dialog_textbox(const char *title, char *tbuf, int initial_height,
  6080. + int initial_width, int *keys, int *_vscroll, int *_hscroll,
  6081. + update_text_fn update_text, void *data)
  6082. {
  6083. int i, x, y, cur_x, cur_y, key = 0;
  6084. int height, width, boxh, boxw;
  6085. - int passed_end;
  6086. WINDOW *dialog, *box;
  6087. + bool done = false;
  6088. begin_reached = 1;
  6089. end_reached = 0;
  6090. @@ -63,9 +69,18 @@
  6091. buf = tbuf;
  6092. page = buf; /* page is pointer to start of page to be displayed */
  6093. + if (_vscroll && *_vscroll) {
  6094. + begin_reached = 0;
  6095. +
  6096. + for (i = 0; i < *_vscroll; i++)
  6097. + get_line();
  6098. + }
  6099. + if (_hscroll)
  6100. + hscroll = *_hscroll;
  6101. +
  6102. do_resize:
  6103. getmaxyx(stdscr, height, width);
  6104. - if (height < 8 || width < 8)
  6105. + if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN)
  6106. return -ERRDISPLAYTOOSMALL;
  6107. if (initial_height != 0)
  6108. height = initial_height;
  6109. @@ -83,8 +98,8 @@
  6110. width = 0;
  6111. /* center dialog box on screen */
  6112. - x = (COLS - width) / 2;
  6113. - y = (LINES - height) / 2;
  6114. + x = (getmaxx(stdscr) - width) / 2;
  6115. + y = (getmaxy(stdscr) - height) / 2;
  6116. draw_shadow(stdscr, y, x, height, width);
  6117. @@ -120,25 +135,28 @@
  6118. /* Print first page of text */
  6119. attr_clear(box, boxh, boxw, dlg.dialog.atr);
  6120. - refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
  6121. + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text,
  6122. + data);
  6123. - while ((key != KEY_ESC) && (key != '\n')) {
  6124. + while (!done) {
  6125. key = wgetch(dialog);
  6126. switch (key) {
  6127. case 'E': /* Exit */
  6128. case 'e':
  6129. case 'X':
  6130. case 'x':
  6131. - delwin(box);
  6132. - delwin(dialog);
  6133. - return 0;
  6134. + case 'q':
  6135. + case '\n':
  6136. + done = true;
  6137. + break;
  6138. case 'g': /* First page */
  6139. case KEY_HOME:
  6140. if (!begin_reached) {
  6141. begin_reached = 1;
  6142. page = buf;
  6143. refresh_text_box(dialog, box, boxh, boxw,
  6144. - cur_y, cur_x);
  6145. + cur_y, cur_x, update_text,
  6146. + data);
  6147. }
  6148. break;
  6149. case 'G': /* Last page */
  6150. @@ -148,78 +166,48 @@
  6151. /* point to last char in buf */
  6152. page = buf + strlen(buf);
  6153. back_lines(boxh);
  6154. - refresh_text_box(dialog, box, boxh, boxw,
  6155. - cur_y, cur_x);
  6156. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6157. + cur_x, update_text, data);
  6158. break;
  6159. case 'K': /* Previous line */
  6160. case 'k':
  6161. case KEY_UP:
  6162. - if (!begin_reached) {
  6163. - back_lines(page_length + 1);
  6164. -
  6165. - /* We don't call print_page() here but use
  6166. - * scrolling to ensure faster screen update.
  6167. - * However, 'end_reached' and 'page_length'
  6168. - * should still be updated, and 'page' should
  6169. - * point to start of next page. This is done
  6170. - * by calling get_line() in the following
  6171. - * 'for' loop. */
  6172. - scrollok(box, TRUE);
  6173. - wscrl(box, -1); /* Scroll box region down one line */
  6174. - scrollok(box, FALSE);
  6175. - page_length = 0;
  6176. - passed_end = 0;
  6177. - for (i = 0; i < boxh; i++) {
  6178. - if (!i) {
  6179. - /* print first line of page */
  6180. - print_line(box, 0, boxw);
  6181. - wnoutrefresh(box);
  6182. - } else
  6183. - /* Called to update 'end_reached' and 'page' */
  6184. - get_line();
  6185. - if (!passed_end)
  6186. - page_length++;
  6187. - if (end_reached && !passed_end)
  6188. - passed_end = 1;
  6189. - }
  6190. + if (begin_reached)
  6191. + break;
  6192. - print_position(dialog);
  6193. - wmove(dialog, cur_y, cur_x); /* Restore cursor position */
  6194. - wrefresh(dialog);
  6195. - }
  6196. + back_lines(page_length + 1);
  6197. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6198. + cur_x, update_text, data);
  6199. break;
  6200. case 'B': /* Previous page */
  6201. case 'b':
  6202. + case 'u':
  6203. case KEY_PPAGE:
  6204. if (begin_reached)
  6205. break;
  6206. back_lines(page_length + boxh);
  6207. - refresh_text_box(dialog, box, boxh, boxw,
  6208. - cur_y, cur_x);
  6209. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6210. + cur_x, update_text, data);
  6211. break;
  6212. case 'J': /* Next line */
  6213. case 'j':
  6214. case KEY_DOWN:
  6215. - if (!end_reached) {
  6216. - begin_reached = 0;
  6217. - scrollok(box, TRUE);
  6218. - scroll(box); /* Scroll box region up one line */
  6219. - scrollok(box, FALSE);
  6220. - print_line(box, boxh - 1, boxw);
  6221. - wnoutrefresh(box);
  6222. - print_position(dialog);
  6223. - wmove(dialog, cur_y, cur_x); /* Restore cursor position */
  6224. - wrefresh(dialog);
  6225. - }
  6226. + if (end_reached)
  6227. + break;
  6228. +
  6229. + back_lines(page_length - 1);
  6230. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6231. + cur_x, update_text, data);
  6232. break;
  6233. case KEY_NPAGE: /* Next page */
  6234. case ' ':
  6235. + case 'd':
  6236. if (end_reached)
  6237. break;
  6238. begin_reached = 0;
  6239. - refresh_text_box(dialog, box, boxh, boxw,
  6240. - cur_y, cur_x);
  6241. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6242. + cur_x, update_text, data);
  6243. break;
  6244. case '0': /* Beginning of line */
  6245. case 'H': /* Scroll left */
  6246. @@ -234,8 +222,8 @@
  6247. hscroll--;
  6248. /* Reprint current page to scroll horizontally */
  6249. back_lines(page_length);
  6250. - refresh_text_box(dialog, box, boxh, boxw,
  6251. - cur_y, cur_x);
  6252. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6253. + cur_x, update_text, data);
  6254. break;
  6255. case 'L': /* Scroll right */
  6256. case 'l':
  6257. @@ -245,11 +233,12 @@
  6258. hscroll++;
  6259. /* Reprint current page to scroll horizontally */
  6260. back_lines(page_length);
  6261. - refresh_text_box(dialog, box, boxh, boxw,
  6262. - cur_y, cur_x);
  6263. + refresh_text_box(dialog, box, boxh, boxw, cur_y,
  6264. + cur_x, update_text, data);
  6265. break;
  6266. case KEY_ESC:
  6267. - key = on_key_esc(dialog);
  6268. + if (on_key_esc(dialog) == KEY_ESC)
  6269. + done = true;
  6270. break;
  6271. case KEY_RESIZE:
  6272. back_lines(height);
  6273. @@ -257,11 +246,31 @@
  6274. delwin(dialog);
  6275. on_key_resize();
  6276. goto do_resize;
  6277. + default:
  6278. + for (i = 0; keys[i]; i++) {
  6279. + if (key == keys[i]) {
  6280. + done = true;
  6281. + break;
  6282. + }
  6283. + }
  6284. }
  6285. }
  6286. delwin(box);
  6287. delwin(dialog);
  6288. - return key; /* ESC pressed */
  6289. + if (_vscroll) {
  6290. + const char *s;
  6291. +
  6292. + s = buf;
  6293. + *_vscroll = 0;
  6294. + back_lines(page_length);
  6295. + while (s < page && (s = strchr(s, '\n'))) {
  6296. + (*_vscroll)++;
  6297. + s++;
  6298. + }
  6299. + }
  6300. + if (_hscroll)
  6301. + *_hscroll = hscroll;
  6302. + return key;
  6303. }
  6304. /*
  6305. @@ -298,12 +307,23 @@
  6306. }
  6307. /*
  6308. - * Print a new page of text. Called by dialog_textbox().
  6309. + * Print a new page of text.
  6310. */
  6311. -static void print_page(WINDOW * win, int height, int width)
  6312. +static void print_page(WINDOW *win, int height, int width, update_text_fn
  6313. + update_text, void *data)
  6314. {
  6315. int i, passed_end = 0;
  6316. + if (update_text) {
  6317. + char *end;
  6318. +
  6319. + for (i = 0; i < height; i++)
  6320. + get_line();
  6321. + end = page;
  6322. + back_lines(height);
  6323. + update_text(buf, page - buf, end - buf, data);
  6324. + }
  6325. +
  6326. page_length = 0;
  6327. for (i = 0; i < height; i++) {
  6328. print_line(win, i, width);
  6329. @@ -316,11 +336,10 @@
  6330. }
  6331. /*
  6332. - * Print a new line of text. Called by dialog_textbox() and print_page().
  6333. + * Print a new line of text.
  6334. */
  6335. static void print_line(WINDOW * win, int row, int width)
  6336. {
  6337. - int y, x;
  6338. char *line;
  6339. line = get_line();
  6340. @@ -329,10 +348,10 @@
  6341. waddch(win, ' ');
  6342. waddnstr(win, line, MIN(strlen(line), width - 2));
  6343. - getyx(win, y, x);
  6344. /* Clear 'residue' of previous line */
  6345. #if OLD_NCURSES
  6346. {
  6347. + int x = getcurx(win);
  6348. int i;
  6349. for (i = 0; i < width - x; i++)
  6350. waddch(win, ' ');
  6351. @@ -355,10 +374,8 @@
  6352. end_reached = 0;
  6353. while (*page != '\n') {
  6354. if (*page == '\0') {
  6355. - if (!end_reached) {
  6356. - end_reached = 1;
  6357. - break;
  6358. - }
  6359. + end_reached = 1;
  6360. + break;
  6361. } else if (i < MAX_LEN)
  6362. line[i++] = *(page++);
  6363. else {
  6364. @@ -371,7 +388,7 @@
  6365. if (i <= MAX_LEN)
  6366. line[i] = '\0';
  6367. if (!end_reached)
  6368. - page++; /* move pass '\n' */
  6369. + page++; /* move past '\n' */
  6370. return line;
  6371. }
  6372. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/util.c uClibc-git/extra/config/lxdialog/util.c
  6373. --- uClibc-0.9.33.2/extra/config/lxdialog/util.c 2012-05-15 09:20:09.000000000 +0200
  6374. +++ uClibc-git/extra/config/lxdialog/util.c 2014-02-03 12:32:56.000000000 +0100
  6375. @@ -19,8 +19,13 @@
  6376. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  6377. */
  6378. +#include <stdarg.h>
  6379. +
  6380. #include "dialog.h"
  6381. +/* Needed in signal handler in mconf.c */
  6382. +int saved_x, saved_y;
  6383. +
  6384. struct dialog_info dlg;
  6385. static void set_mono_theme(void)
  6386. @@ -249,15 +254,56 @@
  6387. void dialog_clear(void)
  6388. {
  6389. - attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
  6390. + int lines, columns;
  6391. +
  6392. + lines = getmaxy(stdscr);
  6393. + columns = getmaxx(stdscr);
  6394. +
  6395. + attr_clear(stdscr, lines, columns, dlg.screen.atr);
  6396. /* Display background title if it exists ... - SLH */
  6397. if (dlg.backtitle != NULL) {
  6398. - int i;
  6399. + int i, len = 0, skip = 0;
  6400. + struct subtitle_list *pos;
  6401. wattrset(stdscr, dlg.screen.atr);
  6402. mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle);
  6403. +
  6404. + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) {
  6405. + /* 3 is for the arrow and spaces */
  6406. + len += strlen(pos->text) + 3;
  6407. + }
  6408. +
  6409. wmove(stdscr, 1, 1);
  6410. - for (i = 1; i < COLS - 1; i++)
  6411. + if (len > columns - 2) {
  6412. + const char *ellipsis = "[...] ";
  6413. + waddstr(stdscr, ellipsis);
  6414. + skip = len - (columns - 2 - strlen(ellipsis));
  6415. + }
  6416. +
  6417. + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) {
  6418. + if (skip == 0)
  6419. + waddch(stdscr, ACS_RARROW);
  6420. + else
  6421. + skip--;
  6422. +
  6423. + if (skip == 0)
  6424. + waddch(stdscr, ' ');
  6425. + else
  6426. + skip--;
  6427. +
  6428. + if (skip < strlen(pos->text)) {
  6429. + waddstr(stdscr, pos->text + skip);
  6430. + skip = 0;
  6431. + } else
  6432. + skip -= strlen(pos->text);
  6433. +
  6434. + if (skip == 0)
  6435. + waddch(stdscr, ' ');
  6436. + else
  6437. + skip--;
  6438. + }
  6439. +
  6440. + for (i = len + 1; i < columns - 1; i++)
  6441. waddch(stdscr, ACS_HLINE);
  6442. }
  6443. wnoutrefresh(stdscr);
  6444. @@ -271,8 +317,12 @@
  6445. int height, width;
  6446. initscr(); /* Init curses */
  6447. +
  6448. + /* Get current cursor position for signal handler in mconf.c */
  6449. + getyx(stdscr, saved_y, saved_x);
  6450. +
  6451. getmaxyx(stdscr, height, width);
  6452. - if (height < 19 || width < 80) {
  6453. + if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) {
  6454. endwin();
  6455. return -ERRDISPLAYTOOSMALL;
  6456. }
  6457. @@ -293,6 +343,11 @@
  6458. dlg.backtitle = backtitle;
  6459. }
  6460. +void set_dialog_subtitles(struct subtitle_list *subtitles)
  6461. +{
  6462. + dlg.subtitles = subtitles;
  6463. +}
  6464. +
  6465. /*
  6466. * End using dialog functions.
  6467. */
  6468. @@ -321,27 +376,19 @@
  6469. /*
  6470. * Print a string of text in a window, automatically wrap around to the
  6471. * next line if the string is too long to fit on one line. Newline
  6472. - * characters '\n' are replaced by spaces. We start on a new line
  6473. + * characters '\n' are propperly processed. We start on a new line
  6474. * if there is no room for at least 4 nonblanks following a double-space.
  6475. */
  6476. void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x)
  6477. {
  6478. int newl, cur_x, cur_y;
  6479. - int i, prompt_len, room, wlen;
  6480. - char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
  6481. + int prompt_len, room, wlen;
  6482. + char tempstr[MAX_LEN + 1], *word, *sp, *sp2, *newline_separator = 0;
  6483. strcpy(tempstr, prompt);
  6484. prompt_len = strlen(tempstr);
  6485. - /*
  6486. - * Remove newlines
  6487. - */
  6488. - for (i = 0; i < prompt_len; i++) {
  6489. - if (tempstr[i] == '\n')
  6490. - tempstr[i] = ' ';
  6491. - }
  6492. -
  6493. if (prompt_len <= width - x * 2) { /* If prompt is short */
  6494. wmove(win, y, (width - prompt_len) / 2);
  6495. waddstr(win, tempstr);
  6496. @@ -351,7 +398,10 @@
  6497. newl = 1;
  6498. word = tempstr;
  6499. while (word && *word) {
  6500. - sp = strchr(word, ' ');
  6501. + sp = strpbrk(word, "\n ");
  6502. + if (sp && *sp == '\n')
  6503. + newline_separator = sp;
  6504. +
  6505. if (sp)
  6506. *sp++ = 0;
  6507. @@ -363,7 +413,7 @@
  6508. if (wlen > room ||
  6509. (newl && wlen < 4 && sp
  6510. && wlen + 1 + strlen(sp) > room
  6511. - && (!(sp2 = strchr(sp, ' '))
  6512. + && (!(sp2 = strpbrk(sp, "\n "))
  6513. || wlen + 1 + (sp2 - sp) > room))) {
  6514. cur_y++;
  6515. cur_x = x;
  6516. @@ -371,7 +421,15 @@
  6517. wmove(win, cur_y, cur_x);
  6518. waddstr(win, word);
  6519. getyx(win, cur_y, cur_x);
  6520. - cur_x++;
  6521. +
  6522. + /* Move to the next line if the word separator was a newline */
  6523. + if (newline_separator) {
  6524. + cur_y++;
  6525. + cur_x = x;
  6526. + newline_separator = 0;
  6527. + } else
  6528. + cur_x++;
  6529. +
  6530. if (sp && *sp == ' ') {
  6531. cur_x++; /* double space */
  6532. while (*++sp == ' ') ;
  6533. diff -Nur uClibc-0.9.33.2/extra/config/lxdialog/yesno.c uClibc-git/extra/config/lxdialog/yesno.c
  6534. --- uClibc-0.9.33.2/extra/config/lxdialog/yesno.c 2012-05-15 09:20:09.000000000 +0200
  6535. +++ uClibc-git/extra/config/lxdialog/yesno.c 2014-02-03 12:32:56.000000000 +0100
  6536. @@ -45,14 +45,14 @@
  6537. WINDOW *dialog;
  6538. do_resize:
  6539. - if (getmaxy(stdscr) < (height + 4))
  6540. + if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN))
  6541. return -ERRDISPLAYTOOSMALL;
  6542. - if (getmaxx(stdscr) < (width + 4))
  6543. + if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN))
  6544. return -ERRDISPLAYTOOSMALL;
  6545. /* center dialog box on screen */
  6546. - x = (COLS - width) / 2;
  6547. - y = (LINES - height) / 2;
  6548. + x = (getmaxx(stdscr) - width) / 2;
  6549. + y = (getmaxy(stdscr) - height) / 2;
  6550. draw_shadow(stdscr, y, x, height, width);
  6551. diff -Nur uClibc-0.9.33.2/extra/config/Makefile uClibc-git/extra/config/Makefile
  6552. --- uClibc-0.9.33.2/extra/config/Makefile 2012-05-15 09:20:09.000000000 +0200
  6553. +++ uClibc-git/extra/config/Makefile 2014-02-03 12:32:56.000000000 +0100
  6554. @@ -1,16 +1,17 @@
  6555. top_srcdir ?= ../../
  6556. -include $(top_srcdir)Rules.mak
  6557. -include $(top_srcdir)Makerules
  6558. -
  6559. -# ugh
  6560. -top_srcdir:=$(shell cd $(top_srcdir) && pwd)/
  6561. ifdef O
  6562. top_builddir ?= ../../
  6563. else
  6564. top_builddir = ../../
  6565. endif
  6566. -srctree := $(top_srcdir)
  6567. +
  6568. +include $(top_srcdir)Rules.mak
  6569. +include $(top_srcdir)Makerules
  6570. +
  6571. +# ugh
  6572. +top_srcdir:=$(shell cd $(top_srcdir) && pwd)/
  6573. +
  6574. src := extra/config
  6575. obj := $(top_builddir)$(src)
  6576. @@ -18,29 +19,23 @@
  6577. generated := $(addprefix $(obj)/,$(generated:.c=.o))
  6578. include $(top_srcdir)extra/config/Makefile.kconfig
  6579. -PHONY += $(always)
  6580. -chk-lxdialog := $(top_srcdir)$(src)/lxdialog/check-lxdialog.sh
  6581. -check-lxdialog := cd $(obj) && $(CONFIG_SHELL) $(chk-lxdialog)
  6582. -HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) -c '$(check-lxdialog) -ccflags')
  6583. -HOST_LOADLIBES = $(shell $(CONFIG_SHELL) -c '$(check-lxdialog) -ldflags $(HOSTCC)')
  6584. -HOST_EXTRACFLAGS += -DLOCALE
  6585. -HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) -c '$(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)')
  6586. +HOST_EXTRACFLAGS += -DCONFIG_='""'
  6587. # do not create temporary object in the readonly srctree
  6588. -$(obj)/dochecklxdialog:
  6589. - $(Q)cd $(obj) && $(CONFIG_SHELL) $(chk-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES)
  6590. -HOSTCFLAGS_lex.zconf.o := -I$(top_srcdir)$(src)
  6591. +$(obj)/dochecklxdialog: CONFIG_SHELL:=cd $(obj) && $(CONFIG_SHELL)
  6592. +HOSTCFLAGS_zconf.lex.o := -I$(top_srcdir)$(src)
  6593. HOSTCFLAGS_zconf.tab.o := -I$(top_srcdir)$(src)
  6594. conf-objs := $(addprefix $(obj)/,$(conf-objs))
  6595. mconf-objs := $(addprefix $(obj)/,$(mconf-objs))
  6596. +nconf-objs := $(addprefix $(obj)/,$(nconf-objs))
  6597. kxgettext-objs := $(addprefix $(obj)/,$(kxgettext-objs))
  6598. ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf)
  6599. hostprogs-y += mconf
  6600. endif
  6601. -
  6602. -#BUILD_CFLAGS-config = -W -Wall -pedantic
  6603. -#BUILD_CFLAGS-lxdialog = -W -Wall -pedantic
  6604. +ifeq ($(findstring nconf,$(MAKECMDGOALS)),nconf)
  6605. +hostprogs-y += nconf
  6606. +endif
  6607. __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
  6608. host-csingle:= $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
  6609. @@ -48,16 +43,18 @@
  6610. $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
  6611. host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
  6612. -conf mconf kxgettext: %: $(obj)/%
  6613. -$(obj)/conf $(obj)/mconf $(obj)/kxgettext: BUILD_LDFLAGS=$(HOST_LOADLIBES)
  6614. +conf mconf nconf kxgettext: %: $(obj)/%
  6615. +$(obj)/conf $(obj)/mconf $(obj)/nconf $(obj)/kxgettext: BUILD_LDFLAGS=$(HOSTLOADLIBES_$(@F))
  6616. $(obj)/conf: $(conf-objs)
  6617. $(hcompile.u)
  6618. $(obj)/mconf: $(mconf-objs)
  6619. $(hcompile.u)
  6620. +$(obj)/nconf: $(nconf-objs)
  6621. + $(hcompile.u)
  6622. $(obj)/kxgettext: $(kxgettext-objs)
  6623. $(hcompile.u)
  6624. -$(host-csingle) $(host-cmulti) $(host-cobjs): BUILD_CFLAGS=$(HOST_EXTRACFLAGS) \
  6625. +$(host-csingle) $(host-cmulti) $(host-cobjs): BUILD_CFLAGS+=$(HOST_EXTRACFLAGS) \
  6626. $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F))
  6627. host-cobjs.nogen := $(filter-out $(generated),$(host-cobjs))
  6628. @@ -68,19 +65,18 @@
  6629. $(host-cobjs.generated): $(obj)/%.o: $(obj)/%.c
  6630. $(hcompile.o)
  6631. -ifndef LKC_GENPARSER
  6632. +# we use the pre-generated always
  6633. $(obj)/%:: $(top_srcdir)$(src)/%_shipped
  6634. @$(disp_gen)
  6635. $(Q)cat $< > $@
  6636. -endif
  6637. +
  6638. CLEAN_extra/config menuconfig_clean:
  6639. $(do_rm) $(clean-files) $(lxdialog) conf $(wildcard *.o)
  6640. -distclean: clean
  6641. - $(do_rm) $(lxdialog) $(conf-objs) $(mconf-objs) \
  6642. +distclean: CLEAN_extra/config
  6643. + $(Q)$(RM) -r $(lxdialog) $(conf-objs) $(mconf-objs) $(nconf-objs) \
  6644. $(kxgettext-objs) \
  6645. $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \
  6646. - .depend
  6647. - $(do_rm) -r $(top_builddir)include/config
  6648. + .depend \
  6649. + $(top_builddir)include/config $(top_builddir)include/generated
  6650. -FORCE:
  6651. -.PHONY: FORCE clean distclean $(always)
  6652. +.PHONY: clean distclean $(PHONY)
  6653. diff -Nur uClibc-0.9.33.2/extra/config/Makefile.kconfig uClibc-git/extra/config/Makefile.kconfig
  6654. --- uClibc-0.9.33.2/extra/config/Makefile.kconfig 2012-05-15 09:20:09.000000000 +0200
  6655. +++ uClibc-git/extra/config/Makefile.kconfig 2014-02-03 12:32:56.000000000 +0100
  6656. @@ -2,14 +2,18 @@
  6657. # Kernel configuration targets
  6658. # These targets are used from top-level makefile
  6659. -PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
  6660. +PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \
  6661. + localmodconfig localyesconfig
  6662. ifdef KBUILD_KCONFIG
  6663. Kconfig := $(KBUILD_KCONFIG)
  6664. else
  6665. -Kconfig := arch/$(SRCARCH)/Kconfig
  6666. +Kconfig := Kconfig
  6667. endif
  6668. +# We need this, in case the user has it in its environment
  6669. +unexport CONFIG_
  6670. +
  6671. xconfig: $(obj)/qconf
  6672. $< $(Kconfig)
  6673. @@ -20,91 +24,121 @@
  6674. $< $(Kconfig)
  6675. config: $(obj)/conf
  6676. + $< --oldaskconfig $(Kconfig)
  6677. +
  6678. +nconfig: $(obj)/nconf
  6679. $< $(Kconfig)
  6680. oldconfig: $(obj)/conf
  6681. - $< -o $(Kconfig)
  6682. + $< --$@ $(Kconfig)
  6683. silentoldconfig: $(obj)/conf
  6684. - $< -s $(Kconfig)
  6685. + $(Q)mkdir -p include/generated
  6686. + $< --$@ $(Kconfig)
  6687. +
  6688. +localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf
  6689. + $(Q)mkdir -p include/generated
  6690. + $(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config
  6691. + $(Q)if [ -f .config ]; then \
  6692. + cmp -s .tmp.config .config || \
  6693. + (mv -f .config .config.old.1; \
  6694. + mv -f .tmp.config .config; \
  6695. + $(obj)/conf --silentoldconfig $(Kconfig); \
  6696. + mv -f .config.old.1 .config.old) \
  6697. + else \
  6698. + mv -f .tmp.config .config; \
  6699. + $(obj)/conf --silentoldconfig $(Kconfig); \
  6700. + fi
  6701. + $(Q)rm -f .tmp.config
  6702. # Create new linux.pot file
  6703. # Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
  6704. -# The symlink is used to repair a deficiency in arch/um
  6705. update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h
  6706. - $(Q)echo " GEN config"
  6707. - $(Q)xgettext --default-domain=linux \
  6708. - --add-comments --keyword=_ --keyword=N_ \
  6709. - --from-code=UTF-8 \
  6710. - --files-from=scripts/kconfig/POTFILES.in \
  6711. + $(Q)echo " GEN config.pot"
  6712. + $(Q)xgettext --default-domain=linux \
  6713. + --add-comments --keyword=_ --keyword=N_ \
  6714. + --from-code=UTF-8 \
  6715. + --files-from=$(srctree)/scripts/kconfig/POTFILES.in \
  6716. + --directory=$(srctree) --directory=$(objtree) \
  6717. --output $(obj)/config.pot
  6718. $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot
  6719. - $(Q)ln -fs Kconfig.i386 arch/um/Kconfig.arch
  6720. - $(Q)(for i in `ls arch/*/Kconfig`; \
  6721. + $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \
  6722. + $(srctree)/arch/*/um/Kconfig`; \
  6723. do \
  6724. - echo " GEN $$i"; \
  6725. + echo " GEN $$i"; \
  6726. $(obj)/kxgettext $$i \
  6727. >> $(obj)/config.pot; \
  6728. done )
  6729. + $(Q)echo " GEN linux.pot"
  6730. $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
  6731. --output $(obj)/linux.pot
  6732. - $(Q)rm -f arch/um/Kconfig.arch
  6733. $(Q)rm -f $(obj)/config.pot
  6734. -PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig
  6735. +PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig
  6736. -randconfig: $(obj)/conf
  6737. - $< -r $(Kconfig)
  6738. +allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf
  6739. + $< --$@ $(Kconfig)
  6740. -allyesconfig: $(obj)/conf
  6741. - $< -y $(Kconfig)
  6742. +PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig
  6743. -allnoconfig: $(obj)/conf
  6744. - $< -n $(Kconfig)
  6745. +listnewconfig olddefconfig: $(obj)/conf
  6746. + $< --$@ $(Kconfig)
  6747. -allmodconfig: $(obj)/conf
  6748. - $< -m $(Kconfig)
  6749. +# oldnoconfig is an alias of olddefconfig, because people already are dependent
  6750. +# on its behavior(sets new symbols to their default value but not 'n') with the
  6751. +# counter-intuitive name.
  6752. +oldnoconfig: $(obj)/conf
  6753. + $< --olddefconfig $(Kconfig)
  6754. +
  6755. +savedefconfig: $(obj)/conf
  6756. + $< --$@=defconfig $(Kconfig)
  6757. defconfig: $(obj)/conf
  6758. ifeq ($(KBUILD_DEFCONFIG),)
  6759. - $< -d $(Kconfig)
  6760. + $< --defconfig $(Kconfig)
  6761. else
  6762. @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"
  6763. - $(Q)$< -D arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
  6764. + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
  6765. endif
  6766. %_defconfig: $(obj)/conf
  6767. - $(Q)$< -D arch/$(SRCARCH)/configs/$@ $(Kconfig)
  6768. + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)
  6769. # Help text used by make help
  6770. help:
  6771. @echo ' config - Update current config utilising a line-oriented program'
  6772. + @echo ' nconfig - Update current config utilising a ncurses menu based program'
  6773. @echo ' menuconfig - Update current config utilising a menu based program'
  6774. @echo ' xconfig - Update current config utilising a QT based front-end'
  6775. @echo ' gconfig - Update current config utilising a GTK based front-end'
  6776. @echo ' oldconfig - Update current config utilising a provided .config as base'
  6777. - @echo ' silentoldconfig - Same as oldconfig, but quietly'
  6778. - @echo ' randconfig - New config with random answer to all options'
  6779. - @echo ' defconfig - New config with default answer to all options'
  6780. - @echo ' allmodconfig - New config selecting modules when possible'
  6781. - @echo ' allyesconfig - New config where all options are accepted with yes'
  6782. + @echo ' localmodconfig - Update current config disabling modules not loaded'
  6783. + @echo ' localyesconfig - Update current config converting local mods to core'
  6784. + @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps'
  6785. + @echo ' defconfig - New config with default from ARCH supplied defconfig'
  6786. + @echo ' savedefconfig - Save current config as ./defconfig (minimal config)'
  6787. @echo ' allnoconfig - New config where all options are answered with no'
  6788. + @echo ' allyesconfig - New config where all options are accepted with yes'
  6789. + @echo ' allmodconfig - New config selecting modules when possible'
  6790. + @echo ' alldefconfig - New config with all symbols set to default'
  6791. + @echo ' randconfig - New config with random answer to all options'
  6792. + @echo ' listnewconfig - List new options'
  6793. + @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value'
  6794. # lxdialog stuff
  6795. check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh
  6796. # Use recursively expanded variables so we do not call gcc unless
  6797. # we really need to do so. (Do not call gcc as part of make mrproper)
  6798. -HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
  6799. -HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
  6800. -
  6801. -HOST_EXTRACFLAGS += -DLOCALE
  6802. -
  6803. +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \
  6804. + -DLOCALE
  6805. # ===========================================================================
  6806. # Shared Makefile for the various kconfig executables:
  6807. # conf: Used for defconfig, oldconfig and related targets
  6808. -# mconf: Used for the mconfig target.
  6809. +# nconf: Used for the nconfig target.
  6810. +# Utilizes ncurses
  6811. +# mconf: Used for the menuconfig target
  6812. # Utilizes the lxdialog package
  6813. # qconf: Used for the xconfig target
  6814. # Based on QT which needs to be installed to compile it
  6815. @@ -116,15 +150,27 @@
  6816. lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o
  6817. conf-objs := conf.o zconf.tab.o
  6818. -mconf-objs := mconf.o zconf.tab.o $(lxdialog)
  6819. +mconf-objs := mconf.o zconf.tab.o $(lxdialog)
  6820. +nconf-objs := nconf.o zconf.tab.o nconf.gui.o
  6821. kxgettext-objs := kxgettext.o zconf.tab.o
  6822. +qconf-cxxobjs := qconf.o
  6823. +qconf-objs := zconf.tab.o
  6824. +gconf-objs := gconf.o zconf.tab.o
  6825. +
  6826. +hostprogs-y := conf
  6827. -hostprogs-y := conf qconf gconf kxgettext
  6828. +ifeq ($(MAKECMDGOALS),nconfig)
  6829. + hostprogs-y += nconf
  6830. +endif
  6831. ifeq ($(MAKECMDGOALS),menuconfig)
  6832. hostprogs-y += mconf
  6833. endif
  6834. +ifeq ($(MAKECMDGOALS),update-po-config)
  6835. + hostprogs-y += kxgettext
  6836. +endif
  6837. +
  6838. ifeq ($(MAKECMDGOALS),xconfig)
  6839. qconf-target := 1
  6840. endif
  6841. @@ -134,24 +180,23 @@
  6842. ifeq ($(qconf-target),1)
  6843. -qconf-cxxobjs := qconf.o
  6844. -qconf-objs := kconfig_load.o zconf.tab.o
  6845. + hostprogs-y += qconf
  6846. endif
  6847. ifeq ($(gconf-target),1)
  6848. -gconf-objs := gconf.o kconfig_load.o zconf.tab.o
  6849. + hostprogs-y += gconf
  6850. endif
  6851. -clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
  6852. - .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h
  6853. -clean-files += mconf qconf gconf
  6854. +clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck
  6855. +clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h
  6856. +clean-files += mconf qconf gconf nconf
  6857. clean-files += config.pot linux.pot
  6858. # Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
  6859. PHONY += $(obj)/dochecklxdialog
  6860. $(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog
  6861. -#$(obj)/dochecklxdialog:
  6862. -# $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES)
  6863. +$(obj)/dochecklxdialog:
  6864. + $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTLOADLIBES_mconf)
  6865. always := dochecklxdialog
  6866. @@ -159,16 +204,24 @@
  6867. HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))
  6868. # generated files seem to need this to find local include files
  6869. -HOSTCFLAGS_lex.zconf.o := -I$(src)
  6870. +HOSTCFLAGS_zconf.lex.o := -I$(src)
  6871. HOSTCFLAGS_zconf.tab.o := -I$(src)
  6872. -HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl
  6873. -HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK
  6874. +LEX_PREFIX_zconf := zconf
  6875. +YACC_PREFIX_zconf := zconf
  6876. +
  6877. +HOSTLOADLIBES_qconf = $(KC_QT_LIBS)
  6878. +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS)
  6879. HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`
  6880. HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
  6881. - -D LKC_DIRECT_LINK
  6882. + -Wno-missing-prototypes
  6883. +HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
  6884. +
  6885. +HOSTLOADLIBES_nconf = $(shell \
  6886. + pkg-config --libs menu panel ncurses 2>/dev/null \
  6887. + || echo "-lmenu -lpanel -lncurses" )
  6888. $(obj)/qconf.o: $(obj)/.tmp_qtcheck
  6889. ifeq ($(qconf-target),1)
  6890. @@ -178,40 +231,48 @@
  6891. # QT needs some extra effort...
  6892. $(obj)/.tmp_qtcheck:
  6893. @set -e; echo " CHECK qt"; dir=""; pkg=""; \
  6894. - pkg-config --exists qt 2> /dev/null && pkg=qt; \
  6895. - pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \
  6896. - if [ -n "$$pkg" ]; then \
  6897. - cflags="\$$(shell pkg-config $$pkg --cflags)"; \
  6898. - libs="\$$(shell pkg-config $$pkg --libs)"; \
  6899. - moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \
  6900. - dir="$$(pkg-config $$pkg --variable=prefix)"; \
  6901. + if ! pkg-config --exists QtCore 2> /dev/null; then \
  6902. + echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \
  6903. + pkg-config --exists qt 2> /dev/null && pkg=qt; \
  6904. + pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \
  6905. + if [ -n "$$pkg" ]; then \
  6906. + cflags="\$$(shell pkg-config $$pkg --cflags)"; \
  6907. + libs="\$$(shell pkg-config $$pkg --libs)"; \
  6908. + moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \
  6909. + dir="$$(pkg-config $$pkg --variable=prefix)"; \
  6910. + else \
  6911. + for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
  6912. + if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \
  6913. + done; \
  6914. + if [ -z "$$dir" ]; then \
  6915. + echo >&2 "*"; \
  6916. + echo >&2 "* Unable to find any QT installation. Please make sure that"; \
  6917. + echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \
  6918. + echo >&2 "* either qmake can be found or install pkg-config or set"; \
  6919. + echo >&2 "* the QTDIR environment variable to the correct location."; \
  6920. + echo >&2 "*"; \
  6921. + false; \
  6922. + fi; \
  6923. + libpath=$$dir/lib; lib=qt; osdir=""; \
  6924. + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \
  6925. + osdir=x$$($(HOSTCXX) -print-multi-os-directory); \
  6926. + test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \
  6927. + test -f $$libpath/libqt-mt.so && lib=qt-mt; \
  6928. + cflags="-I$$dir/include"; \
  6929. + libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \
  6930. + moc="$$dir/bin/moc"; \
  6931. + fi; \
  6932. + if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \
  6933. + echo "*"; \
  6934. + echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \
  6935. + echo "*"; \
  6936. + moc="/usr/bin/moc"; \
  6937. + fi; \
  6938. else \
  6939. - for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
  6940. - if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \
  6941. - done; \
  6942. - if [ -z "$$dir" ]; then \
  6943. - echo "*"; \
  6944. - echo "* Unable to find the QT3 installation. Please make sure that"; \
  6945. - echo "* the QT3 development package is correctly installed and"; \
  6946. - echo "* either install pkg-config or set the QTDIR environment"; \
  6947. - echo "* variable to the correct location."; \
  6948. - echo "*"; \
  6949. - false; \
  6950. - fi; \
  6951. - libpath=$$dir/lib; lib=qt; osdir=""; \
  6952. - $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \
  6953. - osdir=x$$($(HOSTCXX) -print-multi-os-directory); \
  6954. - test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \
  6955. - test -f $$libpath/libqt-mt.so && lib=qt-mt; \
  6956. - cflags="-I$$dir/include"; \
  6957. - libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \
  6958. - moc="$$dir/bin/moc"; \
  6959. - fi; \
  6960. - if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \
  6961. - echo "*"; \
  6962. - echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \
  6963. - echo "*"; \
  6964. - moc="/usr/bin/moc"; \
  6965. + cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \
  6966. + libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \
  6967. + moc="\$$(shell pkg-config QtCore --variable=moc_location)"; \
  6968. + [ -n "$$moc" ] || moc="\$$(shell pkg-config QtCore --variable=prefix)/bin/moc"; \
  6969. fi; \
  6970. echo "KC_QT_CFLAGS=$$cflags" > $@; \
  6971. echo "KC_QT_LIBS=$$libs" >> $@; \
  6972. @@ -229,61 +290,33 @@
  6973. if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \
  6974. touch $@; \
  6975. else \
  6976. - echo "*"; \
  6977. - echo "* GTK+ is present but version >= 2.0.0 is required."; \
  6978. - echo "*"; \
  6979. + echo >&2 "*"; \
  6980. + echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \
  6981. + echo >&2 "*"; \
  6982. false; \
  6983. fi \
  6984. else \
  6985. - echo "*"; \
  6986. - echo "* Unable to find the GTK+ installation. Please make sure that"; \
  6987. - echo "* the GTK+ 2.0 development package is correctly installed..."; \
  6988. - echo "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \
  6989. - echo "*"; \
  6990. + echo >&2 "*"; \
  6991. + echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \
  6992. + echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \
  6993. + echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \
  6994. + echo >&2 "*"; \
  6995. false; \
  6996. fi
  6997. endif
  6998. -$(obj)/zconf.tab.o: $(obj)/lex.zconf.c $(obj)/zconf.hash.c
  6999. -
  7000. -$(obj)/kconfig_load.o: $(obj)/lkc_defs.h
  7001. +$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c
  7002. -$(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h
  7003. +$(obj)/qconf.o: $(obj)/qconf.moc
  7004. -$(obj)/gconf.o: $(obj)/lkc_defs.h
  7005. +quiet_cmd_moc = MOC $@
  7006. + cmd_moc = $(KC_QT_MOC) -i $< -o $@
  7007. -$(obj)/%.moc: $(src)/%.h
  7008. - $(KC_QT_MOC) -i $< -o $@
  7009. -
  7010. -$(obj)/lkc_defs.h: $(src)/lkc_proto.h
  7011. - sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
  7012. +$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck
  7013. + $(call cmd,moc)
  7014. # Extract gconf menu items for I18N support
  7015. $(obj)/gconf.glade.h: $(obj)/gconf.glade
  7016. - intltool-extract --type=gettext/glade $(obj)/gconf.glade
  7017. -
  7018. -###
  7019. -# The following requires flex/bison/gperf
  7020. -# By default we use the _shipped versions, uncomment the following line if
  7021. -# you are modifying the flex/bison src.
  7022. -# LKC_GENPARSER := 1
  7023. -
  7024. -ifdef LKC_GENPARSER
  7025. -
  7026. -$(obj)/zconf.tab.c: $(src)/zconf.y
  7027. -$(obj)/lex.zconf.c: $(src)/zconf.l
  7028. -$(obj)/zconf.hash.c: $(src)/zconf.gperf
  7029. -
  7030. -%.tab.c: %.y
  7031. - bison -l -b $* -p $(notdir $*) $<
  7032. - cp $@ $@_shipped
  7033. -
  7034. -lex.%.c: %.l
  7035. - flex -L -P$(notdir $*) -o$@ $<
  7036. - cp $@ $@_shipped
  7037. -
  7038. -%.hash.c: %.gperf
  7039. - gperf < $< > $@
  7040. - cp $@ $@_shipped
  7041. + $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \
  7042. + $(obj)/gconf.glade
  7043. -endif
  7044. diff -Nur uClibc-0.9.33.2/extra/config/mconf.c uClibc-git/extra/config/mconf.c
  7045. --- uClibc-0.9.33.2/extra/config/mconf.c 2012-05-15 09:20:09.000000000 +0200
  7046. +++ uClibc-git/extra/config/mconf.c 2014-02-03 12:32:56.000000000 +0100
  7047. @@ -15,20 +15,19 @@
  7048. #include <stdarg.h>
  7049. #include <stdlib.h>
  7050. #include <string.h>
  7051. +#include <signal.h>
  7052. #include <unistd.h>
  7053. #include <locale.h>
  7054. -#define LKC_DIRECT_LINK
  7055. #include "lkc.h"
  7056. #include "lxdialog/dialog.h"
  7057. static const char mconf_readme[] = N_(
  7058. "Overview\n"
  7059. "--------\n"
  7060. -"Some features may be built directly into uClibc. Some features\n"
  7061. -"may be completely removed altogether. There are also certain\n"
  7062. -"parameters which are not really features, but must be\n"
  7063. -"entered in as decimal or hexadecimal numbers or possibly text.\n"
  7064. +"This interface let you select features and parameters for the build.\n"
  7065. +"Features can either be built-in, modularized, or ignored. Parameters\n"
  7066. +"must be entered in as decimal or hexadecimal numbers or text.\n"
  7067. "\n"
  7068. "Menu items beginning with following braces represent features that\n"
  7069. " [ ] can be built in or removed\n"
  7070. @@ -49,7 +48,7 @@
  7071. "----------\n"
  7072. "o Use the Up/Down arrow keys (cursor keys) to highlight the item\n"
  7073. " you wish to change or submenu wish to select and press <Enter>.\n"
  7074. -" Submenus are designated by \"--->\".\n"
  7075. +" Submenus are designated by \"--->\", empty ones by \"----\".\n"
  7076. "\n"
  7077. " Shortcut: Press the option's highlighted letter (hotkey).\n"
  7078. " Pressing a hotkey more than once will sequence\n"
  7079. @@ -66,13 +65,15 @@
  7080. " there is a delayed response which you may find annoying.\n"
  7081. "\n"
  7082. " Also, the <TAB> and cursor keys will cycle between <Select>,\n"
  7083. -" <Exit> and <Help>\n"
  7084. +" <Exit> and <Help>.\n"
  7085. "\n"
  7086. "o To get help with an item, use the cursor keys to highlight <Help>\n"
  7087. -" and Press <ENTER>.\n"
  7088. +" and press <ENTER>.\n"
  7089. "\n"
  7090. " Shortcut: Press <H> or <?>.\n"
  7091. "\n"
  7092. +"o To toggle the display of hidden options, press <Z>.\n"
  7093. +"\n"
  7094. "\n"
  7095. "Radiolists (Choice lists)\n"
  7096. "-----------\n"
  7097. @@ -104,10 +105,10 @@
  7098. "Text Box (Help Window)\n"
  7099. "--------\n"
  7100. "o Use the cursor keys to scroll up/down/left/right. The VI editor\n"
  7101. -" keys h,j,k,l function here as do <SPACE BAR> and <B> for those\n"
  7102. -" who are familiar with less and lynx.\n"
  7103. +" keys h,j,k,l function here as do <u>, <d>, <SPACE BAR> and <B> for \n"
  7104. +" those who are familiar with less and lynx.\n"
  7105. "\n"
  7106. -"o Press <E>, <X>, <Enter> or <Esc><Esc> to exit.\n"
  7107. +"o Press <E>, <X>, <q>, <Enter> or <Esc><Esc> to exit.\n"
  7108. "\n"
  7109. "\n"
  7110. "Alternate Configuration Files\n"
  7111. @@ -147,9 +148,9 @@
  7112. "\n"
  7113. "Optional personality available\n"
  7114. "------------------------------\n"
  7115. -"If you prefer to have all of the options listed in a single\n"
  7116. -"menu, rather than the default multimenu hierarchy, run the menuconfig\n"
  7117. -"with MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
  7118. +"If you prefer to have all of the options listed in a single menu, rather\n"
  7119. +"than the default multimenu hierarchy, run the menuconfig with\n"
  7120. +"MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
  7121. "\n"
  7122. "make MENUCONFIG_MODE=single_menu menuconfig\n"
  7123. "\n"
  7124. @@ -175,11 +176,11 @@
  7125. "\n"),
  7126. menu_instructions[] = N_(
  7127. "Arrow keys navigate the menu. "
  7128. - "<Enter> selects submenus --->. "
  7129. + "<Enter> selects submenus ---> (or empty submenus ----). "
  7130. "Highlighted letters are hotkeys. "
  7131. - "Pressing <Y> selectes a feature, while <N> will exclude a feature. "
  7132. + "Pressing <Y> includes, <N> excludes, <M> modularizes features. "
  7133. "Press <Esc><Esc> to exit, <?> for Help, </> for Search. "
  7134. - "Legend: [*] feature is selected [ ] feature is excluded"),
  7135. + "Legend: [*] built-in [ ] excluded <M> module < > module capable"),
  7136. radiolist_instructions[] = N_(
  7137. "Use the arrow keys to navigate this window or "
  7138. "press the hotkey of the item you wish to select "
  7139. @@ -198,8 +199,6 @@
  7140. setmod_text[] = N_(
  7141. "This feature depends on another which has been configured as a module.\n"
  7142. "As a result, this feature will be built as a module."),
  7143. -nohelp_text[] = N_(
  7144. - "There is no help available for this option.\n"),
  7145. load_config_text[] = N_(
  7146. "Enter the name of the configuration file you wish to load. "
  7147. "Accept the name shown to restore the configuration you "
  7148. @@ -210,18 +209,18 @@
  7149. "configurations available on a single machine.\n"
  7150. "\n"
  7151. "If you have saved a previous configuration in a file other than the\n"
  7152. - "default, entering the name of the file here will allow you\n"
  7153. - "to modify that configuration.\n"
  7154. + "default one, entering its name here will allow you to modify that\n"
  7155. + "configuration.\n"
  7156. "\n"
  7157. "If you are uncertain, then you have probably never used alternate\n"
  7158. - "configuration files. You should therefor leave this blank to abort.\n"),
  7159. + "configuration files. You should therefore leave this blank to abort.\n"),
  7160. save_config_text[] = N_(
  7161. "Enter a filename to which this configuration should be saved "
  7162. "as an alternate. Leave blank to abort."),
  7163. save_config_help[] = N_(
  7164. "\n"
  7165. - "For various reasons, one may wish to keep different\n"
  7166. - "configurations available on a single machine.\n"
  7167. + "For various reasons, one may wish to keep different configurations\n"
  7168. + "available on a single machine.\n"
  7169. "\n"
  7170. "Entering a file name here will allow you to later retrieve, modify\n"
  7171. "and use the current configuration as an alternate to whatever\n"
  7172. @@ -231,32 +230,39 @@
  7173. "leave this blank.\n"),
  7174. search_help[] = N_(
  7175. "\n"
  7176. - "Search for CONFIG_ symbols and display their relations.\n"
  7177. + "Search for symbols and display their relations.\n"
  7178. "Regular expressions are allowed.\n"
  7179. "Example: search for \"^FOO\"\n"
  7180. "Result:\n"
  7181. "-----------------------------------------------------------------\n"
  7182. "Symbol: FOO [=m]\n"
  7183. + "Type : tristate\n"
  7184. "Prompt: Foo bus is used to drive the bar HW\n"
  7185. - "Defined at drivers/pci/Kconfig:47\n"
  7186. - "Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
  7187. - "Location:\n"
  7188. - " -> Bus options (PCI, PCMCIA, EISA, MCA, ISA)\n"
  7189. - " -> PCI support (PCI [=y])\n"
  7190. - " -> PCI access mode (<choice> [=y])\n"
  7191. - "Selects: LIBCRC32\n"
  7192. - "Selected by: BAR\n"
  7193. + " Defined at drivers/pci/Kconfig:47\n"
  7194. + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
  7195. + " Location:\n"
  7196. + " -> Bus options (PCI, PCMCIA, EISA, ISA)\n"
  7197. + " -> PCI support (PCI [=y])\n"
  7198. + "(1) -> PCI access mode (<choice> [=y])\n"
  7199. + " Selects: LIBCRC32\n"
  7200. + " Selected by: BAR\n"
  7201. "-----------------------------------------------------------------\n"
  7202. + "o The line 'Type:' shows the type of the configuration option for\n"
  7203. + " this symbol (boolean, tristate, string, ...)\n"
  7204. "o The line 'Prompt:' shows the text used in the menu structure for\n"
  7205. - " this CONFIG_ symbol\n"
  7206. + " this symbol\n"
  7207. "o The 'Defined at' line tell at what file / line number the symbol\n"
  7208. " is defined\n"
  7209. "o The 'Depends on:' line tell what symbols needs to be defined for\n"
  7210. " this symbol to be visible in the menu (selectable)\n"
  7211. "o The 'Location:' lines tell where in the menu structure this symbol\n"
  7212. " is located\n"
  7213. - " A location followed by a [=y] indicate that this is a selectable\n"
  7214. - " menu item - and current value is displayed inside brackets.\n"
  7215. + " A location followed by a [=y] indicates that this is a\n"
  7216. + " selectable menu item - and the current value is displayed inside\n"
  7217. + " brackets.\n"
  7218. + " Press the key in the (#) prefix to jump directly to that\n"
  7219. + " location. You will be returned to the current search results\n"
  7220. + " after exiting this new menu.\n"
  7221. "o The 'Selects:' line tell what symbol will be automatically\n"
  7222. " selected if this symbol is selected (y or m)\n"
  7223. "o The 'Selected by' line tell what symbol has selected this symbol\n"
  7224. @@ -264,131 +270,144 @@
  7225. "Only relevant lines are shown.\n"
  7226. "\n\n"
  7227. "Search examples:\n"
  7228. - "Examples: USB => find all CONFIG_ symbols containing USB\n"
  7229. - " ^USB => find all CONFIG_ symbols starting with USB\n"
  7230. - " USB$ => find all CONFIG_ symbols ending with USB\n"
  7231. + "Examples: USB => find all symbols containing USB\n"
  7232. + " ^USB => find all symbols starting with USB\n"
  7233. + " USB$ => find all symbols ending with USB\n"
  7234. "\n");
  7235. static int indent;
  7236. static struct menu *current_menu;
  7237. static int child_count;
  7238. static int single_menu_mode;
  7239. +static int show_all_options;
  7240. +static int save_and_exit;
  7241. -static void conf(struct menu *menu);
  7242. +static void conf(struct menu *menu, struct menu *active_menu);
  7243. static void conf_choice(struct menu *menu);
  7244. static void conf_string(struct menu *menu);
  7245. static void conf_load(void);
  7246. static void conf_save(void);
  7247. +static int show_textbox_ext(const char *title, char *text, int r, int c,
  7248. + int *keys, int *vscroll, int *hscroll,
  7249. + update_text_fn update_text, void *data);
  7250. static void show_textbox(const char *title, const char *text, int r, int c);
  7251. static void show_helptext(const char *title, const char *text);
  7252. static void show_help(struct menu *menu);
  7253. -static void get_prompt_str(struct gstr *r, struct property *prop)
  7254. +static char filename[PATH_MAX+1];
  7255. +static void set_config_filename(const char *config_filename)
  7256. {
  7257. - int i, j;
  7258. - struct menu *submenu[8], *menu;
  7259. + static char menu_backtitle[PATH_MAX+128];
  7260. + int size;
  7261. - str_printf(r, _("Prompt: %s\n"), _(prop->text));
  7262. - str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name,
  7263. - prop->menu->lineno);
  7264. - if (!expr_is_yes(prop->visible.expr)) {
  7265. - str_append(r, _(" Depends on: "));
  7266. - expr_gstr_print(prop->visible.expr, r);
  7267. - str_append(r, "\n");
  7268. - }
  7269. - menu = prop->menu->parent;
  7270. - for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent)
  7271. - submenu[i++] = menu;
  7272. - if (i > 0) {
  7273. - str_printf(r, _(" Location:\n"));
  7274. - for (j = 4; --i >= 0; j += 2) {
  7275. - menu = submenu[i];
  7276. - str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu)));
  7277. - if (menu->sym) {
  7278. - str_printf(r, " (%s [=%s])", menu->sym->name ?
  7279. - menu->sym->name : _("<choice>"),
  7280. - sym_get_string_value(menu->sym));
  7281. - }
  7282. - str_append(r, "\n");
  7283. - }
  7284. - }
  7285. + size = snprintf(menu_backtitle, sizeof(menu_backtitle),
  7286. + "%s - %s", config_filename, rootmenu.prompt->text);
  7287. + if (size >= sizeof(menu_backtitle))
  7288. + menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
  7289. + set_dialog_backtitle(menu_backtitle);
  7290. +
  7291. + size = snprintf(filename, sizeof(filename), "%s", config_filename);
  7292. + if (size >= sizeof(filename))
  7293. + filename[sizeof(filename)-1] = '\0';
  7294. }
  7295. -static void get_symbol_str(struct gstr *r, struct symbol *sym)
  7296. +struct subtitle_part {
  7297. + struct list_head entries;
  7298. + const char *text;
  7299. +};
  7300. +static LIST_HEAD(trail);
  7301. +
  7302. +static struct subtitle_list *subtitles;
  7303. +static void set_subtitle(void)
  7304. {
  7305. - bool hit;
  7306. - struct property *prop;
  7307. + struct subtitle_part *sp;
  7308. + struct subtitle_list *pos, *tmp;
  7309. - if (sym && sym->name)
  7310. - str_printf(r, "Symbol: %s [=%s]\n", sym->name,
  7311. - sym_get_string_value(sym));
  7312. - for_all_prompts(sym, prop)
  7313. - get_prompt_str(r, prop);
  7314. - hit = false;
  7315. - for_all_properties(sym, prop, P_SELECT) {
  7316. - if (!hit) {
  7317. - str_append(r, " Selects: ");
  7318. - hit = true;
  7319. - } else
  7320. - str_printf(r, " && ");
  7321. - expr_gstr_print(prop->expr, r);
  7322. + for (pos = subtitles; pos != NULL; pos = tmp) {
  7323. + tmp = pos->next;
  7324. + free(pos);
  7325. }
  7326. - if (hit)
  7327. - str_append(r, "\n");
  7328. - if (sym->rev_dep.expr) {
  7329. - str_append(r, _(" Selected by: "));
  7330. - expr_gstr_print(sym->rev_dep.expr, r);
  7331. - str_append(r, "\n");
  7332. +
  7333. + subtitles = NULL;
  7334. + list_for_each_entry(sp, &trail, entries) {
  7335. + if (sp->text) {
  7336. + if (pos) {
  7337. + pos->next = xcalloc(sizeof(*pos), 1);
  7338. + pos = pos->next;
  7339. + } else {
  7340. + subtitles = pos = xcalloc(sizeof(*pos), 1);
  7341. + }
  7342. + pos->text = sp->text;
  7343. + }
  7344. }
  7345. - str_append(r, "\n\n");
  7346. +
  7347. + set_dialog_subtitles(subtitles);
  7348. }
  7349. -static struct gstr get_relations_str(struct symbol **sym_arr)
  7350. +static void reset_subtitle(void)
  7351. {
  7352. - struct symbol *sym;
  7353. - struct gstr res = str_new();
  7354. - int i;
  7355. + struct subtitle_list *pos, *tmp;
  7356. - for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
  7357. - get_symbol_str(&res, sym);
  7358. - if (!i)
  7359. - str_append(&res, _("No matches found.\n"));
  7360. - return res;
  7361. + for (pos = subtitles; pos != NULL; pos = tmp) {
  7362. + tmp = pos->next;
  7363. + free(pos);
  7364. + }
  7365. + subtitles = NULL;
  7366. + set_dialog_subtitles(subtitles);
  7367. }
  7368. -static char filename[PATH_MAX+1];
  7369. -static void set_config_filename(const char *config_filename)
  7370. -{
  7371. - static char menu_backtitle[PATH_MAX+128];
  7372. - int size;
  7373. - struct symbol *sym;
  7374. +struct search_data {
  7375. + struct list_head *head;
  7376. + struct menu **targets;
  7377. + int *keys;
  7378. +};
  7379. - sym = sym_lookup("VERSION", 0);
  7380. - sym_calc_value(sym);
  7381. - size = snprintf(menu_backtitle, sizeof(menu_backtitle),
  7382. - _("%s - uClibc v%s Configuration"),
  7383. - config_filename, sym_get_string_value(sym));
  7384. - if (size >= sizeof(menu_backtitle))
  7385. - menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
  7386. - set_dialog_backtitle(menu_backtitle);
  7387. +static void update_text(char *buf, size_t start, size_t end, void *_data)
  7388. +{
  7389. + struct search_data *data = _data;
  7390. + struct jump_key *pos;
  7391. + int k = 0;
  7392. +
  7393. + list_for_each_entry(pos, data->head, entries) {
  7394. + if (pos->offset >= start && pos->offset < end) {
  7395. + char header[4];
  7396. +
  7397. + if (k < JUMP_NB) {
  7398. + int key = '0' + (pos->index % JUMP_NB) + 1;
  7399. +
  7400. + sprintf(header, "(%c)", key);
  7401. + data->keys[k] = key;
  7402. + data->targets[k] = pos->target;
  7403. + k++;
  7404. + } else {
  7405. + sprintf(header, " ");
  7406. + }
  7407. - size = snprintf(filename, sizeof(filename), "%s", config_filename);
  7408. - if (size >= sizeof(filename))
  7409. - filename[sizeof(filename)-1] = '\0';
  7410. + memcpy(buf + pos->offset, header, sizeof(header) - 1);
  7411. + }
  7412. + }
  7413. + data->keys[k] = 0;
  7414. }
  7415. -
  7416. static void search_conf(void)
  7417. {
  7418. struct symbol **sym_arr;
  7419. struct gstr res;
  7420. + struct gstr title;
  7421. char *dialog_input;
  7422. - int dres;
  7423. + int dres, vscroll = 0, hscroll = 0;
  7424. + bool again;
  7425. + struct gstr sttext;
  7426. + struct subtitle_part stpart;
  7427. +
  7428. + title = str_new();
  7429. + str_printf( &title, _("Enter %s (sub)string or regexp to search for "
  7430. + "(with or without \"%s\")"), CONFIG_, CONFIG_);
  7431. +
  7432. again:
  7433. dialog_clear();
  7434. dres = dialog_inputbox(_("Search Configuration Parameter"),
  7435. - _("Enter CONFIG_ (sub)string to search for "
  7436. - "(with or without \"CONFIG\")"),
  7437. + str_get(&title),
  7438. 10, 75, "");
  7439. switch (dres) {
  7440. case 0:
  7441. @@ -397,19 +416,52 @@
  7442. show_helptext(_("Search Configuration"), search_help);
  7443. goto again;
  7444. default:
  7445. + str_free(&title);
  7446. return;
  7447. }
  7448. - /* strip CONFIG_ if necessary */
  7449. + /* strip the prefix if necessary */
  7450. dialog_input = dialog_input_result;
  7451. - if (strncasecmp(dialog_input_result, "CONFIG_", 7) == 0)
  7452. - dialog_input += 7;
  7453. + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)
  7454. + dialog_input += strlen(CONFIG_);
  7455. +
  7456. + sttext = str_new();
  7457. + str_printf(&sttext, "Search (%s)", dialog_input_result);
  7458. + stpart.text = str_get(&sttext);
  7459. + list_add_tail(&stpart.entries, &trail);
  7460. sym_arr = sym_re_search(dialog_input);
  7461. - res = get_relations_str(sym_arr);
  7462. + do {
  7463. + LIST_HEAD(head);
  7464. + struct menu *targets[JUMP_NB];
  7465. + int keys[JUMP_NB + 1], i;
  7466. + struct search_data data = {
  7467. + .head = &head,
  7468. + .targets = targets,
  7469. + .keys = keys,
  7470. + };
  7471. + struct jump_key *pos, *tmp;
  7472. +
  7473. + res = get_relations_str(sym_arr, &head);
  7474. + set_subtitle();
  7475. + dres = show_textbox_ext(_("Search Results"), (char *)
  7476. + str_get(&res), 0, 0, keys, &vscroll,
  7477. + &hscroll, &update_text, (void *)
  7478. + &data);
  7479. + again = false;
  7480. + for (i = 0; i < JUMP_NB && keys[i]; i++)
  7481. + if (dres == keys[i]) {
  7482. + conf(targets[i]->parent, targets[i]);
  7483. + again = true;
  7484. + }
  7485. + str_free(&res);
  7486. + list_for_each_entry_safe(pos, tmp, &head, entries)
  7487. + free(pos);
  7488. + } while (again);
  7489. free(sym_arr);
  7490. - show_textbox(_("Search Results"), str_get(&res), 0, 0);
  7491. - str_free(&res);
  7492. + str_free(&title);
  7493. + list_del(trail.prev);
  7494. + str_free(&sttext);
  7495. }
  7496. static void build_conf(struct menu *menu)
  7497. @@ -420,8 +472,16 @@
  7498. int type, tmp, doint = 2;
  7499. tristate val;
  7500. char ch;
  7501. + bool visible;
  7502. - if (!menu_is_visible(menu))
  7503. + /*
  7504. + * note: menu_is_visible() has side effect that it will
  7505. + * recalc the value of the symbol.
  7506. + */
  7507. + visible = menu_is_visible(menu);
  7508. + if (show_all_options && !menu_has_prompt(menu))
  7509. + return;
  7510. + else if (!show_all_options && !visible)
  7511. return;
  7512. sym = menu->sym;
  7513. @@ -438,8 +498,9 @@
  7514. menu->data ? "-->" : "++>",
  7515. indent + 1, ' ', prompt);
  7516. } else
  7517. - item_make(" %*c%s --->", indent + 1, ' ', prompt);
  7518. -
  7519. + item_make(" %*c%s %s",
  7520. + indent + 1, ' ', prompt,
  7521. + menu_is_empty(menu) ? "----" : "--->");
  7522. item_set_tag('m');
  7523. item_set_data(menu);
  7524. if (single_menu_mode && menu->data)
  7525. @@ -570,7 +631,7 @@
  7526. (sym_has_value(sym) || !sym_is_changable(sym)) ?
  7527. "" : _(" (NEW)"));
  7528. if (menu->prompt->type == P_MENU) {
  7529. - item_add_str(" --->");
  7530. + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->");
  7531. return;
  7532. }
  7533. }
  7534. @@ -582,40 +643,40 @@
  7535. indent -= doint;
  7536. }
  7537. -static void conf(struct menu *menu)
  7538. +static void conf(struct menu *menu, struct menu *active_menu)
  7539. {
  7540. struct menu *submenu;
  7541. const char *prompt = menu_get_prompt(menu);
  7542. + struct subtitle_part stpart;
  7543. struct symbol *sym;
  7544. - struct menu *active_menu = NULL;
  7545. int res;
  7546. int s_scroll = 0;
  7547. + if (menu != &rootmenu)
  7548. + stpart.text = menu_get_prompt(menu);
  7549. + else
  7550. + stpart.text = NULL;
  7551. + list_add_tail(&stpart.entries, &trail);
  7552. +
  7553. while (1) {
  7554. item_reset();
  7555. current_menu = menu;
  7556. build_conf(menu);
  7557. if (!child_count)
  7558. break;
  7559. - if (menu == &rootmenu) {
  7560. - item_make("--- ");
  7561. - item_set_tag(':');
  7562. - item_make(_(" Load an Alternate Configuration File"));
  7563. - item_set_tag('L');
  7564. - item_make(_(" Save an Alternate Configuration File"));
  7565. - item_set_tag('S');
  7566. - }
  7567. + set_subtitle();
  7568. dialog_clear();
  7569. res = dialog_menu(prompt ? _(prompt) : _("Main Menu"),
  7570. _(menu_instructions),
  7571. active_menu, &s_scroll);
  7572. if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
  7573. break;
  7574. - if (!item_activate_selected())
  7575. - continue;
  7576. - if (!item_tag())
  7577. - continue;
  7578. -
  7579. + if (item_count() != 0) {
  7580. + if (!item_activate_selected())
  7581. + continue;
  7582. + if (!item_tag())
  7583. + continue;
  7584. + }
  7585. submenu = item_data();
  7586. active_menu = item_data();
  7587. if (submenu)
  7588. @@ -630,32 +691,36 @@
  7589. if (single_menu_mode)
  7590. submenu->data = (void *) (long) !submenu->data;
  7591. else
  7592. - conf(submenu);
  7593. + conf(submenu, NULL);
  7594. break;
  7595. case 't':
  7596. if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
  7597. conf_choice(submenu);
  7598. else if (submenu->prompt->type == P_MENU)
  7599. - conf(submenu);
  7600. + conf(submenu, NULL);
  7601. break;
  7602. case 's':
  7603. conf_string(submenu);
  7604. break;
  7605. - case 'L':
  7606. - conf_load();
  7607. - break;
  7608. - case 'S':
  7609. - conf_save();
  7610. - break;
  7611. }
  7612. break;
  7613. case 2:
  7614. if (sym)
  7615. show_help(submenu);
  7616. - else
  7617. + else {
  7618. + reset_subtitle();
  7619. show_helptext(_("README"), _(mconf_readme));
  7620. + }
  7621. break;
  7622. case 3:
  7623. + reset_subtitle();
  7624. + conf_save();
  7625. + break;
  7626. + case 4:
  7627. + reset_subtitle();
  7628. + conf_load();
  7629. + break;
  7630. + case 5:
  7631. if (item_is_tag('t')) {
  7632. if (sym_set_tristate_value(sym, yes))
  7633. break;
  7634. @@ -663,31 +728,45 @@
  7635. show_textbox(NULL, setmod_text, 6, 74);
  7636. }
  7637. break;
  7638. - case 4:
  7639. + case 6:
  7640. if (item_is_tag('t'))
  7641. sym_set_tristate_value(sym, no);
  7642. break;
  7643. - case 5:
  7644. + case 7:
  7645. if (item_is_tag('t'))
  7646. sym_set_tristate_value(sym, mod);
  7647. break;
  7648. - case 6:
  7649. + case 8:
  7650. if (item_is_tag('t'))
  7651. sym_toggle_tristate_value(sym);
  7652. else if (item_is_tag('m'))
  7653. - conf(submenu);
  7654. + conf(submenu, NULL);
  7655. break;
  7656. - case 7:
  7657. + case 9:
  7658. search_conf();
  7659. break;
  7660. + case 10:
  7661. + show_all_options = !show_all_options;
  7662. + break;
  7663. }
  7664. }
  7665. +
  7666. + list_del(trail.prev);
  7667. }
  7668. -static void show_textbox(const char *title, const char *text, int r, int c)
  7669. +static int show_textbox_ext(const char *title, char *text, int r, int c, int
  7670. + *keys, int *vscroll, int *hscroll, update_text_fn
  7671. + update_text, void *data)
  7672. {
  7673. dialog_clear();
  7674. - dialog_textbox(title, text, r, c);
  7675. + return dialog_textbox(title, text, r, c, keys, vscroll, hscroll,
  7676. + update_text, data);
  7677. +}
  7678. +
  7679. +static void show_textbox(const char *title, const char *text, int r, int c)
  7680. +{
  7681. + show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL,
  7682. + NULL, NULL);
  7683. }
  7684. static void show_helptext(const char *title, const char *text)
  7685. @@ -695,25 +774,24 @@
  7686. show_textbox(title, text, 0, 0);
  7687. }
  7688. +static void conf_message_callback(const char *fmt, va_list ap)
  7689. +{
  7690. + char buf[PATH_MAX+1];
  7691. +
  7692. + vsnprintf(buf, sizeof(buf), fmt, ap);
  7693. + if (save_and_exit)
  7694. + printf("%s", buf);
  7695. + else
  7696. + show_textbox(NULL, buf, 6, 60);
  7697. +}
  7698. +
  7699. static void show_help(struct menu *menu)
  7700. {
  7701. struct gstr help = str_new();
  7702. - struct symbol *sym = menu->sym;
  7703. - if (menu_has_help(menu))
  7704. - {
  7705. - if (sym->name) {
  7706. - str_printf(&help, "%s:\n\n", sym->name);
  7707. - }
  7708. - str_append(&help, _(menu_get_help(menu)));
  7709. - str_append(&help, "\n");
  7710. - } else if (menu_has_help(sym->prop->menu->parent)) {
  7711. - str_append(&help, _(menu_get_help(sym->prop->menu->parent)));
  7712. - str_append(&help, "\n");
  7713. - } else {
  7714. - str_append(&help, nohelp_text);
  7715. - }
  7716. - get_symbol_str(&help, sym);
  7717. + help.max_width = getmaxx(stdscr) - 10;
  7718. + menu_get_ext_help(menu, &help);
  7719. +
  7720. show_helptext(_(menu_get_prompt(menu)), str_get(&help));
  7721. str_free(&help);
  7722. }
  7723. @@ -734,7 +812,12 @@
  7724. for (child = menu->list; child; child = child->next) {
  7725. if (!menu_is_visible(child))
  7726. continue;
  7727. - item_make("%s", _(menu_get_prompt(child)));
  7728. + if (child->sym)
  7729. + item_make("%s", _(menu_get_prompt(child)));
  7730. + else {
  7731. + item_make("*** %s ***", _(menu_get_prompt(child)));
  7732. + item_set_tag(':');
  7733. + }
  7734. item_set_data(child);
  7735. if (child->sym == active)
  7736. item_set_selected(1);
  7737. @@ -744,12 +827,17 @@
  7738. dialog_clear();
  7739. res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"),
  7740. _(radiolist_instructions),
  7741. - 15, 70, 6);
  7742. + MENUBOX_HEIGTH_MIN,
  7743. + MENUBOX_WIDTH_MIN,
  7744. + CHECKLIST_HEIGTH_MIN);
  7745. selected = item_activate_selected();
  7746. switch (res) {
  7747. case 0:
  7748. if (selected) {
  7749. child = item_data();
  7750. + if (!child->sym)
  7751. + break;
  7752. +
  7753. sym_set_tristate_value(child->sym, yes);
  7754. }
  7755. return;
  7756. @@ -863,9 +951,58 @@
  7757. }
  7758. }
  7759. +static int handle_exit(void)
  7760. +{
  7761. + int res;
  7762. +
  7763. + save_and_exit = 1;
  7764. + reset_subtitle();
  7765. + dialog_clear();
  7766. + if (conf_get_changed())
  7767. + res = dialog_yesno(NULL,
  7768. + _("Do you wish to save your new configuration?\n"
  7769. + "(Press <ESC><ESC> to continue configuration.)"),
  7770. + 6, 60);
  7771. + else
  7772. + res = -1;
  7773. +
  7774. + end_dialog(saved_x, saved_y);
  7775. +
  7776. + switch (res) {
  7777. + case 0:
  7778. + if (conf_write(filename)) {
  7779. + fprintf(stderr, _("\n\n"
  7780. + "Error while writing of the configuration.\n"
  7781. + "Your configuration changes were NOT saved."
  7782. + "\n\n"));
  7783. + return 1;
  7784. + }
  7785. + /* fall through */
  7786. + case -1:
  7787. + printf(_("\n\n"
  7788. + "*** End of the configuration.\n"
  7789. + "*** Execute 'make' to start the build or try 'make help'."
  7790. + "\n\n"));
  7791. + res = 0;
  7792. + break;
  7793. + default:
  7794. + fprintf(stderr, _("\n\n"
  7795. + "Your configuration changes were NOT saved."
  7796. + "\n\n"));
  7797. + if (res != KEY_ESC)
  7798. + res = 0;
  7799. + }
  7800. +
  7801. + return res;
  7802. +}
  7803. +
  7804. +static void sig_handler(int signo)
  7805. +{
  7806. + exit(handle_exit());
  7807. +}
  7808. +
  7809. int main(int ac, char **av)
  7810. {
  7811. - int saved_x, saved_y;
  7812. char *mode;
  7813. int res;
  7814. @@ -873,6 +1010,8 @@
  7815. bindtextdomain(PACKAGE, LOCALEDIR);
  7816. textdomain(PACKAGE);
  7817. + signal(SIGINT, sig_handler);
  7818. +
  7819. conf_parse(av[1]);
  7820. conf_read(NULL);
  7821. @@ -882,7 +1021,6 @@
  7822. single_menu_mode = 1;
  7823. }
  7824. - getyx(stdscr, saved_y, saved_x);
  7825. if (init_dialog(NULL)) {
  7826. fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
  7827. fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
  7828. @@ -890,41 +1028,12 @@
  7829. }
  7830. set_config_filename(conf_get_configname());
  7831. + conf_set_message_callback(conf_message_callback);
  7832. do {
  7833. - conf(&rootmenu);
  7834. - dialog_clear();
  7835. - if (conf_get_changed())
  7836. - res = dialog_yesno(NULL,
  7837. - _("Do you wish to save your "
  7838. - "new configuration?\n"
  7839. - "<ESC><ESC> to continue."),
  7840. - 6, 60);
  7841. - else
  7842. - res = -1;
  7843. + conf(&rootmenu, NULL);
  7844. + res = handle_exit();
  7845. } while (res == KEY_ESC);
  7846. - end_dialog(saved_x, saved_y);
  7847. -
  7848. - switch (res) {
  7849. - case 0:
  7850. - if (conf_write(filename)) {
  7851. - fprintf(stderr, _("\n\n"
  7852. - "Error during writing of the configuration.\n"
  7853. - "Your configuration changes were NOT saved."
  7854. - "\n\n"));
  7855. - return 1;
  7856. - }
  7857. - case -1:
  7858. - printf(_("\n\n"
  7859. - "*** End of configuration.\n"
  7860. - "*** Execute 'make' to build or try 'make help'."
  7861. - "\n\n"));
  7862. - break;
  7863. - default:
  7864. - fprintf(stderr, _("\n\n"
  7865. - "Your configuration changes were NOT saved."
  7866. - "\n\n"));
  7867. - }
  7868. - return conf_write_autoconf();
  7869. + return res;
  7870. }
  7871. diff -Nur uClibc-0.9.33.2/extra/config/menu.c uClibc-git/extra/config/menu.c
  7872. --- uClibc-0.9.33.2/extra/config/menu.c 2012-05-15 09:20:09.000000000 +0200
  7873. +++ uClibc-git/extra/config/menu.c 2014-02-03 12:32:56.000000000 +0100
  7874. @@ -3,12 +3,15 @@
  7875. * Released under the terms of the GNU GPL v2.0.
  7876. */
  7877. +#include <ctype.h>
  7878. +#include <stdarg.h>
  7879. #include <stdlib.h>
  7880. #include <string.h>
  7881. -#define LKC_DIRECT_LINK
  7882. #include "lkc.h"
  7883. +static const char nohelp_text[] = "There is no help available for this option.";
  7884. +
  7885. struct menu rootmenu;
  7886. static struct menu **last_entry_ptr;
  7887. @@ -35,7 +38,7 @@
  7888. va_end(ap);
  7889. }
  7890. -void menu_init(void)
  7891. +void _menu_init(void)
  7892. {
  7893. current_entry = current_menu = &rootmenu;
  7894. last_entry_ptr = &rootmenu.list;
  7895. @@ -45,7 +48,7 @@
  7896. {
  7897. struct menu *menu;
  7898. - menu = malloc(sizeof(*menu));
  7899. + menu = xmalloc(sizeof(*menu));
  7900. memset(menu, 0, sizeof(*menu));
  7901. menu->sym = sym;
  7902. menu->parent = current_menu;
  7903. @@ -55,6 +58,8 @@
  7904. *last_entry_ptr = menu;
  7905. last_entry_ptr = &menu->next;
  7906. current_entry = menu;
  7907. + if (sym)
  7908. + menu_add_symbol(P_SYMBOL, sym, NULL);
  7909. }
  7910. void menu_end_entry(void)
  7911. @@ -74,7 +79,7 @@
  7912. current_menu = current_menu->parent;
  7913. }
  7914. -struct expr *menu_check_dep(struct expr *e)
  7915. +static struct expr *menu_check_dep(struct expr *e)
  7916. {
  7917. if (!e)
  7918. return e;
  7919. @@ -133,8 +138,35 @@
  7920. while (isspace(*prompt))
  7921. prompt++;
  7922. }
  7923. - if (current_entry->prompt)
  7924. + if (current_entry->prompt && current_entry != &rootmenu)
  7925. prop_warn(prop, "prompt redefined");
  7926. +
  7927. + /* Apply all upper menus' visibilities to actual prompts. */
  7928. + if(type == P_PROMPT) {
  7929. + struct menu *menu = current_entry;
  7930. +
  7931. + while ((menu = menu->parent) != NULL) {
  7932. + struct expr *dup_expr;
  7933. +
  7934. + if (!menu->visibility)
  7935. + continue;
  7936. + /*
  7937. + * Do not add a reference to the
  7938. + * menu's visibility expression but
  7939. + * use a copy of it. Otherwise the
  7940. + * expression reduction functions
  7941. + * will modify expressions that have
  7942. + * multiple references which can
  7943. + * cause unwanted side effects.
  7944. + */
  7945. + dup_expr = expr_copy(menu->visibility);
  7946. +
  7947. + prop->visible.expr
  7948. + = expr_alloc_and(prop->visible.expr,
  7949. + dup_expr);
  7950. + }
  7951. + }
  7952. +
  7953. current_entry->prompt = prop;
  7954. }
  7955. prop->text = prompt;
  7956. @@ -147,6 +179,12 @@
  7957. return menu_add_prop(type, prompt, NULL, dep);
  7958. }
  7959. +void menu_add_visibility(struct expr *expr)
  7960. +{
  7961. + current_entry->visibility = expr_alloc_and(current_entry->visibility,
  7962. + expr);
  7963. +}
  7964. +
  7965. void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
  7966. {
  7967. menu_add_prop(type, NULL, expr, dep);
  7968. @@ -178,13 +216,13 @@
  7969. }
  7970. }
  7971. -static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2)
  7972. +static int menu_validate_number(struct symbol *sym, struct symbol *sym2)
  7973. {
  7974. return sym2->type == S_INT || sym2->type == S_HEX ||
  7975. (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
  7976. }
  7977. -void sym_check_prop(struct symbol *sym)
  7978. +static void sym_check_prop(struct symbol *sym)
  7979. {
  7980. struct property *prop;
  7981. struct symbol *sym2;
  7982. @@ -194,8 +232,17 @@
  7983. if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
  7984. prop->expr->type != E_SYMBOL)
  7985. prop_warn(prop,
  7986. - "default for config symbol '%'"
  7987. + "default for config symbol '%s'"
  7988. " must be a single symbol", sym->name);
  7989. + if (prop->expr->type != E_SYMBOL)
  7990. + break;
  7991. + sym2 = prop_get_symbol(prop);
  7992. + if (sym->type == S_HEX || sym->type == S_INT) {
  7993. + if (!menu_validate_number(sym, sym2))
  7994. + prop_warn(prop,
  7995. + "'%s': number is invalid",
  7996. + sym->name);
  7997. + }
  7998. break;
  7999. case P_SELECT:
  8000. sym2 = prop_get_symbol(prop);
  8001. @@ -215,8 +262,8 @@
  8002. if (sym->type != S_INT && sym->type != S_HEX)
  8003. prop_warn(prop, "range is only allowed "
  8004. "for int or hex symbols");
  8005. - if (!menu_range_valid_sym(sym, prop->expr->left.sym) ||
  8006. - !menu_range_valid_sym(sym, prop->expr->right.sym))
  8007. + if (!menu_validate_number(sym, prop->expr->left.sym) ||
  8008. + !menu_validate_number(sym, prop->expr->right.sym))
  8009. prop_warn(prop, "range is invalid");
  8010. break;
  8011. default:
  8012. @@ -315,6 +362,8 @@
  8013. parent->next = last_menu->next;
  8014. last_menu->next = NULL;
  8015. }
  8016. +
  8017. + sym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep);
  8018. }
  8019. for (menu = parent->list; menu; menu = menu->next) {
  8020. if (sym && sym_is_choice(sym) &&
  8021. @@ -387,6 +436,29 @@
  8022. }
  8023. }
  8024. +bool menu_has_prompt(struct menu *menu)
  8025. +{
  8026. + if (!menu->prompt)
  8027. + return false;
  8028. + return true;
  8029. +}
  8030. +
  8031. +/*
  8032. + * Determine if a menu is empty.
  8033. + * A menu is considered empty if it contains no or only
  8034. + * invisible entries.
  8035. + */
  8036. +bool menu_is_empty(struct menu *menu)
  8037. +{
  8038. + struct menu *child;
  8039. +
  8040. + for (child = menu->list; child; child = child->next) {
  8041. + if (menu_is_visible(child))
  8042. + return(false);
  8043. + }
  8044. + return(true);
  8045. +}
  8046. +
  8047. bool menu_is_visible(struct menu *menu)
  8048. {
  8049. struct menu *child;
  8050. @@ -395,6 +467,12 @@
  8051. if (!menu->prompt)
  8052. return false;
  8053. +
  8054. + if (menu->visibility) {
  8055. + if (expr_calc_value(menu->visibility) == no)
  8056. + return no;
  8057. + }
  8058. +
  8059. sym = menu->sym;
  8060. if (sym) {
  8061. sym_calc_value(sym);
  8062. @@ -404,12 +482,18 @@
  8063. if (visible != no)
  8064. return true;
  8065. +
  8066. if (!sym || sym_get_tristate_value(menu->sym) == no)
  8067. return false;
  8068. - for (child = menu->list; child; child = child->next)
  8069. - if (menu_is_visible(child))
  8070. + for (child = menu->list; child; child = child->next) {
  8071. + if (menu_is_visible(child)) {
  8072. + if (sym)
  8073. + sym->flags |= SYMBOL_DEF_USER;
  8074. return true;
  8075. + }
  8076. + }
  8077. +
  8078. return false;
  8079. }
  8080. @@ -451,3 +535,156 @@
  8081. else
  8082. return "";
  8083. }
  8084. +
  8085. +static void get_prompt_str(struct gstr *r, struct property *prop,
  8086. + struct list_head *head)
  8087. +{
  8088. + int i, j;
  8089. + struct menu *submenu[8], *menu, *location = NULL;
  8090. + struct jump_key *jump;
  8091. +
  8092. + str_printf(r, _("Prompt: %s\n"), _(prop->text));
  8093. + menu = prop->menu->parent;
  8094. + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) {
  8095. + bool accessible = menu_is_visible(menu);
  8096. +
  8097. + submenu[i++] = menu;
  8098. + if (location == NULL && accessible)
  8099. + location = menu;
  8100. + }
  8101. + if (head && location) {
  8102. + jump = xmalloc(sizeof(struct jump_key));
  8103. +
  8104. + if (menu_is_visible(prop->menu)) {
  8105. + /*
  8106. + * There is not enough room to put the hint at the
  8107. + * beginning of the "Prompt" line. Put the hint on the
  8108. + * last "Location" line even when it would belong on
  8109. + * the former.
  8110. + */
  8111. + jump->target = prop->menu;
  8112. + } else
  8113. + jump->target = location;
  8114. +
  8115. + if (list_empty(head))
  8116. + jump->index = 0;
  8117. + else
  8118. + jump->index = list_entry(head->prev, struct jump_key,
  8119. + entries)->index + 1;
  8120. +
  8121. + list_add_tail(&jump->entries, head);
  8122. + }
  8123. +
  8124. + if (i > 0) {
  8125. + str_printf(r, _(" Location:\n"));
  8126. + for (j = 4; --i >= 0; j += 2) {
  8127. + menu = submenu[i];
  8128. + if (head && location && menu == location)
  8129. + jump->offset = r->len - 1;
  8130. + str_printf(r, "%*c-> %s", j, ' ',
  8131. + _(menu_get_prompt(menu)));
  8132. + if (menu->sym) {
  8133. + str_printf(r, " (%s [=%s])", menu->sym->name ?
  8134. + menu->sym->name : _("<choice>"),
  8135. + sym_get_string_value(menu->sym));
  8136. + }
  8137. + str_append(r, "\n");
  8138. + }
  8139. + }
  8140. +}
  8141. +
  8142. +/*
  8143. + * get peoperty of type P_SYMBOL
  8144. + */
  8145. +static struct property *get_symbol_prop(struct symbol *sym)
  8146. +{
  8147. + struct property *prop = NULL;
  8148. +
  8149. + for_all_properties(sym, prop, P_SYMBOL)
  8150. + break;
  8151. + return prop;
  8152. +}
  8153. +
  8154. +/*
  8155. + * head is optional and may be NULL
  8156. + */
  8157. +void get_symbol_str(struct gstr *r, struct symbol *sym,
  8158. + struct list_head *head)
  8159. +{
  8160. + bool hit;
  8161. + struct property *prop;
  8162. +
  8163. + if (sym && sym->name) {
  8164. + str_printf(r, "Symbol: %s [=%s]\n", sym->name,
  8165. + sym_get_string_value(sym));
  8166. + str_printf(r, "Type : %s\n", sym_type_name(sym->type));
  8167. + if (sym->type == S_INT || sym->type == S_HEX) {
  8168. + prop = sym_get_range_prop(sym);
  8169. + if (prop) {
  8170. + str_printf(r, "Range : ");
  8171. + expr_gstr_print(prop->expr, r);
  8172. + str_append(r, "\n");
  8173. + }
  8174. + }
  8175. + }
  8176. + for_all_prompts(sym, prop)
  8177. + get_prompt_str(r, prop, head);
  8178. +
  8179. + prop = get_symbol_prop(sym);
  8180. + if (prop) {
  8181. + str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name,
  8182. + prop->menu->lineno);
  8183. + if (!expr_is_yes(prop->visible.expr)) {
  8184. + str_append(r, _(" Depends on: "));
  8185. + expr_gstr_print(prop->visible.expr, r);
  8186. + str_append(r, "\n");
  8187. + }
  8188. + }
  8189. +
  8190. + hit = false;
  8191. + for_all_properties(sym, prop, P_SELECT) {
  8192. + if (!hit) {
  8193. + str_append(r, " Selects: ");
  8194. + hit = true;
  8195. + } else
  8196. + str_printf(r, " && ");
  8197. + expr_gstr_print(prop->expr, r);
  8198. + }
  8199. + if (hit)
  8200. + str_append(r, "\n");
  8201. + if (sym->rev_dep.expr) {
  8202. + str_append(r, _(" Selected by: "));
  8203. + expr_gstr_print(sym->rev_dep.expr, r);
  8204. + str_append(r, "\n");
  8205. + }
  8206. + str_append(r, "\n\n");
  8207. +}
  8208. +
  8209. +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head)
  8210. +{
  8211. + struct symbol *sym;
  8212. + struct gstr res = str_new();
  8213. + int i;
  8214. +
  8215. + for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
  8216. + get_symbol_str(&res, sym, head);
  8217. + if (!i)
  8218. + str_append(&res, _("No matches found.\n"));
  8219. + return res;
  8220. +}
  8221. +
  8222. +
  8223. +void menu_get_ext_help(struct menu *menu, struct gstr *help)
  8224. +{
  8225. + struct symbol *sym = menu->sym;
  8226. + const char *help_text = nohelp_text;
  8227. +
  8228. + if (menu_has_help(menu)) {
  8229. + if (sym->name)
  8230. + str_printf(help, "%s%s:\n\n", CONFIG_, sym->name);
  8231. + help_text = menu_get_help(menu);
  8232. + }
  8233. + str_printf(help, "%s\n", _(help_text));
  8234. + if (sym)
  8235. + get_symbol_str(help, sym, NULL);
  8236. +}
  8237. diff -Nur uClibc-0.9.33.2/extra/config/merge_config.sh uClibc-git/extra/config/merge_config.sh
  8238. --- uClibc-0.9.33.2/extra/config/merge_config.sh 1970-01-01 01:00:00.000000000 +0100
  8239. +++ uClibc-git/extra/config/merge_config.sh 2014-02-03 12:32:56.000000000 +0100
  8240. @@ -0,0 +1,150 @@
  8241. +#!/bin/sh
  8242. +# merge_config.sh - Takes a list of config fragment values, and merges
  8243. +# them one by one. Provides warnings on overridden values, and specified
  8244. +# values that did not make it to the resulting .config file (due to missed
  8245. +# dependencies or config symbol removal).
  8246. +#
  8247. +# Portions reused from kconf_check and generate_cfg:
  8248. +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check
  8249. +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg
  8250. +#
  8251. +# Copyright (c) 2009-2010 Wind River Systems, Inc.
  8252. +# Copyright 2011 Linaro
  8253. +#
  8254. +# This program is free software; you can redistribute it and/or modify
  8255. +# it under the terms of the GNU General Public License version 2 as
  8256. +# published by the Free Software Foundation.
  8257. +#
  8258. +# This program is distributed in the hope that it will be useful,
  8259. +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  8260. +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8261. +# See the GNU General Public License for more details.
  8262. +
  8263. +clean_up() {
  8264. + rm -f $TMP_FILE
  8265. + exit
  8266. +}
  8267. +trap clean_up HUP INT TERM
  8268. +
  8269. +usage() {
  8270. + echo "Usage: $0 [OPTIONS] [CONFIG [...]]"
  8271. + echo " -h display this help text"
  8272. + echo " -m only merge the fragments, do not execute the make command"
  8273. + echo " -n use allnoconfig instead of alldefconfig"
  8274. + echo " -r list redundant entries when merging fragments"
  8275. + echo " -O dir to put generated output files"
  8276. +}
  8277. +
  8278. +MAKE=true
  8279. +ALLTARGET=alldefconfig
  8280. +WARNREDUN=false
  8281. +OUTPUT=.
  8282. +
  8283. +while true; do
  8284. + case $1 in
  8285. + "-n")
  8286. + ALLTARGET=allnoconfig
  8287. + shift
  8288. + continue
  8289. + ;;
  8290. + "-m")
  8291. + MAKE=false
  8292. + shift
  8293. + continue
  8294. + ;;
  8295. + "-h")
  8296. + usage
  8297. + exit
  8298. + ;;
  8299. + "-r")
  8300. + WARNREDUN=true
  8301. + shift
  8302. + continue
  8303. + ;;
  8304. + "-O")
  8305. + if [ -d $2 ];then
  8306. + OUTPUT=$(echo $2 | sed 's/\/*$//')
  8307. + else
  8308. + echo "output directory $2 does not exist" 1>&2
  8309. + exit 1
  8310. + fi
  8311. + shift 2
  8312. + continue
  8313. + ;;
  8314. + *)
  8315. + break
  8316. + ;;
  8317. + esac
  8318. +done
  8319. +
  8320. +INITFILE=$1
  8321. +shift;
  8322. +
  8323. +MERGE_LIST=$*
  8324. +SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p"
  8325. +TMP_FILE=$(mktemp ./.tmp.config.XXXXXXXXXX)
  8326. +
  8327. +echo "Using $INITFILE as base"
  8328. +cat $INITFILE > $TMP_FILE
  8329. +
  8330. +# Merge files, printing warnings on overrided values
  8331. +for MERGE_FILE in $MERGE_LIST ; do
  8332. + echo "Merging $MERGE_FILE"
  8333. + CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE)
  8334. +
  8335. + for CFG in $CFG_LIST ; do
  8336. + grep -q -w $CFG $TMP_FILE
  8337. + if [ $? -eq 0 ] ; then
  8338. + PREV_VAL=$(grep -w $CFG $TMP_FILE)
  8339. + NEW_VAL=$(grep -w $CFG $MERGE_FILE)
  8340. + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then
  8341. + echo Value of $CFG is redefined by fragment $MERGE_FILE:
  8342. + echo Previous value: $PREV_VAL
  8343. + echo New value: $NEW_VAL
  8344. + echo
  8345. + elif [ "$WARNREDUN" = "true" ]; then
  8346. + echo Value of $CFG is redundant by fragment $MERGE_FILE:
  8347. + fi
  8348. + sed -i "/$CFG[ =]/d" $TMP_FILE
  8349. + fi
  8350. + done
  8351. + cat $MERGE_FILE >> $TMP_FILE
  8352. +done
  8353. +
  8354. +if [ "$MAKE" = "false" ]; then
  8355. + cp $TMP_FILE $OUTPUT/.config
  8356. + echo "#"
  8357. + echo "# merged configuration written to $OUTPUT/.config (needs make)"
  8358. + echo "#"
  8359. + clean_up
  8360. + exit
  8361. +fi
  8362. +
  8363. +# If we have an output dir, setup the O= argument, otherwise leave
  8364. +# it blank, since O=. will create an unnecessary ./source softlink
  8365. +OUTPUT_ARG=""
  8366. +if [ "$OUTPUT" != "." ] ; then
  8367. + OUTPUT_ARG="O=$OUTPUT"
  8368. +fi
  8369. +
  8370. +
  8371. +# Use the merged file as the starting point for:
  8372. +# alldefconfig: Fills in any missing symbols with Kconfig default
  8373. +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set
  8374. +make KCONFIG_ALLCONFIG=$TMP_FILE $OUTPUT_ARG $ALLTARGET
  8375. +
  8376. +
  8377. +# Check all specified config values took (might have missed-dependency issues)
  8378. +for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do
  8379. +
  8380. + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE)
  8381. + ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config)
  8382. + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then
  8383. + echo "Value requested for $CFG not in final .config"
  8384. + echo "Requested value: $REQUESTED_VAL"
  8385. + echo "Actual value: $ACTUAL_VAL"
  8386. + echo ""
  8387. + fi
  8388. +done
  8389. +
  8390. +clean_up
  8391. diff -Nur uClibc-0.9.33.2/extra/config/nconf.c uClibc-git/extra/config/nconf.c
  8392. --- uClibc-0.9.33.2/extra/config/nconf.c 1970-01-01 01:00:00.000000000 +0100
  8393. +++ uClibc-git/extra/config/nconf.c 2014-02-03 12:32:56.000000000 +0100
  8394. @@ -0,0 +1,1557 @@
  8395. +/*
  8396. + * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
  8397. + * Released under the terms of the GNU GPL v2.0.
  8398. + *
  8399. + * Derived from menuconfig.
  8400. + *
  8401. + */
  8402. +#define _GNU_SOURCE
  8403. +#include <string.h>
  8404. +#include <stdlib.h>
  8405. +
  8406. +#include "lkc.h"
  8407. +#include "nconf.h"
  8408. +#include <ctype.h>
  8409. +
  8410. +static const char nconf_global_help[] = N_(
  8411. +"Help windows\n"
  8412. +"------------\n"
  8413. +"o Global help: Unless in a data entry window, pressing <F1> will give \n"
  8414. +" you the global help window, which you are just reading.\n"
  8415. +"\n"
  8416. +"o A short version of the global help is available by pressing <F3>.\n"
  8417. +"\n"
  8418. +"o Local help: To get help related to the current menu entry, use any\n"
  8419. +" of <?> <h>, or if in a data entry window then press <F1>.\n"
  8420. +"\n"
  8421. +"\n"
  8422. +"Menu entries\n"
  8423. +"------------\n"
  8424. +"This interface lets you select features and parameters for the \n"
  8425. +"build. Features can either be built-in, modularized, or removed.\n"
  8426. +"Parameters must be entered as text or decimal or hexadecimal numbers.\n"
  8427. +"\n"
  8428. +"Menu entries beginning with following braces represent features that\n"
  8429. +" [ ] can be built in or removed\n"
  8430. +" < > can be built in, modularized or removed\n"
  8431. +" { } can be built in or modularized, are selected by another feature\n"
  8432. +" - - are selected by another feature\n"
  8433. +" XXX cannot be selected. Symbol Info <F2> tells you why.\n"
  8434. +"*, M or whitespace inside braces means to build in, build as a module\n"
  8435. +"or to exclude the feature respectively.\n"
  8436. +"\n"
  8437. +"To change any of these features, highlight it with the movement keys\n"
  8438. +"listed below and press <y> to build it in, <m> to make it a module or\n"
  8439. +"<n> to remove it. You may press the <Space> key to cycle through the\n"
  8440. +"available options.\n"
  8441. +"\n"
  8442. +"A trailing \"--->\" designates a submenu, a trailing \"----\" an\n"
  8443. +"empty submenu.\n"
  8444. +"\n"
  8445. +"Menu navigation keys\n"
  8446. +"----------------------------------------------------------------------\n"
  8447. +"Linewise up <Up>\n"
  8448. +"Linewise down <Down>\n"
  8449. +"Pagewise up <Page Up>\n"
  8450. +"Pagewise down <Page Down>\n"
  8451. +"First entry <Home>\n"
  8452. +"Last entry <End>\n"
  8453. +"Enter a submenu <Right> <Enter>\n"
  8454. +"Go back to parent menu <Left> <Esc> <F5>\n"
  8455. +"Close a help window <Enter> <Esc> <F5>\n"
  8456. +"Close entry window, apply <Enter>\n"
  8457. +"Close entry window, forget <Esc> <F5>\n"
  8458. +"Start incremental, case-insensitive search for STRING in menu entries,\n"
  8459. +" no regex support, STRING is displayed in upper left corner\n"
  8460. +" </>STRING\n"
  8461. +" Remove last character <Backspace>\n"
  8462. +" Jump to next hit <Down>\n"
  8463. +" Jump to previous hit <Up>\n"
  8464. +"Exit menu search mode </> <Esc>\n"
  8465. +"Search for configuration variables with or without leading CONFIG_\n"
  8466. +" <F8>RegExpr<Enter>\n"
  8467. +"Verbose search help <F8><F1>\n"
  8468. +"----------------------------------------------------------------------\n"
  8469. +"\n"
  8470. +"Unless in a data entry window, key <1> may be used instead of <F1>,\n"
  8471. +"<2> instead of <F2>, etc.\n"
  8472. +"\n"
  8473. +"\n"
  8474. +"Radiolist (Choice list)\n"
  8475. +"-----------------------\n"
  8476. +"Use the movement keys listed above to select the option you wish to set\n"
  8477. +"and press <Space>.\n"
  8478. +"\n"
  8479. +"\n"
  8480. +"Data entry\n"
  8481. +"----------\n"
  8482. +"Enter the requested information and press <Enter>. Hexadecimal values\n"
  8483. +"may be entered without the \"0x\" prefix.\n"
  8484. +"\n"
  8485. +"\n"
  8486. +"Text Box (Help Window)\n"
  8487. +"----------------------\n"
  8488. +"Use movement keys as listed in table above.\n"
  8489. +"\n"
  8490. +"Press any of <Enter> <Esc> <q> <F5> <F9> to exit.\n"
  8491. +"\n"
  8492. +"\n"
  8493. +"Alternate configuration files\n"
  8494. +"-----------------------------\n"
  8495. +"nconfig supports switching between different configurations.\n"
  8496. +"Press <F6> to save your current configuration. Press <F7> and enter\n"
  8497. +"a file name to load a previously saved configuration.\n"
  8498. +"\n"
  8499. +"\n"
  8500. +"Terminal configuration\n"
  8501. +"----------------------\n"
  8502. +"If you use nconfig in a xterm window, make sure your TERM environment\n"
  8503. +"variable specifies a terminal configuration which supports at least\n"
  8504. +"16 colors. Otherwise nconfig will look rather bad.\n"
  8505. +"\n"
  8506. +"If the \"stty size\" command reports the current terminalsize correctly,\n"
  8507. +"nconfig will adapt to sizes larger than the traditional 80x25 \"standard\"\n"
  8508. +"and display longer menus properly.\n"
  8509. +"\n"
  8510. +"\n"
  8511. +"Single menu mode\n"
  8512. +"----------------\n"
  8513. +"If you prefer to have all of the menu entries listed in a single menu,\n"
  8514. +"rather than the default multimenu hierarchy, run nconfig with\n"
  8515. +"NCONFIG_MODE environment variable set to single_menu. Example:\n"
  8516. +"\n"
  8517. +"make NCONFIG_MODE=single_menu nconfig\n"
  8518. +"\n"
  8519. +"<Enter> will then unfold the appropriate category, or fold it if it\n"
  8520. +"is already unfolded. Folded menu entries will be designated by a\n"
  8521. +"leading \"++>\" and unfolded entries by a leading \"-->\".\n"
  8522. +"\n"
  8523. +"Note that this mode can eventually be a little more CPU expensive than\n"
  8524. +"the default mode, especially with a larger number of unfolded submenus.\n"
  8525. +"\n"),
  8526. +menu_no_f_instructions[] = N_(
  8527. +"Legend: [*] built-in [ ] excluded <M> module < > module capable.\n"
  8528. +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n"
  8529. +"\n"
  8530. +"Use the following keys to navigate the menus:\n"
  8531. +"Move up or down with <Up> and <Down>.\n"
  8532. +"Enter a submenu with <Enter> or <Right>.\n"
  8533. +"Exit a submenu to its parent menu with <Esc> or <Left>.\n"
  8534. +"Pressing <y> includes, <n> excludes, <m> modularizes features.\n"
  8535. +"Pressing <Space> cycles through the available options.\n"
  8536. +"To search for menu entries press </>.\n"
  8537. +"<Esc> always leaves the current window.\n"
  8538. +"\n"
  8539. +"You do not have function keys support.\n"
  8540. +"Press <1> instead of <F1>, <2> instead of <F2>, etc.\n"
  8541. +"For verbose global help use key <1>.\n"
  8542. +"For help related to the current menu entry press <?> or <h>.\n"),
  8543. +menu_instructions[] = N_(
  8544. +"Legend: [*] built-in [ ] excluded <M> module < > module capable.\n"
  8545. +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n"
  8546. +"\n"
  8547. +"Use the following keys to navigate the menus:\n"
  8548. +"Move up or down with <Up> or <Down>.\n"
  8549. +"Enter a submenu with <Enter> or <Right>.\n"
  8550. +"Exit a submenu to its parent menu with <Esc> or <Left>.\n"
  8551. +"Pressing <y> includes, <n> excludes, <m> modularizes features.\n"
  8552. +"Pressing <Space> cycles through the available options.\n"
  8553. +"To search for menu entries press </>.\n"
  8554. +"<Esc> always leaves the current window.\n"
  8555. +"\n"
  8556. +"Pressing <1> may be used instead of <F1>, <2> instead of <F2>, etc.\n"
  8557. +"For verbose global help press <F1>.\n"
  8558. +"For help related to the current menu entry press <?> or <h>.\n"),
  8559. +radiolist_instructions[] = N_(
  8560. +"Press <Up>, <Down>, <Home> or <End> to navigate a radiolist, select\n"
  8561. +"with <Space>.\n"
  8562. +"For help related to the current entry press <?> or <h>.\n"
  8563. +"For global help press <F1>.\n"),
  8564. +inputbox_instructions_int[] = N_(
  8565. +"Please enter a decimal value.\n"
  8566. +"Fractions will not be accepted.\n"
  8567. +"Press <Enter> to apply, <Esc> to cancel."),
  8568. +inputbox_instructions_hex[] = N_(
  8569. +"Please enter a hexadecimal value.\n"
  8570. +"Press <Enter> to apply, <Esc> to cancel."),
  8571. +inputbox_instructions_string[] = N_(
  8572. +"Please enter a string value.\n"
  8573. +"Press <Enter> to apply, <Esc> to cancel."),
  8574. +setmod_text[] = N_(
  8575. +"This feature depends on another feature which has been configured as a\n"
  8576. +"module. As a result, the current feature will be built as a module too."),
  8577. +load_config_text[] = N_(
  8578. +"Enter the name of the configuration file you wish to load.\n"
  8579. +"Accept the name shown to restore the configuration you last\n"
  8580. +"retrieved. Leave empty to abort."),
  8581. +load_config_help[] = N_(
  8582. +"For various reasons, one may wish to keep several different\n"
  8583. +"configurations available on a single machine.\n"
  8584. +"\n"
  8585. +"If you have saved a previous configuration in a file other than the\n"
  8586. +"default one, entering its name here will allow you to load and modify\n"
  8587. +"that configuration.\n"
  8588. +"\n"
  8589. +"Leave empty to abort.\n"),
  8590. +save_config_text[] = N_(
  8591. +"Enter a filename to which this configuration should be saved\n"
  8592. +"as an alternate. Leave empty to abort."),
  8593. +save_config_help[] = N_(
  8594. +"For various reasons, one may wish to keep several different\n"
  8595. +"configurations available on a single machine.\n"
  8596. +"\n"
  8597. +"Entering a file name here will allow you to later retrieve, modify\n"
  8598. +"and use the current configuration as an alternate to whatever\n"
  8599. +"configuration options you have selected at that time.\n"
  8600. +"\n"
  8601. +"Leave empty to abort.\n"),
  8602. +search_help[] = N_(
  8603. +"Search for symbols (configuration variable names CONFIG_*) and display\n"
  8604. +"their relations. Regular expressions are supported.\n"
  8605. +"Example: Search for \"^FOO\".\n"
  8606. +"Result:\n"
  8607. +"-----------------------------------------------------------------\n"
  8608. +"Symbol: FOO [ = m]\n"
  8609. +"Prompt: Foo bus is used to drive the bar HW\n"
  8610. +"Defined at drivers/pci/Kconfig:47\n"
  8611. +"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
  8612. +"Location:\n"
  8613. +" -> Bus options (PCI, PCMCIA, EISA, ISA)\n"
  8614. +" -> PCI support (PCI [ = y])\n"
  8615. +" -> PCI access mode (<choice> [ = y])\n"
  8616. +"Selects: LIBCRC32\n"
  8617. +"Selected by: BAR\n"
  8618. +"-----------------------------------------------------------------\n"
  8619. +"o The line 'Prompt:' shows the text displayed for this symbol in\n"
  8620. +" the menu hierarchy.\n"
  8621. +"o The 'Defined at' line tells at what file / line number the symbol is\n"
  8622. +" defined.\n"
  8623. +"o The 'Depends on:' line lists symbols that need to be defined for\n"
  8624. +" this symbol to be visible and selectable in the menu.\n"
  8625. +"o The 'Location:' lines tell, where in the menu structure this symbol\n"
  8626. +" is located. A location followed by a [ = y] indicates that this is\n"
  8627. +" a selectable menu item, and the current value is displayed inside\n"
  8628. +" brackets.\n"
  8629. +"o The 'Selects:' line tells, what symbol will be automatically selected\n"
  8630. +" if this symbol is selected (y or m).\n"
  8631. +"o The 'Selected by' line tells what symbol has selected this symbol.\n"
  8632. +"\n"
  8633. +"Only relevant lines are shown.\n"
  8634. +"\n\n"
  8635. +"Search examples:\n"
  8636. +"USB => find all symbols containing USB\n"
  8637. +"^USB => find all symbols starting with USB\n"
  8638. +"USB$ => find all symbols ending with USB\n"
  8639. +"\n");
  8640. +
  8641. +struct mitem {
  8642. + char str[256];
  8643. + char tag;
  8644. + void *usrptr;
  8645. + int is_visible;
  8646. +};
  8647. +
  8648. +#define MAX_MENU_ITEMS 4096
  8649. +static int show_all_items;
  8650. +static int indent;
  8651. +static struct menu *current_menu;
  8652. +static int child_count;
  8653. +static int single_menu_mode;
  8654. +/* the window in which all information appears */
  8655. +static WINDOW *main_window;
  8656. +/* the largest size of the menu window */
  8657. +static int mwin_max_lines;
  8658. +static int mwin_max_cols;
  8659. +/* the window in which we show option buttons */
  8660. +static MENU *curses_menu;
  8661. +static ITEM *curses_menu_items[MAX_MENU_ITEMS];
  8662. +static struct mitem k_menu_items[MAX_MENU_ITEMS];
  8663. +static int items_num;
  8664. +static int global_exit;
  8665. +/* the currently selected button */
  8666. +const char *current_instructions = menu_instructions;
  8667. +
  8668. +static char *dialog_input_result;
  8669. +static int dialog_input_result_len;
  8670. +
  8671. +static void conf(struct menu *menu);
  8672. +static void conf_choice(struct menu *menu);
  8673. +static void conf_string(struct menu *menu);
  8674. +static void conf_load(void);
  8675. +static void conf_save(void);
  8676. +static void show_help(struct menu *menu);
  8677. +static int do_exit(void);
  8678. +static void setup_windows(void);
  8679. +static void search_conf(void);
  8680. +
  8681. +typedef void (*function_key_handler_t)(int *key, struct menu *menu);
  8682. +static void handle_f1(int *key, struct menu *current_item);
  8683. +static void handle_f2(int *key, struct menu *current_item);
  8684. +static void handle_f3(int *key, struct menu *current_item);
  8685. +static void handle_f4(int *key, struct menu *current_item);
  8686. +static void handle_f5(int *key, struct menu *current_item);
  8687. +static void handle_f6(int *key, struct menu *current_item);
  8688. +static void handle_f7(int *key, struct menu *current_item);
  8689. +static void handle_f8(int *key, struct menu *current_item);
  8690. +static void handle_f9(int *key, struct menu *current_item);
  8691. +
  8692. +struct function_keys {
  8693. + const char *key_str;
  8694. + const char *func;
  8695. + function_key key;
  8696. + function_key_handler_t handler;
  8697. +};
  8698. +
  8699. +static const int function_keys_num = 9;
  8700. +struct function_keys function_keys[] = {
  8701. + {
  8702. + .key_str = "F1",
  8703. + .func = "Help",
  8704. + .key = F_HELP,
  8705. + .handler = handle_f1,
  8706. + },
  8707. + {
  8708. + .key_str = "F2",
  8709. + .func = "SymInfo",
  8710. + .key = F_SYMBOL,
  8711. + .handler = handle_f2,
  8712. + },
  8713. + {
  8714. + .key_str = "F3",
  8715. + .func = "Help 2",
  8716. + .key = F_INSTS,
  8717. + .handler = handle_f3,
  8718. + },
  8719. + {
  8720. + .key_str = "F4",
  8721. + .func = "ShowAll",
  8722. + .key = F_CONF,
  8723. + .handler = handle_f4,
  8724. + },
  8725. + {
  8726. + .key_str = "F5",
  8727. + .func = "Back",
  8728. + .key = F_BACK,
  8729. + .handler = handle_f5,
  8730. + },
  8731. + {
  8732. + .key_str = "F6",
  8733. + .func = "Save",
  8734. + .key = F_SAVE,
  8735. + .handler = handle_f6,
  8736. + },
  8737. + {
  8738. + .key_str = "F7",
  8739. + .func = "Load",
  8740. + .key = F_LOAD,
  8741. + .handler = handle_f7,
  8742. + },
  8743. + {
  8744. + .key_str = "F8",
  8745. + .func = "SymSearch",
  8746. + .key = F_SEARCH,
  8747. + .handler = handle_f8,
  8748. + },
  8749. + {
  8750. + .key_str = "F9",
  8751. + .func = "Exit",
  8752. + .key = F_EXIT,
  8753. + .handler = handle_f9,
  8754. + },
  8755. +};
  8756. +
  8757. +static void print_function_line(void)
  8758. +{
  8759. + int i;
  8760. + int offset = 1;
  8761. + const int skip = 1;
  8762. + int lines = getmaxy(stdscr);
  8763. +
  8764. + for (i = 0; i < function_keys_num; i++) {
  8765. + (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]);
  8766. + mvwprintw(main_window, lines-3, offset,
  8767. + "%s",
  8768. + function_keys[i].key_str);
  8769. + (void) wattrset(main_window, attributes[FUNCTION_TEXT]);
  8770. + offset += strlen(function_keys[i].key_str);
  8771. + mvwprintw(main_window, lines-3,
  8772. + offset, "%s",
  8773. + function_keys[i].func);
  8774. + offset += strlen(function_keys[i].func) + skip;
  8775. + }
  8776. + (void) wattrset(main_window, attributes[NORMAL]);
  8777. +}
  8778. +
  8779. +/* help */
  8780. +static void handle_f1(int *key, struct menu *current_item)
  8781. +{
  8782. + show_scroll_win(main_window,
  8783. + _("Global help"), _(nconf_global_help));
  8784. + return;
  8785. +}
  8786. +
  8787. +/* symbole help */
  8788. +static void handle_f2(int *key, struct menu *current_item)
  8789. +{
  8790. + show_help(current_item);
  8791. + return;
  8792. +}
  8793. +
  8794. +/* instructions */
  8795. +static void handle_f3(int *key, struct menu *current_item)
  8796. +{
  8797. + show_scroll_win(main_window,
  8798. + _("Short help"),
  8799. + _(current_instructions));
  8800. + return;
  8801. +}
  8802. +
  8803. +/* config */
  8804. +static void handle_f4(int *key, struct menu *current_item)
  8805. +{
  8806. + int res = btn_dialog(main_window,
  8807. + _("Show all symbols?"),
  8808. + 2,
  8809. + " <Show All> ",
  8810. + "<Don't show all>");
  8811. + if (res == 0)
  8812. + show_all_items = 1;
  8813. + else if (res == 1)
  8814. + show_all_items = 0;
  8815. +
  8816. + return;
  8817. +}
  8818. +
  8819. +/* back */
  8820. +static void handle_f5(int *key, struct menu *current_item)
  8821. +{
  8822. + *key = KEY_LEFT;
  8823. + return;
  8824. +}
  8825. +
  8826. +/* save */
  8827. +static void handle_f6(int *key, struct menu *current_item)
  8828. +{
  8829. + conf_save();
  8830. + return;
  8831. +}
  8832. +
  8833. +/* load */
  8834. +static void handle_f7(int *key, struct menu *current_item)
  8835. +{
  8836. + conf_load();
  8837. + return;
  8838. +}
  8839. +
  8840. +/* search */
  8841. +static void handle_f8(int *key, struct menu *current_item)
  8842. +{
  8843. + search_conf();
  8844. + return;
  8845. +}
  8846. +
  8847. +/* exit */
  8848. +static void handle_f9(int *key, struct menu *current_item)
  8849. +{
  8850. + do_exit();
  8851. + return;
  8852. +}
  8853. +
  8854. +/* return != 0 to indicate the key was handles */
  8855. +static int process_special_keys(int *key, struct menu *menu)
  8856. +{
  8857. + int i;
  8858. +
  8859. + if (*key == KEY_RESIZE) {
  8860. + setup_windows();
  8861. + return 1;
  8862. + }
  8863. +
  8864. + for (i = 0; i < function_keys_num; i++) {
  8865. + if (*key == KEY_F(function_keys[i].key) ||
  8866. + *key == '0' + function_keys[i].key){
  8867. + function_keys[i].handler(key, menu);
  8868. + return 1;
  8869. + }
  8870. + }
  8871. +
  8872. + return 0;
  8873. +}
  8874. +
  8875. +static void clean_items(void)
  8876. +{
  8877. + int i;
  8878. + for (i = 0; curses_menu_items[i]; i++)
  8879. + free_item(curses_menu_items[i]);
  8880. + bzero(curses_menu_items, sizeof(curses_menu_items));
  8881. + bzero(k_menu_items, sizeof(k_menu_items));
  8882. + items_num = 0;
  8883. +}
  8884. +
  8885. +typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN,
  8886. + FIND_NEXT_MATCH_DOWN, FIND_NEXT_MATCH_UP} match_f;
  8887. +
  8888. +/* return the index of the matched item, or -1 if no such item exists */
  8889. +static int get_mext_match(const char *match_str, match_f flag)
  8890. +{
  8891. + int match_start = item_index(current_item(curses_menu));
  8892. + int index;
  8893. +
  8894. + if (flag == FIND_NEXT_MATCH_DOWN)
  8895. + ++match_start;
  8896. + else if (flag == FIND_NEXT_MATCH_UP)
  8897. + --match_start;
  8898. +
  8899. + index = match_start;
  8900. + index = (index + items_num) % items_num;
  8901. + while (true) {
  8902. + char *str = k_menu_items[index].str;
  8903. + if (strcasestr(str, match_str) != 0)
  8904. + return index;
  8905. + if (flag == FIND_NEXT_MATCH_UP ||
  8906. + flag == MATCH_TINKER_PATTERN_UP)
  8907. + --index;
  8908. + else
  8909. + ++index;
  8910. + index = (index + items_num) % items_num;
  8911. + if (index == match_start)
  8912. + return -1;
  8913. + }
  8914. +}
  8915. +
  8916. +/* Make a new item. */
  8917. +static void item_make(struct menu *menu, char tag, const char *fmt, ...)
  8918. +{
  8919. + va_list ap;
  8920. +
  8921. + if (items_num > MAX_MENU_ITEMS-1)
  8922. + return;
  8923. +
  8924. + bzero(&k_menu_items[items_num], sizeof(k_menu_items[0]));
  8925. + k_menu_items[items_num].tag = tag;
  8926. + k_menu_items[items_num].usrptr = menu;
  8927. + if (menu != NULL)
  8928. + k_menu_items[items_num].is_visible =
  8929. + menu_is_visible(menu);
  8930. + else
  8931. + k_menu_items[items_num].is_visible = 1;
  8932. +
  8933. + va_start(ap, fmt);
  8934. + vsnprintf(k_menu_items[items_num].str,
  8935. + sizeof(k_menu_items[items_num].str),
  8936. + fmt, ap);
  8937. + va_end(ap);
  8938. +
  8939. + if (!k_menu_items[items_num].is_visible)
  8940. + memcpy(k_menu_items[items_num].str, "XXX", 3);
  8941. +
  8942. + curses_menu_items[items_num] = new_item(
  8943. + k_menu_items[items_num].str,
  8944. + k_menu_items[items_num].str);
  8945. + set_item_userptr(curses_menu_items[items_num],
  8946. + &k_menu_items[items_num]);
  8947. + /*
  8948. + if (!k_menu_items[items_num].is_visible)
  8949. + item_opts_off(curses_menu_items[items_num], O_SELECTABLE);
  8950. + */
  8951. +
  8952. + items_num++;
  8953. + curses_menu_items[items_num] = NULL;
  8954. +}
  8955. +
  8956. +/* very hackish. adds a string to the last item added */
  8957. +static void item_add_str(const char *fmt, ...)
  8958. +{
  8959. + va_list ap;
  8960. + int index = items_num-1;
  8961. + char new_str[256];
  8962. + char tmp_str[256];
  8963. +
  8964. + if (index < 0)
  8965. + return;
  8966. +
  8967. + va_start(ap, fmt);
  8968. + vsnprintf(new_str, sizeof(new_str), fmt, ap);
  8969. + va_end(ap);
  8970. + snprintf(tmp_str, sizeof(tmp_str), "%s%s",
  8971. + k_menu_items[index].str, new_str);
  8972. + strncpy(k_menu_items[index].str,
  8973. + tmp_str,
  8974. + sizeof(k_menu_items[index].str));
  8975. +
  8976. + free_item(curses_menu_items[index]);
  8977. + curses_menu_items[index] = new_item(
  8978. + k_menu_items[index].str,
  8979. + k_menu_items[index].str);
  8980. + set_item_userptr(curses_menu_items[index],
  8981. + &k_menu_items[index]);
  8982. +}
  8983. +
  8984. +/* get the tag of the currently selected item */
  8985. +static char item_tag(void)
  8986. +{
  8987. + ITEM *cur;
  8988. + struct mitem *mcur;
  8989. +
  8990. + cur = current_item(curses_menu);
  8991. + if (cur == NULL)
  8992. + return 0;
  8993. + mcur = (struct mitem *) item_userptr(cur);
  8994. + return mcur->tag;
  8995. +}
  8996. +
  8997. +static int curses_item_index(void)
  8998. +{
  8999. + return item_index(current_item(curses_menu));
  9000. +}
  9001. +
  9002. +static void *item_data(void)
  9003. +{
  9004. + ITEM *cur;
  9005. + struct mitem *mcur;
  9006. +
  9007. + cur = current_item(curses_menu);
  9008. + if (!cur)
  9009. + return NULL;
  9010. + mcur = (struct mitem *) item_userptr(cur);
  9011. + return mcur->usrptr;
  9012. +
  9013. +}
  9014. +
  9015. +static int item_is_tag(char tag)
  9016. +{
  9017. + return item_tag() == tag;
  9018. +}
  9019. +
  9020. +static char filename[PATH_MAX+1];
  9021. +static char menu_backtitle[PATH_MAX+128];
  9022. +static const char *set_config_filename(const char *config_filename)
  9023. +{
  9024. + int size;
  9025. +
  9026. + size = snprintf(menu_backtitle, sizeof(menu_backtitle),
  9027. + "%s - %s", config_filename, rootmenu.prompt->text);
  9028. + if (size >= sizeof(menu_backtitle))
  9029. + menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
  9030. +
  9031. + size = snprintf(filename, sizeof(filename), "%s", config_filename);
  9032. + if (size >= sizeof(filename))
  9033. + filename[sizeof(filename)-1] = '\0';
  9034. + return menu_backtitle;
  9035. +}
  9036. +
  9037. +/* return = 0 means we are successful.
  9038. + * -1 means go on doing what you were doing
  9039. + */
  9040. +static int do_exit(void)
  9041. +{
  9042. + int res;
  9043. + if (!conf_get_changed()) {
  9044. + global_exit = 1;
  9045. + return 0;
  9046. + }
  9047. + res = btn_dialog(main_window,
  9048. + _("Do you wish to save your new configuration?\n"
  9049. + "<ESC> to cancel and resume nconfig."),
  9050. + 2,
  9051. + " <save> ",
  9052. + "<don't save>");
  9053. + if (res == KEY_EXIT) {
  9054. + global_exit = 0;
  9055. + return -1;
  9056. + }
  9057. +
  9058. + /* if we got here, the user really wants to exit */
  9059. + switch (res) {
  9060. + case 0:
  9061. + res = conf_write(filename);
  9062. + if (res)
  9063. + btn_dialog(
  9064. + main_window,
  9065. + _("Error during writing of configuration.\n"
  9066. + "Your configuration changes were NOT saved."),
  9067. + 1,
  9068. + "<OK>");
  9069. + break;
  9070. + default:
  9071. + btn_dialog(
  9072. + main_window,
  9073. + _("Your configuration changes were NOT saved."),
  9074. + 1,
  9075. + "<OK>");
  9076. + break;
  9077. + }
  9078. + global_exit = 1;
  9079. + return 0;
  9080. +}
  9081. +
  9082. +
  9083. +static void search_conf(void)
  9084. +{
  9085. + struct symbol **sym_arr;
  9086. + struct gstr res;
  9087. + struct gstr title;
  9088. + char *dialog_input;
  9089. + int dres;
  9090. +
  9091. + title = str_new();
  9092. + str_printf( &title, _("Enter %s (sub)string or regexp to search for "
  9093. + "(with or without \"%s\")"), CONFIG_, CONFIG_);
  9094. +
  9095. +again:
  9096. + dres = dialog_inputbox(main_window,
  9097. + _("Search Configuration Parameter"),
  9098. + str_get(&title),
  9099. + "", &dialog_input_result, &dialog_input_result_len);
  9100. + switch (dres) {
  9101. + case 0:
  9102. + break;
  9103. + case 1:
  9104. + show_scroll_win(main_window,
  9105. + _("Search Configuration"), search_help);
  9106. + goto again;
  9107. + default:
  9108. + str_free(&title);
  9109. + return;
  9110. + }
  9111. +
  9112. + /* strip the prefix if necessary */
  9113. + dialog_input = dialog_input_result;
  9114. + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0)
  9115. + dialog_input += strlen(CONFIG_);
  9116. +
  9117. + sym_arr = sym_re_search(dialog_input);
  9118. + res = get_relations_str(sym_arr, NULL);
  9119. + free(sym_arr);
  9120. + show_scroll_win(main_window,
  9121. + _("Search Results"), str_get(&res));
  9122. + str_free(&res);
  9123. + str_free(&title);
  9124. +}
  9125. +
  9126. +
  9127. +static void build_conf(struct menu *menu)
  9128. +{
  9129. + struct symbol *sym;
  9130. + struct property *prop;
  9131. + struct menu *child;
  9132. + int type, tmp, doint = 2;
  9133. + tristate val;
  9134. + char ch;
  9135. +
  9136. + if (!menu || (!show_all_items && !menu_is_visible(menu)))
  9137. + return;
  9138. +
  9139. + sym = menu->sym;
  9140. + prop = menu->prompt;
  9141. + if (!sym) {
  9142. + if (prop && menu != current_menu) {
  9143. + const char *prompt = menu_get_prompt(menu);
  9144. + enum prop_type ptype;
  9145. + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
  9146. + switch (ptype) {
  9147. + case P_MENU:
  9148. + child_count++;
  9149. + prompt = _(prompt);
  9150. + if (single_menu_mode) {
  9151. + item_make(menu, 'm',
  9152. + "%s%*c%s",
  9153. + menu->data ? "-->" : "++>",
  9154. + indent + 1, ' ', prompt);
  9155. + } else
  9156. + item_make(menu, 'm',
  9157. + " %*c%s %s",
  9158. + indent + 1, ' ', prompt,
  9159. + menu_is_empty(menu) ? "----" : "--->");
  9160. +
  9161. + if (single_menu_mode && menu->data)
  9162. + goto conf_childs;
  9163. + return;
  9164. + case P_COMMENT:
  9165. + if (prompt) {
  9166. + child_count++;
  9167. + item_make(menu, ':',
  9168. + " %*c*** %s ***",
  9169. + indent + 1, ' ',
  9170. + _(prompt));
  9171. + }
  9172. + break;
  9173. + default:
  9174. + if (prompt) {
  9175. + child_count++;
  9176. + item_make(menu, ':', "---%*c%s",
  9177. + indent + 1, ' ',
  9178. + _(prompt));
  9179. + }
  9180. + }
  9181. + } else
  9182. + doint = 0;
  9183. + goto conf_childs;
  9184. + }
  9185. +
  9186. + type = sym_get_type(sym);
  9187. + if (sym_is_choice(sym)) {
  9188. + struct symbol *def_sym = sym_get_choice_value(sym);
  9189. + struct menu *def_menu = NULL;
  9190. +
  9191. + child_count++;
  9192. + for (child = menu->list; child; child = child->next) {
  9193. + if (menu_is_visible(child) && child->sym == def_sym)
  9194. + def_menu = child;
  9195. + }
  9196. +
  9197. + val = sym_get_tristate_value(sym);
  9198. + if (sym_is_changable(sym)) {
  9199. + switch (type) {
  9200. + case S_BOOLEAN:
  9201. + item_make(menu, 't', "[%c]",
  9202. + val == no ? ' ' : '*');
  9203. + break;
  9204. + case S_TRISTATE:
  9205. + switch (val) {
  9206. + case yes:
  9207. + ch = '*';
  9208. + break;
  9209. + case mod:
  9210. + ch = 'M';
  9211. + break;
  9212. + default:
  9213. + ch = ' ';
  9214. + break;
  9215. + }
  9216. + item_make(menu, 't', "<%c>", ch);
  9217. + break;
  9218. + }
  9219. + } else {
  9220. + item_make(menu, def_menu ? 't' : ':', " ");
  9221. + }
  9222. +
  9223. + item_add_str("%*c%s", indent + 1,
  9224. + ' ', _(menu_get_prompt(menu)));
  9225. + if (val == yes) {
  9226. + if (def_menu) {
  9227. + item_add_str(" (%s)",
  9228. + _(menu_get_prompt(def_menu)));
  9229. + item_add_str(" --->");
  9230. + if (def_menu->list) {
  9231. + indent += 2;
  9232. + build_conf(def_menu);
  9233. + indent -= 2;
  9234. + }
  9235. + }
  9236. + return;
  9237. + }
  9238. + } else {
  9239. + if (menu == current_menu) {
  9240. + item_make(menu, ':',
  9241. + "---%*c%s", indent + 1,
  9242. + ' ', _(menu_get_prompt(menu)));
  9243. + goto conf_childs;
  9244. + }
  9245. + child_count++;
  9246. + val = sym_get_tristate_value(sym);
  9247. + if (sym_is_choice_value(sym) && val == yes) {
  9248. + item_make(menu, ':', " ");
  9249. + } else {
  9250. + switch (type) {
  9251. + case S_BOOLEAN:
  9252. + if (sym_is_changable(sym))
  9253. + item_make(menu, 't', "[%c]",
  9254. + val == no ? ' ' : '*');
  9255. + else
  9256. + item_make(menu, 't', "-%c-",
  9257. + val == no ? ' ' : '*');
  9258. + break;
  9259. + case S_TRISTATE:
  9260. + switch (val) {
  9261. + case yes:
  9262. + ch = '*';
  9263. + break;
  9264. + case mod:
  9265. + ch = 'M';
  9266. + break;
  9267. + default:
  9268. + ch = ' ';
  9269. + break;
  9270. + }
  9271. + if (sym_is_changable(sym)) {
  9272. + if (sym->rev_dep.tri == mod)
  9273. + item_make(menu,
  9274. + 't', "{%c}", ch);
  9275. + else
  9276. + item_make(menu,
  9277. + 't', "<%c>", ch);
  9278. + } else
  9279. + item_make(menu, 't', "-%c-", ch);
  9280. + break;
  9281. + default:
  9282. + tmp = 2 + strlen(sym_get_string_value(sym));
  9283. + item_make(menu, 's', " (%s)",
  9284. + sym_get_string_value(sym));
  9285. + tmp = indent - tmp + 4;
  9286. + if (tmp < 0)
  9287. + tmp = 0;
  9288. + item_add_str("%*c%s%s", tmp, ' ',
  9289. + _(menu_get_prompt(menu)),
  9290. + (sym_has_value(sym) ||
  9291. + !sym_is_changable(sym)) ? "" :
  9292. + _(" (NEW)"));
  9293. + goto conf_childs;
  9294. + }
  9295. + }
  9296. + item_add_str("%*c%s%s", indent + 1, ' ',
  9297. + _(menu_get_prompt(menu)),
  9298. + (sym_has_value(sym) || !sym_is_changable(sym)) ?
  9299. + "" : _(" (NEW)"));
  9300. + if (menu->prompt && menu->prompt->type == P_MENU) {
  9301. + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->");
  9302. + return;
  9303. + }
  9304. + }
  9305. +
  9306. +conf_childs:
  9307. + indent += doint;
  9308. + for (child = menu->list; child; child = child->next)
  9309. + build_conf(child);
  9310. + indent -= doint;
  9311. +}
  9312. +
  9313. +static void reset_menu(void)
  9314. +{
  9315. + unpost_menu(curses_menu);
  9316. + clean_items();
  9317. +}
  9318. +
  9319. +/* adjust the menu to show this item.
  9320. + * prefer not to scroll the menu if possible*/
  9321. +static void center_item(int selected_index, int *last_top_row)
  9322. +{
  9323. + int toprow;
  9324. +
  9325. + set_top_row(curses_menu, *last_top_row);
  9326. + toprow = top_row(curses_menu);
  9327. + if (selected_index < toprow ||
  9328. + selected_index >= toprow+mwin_max_lines) {
  9329. + toprow = max(selected_index-mwin_max_lines/2, 0);
  9330. + if (toprow >= item_count(curses_menu)-mwin_max_lines)
  9331. + toprow = item_count(curses_menu)-mwin_max_lines;
  9332. + set_top_row(curses_menu, toprow);
  9333. + }
  9334. + set_current_item(curses_menu,
  9335. + curses_menu_items[selected_index]);
  9336. + *last_top_row = toprow;
  9337. + post_menu(curses_menu);
  9338. + refresh_all_windows(main_window);
  9339. +}
  9340. +
  9341. +/* this function assumes reset_menu has been called before */
  9342. +static void show_menu(const char *prompt, const char *instructions,
  9343. + int selected_index, int *last_top_row)
  9344. +{
  9345. + int maxx, maxy;
  9346. + WINDOW *menu_window;
  9347. +
  9348. + current_instructions = instructions;
  9349. +
  9350. + clear();
  9351. + (void) wattrset(main_window, attributes[NORMAL]);
  9352. + print_in_middle(stdscr, 1, 0, getmaxx(stdscr),
  9353. + menu_backtitle,
  9354. + attributes[MAIN_HEADING]);
  9355. +
  9356. + (void) wattrset(main_window, attributes[MAIN_MENU_BOX]);
  9357. + box(main_window, 0, 0);
  9358. + (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]);
  9359. + mvwprintw(main_window, 0, 3, " %s ", prompt);
  9360. + (void) wattrset(main_window, attributes[NORMAL]);
  9361. +
  9362. + set_menu_items(curses_menu, curses_menu_items);
  9363. +
  9364. + /* position the menu at the middle of the screen */
  9365. + scale_menu(curses_menu, &maxy, &maxx);
  9366. + maxx = min(maxx, mwin_max_cols-2);
  9367. + maxy = mwin_max_lines;
  9368. + menu_window = derwin(main_window,
  9369. + maxy,
  9370. + maxx,
  9371. + 2,
  9372. + (mwin_max_cols-maxx)/2);
  9373. + keypad(menu_window, TRUE);
  9374. + set_menu_win(curses_menu, menu_window);
  9375. + set_menu_sub(curses_menu, menu_window);
  9376. +
  9377. + /* must reassert this after changing items, otherwise returns to a
  9378. + * default of 16
  9379. + */
  9380. + set_menu_format(curses_menu, maxy, 1);
  9381. + center_item(selected_index, last_top_row);
  9382. + set_menu_format(curses_menu, maxy, 1);
  9383. +
  9384. + print_function_line();
  9385. +
  9386. + /* Post the menu */
  9387. + post_menu(curses_menu);
  9388. + refresh_all_windows(main_window);
  9389. +}
  9390. +
  9391. +static void adj_match_dir(match_f *match_direction)
  9392. +{
  9393. + if (*match_direction == FIND_NEXT_MATCH_DOWN)
  9394. + *match_direction =
  9395. + MATCH_TINKER_PATTERN_DOWN;
  9396. + else if (*match_direction == FIND_NEXT_MATCH_UP)
  9397. + *match_direction =
  9398. + MATCH_TINKER_PATTERN_UP;
  9399. + /* else, do no change.. */
  9400. +}
  9401. +
  9402. +struct match_state
  9403. +{
  9404. + int in_search;
  9405. + match_f match_direction;
  9406. + char pattern[256];
  9407. +};
  9408. +
  9409. +/* Return 0 means I have handled the key. In such a case, ans should hold the
  9410. + * item to center, or -1 otherwise.
  9411. + * Else return -1 .
  9412. + */
  9413. +static int do_match(int key, struct match_state *state, int *ans)
  9414. +{
  9415. + char c = (char) key;
  9416. + int terminate_search = 0;
  9417. + *ans = -1;
  9418. + if (key == '/' || (state->in_search && key == 27)) {
  9419. + move(0, 0);
  9420. + refresh();
  9421. + clrtoeol();
  9422. + state->in_search = 1-state->in_search;
  9423. + bzero(state->pattern, sizeof(state->pattern));
  9424. + state->match_direction = MATCH_TINKER_PATTERN_DOWN;
  9425. + return 0;
  9426. + } else if (!state->in_search)
  9427. + return 1;
  9428. +
  9429. + if (isalnum(c) || isgraph(c) || c == ' ') {
  9430. + state->pattern[strlen(state->pattern)] = c;
  9431. + state->pattern[strlen(state->pattern)] = '\0';
  9432. + adj_match_dir(&state->match_direction);
  9433. + *ans = get_mext_match(state->pattern,
  9434. + state->match_direction);
  9435. + } else if (key == KEY_DOWN) {
  9436. + state->match_direction = FIND_NEXT_MATCH_DOWN;
  9437. + *ans = get_mext_match(state->pattern,
  9438. + state->match_direction);
  9439. + } else if (key == KEY_UP) {
  9440. + state->match_direction = FIND_NEXT_MATCH_UP;
  9441. + *ans = get_mext_match(state->pattern,
  9442. + state->match_direction);
  9443. + } else if (key == KEY_BACKSPACE || key == 127) {
  9444. + state->pattern[strlen(state->pattern)-1] = '\0';
  9445. + adj_match_dir(&state->match_direction);
  9446. + } else
  9447. + terminate_search = 1;
  9448. +
  9449. + if (terminate_search) {
  9450. + state->in_search = 0;
  9451. + bzero(state->pattern, sizeof(state->pattern));
  9452. + move(0, 0);
  9453. + refresh();
  9454. + clrtoeol();
  9455. + return -1;
  9456. + }
  9457. + return 0;
  9458. +}
  9459. +
  9460. +static void conf(struct menu *menu)
  9461. +{
  9462. + struct menu *submenu = 0;
  9463. + const char *prompt = menu_get_prompt(menu);
  9464. + struct symbol *sym;
  9465. + int res;
  9466. + int current_index = 0;
  9467. + int last_top_row = 0;
  9468. + struct match_state match_state = {
  9469. + .in_search = 0,
  9470. + .match_direction = MATCH_TINKER_PATTERN_DOWN,
  9471. + .pattern = "",
  9472. + };
  9473. +
  9474. + while (!global_exit) {
  9475. + reset_menu();
  9476. + current_menu = menu;
  9477. + build_conf(menu);
  9478. + if (!child_count)
  9479. + break;
  9480. +
  9481. + show_menu(prompt ? _(prompt) : _("Main Menu"),
  9482. + _(menu_instructions),
  9483. + current_index, &last_top_row);
  9484. + keypad((menu_win(curses_menu)), TRUE);
  9485. + while (!global_exit) {
  9486. + if (match_state.in_search) {
  9487. + mvprintw(0, 0,
  9488. + "searching: %s", match_state.pattern);
  9489. + clrtoeol();
  9490. + }
  9491. + refresh_all_windows(main_window);
  9492. + res = wgetch(menu_win(curses_menu));
  9493. + if (!res)
  9494. + break;
  9495. + if (do_match(res, &match_state, &current_index) == 0) {
  9496. + if (current_index != -1)
  9497. + center_item(current_index,
  9498. + &last_top_row);
  9499. + continue;
  9500. + }
  9501. + if (process_special_keys(&res,
  9502. + (struct menu *) item_data()))
  9503. + break;
  9504. + switch (res) {
  9505. + case KEY_DOWN:
  9506. + menu_driver(curses_menu, REQ_DOWN_ITEM);
  9507. + break;
  9508. + case KEY_UP:
  9509. + menu_driver(curses_menu, REQ_UP_ITEM);
  9510. + break;
  9511. + case KEY_NPAGE:
  9512. + menu_driver(curses_menu, REQ_SCR_DPAGE);
  9513. + break;
  9514. + case KEY_PPAGE:
  9515. + menu_driver(curses_menu, REQ_SCR_UPAGE);
  9516. + break;
  9517. + case KEY_HOME:
  9518. + menu_driver(curses_menu, REQ_FIRST_ITEM);
  9519. + break;
  9520. + case KEY_END:
  9521. + menu_driver(curses_menu, REQ_LAST_ITEM);
  9522. + break;
  9523. + case 'h':
  9524. + case '?':
  9525. + show_help((struct menu *) item_data());
  9526. + break;
  9527. + }
  9528. + if (res == 10 || res == 27 ||
  9529. + res == 32 || res == 'n' || res == 'y' ||
  9530. + res == KEY_LEFT || res == KEY_RIGHT ||
  9531. + res == 'm')
  9532. + break;
  9533. + refresh_all_windows(main_window);
  9534. + }
  9535. +
  9536. + refresh_all_windows(main_window);
  9537. + /* if ESC or left*/
  9538. + if (res == 27 || (menu != &rootmenu && res == KEY_LEFT))
  9539. + break;
  9540. +
  9541. + /* remember location in the menu */
  9542. + last_top_row = top_row(curses_menu);
  9543. + current_index = curses_item_index();
  9544. +
  9545. + if (!item_tag())
  9546. + continue;
  9547. +
  9548. + submenu = (struct menu *) item_data();
  9549. + if (!submenu || !menu_is_visible(submenu))
  9550. + continue;
  9551. + sym = submenu->sym;
  9552. +
  9553. + switch (res) {
  9554. + case ' ':
  9555. + if (item_is_tag('t'))
  9556. + sym_toggle_tristate_value(sym);
  9557. + else if (item_is_tag('m'))
  9558. + conf(submenu);
  9559. + break;
  9560. + case KEY_RIGHT:
  9561. + case 10: /* ENTER WAS PRESSED */
  9562. + switch (item_tag()) {
  9563. + case 'm':
  9564. + if (single_menu_mode)
  9565. + submenu->data =
  9566. + (void *) (long) !submenu->data;
  9567. + else
  9568. + conf(submenu);
  9569. + break;
  9570. + case 't':
  9571. + if (sym_is_choice(sym) &&
  9572. + sym_get_tristate_value(sym) == yes)
  9573. + conf_choice(submenu);
  9574. + else if (submenu->prompt &&
  9575. + submenu->prompt->type == P_MENU)
  9576. + conf(submenu);
  9577. + else if (res == 10)
  9578. + sym_toggle_tristate_value(sym);
  9579. + break;
  9580. + case 's':
  9581. + conf_string(submenu);
  9582. + break;
  9583. + }
  9584. + break;
  9585. + case 'y':
  9586. + if (item_is_tag('t')) {
  9587. + if (sym_set_tristate_value(sym, yes))
  9588. + break;
  9589. + if (sym_set_tristate_value(sym, mod))
  9590. + btn_dialog(main_window, setmod_text, 0);
  9591. + }
  9592. + break;
  9593. + case 'n':
  9594. + if (item_is_tag('t'))
  9595. + sym_set_tristate_value(sym, no);
  9596. + break;
  9597. + case 'm':
  9598. + if (item_is_tag('t'))
  9599. + sym_set_tristate_value(sym, mod);
  9600. + break;
  9601. + }
  9602. + }
  9603. +}
  9604. +
  9605. +static void conf_message_callback(const char *fmt, va_list ap)
  9606. +{
  9607. + char buf[1024];
  9608. +
  9609. + vsnprintf(buf, sizeof(buf), fmt, ap);
  9610. + btn_dialog(main_window, buf, 1, "<OK>");
  9611. +}
  9612. +
  9613. +static void show_help(struct menu *menu)
  9614. +{
  9615. + struct gstr help;
  9616. +
  9617. + if (!menu)
  9618. + return;
  9619. +
  9620. + help = str_new();
  9621. + menu_get_ext_help(menu, &help);
  9622. + show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help));
  9623. + str_free(&help);
  9624. +}
  9625. +
  9626. +static void conf_choice(struct menu *menu)
  9627. +{
  9628. + const char *prompt = _(menu_get_prompt(menu));
  9629. + struct menu *child = 0;
  9630. + struct symbol *active;
  9631. + int selected_index = 0;
  9632. + int last_top_row = 0;
  9633. + int res, i = 0;
  9634. + struct match_state match_state = {
  9635. + .in_search = 0,
  9636. + .match_direction = MATCH_TINKER_PATTERN_DOWN,
  9637. + .pattern = "",
  9638. + };
  9639. +
  9640. + active = sym_get_choice_value(menu->sym);
  9641. + /* this is mostly duplicated from the conf() function. */
  9642. + while (!global_exit) {
  9643. + reset_menu();
  9644. +
  9645. + for (i = 0, child = menu->list; child; child = child->next) {
  9646. + if (!show_all_items && !menu_is_visible(child))
  9647. + continue;
  9648. +
  9649. + if (child->sym == sym_get_choice_value(menu->sym))
  9650. + item_make(child, ':', "<X> %s",
  9651. + _(menu_get_prompt(child)));
  9652. + else if (child->sym)
  9653. + item_make(child, ':', " %s",
  9654. + _(menu_get_prompt(child)));
  9655. + else
  9656. + item_make(child, ':', "*** %s ***",
  9657. + _(menu_get_prompt(child)));
  9658. +
  9659. + if (child->sym == active){
  9660. + last_top_row = top_row(curses_menu);
  9661. + selected_index = i;
  9662. + }
  9663. + i++;
  9664. + }
  9665. + show_menu(prompt ? _(prompt) : _("Choice Menu"),
  9666. + _(radiolist_instructions),
  9667. + selected_index,
  9668. + &last_top_row);
  9669. + while (!global_exit) {
  9670. + if (match_state.in_search) {
  9671. + mvprintw(0, 0, "searching: %s",
  9672. + match_state.pattern);
  9673. + clrtoeol();
  9674. + }
  9675. + refresh_all_windows(main_window);
  9676. + res = wgetch(menu_win(curses_menu));
  9677. + if (!res)
  9678. + break;
  9679. + if (do_match(res, &match_state, &selected_index) == 0) {
  9680. + if (selected_index != -1)
  9681. + center_item(selected_index,
  9682. + &last_top_row);
  9683. + continue;
  9684. + }
  9685. + if (process_special_keys(
  9686. + &res,
  9687. + (struct menu *) item_data()))
  9688. + break;
  9689. + switch (res) {
  9690. + case KEY_DOWN:
  9691. + menu_driver(curses_menu, REQ_DOWN_ITEM);
  9692. + break;
  9693. + case KEY_UP:
  9694. + menu_driver(curses_menu, REQ_UP_ITEM);
  9695. + break;
  9696. + case KEY_NPAGE:
  9697. + menu_driver(curses_menu, REQ_SCR_DPAGE);
  9698. + break;
  9699. + case KEY_PPAGE:
  9700. + menu_driver(curses_menu, REQ_SCR_UPAGE);
  9701. + break;
  9702. + case KEY_HOME:
  9703. + menu_driver(curses_menu, REQ_FIRST_ITEM);
  9704. + break;
  9705. + case KEY_END:
  9706. + menu_driver(curses_menu, REQ_LAST_ITEM);
  9707. + break;
  9708. + case 'h':
  9709. + case '?':
  9710. + show_help((struct menu *) item_data());
  9711. + break;
  9712. + }
  9713. + if (res == 10 || res == 27 || res == ' ' ||
  9714. + res == KEY_LEFT){
  9715. + break;
  9716. + }
  9717. + refresh_all_windows(main_window);
  9718. + }
  9719. + /* if ESC or left */
  9720. + if (res == 27 || res == KEY_LEFT)
  9721. + break;
  9722. +
  9723. + child = item_data();
  9724. + if (!child || !menu_is_visible(child) || !child->sym)
  9725. + continue;
  9726. + switch (res) {
  9727. + case ' ':
  9728. + case 10:
  9729. + case KEY_RIGHT:
  9730. + sym_set_tristate_value(child->sym, yes);
  9731. + return;
  9732. + case 'h':
  9733. + case '?':
  9734. + show_help(child);
  9735. + active = child->sym;
  9736. + break;
  9737. + case KEY_EXIT:
  9738. + return;
  9739. + }
  9740. + }
  9741. +}
  9742. +
  9743. +static void conf_string(struct menu *menu)
  9744. +{
  9745. + const char *prompt = menu_get_prompt(menu);
  9746. +
  9747. + while (1) {
  9748. + int res;
  9749. + const char *heading;
  9750. +
  9751. + switch (sym_get_type(menu->sym)) {
  9752. + case S_INT:
  9753. + heading = _(inputbox_instructions_int);
  9754. + break;
  9755. + case S_HEX:
  9756. + heading = _(inputbox_instructions_hex);
  9757. + break;
  9758. + case S_STRING:
  9759. + heading = _(inputbox_instructions_string);
  9760. + break;
  9761. + default:
  9762. + heading = _("Internal nconf error!");
  9763. + }
  9764. + res = dialog_inputbox(main_window,
  9765. + prompt ? _(prompt) : _("Main Menu"),
  9766. + heading,
  9767. + sym_get_string_value(menu->sym),
  9768. + &dialog_input_result,
  9769. + &dialog_input_result_len);
  9770. + switch (res) {
  9771. + case 0:
  9772. + if (sym_set_string_value(menu->sym,
  9773. + dialog_input_result))
  9774. + return;
  9775. + btn_dialog(main_window,
  9776. + _("You have made an invalid entry."), 0);
  9777. + break;
  9778. + case 1:
  9779. + show_help(menu);
  9780. + break;
  9781. + case KEY_EXIT:
  9782. + return;
  9783. + }
  9784. + }
  9785. +}
  9786. +
  9787. +static void conf_load(void)
  9788. +{
  9789. + while (1) {
  9790. + int res;
  9791. + res = dialog_inputbox(main_window,
  9792. + NULL, load_config_text,
  9793. + filename,
  9794. + &dialog_input_result,
  9795. + &dialog_input_result_len);
  9796. + switch (res) {
  9797. + case 0:
  9798. + if (!dialog_input_result[0])
  9799. + return;
  9800. + if (!conf_read(dialog_input_result)) {
  9801. + set_config_filename(dialog_input_result);
  9802. + sym_set_change_count(1);
  9803. + return;
  9804. + }
  9805. + btn_dialog(main_window, _("File does not exist!"), 0);
  9806. + break;
  9807. + case 1:
  9808. + show_scroll_win(main_window,
  9809. + _("Load Alternate Configuration"),
  9810. + load_config_help);
  9811. + break;
  9812. + case KEY_EXIT:
  9813. + return;
  9814. + }
  9815. + }
  9816. +}
  9817. +
  9818. +static void conf_save(void)
  9819. +{
  9820. + while (1) {
  9821. + int res;
  9822. + res = dialog_inputbox(main_window,
  9823. + NULL, save_config_text,
  9824. + filename,
  9825. + &dialog_input_result,
  9826. + &dialog_input_result_len);
  9827. + switch (res) {
  9828. + case 0:
  9829. + if (!dialog_input_result[0])
  9830. + return;
  9831. + res = conf_write(dialog_input_result);
  9832. + if (!res) {
  9833. + set_config_filename(dialog_input_result);
  9834. + return;
  9835. + }
  9836. + btn_dialog(main_window, _("Can't create file! "
  9837. + "Probably a nonexistent directory."),
  9838. + 1, "<OK>");
  9839. + break;
  9840. + case 1:
  9841. + show_scroll_win(main_window,
  9842. + _("Save Alternate Configuration"),
  9843. + save_config_help);
  9844. + break;
  9845. + case KEY_EXIT:
  9846. + return;
  9847. + }
  9848. + }
  9849. +}
  9850. +
  9851. +void setup_windows(void)
  9852. +{
  9853. + int lines, columns;
  9854. +
  9855. + getmaxyx(stdscr, lines, columns);
  9856. +
  9857. + if (main_window != NULL)
  9858. + delwin(main_window);
  9859. +
  9860. + /* set up the menu and menu window */
  9861. + main_window = newwin(lines-2, columns-2, 2, 1);
  9862. + keypad(main_window, TRUE);
  9863. + mwin_max_lines = lines-7;
  9864. + mwin_max_cols = columns-6;
  9865. +
  9866. + /* panels order is from bottom to top */
  9867. + new_panel(main_window);
  9868. +}
  9869. +
  9870. +int main(int ac, char **av)
  9871. +{
  9872. + int lines, columns;
  9873. + char *mode;
  9874. +
  9875. + setlocale(LC_ALL, "");
  9876. + bindtextdomain(PACKAGE, LOCALEDIR);
  9877. + textdomain(PACKAGE);
  9878. +
  9879. + conf_parse(av[1]);
  9880. + conf_read(NULL);
  9881. +
  9882. + mode = getenv("NCONFIG_MODE");
  9883. + if (mode) {
  9884. + if (!strcasecmp(mode, "single_menu"))
  9885. + single_menu_mode = 1;
  9886. + }
  9887. +
  9888. + /* Initialize curses */
  9889. + initscr();
  9890. + /* set color theme */
  9891. + set_colors();
  9892. +
  9893. + cbreak();
  9894. + noecho();
  9895. + keypad(stdscr, TRUE);
  9896. + curs_set(0);
  9897. +
  9898. + getmaxyx(stdscr, lines, columns);
  9899. + if (columns < 75 || lines < 20) {
  9900. + endwin();
  9901. + printf("Your terminal should have at "
  9902. + "least 20 lines and 75 columns\n");
  9903. + return 1;
  9904. + }
  9905. +
  9906. + notimeout(stdscr, FALSE);
  9907. +#if NCURSES_REENTRANT
  9908. + set_escdelay(1);
  9909. +#else
  9910. + ESCDELAY = 1;
  9911. +#endif
  9912. +
  9913. + /* set btns menu */
  9914. + curses_menu = new_menu(curses_menu_items);
  9915. + menu_opts_off(curses_menu, O_SHOWDESC);
  9916. + menu_opts_on(curses_menu, O_SHOWMATCH);
  9917. + menu_opts_on(curses_menu, O_ONEVALUE);
  9918. + menu_opts_on(curses_menu, O_NONCYCLIC);
  9919. + menu_opts_on(curses_menu, O_IGNORECASE);
  9920. + set_menu_mark(curses_menu, " ");
  9921. + set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]);
  9922. + set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]);
  9923. + set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]);
  9924. +
  9925. + set_config_filename(conf_get_configname());
  9926. + setup_windows();
  9927. +
  9928. + /* check for KEY_FUNC(1) */
  9929. + if (has_key(KEY_F(1)) == FALSE) {
  9930. + show_scroll_win(main_window,
  9931. + _("Instructions"),
  9932. + _(menu_no_f_instructions));
  9933. + }
  9934. +
  9935. + conf_set_message_callback(conf_message_callback);
  9936. + /* do the work */
  9937. + while (!global_exit) {
  9938. + conf(&rootmenu);
  9939. + if (!global_exit && do_exit() == 0)
  9940. + break;
  9941. + }
  9942. + /* ok, we are done */
  9943. + unpost_menu(curses_menu);
  9944. + free_menu(curses_menu);
  9945. + delwin(main_window);
  9946. + clear();
  9947. + refresh();
  9948. + endwin();
  9949. + return 0;
  9950. +}
  9951. +
  9952. diff -Nur uClibc-0.9.33.2/extra/config/nconf.gui.c uClibc-git/extra/config/nconf.gui.c
  9953. --- uClibc-0.9.33.2/extra/config/nconf.gui.c 1970-01-01 01:00:00.000000000 +0100
  9954. +++ uClibc-git/extra/config/nconf.gui.c 2014-02-03 12:32:56.000000000 +0100
  9955. @@ -0,0 +1,656 @@
  9956. +/*
  9957. + * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
  9958. + * Released under the terms of the GNU GPL v2.0.
  9959. + *
  9960. + * Derived from menuconfig.
  9961. + *
  9962. + */
  9963. +#include "nconf.h"
  9964. +
  9965. +/* a list of all the different widgets we use */
  9966. +attributes_t attributes[ATTR_MAX+1] = {0};
  9967. +
  9968. +/* available colors:
  9969. + COLOR_BLACK 0
  9970. + COLOR_RED 1
  9971. + COLOR_GREEN 2
  9972. + COLOR_YELLOW 3
  9973. + COLOR_BLUE 4
  9974. + COLOR_MAGENTA 5
  9975. + COLOR_CYAN 6
  9976. + COLOR_WHITE 7
  9977. + */
  9978. +static void set_normal_colors(void)
  9979. +{
  9980. + init_pair(NORMAL, -1, -1);
  9981. + init_pair(MAIN_HEADING, COLOR_MAGENTA, -1);
  9982. +
  9983. + /* FORE is for the selected item */
  9984. + init_pair(MAIN_MENU_FORE, -1, -1);
  9985. + /* BACK for all the rest */
  9986. + init_pair(MAIN_MENU_BACK, -1, -1);
  9987. + init_pair(MAIN_MENU_GREY, -1, -1);
  9988. + init_pair(MAIN_MENU_HEADING, COLOR_GREEN, -1);
  9989. + init_pair(MAIN_MENU_BOX, COLOR_YELLOW, -1);
  9990. +
  9991. + init_pair(SCROLLWIN_TEXT, -1, -1);
  9992. + init_pair(SCROLLWIN_HEADING, COLOR_GREEN, -1);
  9993. + init_pair(SCROLLWIN_BOX, COLOR_YELLOW, -1);
  9994. +
  9995. + init_pair(DIALOG_TEXT, -1, -1);
  9996. + init_pair(DIALOG_BOX, COLOR_YELLOW, -1);
  9997. + init_pair(DIALOG_MENU_BACK, COLOR_YELLOW, -1);
  9998. + init_pair(DIALOG_MENU_FORE, COLOR_RED, -1);
  9999. +
  10000. + init_pair(INPUT_BOX, COLOR_YELLOW, -1);
  10001. + init_pair(INPUT_HEADING, COLOR_GREEN, -1);
  10002. + init_pair(INPUT_TEXT, -1, -1);
  10003. + init_pair(INPUT_FIELD, -1, -1);
  10004. +
  10005. + init_pair(FUNCTION_HIGHLIGHT, -1, -1);
  10006. + init_pair(FUNCTION_TEXT, COLOR_YELLOW, -1);
  10007. +}
  10008. +
  10009. +/* available attributes:
  10010. + A_NORMAL Normal display (no highlight)
  10011. + A_STANDOUT Best highlighting mode of the terminal.
  10012. + A_UNDERLINE Underlining
  10013. + A_REVERSE Reverse video
  10014. + A_BLINK Blinking
  10015. + A_DIM Half bright
  10016. + A_BOLD Extra bright or bold
  10017. + A_PROTECT Protected mode
  10018. + A_INVIS Invisible or blank mode
  10019. + A_ALTCHARSET Alternate character set
  10020. + A_CHARTEXT Bit-mask to extract a character
  10021. + COLOR_PAIR(n) Color-pair number n
  10022. + */
  10023. +static void normal_color_theme(void)
  10024. +{
  10025. + /* automatically add color... */
  10026. +#define mkattr(name, attr) do { \
  10027. +attributes[name] = attr | COLOR_PAIR(name); } while (0)
  10028. + mkattr(NORMAL, NORMAL);
  10029. + mkattr(MAIN_HEADING, A_BOLD | A_UNDERLINE);
  10030. +
  10031. + mkattr(MAIN_MENU_FORE, A_REVERSE);
  10032. + mkattr(MAIN_MENU_BACK, A_NORMAL);
  10033. + mkattr(MAIN_MENU_GREY, A_NORMAL);
  10034. + mkattr(MAIN_MENU_HEADING, A_BOLD);
  10035. + mkattr(MAIN_MENU_BOX, A_NORMAL);
  10036. +
  10037. + mkattr(SCROLLWIN_TEXT, A_NORMAL);
  10038. + mkattr(SCROLLWIN_HEADING, A_BOLD);
  10039. + mkattr(SCROLLWIN_BOX, A_BOLD);
  10040. +
  10041. + mkattr(DIALOG_TEXT, A_BOLD);
  10042. + mkattr(DIALOG_BOX, A_BOLD);
  10043. + mkattr(DIALOG_MENU_FORE, A_STANDOUT);
  10044. + mkattr(DIALOG_MENU_BACK, A_NORMAL);
  10045. +
  10046. + mkattr(INPUT_BOX, A_NORMAL);
  10047. + mkattr(INPUT_HEADING, A_BOLD);
  10048. + mkattr(INPUT_TEXT, A_NORMAL);
  10049. + mkattr(INPUT_FIELD, A_UNDERLINE);
  10050. +
  10051. + mkattr(FUNCTION_HIGHLIGHT, A_BOLD);
  10052. + mkattr(FUNCTION_TEXT, A_REVERSE);
  10053. +}
  10054. +
  10055. +static void no_colors_theme(void)
  10056. +{
  10057. + /* automatically add highlight, no color */
  10058. +#define mkattrn(name, attr) { attributes[name] = attr; }
  10059. +
  10060. + mkattrn(NORMAL, NORMAL);
  10061. + mkattrn(MAIN_HEADING, A_BOLD | A_UNDERLINE);
  10062. +
  10063. + mkattrn(MAIN_MENU_FORE, A_STANDOUT);
  10064. + mkattrn(MAIN_MENU_BACK, A_NORMAL);
  10065. + mkattrn(MAIN_MENU_GREY, A_NORMAL);
  10066. + mkattrn(MAIN_MENU_HEADING, A_BOLD);
  10067. + mkattrn(MAIN_MENU_BOX, A_NORMAL);
  10068. +
  10069. + mkattrn(SCROLLWIN_TEXT, A_NORMAL);
  10070. + mkattrn(SCROLLWIN_HEADING, A_BOLD);
  10071. + mkattrn(SCROLLWIN_BOX, A_BOLD);
  10072. +
  10073. + mkattrn(DIALOG_TEXT, A_NORMAL);
  10074. + mkattrn(DIALOG_BOX, A_BOLD);
  10075. + mkattrn(DIALOG_MENU_FORE, A_STANDOUT);
  10076. + mkattrn(DIALOG_MENU_BACK, A_NORMAL);
  10077. +
  10078. + mkattrn(INPUT_BOX, A_BOLD);
  10079. + mkattrn(INPUT_HEADING, A_BOLD);
  10080. + mkattrn(INPUT_TEXT, A_NORMAL);
  10081. + mkattrn(INPUT_FIELD, A_UNDERLINE);
  10082. +
  10083. + mkattrn(FUNCTION_HIGHLIGHT, A_BOLD);
  10084. + mkattrn(FUNCTION_TEXT, A_REVERSE);
  10085. +}
  10086. +
  10087. +void set_colors()
  10088. +{
  10089. + start_color();
  10090. + use_default_colors();
  10091. + set_normal_colors();
  10092. + if (has_colors()) {
  10093. + normal_color_theme();
  10094. + } else {
  10095. + /* give defaults */
  10096. + no_colors_theme();
  10097. + }
  10098. +}
  10099. +
  10100. +
  10101. +/* this changes the windows attributes !!! */
  10102. +void print_in_middle(WINDOW *win,
  10103. + int starty,
  10104. + int startx,
  10105. + int width,
  10106. + const char *string,
  10107. + chtype color)
  10108. +{ int length, x, y;
  10109. + float temp;
  10110. +
  10111. +
  10112. + if (win == NULL)
  10113. + win = stdscr;
  10114. + getyx(win, y, x);
  10115. + if (startx != 0)
  10116. + x = startx;
  10117. + if (starty != 0)
  10118. + y = starty;
  10119. + if (width == 0)
  10120. + width = 80;
  10121. +
  10122. + length = strlen(string);
  10123. + temp = (width - length) / 2;
  10124. + x = startx + (int)temp;
  10125. + (void) wattrset(win, color);
  10126. + mvwprintw(win, y, x, "%s", string);
  10127. + refresh();
  10128. +}
  10129. +
  10130. +int get_line_no(const char *text)
  10131. +{
  10132. + int i;
  10133. + int total = 1;
  10134. +
  10135. + if (!text)
  10136. + return 0;
  10137. +
  10138. + for (i = 0; text[i] != '\0'; i++)
  10139. + if (text[i] == '\n')
  10140. + total++;
  10141. + return total;
  10142. +}
  10143. +
  10144. +const char *get_line(const char *text, int line_no)
  10145. +{
  10146. + int i;
  10147. + int lines = 0;
  10148. +
  10149. + if (!text)
  10150. + return 0;
  10151. +
  10152. + for (i = 0; text[i] != '\0' && lines < line_no; i++)
  10153. + if (text[i] == '\n')
  10154. + lines++;
  10155. + return text+i;
  10156. +}
  10157. +
  10158. +int get_line_length(const char *line)
  10159. +{
  10160. + int res = 0;
  10161. + while (*line != '\0' && *line != '\n') {
  10162. + line++;
  10163. + res++;
  10164. + }
  10165. + return res;
  10166. +}
  10167. +
  10168. +/* print all lines to the window. */
  10169. +void fill_window(WINDOW *win, const char *text)
  10170. +{
  10171. + int x, y;
  10172. + int total_lines = get_line_no(text);
  10173. + int i;
  10174. +
  10175. + getmaxyx(win, y, x);
  10176. + /* do not go over end of line */
  10177. + total_lines = min(total_lines, y);
  10178. + for (i = 0; i < total_lines; i++) {
  10179. + char tmp[x+10];
  10180. + const char *line = get_line(text, i);
  10181. + int len = get_line_length(line);
  10182. + strncpy(tmp, line, min(len, x));
  10183. + tmp[len] = '\0';
  10184. + mvwprintw(win, i, 0, "%s", tmp);
  10185. + }
  10186. +}
  10187. +
  10188. +/* get the message, and buttons.
  10189. + * each button must be a char*
  10190. + * return the selected button
  10191. + *
  10192. + * this dialog is used for 2 different things:
  10193. + * 1) show a text box, no buttons.
  10194. + * 2) show a dialog, with horizontal buttons
  10195. + */
  10196. +int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...)
  10197. +{
  10198. + va_list ap;
  10199. + char *btn;
  10200. + int btns_width = 0;
  10201. + int msg_lines = 0;
  10202. + int msg_width = 0;
  10203. + int total_width;
  10204. + int win_rows = 0;
  10205. + WINDOW *win;
  10206. + WINDOW *msg_win;
  10207. + WINDOW *menu_win;
  10208. + MENU *menu;
  10209. + ITEM *btns[btn_num+1];
  10210. + int i, x, y;
  10211. + int res = -1;
  10212. +
  10213. +
  10214. + va_start(ap, btn_num);
  10215. + for (i = 0; i < btn_num; i++) {
  10216. + btn = va_arg(ap, char *);
  10217. + btns[i] = new_item(btn, "");
  10218. + btns_width += strlen(btn)+1;
  10219. + }
  10220. + va_end(ap);
  10221. + btns[btn_num] = NULL;
  10222. +
  10223. + /* find the widest line of msg: */
  10224. + msg_lines = get_line_no(msg);
  10225. + for (i = 0; i < msg_lines; i++) {
  10226. + const char *line = get_line(msg, i);
  10227. + int len = get_line_length(line);
  10228. + if (msg_width < len)
  10229. + msg_width = len;
  10230. + }
  10231. +
  10232. + total_width = max(msg_width, btns_width);
  10233. + /* place dialog in middle of screen */
  10234. + y = (getmaxy(stdscr)-(msg_lines+4))/2;
  10235. + x = (getmaxx(stdscr)-(total_width+4))/2;
  10236. +
  10237. +
  10238. + /* create the windows */
  10239. + if (btn_num > 0)
  10240. + win_rows = msg_lines+4;
  10241. + else
  10242. + win_rows = msg_lines+2;
  10243. +
  10244. + win = newwin(win_rows, total_width+4, y, x);
  10245. + keypad(win, TRUE);
  10246. + menu_win = derwin(win, 1, btns_width, win_rows-2,
  10247. + 1+(total_width+2-btns_width)/2);
  10248. + menu = new_menu(btns);
  10249. + msg_win = derwin(win, win_rows-2, msg_width, 1,
  10250. + 1+(total_width+2-msg_width)/2);
  10251. +
  10252. + set_menu_fore(menu, attributes[DIALOG_MENU_FORE]);
  10253. + set_menu_back(menu, attributes[DIALOG_MENU_BACK]);
  10254. +
  10255. + (void) wattrset(win, attributes[DIALOG_BOX]);
  10256. + box(win, 0, 0);
  10257. +
  10258. + /* print message */
  10259. + (void) wattrset(msg_win, attributes[DIALOG_TEXT]);
  10260. + fill_window(msg_win, msg);
  10261. +
  10262. + set_menu_win(menu, win);
  10263. + set_menu_sub(menu, menu_win);
  10264. + set_menu_format(menu, 1, btn_num);
  10265. + menu_opts_off(menu, O_SHOWDESC);
  10266. + menu_opts_off(menu, O_SHOWMATCH);
  10267. + menu_opts_on(menu, O_ONEVALUE);
  10268. + menu_opts_on(menu, O_NONCYCLIC);
  10269. + set_menu_mark(menu, "");
  10270. + post_menu(menu);
  10271. +
  10272. +
  10273. + touchwin(win);
  10274. + refresh_all_windows(main_window);
  10275. + while ((res = wgetch(win))) {
  10276. + switch (res) {
  10277. + case KEY_LEFT:
  10278. + menu_driver(menu, REQ_LEFT_ITEM);
  10279. + break;
  10280. + case KEY_RIGHT:
  10281. + menu_driver(menu, REQ_RIGHT_ITEM);
  10282. + break;
  10283. + case 10: /* ENTER */
  10284. + case 27: /* ESCAPE */
  10285. + case ' ':
  10286. + case KEY_F(F_BACK):
  10287. + case KEY_F(F_EXIT):
  10288. + break;
  10289. + }
  10290. + touchwin(win);
  10291. + refresh_all_windows(main_window);
  10292. +
  10293. + if (res == 10 || res == ' ') {
  10294. + res = item_index(current_item(menu));
  10295. + break;
  10296. + } else if (res == 27 || res == KEY_F(F_BACK) ||
  10297. + res == KEY_F(F_EXIT)) {
  10298. + res = KEY_EXIT;
  10299. + break;
  10300. + }
  10301. + }
  10302. +
  10303. + unpost_menu(menu);
  10304. + free_menu(menu);
  10305. + for (i = 0; i < btn_num; i++)
  10306. + free_item(btns[i]);
  10307. +
  10308. + delwin(win);
  10309. + return res;
  10310. +}
  10311. +
  10312. +int dialog_inputbox(WINDOW *main_window,
  10313. + const char *title, const char *prompt,
  10314. + const char *init, char **resultp, int *result_len)
  10315. +{
  10316. + int prompt_lines = 0;
  10317. + int prompt_width = 0;
  10318. + WINDOW *win;
  10319. + WINDOW *prompt_win;
  10320. + WINDOW *form_win;
  10321. + PANEL *panel;
  10322. + int i, x, y;
  10323. + int res = -1;
  10324. + int cursor_position = strlen(init);
  10325. + int cursor_form_win;
  10326. + char *result = *resultp;
  10327. +
  10328. + if (strlen(init)+1 > *result_len) {
  10329. + *result_len = strlen(init)+1;
  10330. + *resultp = result = realloc(result, *result_len);
  10331. + }
  10332. +
  10333. + /* find the widest line of msg: */
  10334. + prompt_lines = get_line_no(prompt);
  10335. + for (i = 0; i < prompt_lines; i++) {
  10336. + const char *line = get_line(prompt, i);
  10337. + int len = get_line_length(line);
  10338. + prompt_width = max(prompt_width, len);
  10339. + }
  10340. +
  10341. + if (title)
  10342. + prompt_width = max(prompt_width, strlen(title));
  10343. +
  10344. + /* place dialog in middle of screen */
  10345. + y = (getmaxy(stdscr)-(prompt_lines+4))/2;
  10346. + x = (getmaxx(stdscr)-(prompt_width+4))/2;
  10347. +
  10348. + strncpy(result, init, *result_len);
  10349. +
  10350. + /* create the windows */
  10351. + win = newwin(prompt_lines+6, prompt_width+7, y, x);
  10352. + prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2);
  10353. + form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2);
  10354. + keypad(form_win, TRUE);
  10355. +
  10356. + (void) wattrset(form_win, attributes[INPUT_FIELD]);
  10357. +
  10358. + (void) wattrset(win, attributes[INPUT_BOX]);
  10359. + box(win, 0, 0);
  10360. + (void) wattrset(win, attributes[INPUT_HEADING]);
  10361. + if (title)
  10362. + mvwprintw(win, 0, 3, "%s", title);
  10363. +
  10364. + /* print message */
  10365. + (void) wattrset(prompt_win, attributes[INPUT_TEXT]);
  10366. + fill_window(prompt_win, prompt);
  10367. +
  10368. + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " ");
  10369. + cursor_form_win = min(cursor_position, prompt_width-1);
  10370. + mvwprintw(form_win, 0, 0, "%s",
  10371. + result + cursor_position-cursor_form_win);
  10372. +
  10373. + /* create panels */
  10374. + panel = new_panel(win);
  10375. +
  10376. + /* show the cursor */
  10377. + curs_set(1);
  10378. +
  10379. + touchwin(win);
  10380. + refresh_all_windows(main_window);
  10381. + while ((res = wgetch(form_win))) {
  10382. + int len = strlen(result);
  10383. + switch (res) {
  10384. + case 10: /* ENTER */
  10385. + case 27: /* ESCAPE */
  10386. + case KEY_F(F_HELP):
  10387. + case KEY_F(F_EXIT):
  10388. + case KEY_F(F_BACK):
  10389. + break;
  10390. + case 127:
  10391. + case KEY_BACKSPACE:
  10392. + if (cursor_position > 0) {
  10393. + memmove(&result[cursor_position-1],
  10394. + &result[cursor_position],
  10395. + len-cursor_position+1);
  10396. + cursor_position--;
  10397. + cursor_form_win--;
  10398. + len--;
  10399. + }
  10400. + break;
  10401. + case KEY_DC:
  10402. + if (cursor_position >= 0 && cursor_position < len) {
  10403. + memmove(&result[cursor_position],
  10404. + &result[cursor_position+1],
  10405. + len-cursor_position+1);
  10406. + len--;
  10407. + }
  10408. + break;
  10409. + case KEY_UP:
  10410. + case KEY_RIGHT:
  10411. + if (cursor_position < len) {
  10412. + cursor_position++;
  10413. + cursor_form_win++;
  10414. + }
  10415. + break;
  10416. + case KEY_DOWN:
  10417. + case KEY_LEFT:
  10418. + if (cursor_position > 0) {
  10419. + cursor_position--;
  10420. + cursor_form_win--;
  10421. + }
  10422. + break;
  10423. + case KEY_HOME:
  10424. + cursor_position = 0;
  10425. + cursor_form_win = 0;
  10426. + break;
  10427. + case KEY_END:
  10428. + cursor_position = len;
  10429. + cursor_form_win = min(cursor_position, prompt_width-1);
  10430. + break;
  10431. + default:
  10432. + if ((isgraph(res) || isspace(res))) {
  10433. + /* one for new char, one for '\0' */
  10434. + if (len+2 > *result_len) {
  10435. + *result_len = len+2;
  10436. + *resultp = result = realloc(result,
  10437. + *result_len);
  10438. + }
  10439. + /* insert the char at the proper position */
  10440. + memmove(&result[cursor_position+1],
  10441. + &result[cursor_position],
  10442. + len-cursor_position+1);
  10443. + result[cursor_position] = res;
  10444. + cursor_position++;
  10445. + cursor_form_win++;
  10446. + len++;
  10447. + } else {
  10448. + mvprintw(0, 0, "unknown key: %d\n", res);
  10449. + }
  10450. + break;
  10451. + }
  10452. + if (cursor_form_win < 0)
  10453. + cursor_form_win = 0;
  10454. + else if (cursor_form_win > prompt_width-1)
  10455. + cursor_form_win = prompt_width-1;
  10456. +
  10457. + wmove(form_win, 0, 0);
  10458. + wclrtoeol(form_win);
  10459. + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " ");
  10460. + mvwprintw(form_win, 0, 0, "%s",
  10461. + result + cursor_position-cursor_form_win);
  10462. + wmove(form_win, 0, cursor_form_win);
  10463. + touchwin(win);
  10464. + refresh_all_windows(main_window);
  10465. +
  10466. + if (res == 10) {
  10467. + res = 0;
  10468. + break;
  10469. + } else if (res == 27 || res == KEY_F(F_BACK) ||
  10470. + res == KEY_F(F_EXIT)) {
  10471. + res = KEY_EXIT;
  10472. + break;
  10473. + } else if (res == KEY_F(F_HELP)) {
  10474. + res = 1;
  10475. + break;
  10476. + }
  10477. + }
  10478. +
  10479. + /* hide the cursor */
  10480. + curs_set(0);
  10481. + del_panel(panel);
  10482. + delwin(prompt_win);
  10483. + delwin(form_win);
  10484. + delwin(win);
  10485. + return res;
  10486. +}
  10487. +
  10488. +/* refresh all windows in the correct order */
  10489. +void refresh_all_windows(WINDOW *main_window)
  10490. +{
  10491. + update_panels();
  10492. + touchwin(main_window);
  10493. + refresh();
  10494. +}
  10495. +
  10496. +/* layman's scrollable window... */
  10497. +void show_scroll_win(WINDOW *main_window,
  10498. + const char *title,
  10499. + const char *text)
  10500. +{
  10501. + int res;
  10502. + int total_lines = get_line_no(text);
  10503. + int x, y, lines, columns;
  10504. + int start_x = 0, start_y = 0;
  10505. + int text_lines = 0, text_cols = 0;
  10506. + int total_cols = 0;
  10507. + int win_cols = 0;
  10508. + int win_lines = 0;
  10509. + int i = 0;
  10510. + WINDOW *win;
  10511. + WINDOW *pad;
  10512. + PANEL *panel;
  10513. +
  10514. + getmaxyx(stdscr, lines, columns);
  10515. +
  10516. + /* find the widest line of msg: */
  10517. + total_lines = get_line_no(text);
  10518. + for (i = 0; i < total_lines; i++) {
  10519. + const char *line = get_line(text, i);
  10520. + int len = get_line_length(line);
  10521. + total_cols = max(total_cols, len+2);
  10522. + }
  10523. +
  10524. + /* create the pad */
  10525. + pad = newpad(total_lines+10, total_cols+10);
  10526. + (void) wattrset(pad, attributes[SCROLLWIN_TEXT]);
  10527. + fill_window(pad, text);
  10528. +
  10529. + win_lines = min(total_lines+4, lines-2);
  10530. + win_cols = min(total_cols+2, columns-2);
  10531. + text_lines = max(win_lines-4, 0);
  10532. + text_cols = max(win_cols-2, 0);
  10533. +
  10534. + /* place window in middle of screen */
  10535. + y = (lines-win_lines)/2;
  10536. + x = (columns-win_cols)/2;
  10537. +
  10538. + win = newwin(win_lines, win_cols, y, x);
  10539. + keypad(win, TRUE);
  10540. + /* show the help in the help window, and show the help panel */
  10541. + (void) wattrset(win, attributes[SCROLLWIN_BOX]);
  10542. + box(win, 0, 0);
  10543. + (void) wattrset(win, attributes[SCROLLWIN_HEADING]);
  10544. + mvwprintw(win, 0, 3, " %s ", title);
  10545. + panel = new_panel(win);
  10546. +
  10547. + /* handle scrolling */
  10548. + do {
  10549. +
  10550. + copywin(pad, win, start_y, start_x, 2, 2, text_lines,
  10551. + text_cols, 0);
  10552. + print_in_middle(win,
  10553. + text_lines+2,
  10554. + 0,
  10555. + text_cols,
  10556. + "<OK>",
  10557. + attributes[DIALOG_MENU_FORE]);
  10558. + wrefresh(win);
  10559. +
  10560. + res = wgetch(win);
  10561. + switch (res) {
  10562. + case KEY_NPAGE:
  10563. + case ' ':
  10564. + case 'd':
  10565. + start_y += text_lines-2;
  10566. + break;
  10567. + case KEY_PPAGE:
  10568. + case 'u':
  10569. + start_y -= text_lines+2;
  10570. + break;
  10571. + case KEY_HOME:
  10572. + start_y = 0;
  10573. + break;
  10574. + case KEY_END:
  10575. + start_y = total_lines-text_lines;
  10576. + break;
  10577. + case KEY_DOWN:
  10578. + case 'j':
  10579. + start_y++;
  10580. + break;
  10581. + case KEY_UP:
  10582. + case 'k':
  10583. + start_y--;
  10584. + break;
  10585. + case KEY_LEFT:
  10586. + case 'h':
  10587. + start_x--;
  10588. + break;
  10589. + case KEY_RIGHT:
  10590. + case 'l':
  10591. + start_x++;
  10592. + break;
  10593. + }
  10594. + if (res == 10 || res == 27 || res == 'q' ||
  10595. + res == KEY_F(F_HELP) || res == KEY_F(F_BACK) ||
  10596. + res == KEY_F(F_EXIT))
  10597. + break;
  10598. + if (start_y < 0)
  10599. + start_y = 0;
  10600. + if (start_y >= total_lines-text_lines)
  10601. + start_y = total_lines-text_lines;
  10602. + if (start_x < 0)
  10603. + start_x = 0;
  10604. + if (start_x >= total_cols-text_cols)
  10605. + start_x = total_cols-text_cols;
  10606. + } while (res);
  10607. +
  10608. + del_panel(panel);
  10609. + delwin(win);
  10610. + refresh_all_windows(main_window);
  10611. +}
  10612. diff -Nur uClibc-0.9.33.2/extra/config/nconf.h uClibc-git/extra/config/nconf.h
  10613. --- uClibc-0.9.33.2/extra/config/nconf.h 1970-01-01 01:00:00.000000000 +0100
  10614. +++ uClibc-git/extra/config/nconf.h 2014-02-03 12:32:56.000000000 +0100
  10615. @@ -0,0 +1,96 @@
  10616. +/*
  10617. + * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com?
  10618. + * Released under the terms of the GNU GPL v2.0.
  10619. + *
  10620. + * Derived from menuconfig.
  10621. + *
  10622. + */
  10623. +
  10624. +#include <ctype.h>
  10625. +#include <errno.h>
  10626. +#include <fcntl.h>
  10627. +#include <limits.h>
  10628. +#include <stdarg.h>
  10629. +#include <stdlib.h>
  10630. +#include <string.h>
  10631. +#include <unistd.h>
  10632. +#include <locale.h>
  10633. +#include <curses.h>
  10634. +#include <menu.h>
  10635. +#include <panel.h>
  10636. +#include <form.h>
  10637. +
  10638. +#include <stdio.h>
  10639. +#include <time.h>
  10640. +#include <sys/time.h>
  10641. +
  10642. +#include "ncurses.h"
  10643. +
  10644. +#define max(a, b) ({\
  10645. + typeof(a) _a = a;\
  10646. + typeof(b) _b = b;\
  10647. + _a > _b ? _a : _b; })
  10648. +
  10649. +#define min(a, b) ({\
  10650. + typeof(a) _a = a;\
  10651. + typeof(b) _b = b;\
  10652. + _a < _b ? _a : _b; })
  10653. +
  10654. +typedef enum {
  10655. + NORMAL = 1,
  10656. + MAIN_HEADING,
  10657. + MAIN_MENU_BOX,
  10658. + MAIN_MENU_FORE,
  10659. + MAIN_MENU_BACK,
  10660. + MAIN_MENU_GREY,
  10661. + MAIN_MENU_HEADING,
  10662. + SCROLLWIN_TEXT,
  10663. + SCROLLWIN_HEADING,
  10664. + SCROLLWIN_BOX,
  10665. + DIALOG_TEXT,
  10666. + DIALOG_MENU_FORE,
  10667. + DIALOG_MENU_BACK,
  10668. + DIALOG_BOX,
  10669. + INPUT_BOX,
  10670. + INPUT_HEADING,
  10671. + INPUT_TEXT,
  10672. + INPUT_FIELD,
  10673. + FUNCTION_TEXT,
  10674. + FUNCTION_HIGHLIGHT,
  10675. + ATTR_MAX
  10676. +} attributes_t;
  10677. +extern attributes_t attributes[];
  10678. +
  10679. +typedef enum {
  10680. + F_HELP = 1,
  10681. + F_SYMBOL = 2,
  10682. + F_INSTS = 3,
  10683. + F_CONF = 4,
  10684. + F_BACK = 5,
  10685. + F_SAVE = 6,
  10686. + F_LOAD = 7,
  10687. + F_SEARCH = 8,
  10688. + F_EXIT = 9,
  10689. +} function_key;
  10690. +
  10691. +void set_colors(void);
  10692. +
  10693. +/* this changes the windows attributes !!! */
  10694. +void print_in_middle(WINDOW *win,
  10695. + int starty,
  10696. + int startx,
  10697. + int width,
  10698. + const char *string,
  10699. + chtype color);
  10700. +int get_line_length(const char *line);
  10701. +int get_line_no(const char *text);
  10702. +const char *get_line(const char *text, int line_no);
  10703. +void fill_window(WINDOW *win, const char *text);
  10704. +int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...);
  10705. +int dialog_inputbox(WINDOW *main_window,
  10706. + const char *title, const char *prompt,
  10707. + const char *init, char **resultp, int *result_len);
  10708. +void refresh_all_windows(WINDOW *main_window);
  10709. +void show_scroll_win(WINDOW *main_window,
  10710. + const char *title,
  10711. + const char *text);
  10712. diff -Nur uClibc-0.9.33.2/extra/config/qconf.cc uClibc-git/extra/config/qconf.cc
  10713. --- uClibc-0.9.33.2/extra/config/qconf.cc 2012-05-15 09:20:09.000000000 +0200
  10714. +++ uClibc-git/extra/config/qconf.cc 2014-02-03 12:32:56.000000000 +0100
  10715. @@ -3,24 +3,43 @@
  10716. * Released under the terms of the GNU GPL v2.0.
  10717. */
  10718. -#include <qapplication.h>
  10719. +#include <qglobal.h>
  10720. +
  10721. +#if QT_VERSION < 0x040000
  10722. +#include <stddef.h>
  10723. #include <qmainwindow.h>
  10724. +#include <qvbox.h>
  10725. +#include <qvaluelist.h>
  10726. +#include <qtextbrowser.h>
  10727. +#include <qaction.h>
  10728. +#include <qheader.h>
  10729. +#include <qfiledialog.h>
  10730. +#include <qdragobject.h>
  10731. +#include <qpopupmenu.h>
  10732. +#else
  10733. +#include <q3mainwindow.h>
  10734. +#include <q3vbox.h>
  10735. +#include <q3valuelist.h>
  10736. +#include <q3textbrowser.h>
  10737. +#include <q3action.h>
  10738. +#include <q3header.h>
  10739. +#include <q3filedialog.h>
  10740. +#include <q3dragobject.h>
  10741. +#include <q3popupmenu.h>
  10742. +#endif
  10743. +
  10744. +#include <qapplication.h>
  10745. +#include <qdesktopwidget.h>
  10746. #include <qtoolbar.h>
  10747. #include <qlayout.h>
  10748. -#include <qvbox.h>
  10749. #include <qsplitter.h>
  10750. -#include <qlistview.h>
  10751. -#include <qtextbrowser.h>
  10752. #include <qlineedit.h>
  10753. #include <qlabel.h>
  10754. #include <qpushbutton.h>
  10755. #include <qmenubar.h>
  10756. #include <qmessagebox.h>
  10757. -#include <qaction.h>
  10758. -#include <qheader.h>
  10759. -#include <qfiledialog.h>
  10760. -#include <qdragobject.h>
  10761. #include <qregexp.h>
  10762. +#include <qevent.h>
  10763. #include <stdlib.h>
  10764. @@ -38,7 +57,7 @@
  10765. static QApplication *configApp;
  10766. static ConfigSettings *configSettings;
  10767. -QAction *ConfigMainWindow::saveAction;
  10768. +Q3Action *ConfigMainWindow::saveAction;
  10769. static inline QString qgettext(const char* str)
  10770. {
  10771. @@ -53,15 +72,14 @@
  10772. /**
  10773. * Reads a list of integer values from the application settings.
  10774. */
  10775. -QValueList<int> ConfigSettings::readSizes(const QString& key, bool *ok)
  10776. +Q3ValueList<int> ConfigSettings::readSizes(const QString& key, bool *ok)
  10777. {
  10778. - QValueList<int> result;
  10779. + Q3ValueList<int> result;
  10780. QStringList entryList = readListEntry(key, ok);
  10781. - if (ok) {
  10782. - QStringList::Iterator it;
  10783. - for (it = entryList.begin(); it != entryList.end(); ++it)
  10784. - result.push_back((*it).toInt());
  10785. - }
  10786. + QStringList::Iterator it;
  10787. +
  10788. + for (it = entryList.begin(); it != entryList.end(); ++it)
  10789. + result.push_back((*it).toInt());
  10790. return result;
  10791. }
  10792. @@ -69,10 +87,10 @@
  10793. /**
  10794. * Writes a list of integer values to the application settings.
  10795. */
  10796. -bool ConfigSettings::writeSizes(const QString& key, const QValueList<int>& value)
  10797. +bool ConfigSettings::writeSizes(const QString& key, const Q3ValueList<int>& value)
  10798. {
  10799. QStringList stringList;
  10800. - QValueList<int>::ConstIterator it;
  10801. + Q3ValueList<int>::ConstIterator it;
  10802. for (it = value.begin(); it != value.end(); ++it)
  10803. stringList.push_back(QString::number(*it));
  10804. @@ -80,7 +98,6 @@
  10805. }
  10806. -#if QT_VERSION >= 300
  10807. /*
  10808. * set the new data
  10809. * TODO check the value
  10810. @@ -91,7 +108,6 @@
  10811. sym_set_string_value(menu->sym, text(dataColIdx).latin1());
  10812. listView()->updateList(this);
  10813. }
  10814. -#endif
  10815. /*
  10816. * update the displayed of a menu entry
  10817. @@ -148,7 +164,7 @@
  10818. case S_TRISTATE:
  10819. char ch;
  10820. - if (!sym_is_changable(sym) && !list->showAll) {
  10821. + if (!sym_is_changable(sym) && list->optMode == normalOpt) {
  10822. setPixmap(promptColIdx, 0);
  10823. setText(noColIdx, QString::null);
  10824. setText(modColIdx, QString::null);
  10825. @@ -195,11 +211,9 @@
  10826. data = sym_get_string_value(sym);
  10827. -#if QT_VERSION >= 300
  10828. int i = list->mapIdx(dataColIdx);
  10829. if (i >= 0)
  10830. setRenameEnabled(i, TRUE);
  10831. -#endif
  10832. setText(dataColIdx, data);
  10833. if (type == S_STRING)
  10834. prompt = QString("%1: %2").arg(prompt).arg(data);
  10835. @@ -297,10 +311,10 @@
  10836. void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
  10837. {
  10838. switch (e->key()) {
  10839. - case Key_Escape:
  10840. + case Qt::Key_Escape:
  10841. break;
  10842. - case Key_Return:
  10843. - case Key_Enter:
  10844. + case Qt::Key_Return:
  10845. + case Qt::Key_Enter:
  10846. sym_set_string_value(item->menu->sym, text().latin1());
  10847. parent()->updateList(item);
  10848. break;
  10849. @@ -319,7 +333,7 @@
  10850. symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),
  10851. choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no),
  10852. menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void),
  10853. - showAll(false), showName(false), showRange(false), showData(false),
  10854. + showName(false), showRange(false), showData(false), optMode(normalOpt),
  10855. rootEntry(0), headerPopup(0)
  10856. {
  10857. int i;
  10858. @@ -336,10 +350,10 @@
  10859. if (name) {
  10860. configSettings->beginGroup(name);
  10861. - showAll = configSettings->readBoolEntry("/showAll", false);
  10862. showName = configSettings->readBoolEntry("/showName", false);
  10863. showRange = configSettings->readBoolEntry("/showRange", false);
  10864. showData = configSettings->readBoolEntry("/showData", false);
  10865. + optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false);
  10866. configSettings->endGroup();
  10867. connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
  10868. }
  10869. @@ -351,6 +365,17 @@
  10870. reinit();
  10871. }
  10872. +bool ConfigList::menuSkip(struct menu *menu)
  10873. +{
  10874. + if (optMode == normalOpt && menu_is_visible(menu))
  10875. + return false;
  10876. + if (optMode == promptOpt && menu_has_prompt(menu))
  10877. + return false;
  10878. + if (optMode == allOpt)
  10879. + return false;
  10880. + return true;
  10881. +}
  10882. +
  10883. void ConfigList::reinit(void)
  10884. {
  10885. removeColumn(dataColIdx);
  10886. @@ -379,7 +404,7 @@
  10887. configSettings->writeEntry("/showName", showName);
  10888. configSettings->writeEntry("/showRange", showRange);
  10889. configSettings->writeEntry("/showData", showData);
  10890. - configSettings->writeEntry("/showAll", showAll);
  10891. + configSettings->writeEntry("/optionMode", (int)optMode);
  10892. configSettings->endGroup();
  10893. }
  10894. }
  10895. @@ -421,7 +446,7 @@
  10896. if (!rootEntry) {
  10897. if (mode != listMode)
  10898. goto update;
  10899. - QListViewItemIterator it(this);
  10900. + Q3ListViewItemIterator it(this);
  10901. ConfigItem* item;
  10902. for (; it.current(); ++it) {
  10903. @@ -516,11 +541,9 @@
  10904. case S_INT:
  10905. case S_HEX:
  10906. case S_STRING:
  10907. -#if QT_VERSION >= 300
  10908. if (colMap[dataColIdx] >= 0)
  10909. item->startRename(colMap[dataColIdx]);
  10910. else
  10911. -#endif
  10912. parent()->lineEdit->show(item);
  10913. break;
  10914. }
  10915. @@ -552,7 +575,7 @@
  10916. return;
  10917. setRootMenu(menu_get_parent_menu(rootEntry->parent));
  10918. - QListViewItemIterator it(this);
  10919. + Q3ListViewItemIterator it(this);
  10920. for (; (item = (ConfigItem*)it.current()); it++) {
  10921. if (item->menu == oldroot) {
  10922. setCurrentItem(item);
  10923. @@ -605,7 +628,7 @@
  10924. }
  10925. visible = menu_is_visible(child);
  10926. - if (showAll || visible) {
  10927. + if (!menuSkip(child)) {
  10928. if (!child->sym && !child->list && !child->prompt)
  10929. continue;
  10930. if (!item || item->menu != child)
  10931. @@ -634,12 +657,12 @@
  10932. void ConfigList::keyPressEvent(QKeyEvent* ev)
  10933. {
  10934. - QListViewItem* i = currentItem();
  10935. + Q3ListViewItem* i = currentItem();
  10936. ConfigItem* item;
  10937. struct menu *menu;
  10938. enum prop_type type;
  10939. - if (ev->key() == Key_Escape && mode != fullMode && mode != listMode) {
  10940. + if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) {
  10941. emit parentSelected();
  10942. ev->accept();
  10943. return;
  10944. @@ -652,8 +675,8 @@
  10945. item = (ConfigItem*)i;
  10946. switch (ev->key()) {
  10947. - case Key_Return:
  10948. - case Key_Enter:
  10949. + case Qt::Key_Return:
  10950. + case Qt::Key_Enter:
  10951. if (item->goParent) {
  10952. emit parentSelected();
  10953. break;
  10954. @@ -667,16 +690,16 @@
  10955. emit menuSelected(menu);
  10956. break;
  10957. }
  10958. - case Key_Space:
  10959. + case Qt::Key_Space:
  10960. changeValue(item);
  10961. break;
  10962. - case Key_N:
  10963. + case Qt::Key_N:
  10964. setValue(item, no);
  10965. break;
  10966. - case Key_M:
  10967. + case Qt::Key_M:
  10968. setValue(item, mod);
  10969. break;
  10970. - case Key_Y:
  10971. + case Qt::Key_Y:
  10972. setValue(item, yes);
  10973. break;
  10974. default:
  10975. @@ -800,10 +823,10 @@
  10976. {
  10977. if (e->y() <= header()->geometry().bottom()) {
  10978. if (!headerPopup) {
  10979. - QAction *action;
  10980. + Q3Action *action;
  10981. - headerPopup = new QPopupMenu(this);
  10982. - action = new QAction(NULL, _("Show Name"), 0, this);
  10983. + headerPopup = new Q3PopupMenu(this);
  10984. + action = new Q3Action(NULL, _("Show Name"), 0, this);
  10985. action->setToggleAction(TRUE);
  10986. connect(action, SIGNAL(toggled(bool)),
  10987. parent(), SLOT(setShowName(bool)));
  10988. @@ -811,7 +834,7 @@
  10989. action, SLOT(setOn(bool)));
  10990. action->setOn(showName);
  10991. action->addTo(headerPopup);
  10992. - action = new QAction(NULL, _("Show Range"), 0, this);
  10993. + action = new Q3Action(NULL, _("Show Range"), 0, this);
  10994. action->setToggleAction(TRUE);
  10995. connect(action, SIGNAL(toggled(bool)),
  10996. parent(), SLOT(setShowRange(bool)));
  10997. @@ -819,7 +842,7 @@
  10998. action, SLOT(setOn(bool)));
  10999. action->setOn(showRange);
  11000. action->addTo(headerPopup);
  11001. - action = new QAction(NULL, _("Show Data"), 0, this);
  11002. + action = new Q3Action(NULL, _("Show Data"), 0, this);
  11003. action->setToggleAction(TRUE);
  11004. connect(action, SIGNAL(toggled(bool)),
  11005. parent(), SLOT(setShowData(bool)));
  11006. @@ -834,7 +857,10 @@
  11007. e->ignore();
  11008. }
  11009. -ConfigView* ConfigView::viewList;
  11010. +ConfigView*ConfigView::viewList;
  11011. +QAction *ConfigView::showNormalAction;
  11012. +QAction *ConfigView::showAllAction;
  11013. +QAction *ConfigView::showPromptAction;
  11014. ConfigView::ConfigView(QWidget* parent, const char *name)
  11015. : Parent(parent, name)
  11016. @@ -859,13 +885,16 @@
  11017. }
  11018. }
  11019. -void ConfigView::setShowAll(bool b)
  11020. +void ConfigView::setOptionMode(QAction *act)
  11021. {
  11022. - if (list->showAll != b) {
  11023. - list->showAll = b;
  11024. - list->updateListAll();
  11025. - emit showAllChanged(b);
  11026. - }
  11027. + if (act == showNormalAction)
  11028. + list->optMode = normalOpt;
  11029. + else if (act == showAllAction)
  11030. + list->optMode = allOpt;
  11031. + else
  11032. + list->optMode = promptOpt;
  11033. +
  11034. + list->updateListAll();
  11035. }
  11036. void ConfigView::setShowName(bool b)
  11037. @@ -897,7 +926,7 @@
  11038. void ConfigList::setAllOpen(bool open)
  11039. {
  11040. - QListViewItemIterator it(this);
  11041. + Q3ListViewItemIterator it(this);
  11042. for (; it.current(); it++)
  11043. it.current()->setOpen(open);
  11044. @@ -920,7 +949,7 @@
  11045. }
  11046. ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
  11047. - : Parent(parent, name), menu(0), sym(0)
  11048. + : Parent(parent, name), sym(0), _menu(0)
  11049. {
  11050. if (name) {
  11051. configSettings->beginGroup(name);
  11052. @@ -943,7 +972,7 @@
  11053. {
  11054. if (_showDebug != b) {
  11055. _showDebug = b;
  11056. - if (menu)
  11057. + if (_menu)
  11058. menuInfo();
  11059. else if (sym)
  11060. symbolInfo();
  11061. @@ -953,44 +982,16 @@
  11062. void ConfigInfoView::setInfo(struct menu *m)
  11063. {
  11064. - if (menu == m)
  11065. + if (_menu == m)
  11066. return;
  11067. - menu = m;
  11068. + _menu = m;
  11069. sym = NULL;
  11070. - if (!menu)
  11071. + if (!_menu)
  11072. clear();
  11073. else
  11074. menuInfo();
  11075. }
  11076. -void ConfigInfoView::setSource(const QString& name)
  11077. -{
  11078. - const char *p = name.latin1();
  11079. -
  11080. - menu = NULL;
  11081. - sym = NULL;
  11082. -
  11083. - switch (p[0]) {
  11084. - case 'm':
  11085. - struct menu *m;
  11086. -
  11087. - if (sscanf(p, "m%p", &m) == 1 && menu != m) {
  11088. - menu = m;
  11089. - menuInfo();
  11090. - emit menuSelected(menu);
  11091. - }
  11092. - break;
  11093. - case 's':
  11094. - struct symbol *s;
  11095. -
  11096. - if (sscanf(p, "s%p", &s) == 1 && sym != s) {
  11097. - sym = s;
  11098. - symbolInfo();
  11099. - }
  11100. - break;
  11101. - }
  11102. -}
  11103. -
  11104. void ConfigInfoView::symbolInfo(void)
  11105. {
  11106. QString str;
  11107. @@ -1012,11 +1013,11 @@
  11108. struct symbol* sym;
  11109. QString head, debug, help;
  11110. - sym = menu->sym;
  11111. + sym = _menu->sym;
  11112. if (sym) {
  11113. - if (menu->prompt) {
  11114. + if (_menu->prompt) {
  11115. head += "<big><b>";
  11116. - head += print_filter(_(menu->prompt->text));
  11117. + head += print_filter(_(_menu->prompt->text));
  11118. head += "</b></big>";
  11119. if (sym->name) {
  11120. head += " (";
  11121. @@ -1041,26 +1042,24 @@
  11122. if (showDebug())
  11123. debug = debug_info(sym);
  11124. - help = menu_get_help(menu);
  11125. - /* Gettextize if the help text not empty */
  11126. - if (help.isEmpty())
  11127. - help = print_filter(menu_get_help(menu));
  11128. - else
  11129. - help = print_filter(_(menu_get_help(menu)));
  11130. - } else if (menu->prompt) {
  11131. + struct gstr help_gstr = str_new();
  11132. + menu_get_ext_help(_menu, &help_gstr);
  11133. + help = print_filter(str_get(&help_gstr));
  11134. + str_free(&help_gstr);
  11135. + } else if (_menu->prompt) {
  11136. head += "<big><b>";
  11137. - head += print_filter(_(menu->prompt->text));
  11138. + head += print_filter(_(_menu->prompt->text));
  11139. head += "</b></big><br><br>";
  11140. if (showDebug()) {
  11141. - if (menu->prompt->visible.expr) {
  11142. + if (_menu->prompt->visible.expr) {
  11143. debug += "&nbsp;&nbsp;dep: ";
  11144. - expr_print(menu->prompt->visible.expr, expr_print_help, &debug, E_NONE);
  11145. + expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE);
  11146. debug += "<br><br>";
  11147. }
  11148. }
  11149. }
  11150. if (showDebug())
  11151. - debug += QString().sprintf("defined at %s:%d<br><br>", menu->file->name, menu->lineno);
  11152. + debug += QString().sprintf("defined at %s:%d<br><br>", _menu->file->name, _menu->lineno);
  11153. setText(head + debug + help);
  11154. }
  11155. @@ -1163,10 +1162,10 @@
  11156. *text += str2;
  11157. }
  11158. -QPopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos)
  11159. +Q3PopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos)
  11160. {
  11161. - QPopupMenu* popup = Parent::createPopupMenu(pos);
  11162. - QAction* action = new QAction(NULL, _("Show Debug Info"), 0, popup);
  11163. + Q3PopupMenu* popup = Parent::createPopupMenu(pos);
  11164. + Q3Action* action = new Q3Action(NULL, _("Show Debug Info"), 0, popup);
  11165. action->setToggleAction(TRUE);
  11166. connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
  11167. connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool)));
  11168. @@ -1199,7 +1198,7 @@
  11169. layout1->addLayout(layout2);
  11170. split = new QSplitter(this);
  11171. - split->setOrientation(QSplitter::Vertical);
  11172. + split->setOrientation(Qt::Vertical);
  11173. list = new ConfigView(split, name);
  11174. list->list->mode = listMode;
  11175. info = new ConfigInfoView(split, name);
  11176. @@ -1223,7 +1222,7 @@
  11177. y = configSettings->readNumEntry("/window y", 0, &ok);
  11178. if (ok)
  11179. move(x, y);
  11180. - QValueList<int> sizes = configSettings->readSizes("/split", &ok);
  11181. + Q3ValueList<int> sizes = configSettings->readSizes("/split", &ok);
  11182. if (ok)
  11183. split->setSizes(sizes);
  11184. configSettings->endGroup();
  11185. @@ -1275,9 +1274,15 @@
  11186. int x, y, width, height;
  11187. char title[256];
  11188. - QWidget *d = configApp->desktop();
  11189. - snprintf(title, sizeof(title), _("uClibc v%s Configuration"),
  11190. - getenv("VERSION"));
  11191. + QDesktopWidget *d = configApp->desktop();
  11192. + snprintf(title, sizeof(title), "%s%s",
  11193. + rootmenu.prompt->text,
  11194. +#if QT_VERSION < 0x040000
  11195. + " (Qt3)"
  11196. +#else
  11197. + ""
  11198. +#endif
  11199. + );
  11200. setCaption(title);
  11201. width = configSettings->readNumEntry("/window width", d->width() - 64);
  11202. @@ -1290,14 +1295,14 @@
  11203. move(x, y);
  11204. split1 = new QSplitter(this);
  11205. - split1->setOrientation(QSplitter::Horizontal);
  11206. + split1->setOrientation(Qt::Horizontal);
  11207. setCentralWidget(split1);
  11208. menuView = new ConfigView(split1, "menu");
  11209. menuList = menuView->list;
  11210. split2 = new QSplitter(split1);
  11211. - split2->setOrientation(QSplitter::Vertical);
  11212. + split2->setOrientation(Qt::Vertical);
  11213. // create config tree
  11214. configView = new ConfigView(split2, "config");
  11215. @@ -1310,60 +1315,79 @@
  11216. configList->setFocus();
  11217. menu = menuBar();
  11218. - toolBar = new QToolBar("Tools", this);
  11219. + toolBar = new Q3ToolBar("Tools", this);
  11220. - backAction = new QAction("Back", QPixmap(xpm_back), _("Back"), 0, this);
  11221. + backAction = new Q3Action("Back", QPixmap(xpm_back), _("Back"), 0, this);
  11222. connect(backAction, SIGNAL(activated()), SLOT(goBack()));
  11223. backAction->setEnabled(FALSE);
  11224. - QAction *quitAction = new QAction("Quit", _("&Quit"), CTRL+Key_Q, this);
  11225. + Q3Action *quitAction = new Q3Action("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this);
  11226. connect(quitAction, SIGNAL(activated()), SLOT(close()));
  11227. - QAction *loadAction = new QAction("Load", QPixmap(xpm_load), _("&Load"), CTRL+Key_L, this);
  11228. + Q3Action *loadAction = new Q3Action("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this);
  11229. connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
  11230. - saveAction = new QAction("Save", QPixmap(xpm_save), _("&Save"), CTRL+Key_S, this);
  11231. + saveAction = new Q3Action("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this);
  11232. connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
  11233. conf_set_changed_callback(conf_changed);
  11234. // Set saveAction's initial state
  11235. conf_changed();
  11236. - QAction *saveAsAction = new QAction("Save As...", _("Save &As..."), 0, this);
  11237. + Q3Action *saveAsAction = new Q3Action("Save As...", _("Save &As..."), 0, this);
  11238. connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
  11239. - QAction *searchAction = new QAction("Find", _("&Find"), CTRL+Key_F, this);
  11240. + Q3Action *searchAction = new Q3Action("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this);
  11241. connect(searchAction, SIGNAL(activated()), SLOT(searchConfig()));
  11242. - QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this);
  11243. + Q3Action *singleViewAction = new Q3Action("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this);
  11244. connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView()));
  11245. - QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this);
  11246. + Q3Action *splitViewAction = new Q3Action("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this);
  11247. connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView()));
  11248. - QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this);
  11249. + Q3Action *fullViewAction = new Q3Action("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this);
  11250. connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView()));
  11251. - QAction *showNameAction = new QAction(NULL, _("Show Name"), 0, this);
  11252. + Q3Action *showNameAction = new Q3Action(NULL, _("Show Name"), 0, this);
  11253. showNameAction->setToggleAction(TRUE);
  11254. connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool)));
  11255. connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool)));
  11256. showNameAction->setOn(configView->showName());
  11257. - QAction *showRangeAction = new QAction(NULL, _("Show Range"), 0, this);
  11258. + Q3Action *showRangeAction = new Q3Action(NULL, _("Show Range"), 0, this);
  11259. showRangeAction->setToggleAction(TRUE);
  11260. connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool)));
  11261. connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool)));
  11262. showRangeAction->setOn(configList->showRange);
  11263. - QAction *showDataAction = new QAction(NULL, _("Show Data"), 0, this);
  11264. + Q3Action *showDataAction = new Q3Action(NULL, _("Show Data"), 0, this);
  11265. showDataAction->setToggleAction(TRUE);
  11266. connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
  11267. connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
  11268. showDataAction->setOn(configList->showData);
  11269. - QAction *showAllAction = new QAction(NULL, _("Show All Options"), 0, this);
  11270. - showAllAction->setToggleAction(TRUE);
  11271. - connect(showAllAction, SIGNAL(toggled(bool)), configView, SLOT(setShowAll(bool)));
  11272. - connect(showAllAction, SIGNAL(toggled(bool)), menuView, SLOT(setShowAll(bool)));
  11273. - showAllAction->setOn(configList->showAll);
  11274. - QAction *showDebugAction = new QAction(NULL, _("Show Debug Info"), 0, this);
  11275. +
  11276. + QActionGroup *optGroup = new QActionGroup(this);
  11277. + optGroup->setExclusive(TRUE);
  11278. + connect(optGroup, SIGNAL(selected(QAction *)), configView,
  11279. + SLOT(setOptionMode(QAction *)));
  11280. + connect(optGroup, SIGNAL(selected(QAction *)), menuView,
  11281. + SLOT(setOptionMode(QAction *)));
  11282. +
  11283. +#if QT_VERSION >= 0x040000
  11284. + configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup);
  11285. + configView->showAllAction = new QAction(_("Show All Options"), optGroup);
  11286. + configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup);
  11287. +#else
  11288. + configView->showNormalAction = new QAction(_("Show Normal Options"), 0, optGroup);
  11289. + configView->showAllAction = new QAction(_("Show All Options"), 0, optGroup);
  11290. + configView->showPromptAction = new QAction(_("Show Prompt Options"), 0, optGroup);
  11291. +#endif
  11292. + configView->showNormalAction->setToggleAction(TRUE);
  11293. + configView->showNormalAction->setOn(configList->optMode == normalOpt);
  11294. + configView->showAllAction->setToggleAction(TRUE);
  11295. + configView->showAllAction->setOn(configList->optMode == allOpt);
  11296. + configView->showPromptAction->setToggleAction(TRUE);
  11297. + configView->showPromptAction->setOn(configList->optMode == promptOpt);
  11298. +
  11299. + Q3Action *showDebugAction = new Q3Action(NULL, _("Show Debug Info"), 0, this);
  11300. showDebugAction->setToggleAction(TRUE);
  11301. connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
  11302. connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool)));
  11303. showDebugAction->setOn(helpText->showDebug());
  11304. - QAction *showIntroAction = new QAction(NULL, _("Introduction"), 0, this);
  11305. + Q3Action *showIntroAction = new Q3Action(NULL, _("Introduction"), 0, this);
  11306. connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
  11307. - QAction *showAboutAction = new QAction(NULL, _("About"), 0, this);
  11308. + Q3Action *showAboutAction = new Q3Action(NULL, _("About"), 0, this);
  11309. connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
  11310. // init tool bar
  11311. @@ -1377,7 +1401,7 @@
  11312. fullViewAction->addTo(toolBar);
  11313. // create config menu
  11314. - QPopupMenu* config = new QPopupMenu(this);
  11315. + Q3PopupMenu* config = new Q3PopupMenu(this);
  11316. menu->insertItem(_("&File"), config);
  11317. loadAction->addTo(config);
  11318. saveAction->addTo(config);
  11319. @@ -1386,22 +1410,22 @@
  11320. quitAction->addTo(config);
  11321. // create edit menu
  11322. - QPopupMenu* editMenu = new QPopupMenu(this);
  11323. + Q3PopupMenu* editMenu = new Q3PopupMenu(this);
  11324. menu->insertItem(_("&Edit"), editMenu);
  11325. searchAction->addTo(editMenu);
  11326. // create options menu
  11327. - QPopupMenu* optionMenu = new QPopupMenu(this);
  11328. + Q3PopupMenu* optionMenu = new Q3PopupMenu(this);
  11329. menu->insertItem(_("&Option"), optionMenu);
  11330. showNameAction->addTo(optionMenu);
  11331. showRangeAction->addTo(optionMenu);
  11332. showDataAction->addTo(optionMenu);
  11333. optionMenu->insertSeparator();
  11334. - showAllAction->addTo(optionMenu);
  11335. - showDebugAction->addTo(optionMenu);
  11336. + optGroup->addTo(optionMenu);
  11337. + optionMenu->insertSeparator();
  11338. // create help menu
  11339. - QPopupMenu* helpMenu = new QPopupMenu(this);
  11340. + Q3PopupMenu* helpMenu = new Q3PopupMenu(this);
  11341. menu->insertSeparator();
  11342. menu->insertItem(_("&Help"), helpMenu);
  11343. showIntroAction->addTo(helpMenu);
  11344. @@ -1436,7 +1460,7 @@
  11345. showSplitView();
  11346. // UI setup done, restore splitter positions
  11347. - QValueList<int> sizes = configSettings->readSizes("/split1", &ok);
  11348. + Q3ValueList<int> sizes = configSettings->readSizes("/split1", &ok);
  11349. if (ok)
  11350. split1->setSizes(sizes);
  11351. @@ -1447,7 +1471,7 @@
  11352. void ConfigMainWindow::loadConfig(void)
  11353. {
  11354. - QString s = QFileDialog::getOpenFileName(".config", NULL, this);
  11355. + QString s = Q3FileDialog::getOpenFileName(conf_get_configname(), NULL, this);
  11356. if (s.isNull())
  11357. return;
  11358. if (conf_read(QFile::encodeName(s)))
  11359. @@ -1455,19 +1479,21 @@
  11360. ConfigView::updateListAll();
  11361. }
  11362. -void ConfigMainWindow::saveConfig(void)
  11363. +bool ConfigMainWindow::saveConfig(void)
  11364. {
  11365. - if (conf_write(NULL))
  11366. + if (conf_write(NULL)) {
  11367. QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
  11368. + return false;
  11369. + }
  11370. + return true;
  11371. }
  11372. void ConfigMainWindow::saveConfigAs(void)
  11373. {
  11374. - QString s = QFileDialog::getSaveFileName(".config", NULL, this);
  11375. + QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this);
  11376. if (s.isNull())
  11377. return;
  11378. - if (conf_write(QFile::encodeName(s)))
  11379. - QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
  11380. + saveConfig();
  11381. }
  11382. void ConfigMainWindow::searchConfig(void)
  11383. @@ -1492,7 +1518,7 @@
  11384. ConfigList* list = NULL;
  11385. ConfigItem* item;
  11386. - if (!menu_is_visible(menu) && !configView->showAll())
  11387. + if (configList->menuSkip(menu))
  11388. return;
  11389. switch (configList->mode) {
  11390. @@ -1524,6 +1550,8 @@
  11391. case fullMode:
  11392. list = configList;
  11393. break;
  11394. + default:
  11395. + break;
  11396. }
  11397. if (list) {
  11398. @@ -1618,7 +1646,11 @@
  11399. mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit"));
  11400. switch (mb.exec()) {
  11401. case QMessageBox::Yes:
  11402. - conf_write(NULL);
  11403. + if (saveConfig())
  11404. + e->accept();
  11405. + else
  11406. + e->ignore();
  11407. + break;
  11408. case QMessageBox::No:
  11409. e->accept();
  11410. break;
  11411. @@ -1630,7 +1662,7 @@
  11412. void ConfigMainWindow::showIntro(void)
  11413. {
  11414. - static const QString str = _("Welcome to the qconf graphical configuration tool for uClibc.\n\n"
  11415. + static const QString str = _("Welcome to the qconf graphical configuration tool.\n\n"
  11416. "For each option, a blank box indicates the feature is disabled, a check\n"
  11417. "indicates it is enabled, and a dot indicates that it is to be compiled\n"
  11418. "as a module. Clicking on the box will cycle through the three states.\n\n"
  11419. @@ -1648,7 +1680,7 @@
  11420. void ConfigMainWindow::showAbout(void)
  11421. {
  11422. static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
  11423. - "Bug reports and feature request can also be entered at https://bugs.uClibc.org/\n");
  11424. + "Bug reports and feature request can also be entered at http://bugs.uClibc.org/\n");
  11425. QMessageBox::information(this, "qconf", str);
  11426. }
  11427. @@ -1673,6 +1705,9 @@
  11428. case fullMode :
  11429. entry = "full";
  11430. break;
  11431. +
  11432. + default:
  11433. + break;
  11434. }
  11435. configSettings->writeEntry("/listMode", entry);
  11436. @@ -1718,10 +1753,6 @@
  11437. bindtextdomain(PACKAGE, LOCALEDIR);
  11438. textdomain(PACKAGE);
  11439. -#ifndef LKC_DIRECT_LINK
  11440. - kconfig_load();
  11441. -#endif
  11442. -
  11443. progname = av[0];
  11444. configApp = new QApplication(ac, av);
  11445. if (ac > 1 && av[1][0] == '-') {
  11446. diff -Nur uClibc-0.9.33.2/extra/config/qconf.h uClibc-git/extra/config/qconf.h
  11447. --- uClibc-0.9.33.2/extra/config/qconf.h 2012-05-15 09:20:09.000000000 +0200
  11448. +++ uClibc-git/extra/config/qconf.h 2014-02-03 12:32:56.000000000 +0100
  11449. @@ -3,26 +3,25 @@
  11450. * Released under the terms of the GNU GPL v2.0.
  11451. */
  11452. +#if QT_VERSION < 0x040000
  11453. #include <qlistview.h>
  11454. -#if QT_VERSION >= 300
  11455. -#include <qsettings.h>
  11456. #else
  11457. -class QSettings {
  11458. -public:
  11459. - void beginGroup(const QString& group) { }
  11460. - void endGroup(void) { }
  11461. - bool readBoolEntry(const QString& key, bool def = FALSE, bool* ok = 0) const
  11462. - { if (ok) *ok = FALSE; return def; }
  11463. - int readNumEntry(const QString& key, int def = 0, bool* ok = 0) const
  11464. - { if (ok) *ok = FALSE; return def; }
  11465. - QString readEntry(const QString& key, const QString& def = QString::null, bool* ok = 0) const
  11466. - { if (ok) *ok = FALSE; return def; }
  11467. - QStringList readListEntry(const QString& key, bool* ok = 0) const
  11468. - { if (ok) *ok = FALSE; return QStringList(); }
  11469. - template <class t>
  11470. - bool writeEntry(const QString& key, t value)
  11471. - { return TRUE; }
  11472. -};
  11473. +#include <q3listview.h>
  11474. +#endif
  11475. +#include <qsettings.h>
  11476. +
  11477. +#if QT_VERSION < 0x040000
  11478. +#define Q3ValueList QValueList
  11479. +#define Q3PopupMenu QPopupMenu
  11480. +#define Q3ListView QListView
  11481. +#define Q3ListViewItem QListViewItem
  11482. +#define Q3VBox QVBox
  11483. +#define Q3TextBrowser QTextBrowser
  11484. +#define Q3MainWindow QMainWindow
  11485. +#define Q3Action QAction
  11486. +#define Q3ToolBar QToolBar
  11487. +#define Q3ListViewItemIterator QListViewItemIterator
  11488. +#define Q3FileDialog QFileDialog
  11489. #endif
  11490. class ConfigView;
  11491. @@ -31,11 +30,10 @@
  11492. class ConfigLineEdit;
  11493. class ConfigMainWindow;
  11494. -
  11495. class ConfigSettings : public QSettings {
  11496. public:
  11497. - QValueList<int> readSizes(const QString& key, bool *ok);
  11498. - bool writeSizes(const QString& key, const QValueList<int>& value);
  11499. + Q3ValueList<int> readSizes(const QString& key, bool *ok);
  11500. + bool writeSizes(const QString& key, const Q3ValueList<int>& value);
  11501. };
  11502. enum colIdx {
  11503. @@ -44,10 +42,13 @@
  11504. enum listMode {
  11505. singleMode, menuMode, symbolMode, fullMode, listMode
  11506. };
  11507. +enum optionMode {
  11508. + normalOpt = 0, allOpt, promptOpt
  11509. +};
  11510. -class ConfigList : public QListView {
  11511. +class ConfigList : public Q3ListView {
  11512. Q_OBJECT
  11513. - typedef class QListView Parent;
  11514. + typedef class Q3ListView Parent;
  11515. public:
  11516. ConfigList(ConfigView* p, const char *name = 0);
  11517. void reinit(void);
  11518. @@ -115,6 +116,8 @@
  11519. void setAllOpen(bool open);
  11520. void setParentMenu(void);
  11521. + bool menuSkip(struct menu *);
  11522. +
  11523. template <class P>
  11524. void updateMenuList(P*, struct menu*);
  11525. @@ -124,22 +127,23 @@
  11526. QPixmap choiceYesPix, choiceNoPix;
  11527. QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
  11528. - bool showAll, showName, showRange, showData;
  11529. + bool showName, showRange, showData;
  11530. enum listMode mode;
  11531. + enum optionMode optMode;
  11532. struct menu *rootEntry;
  11533. QColorGroup disabledColorGroup;
  11534. QColorGroup inactivedColorGroup;
  11535. - QPopupMenu* headerPopup;
  11536. + Q3PopupMenu* headerPopup;
  11537. private:
  11538. int colMap[colNr];
  11539. int colRevMap[colNr];
  11540. };
  11541. -class ConfigItem : public QListViewItem {
  11542. - typedef class QListViewItem Parent;
  11543. +class ConfigItem : public Q3ListViewItem {
  11544. + typedef class Q3ListViewItem Parent;
  11545. public:
  11546. - ConfigItem(QListView *parent, ConfigItem *after, struct menu *m, bool v)
  11547. + ConfigItem(Q3ListView *parent, ConfigItem *after, struct menu *m, bool v)
  11548. : Parent(parent, after), menu(m), visible(v), goParent(false)
  11549. {
  11550. init();
  11551. @@ -149,16 +153,14 @@
  11552. {
  11553. init();
  11554. }
  11555. - ConfigItem(QListView *parent, ConfigItem *after, bool v)
  11556. + ConfigItem(Q3ListView *parent, ConfigItem *after, bool v)
  11557. : Parent(parent, after), menu(0), visible(v), goParent(true)
  11558. {
  11559. init();
  11560. }
  11561. ~ConfigItem(void);
  11562. void init(void);
  11563. -#if QT_VERSION >= 300
  11564. void okRename(int col);
  11565. -#endif
  11566. void updateMenu(void);
  11567. void testUpdateMenu(bool v);
  11568. ConfigList* listView() const
  11569. @@ -213,26 +215,24 @@
  11570. ConfigItem *item;
  11571. };
  11572. -class ConfigView : public QVBox {
  11573. +class ConfigView : public Q3VBox {
  11574. Q_OBJECT
  11575. - typedef class QVBox Parent;
  11576. + typedef class Q3VBox Parent;
  11577. public:
  11578. ConfigView(QWidget* parent, const char *name = 0);
  11579. ~ConfigView(void);
  11580. static void updateList(ConfigItem* item);
  11581. static void updateListAll(void);
  11582. - bool showAll(void) const { return list->showAll; }
  11583. bool showName(void) const { return list->showName; }
  11584. bool showRange(void) const { return list->showRange; }
  11585. bool showData(void) const { return list->showData; }
  11586. public slots:
  11587. - void setShowAll(bool);
  11588. void setShowName(bool);
  11589. void setShowRange(bool);
  11590. void setShowData(bool);
  11591. + void setOptionMode(QAction *);
  11592. signals:
  11593. - void showAllChanged(bool);
  11594. void showNameChanged(bool);
  11595. void showRangeChanged(bool);
  11596. void showDataChanged(bool);
  11597. @@ -242,11 +242,15 @@
  11598. static ConfigView* viewList;
  11599. ConfigView* nextView;
  11600. +
  11601. + static QAction *showNormalAction;
  11602. + static QAction *showAllAction;
  11603. + static QAction *showPromptAction;
  11604. };
  11605. -class ConfigInfoView : public QTextBrowser {
  11606. +class ConfigInfoView : public Q3TextBrowser {
  11607. Q_OBJECT
  11608. - typedef class QTextBrowser Parent;
  11609. + typedef class Q3TextBrowser Parent;
  11610. public:
  11611. ConfigInfoView(QWidget* parent, const char *name = 0);
  11612. bool showDebug(void) const { return _showDebug; }
  11613. @@ -254,7 +258,6 @@
  11614. public slots:
  11615. void setInfo(struct menu *menu);
  11616. void saveSettings(void);
  11617. - void setSource(const QString& name);
  11618. void setShowDebug(bool);
  11619. signals:
  11620. @@ -267,11 +270,11 @@
  11621. QString debug_info(struct symbol *sym);
  11622. static QString print_filter(const QString &str);
  11623. static void expr_print_help(void *data, struct symbol *sym, const char *str);
  11624. - QPopupMenu* createPopupMenu(const QPoint& pos);
  11625. + Q3PopupMenu* createPopupMenu(const QPoint& pos);
  11626. void contentsContextMenuEvent(QContextMenuEvent *e);
  11627. struct symbol *sym;
  11628. - struct menu *menu;
  11629. + struct menu *_menu;
  11630. bool _showDebug;
  11631. };
  11632. @@ -295,10 +298,10 @@
  11633. struct symbol **result;
  11634. };
  11635. -class ConfigMainWindow : public QMainWindow {
  11636. +class ConfigMainWindow : public Q3MainWindow {
  11637. Q_OBJECT
  11638. - static QAction *saveAction;
  11639. + static Q3Action *saveAction;
  11640. static void conf_changed(void);
  11641. public:
  11642. ConfigMainWindow(void);
  11643. @@ -308,7 +311,7 @@
  11644. void listFocusChanged(void);
  11645. void goBack(void);
  11646. void loadConfig(void);
  11647. - void saveConfig(void);
  11648. + bool saveConfig(void);
  11649. void saveConfigAs(void);
  11650. void searchConfig(void);
  11651. void showSingleView(void);
  11652. @@ -327,8 +330,8 @@
  11653. ConfigView *configView;
  11654. ConfigList *configList;
  11655. ConfigInfoView *helpText;
  11656. - QToolBar *toolBar;
  11657. - QAction *backAction;
  11658. + Q3ToolBar *toolBar;
  11659. + Q3Action *backAction;
  11660. QSplitter* split1;
  11661. QSplitter* split2;
  11662. };
  11663. diff -Nur uClibc-0.9.33.2/extra/config/README.uClibc uClibc-git/extra/config/README.uClibc
  11664. --- uClibc-0.9.33.2/extra/config/README.uClibc 2012-05-15 09:20:09.000000000 +0200
  11665. +++ uClibc-git/extra/config/README.uClibc 2014-02-03 12:32:56.000000000 +0100
  11666. @@ -5,7 +5,7 @@
  11667. cd extra/config.new
  11668. cp /usr/src/linux/Documentation/kbuild/kconfig-language.txt .
  11669. mv Makefile Makefile.kconfig
  11670. - zcat ../config/kconfig-to-uclibc.patch.gz | patch -p1
  11671. + tar -O -xzf ../config/kconfig-to-uclibc.tar.gz | patch -p3
  11672. cp ../config/README.uClibc .
  11673. cp ../config/Makefile .
  11674. cd ..
  11675. diff -Nur uClibc-0.9.33.2/extra/config/streamline_config.pl uClibc-git/extra/config/streamline_config.pl
  11676. --- uClibc-0.9.33.2/extra/config/streamline_config.pl 1970-01-01 01:00:00.000000000 +0100
  11677. +++ uClibc-git/extra/config/streamline_config.pl 2014-02-03 12:32:56.000000000 +0100
  11678. @@ -0,0 +1,640 @@
  11679. +#!/usr/bin/perl -w
  11680. +#
  11681. +# Copyright 2005-2009 - Steven Rostedt
  11682. +# Licensed under the terms of the GNU GPL License version 2
  11683. +#
  11684. +# It's simple enough to figure out how this works.
  11685. +# If not, then you can ask me at stripconfig@goodmis.org
  11686. +#
  11687. +# What it does?
  11688. +#
  11689. +# If you have installed a Linux kernel from a distribution
  11690. +# that turns on way too many modules than you need, and
  11691. +# you only want the modules you use, then this program
  11692. +# is perfect for you.
  11693. +#
  11694. +# It gives you the ability to turn off all the modules that are
  11695. +# not loaded on your system.
  11696. +#
  11697. +# Howto:
  11698. +#
  11699. +# 1. Boot up the kernel that you want to stream line the config on.
  11700. +# 2. Change directory to the directory holding the source of the
  11701. +# kernel that you just booted.
  11702. +# 3. Copy the configuraton file to this directory as .config
  11703. +# 4. Have all your devices that you need modules for connected and
  11704. +# operational (make sure that their corresponding modules are loaded)
  11705. +# 5. Run this script redirecting the output to some other file
  11706. +# like config_strip.
  11707. +# 6. Back up your old config (if you want too).
  11708. +# 7. copy the config_strip file to .config
  11709. +# 8. Run "make oldconfig"
  11710. +#
  11711. +# Now your kernel is ready to be built with only the modules that
  11712. +# are loaded.
  11713. +#
  11714. +# Here's what I did with my Debian distribution.
  11715. +#
  11716. +# cd /usr/src/linux-2.6.10
  11717. +# cp /boot/config-2.6.10-1-686-smp .config
  11718. +# ~/bin/streamline_config > config_strip
  11719. +# mv .config config_sav
  11720. +# mv config_strip .config
  11721. +# make oldconfig
  11722. +#
  11723. +use strict;
  11724. +use Getopt::Long;
  11725. +
  11726. +# set the environment variable LOCALMODCONFIG_DEBUG to get
  11727. +# debug output.
  11728. +my $debugprint = 0;
  11729. +$debugprint = 1 if (defined($ENV{LOCALMODCONFIG_DEBUG}));
  11730. +
  11731. +sub dprint {
  11732. + return if (!$debugprint);
  11733. + print STDERR @_;
  11734. +}
  11735. +
  11736. +my $config = ".config";
  11737. +
  11738. +my $uname = `uname -r`;
  11739. +chomp $uname;
  11740. +
  11741. +my @searchconfigs = (
  11742. + {
  11743. + "file" => ".config",
  11744. + "exec" => "cat",
  11745. + },
  11746. + {
  11747. + "file" => "/proc/config.gz",
  11748. + "exec" => "zcat",
  11749. + },
  11750. + {
  11751. + "file" => "/boot/config-$uname",
  11752. + "exec" => "cat",
  11753. + },
  11754. + {
  11755. + "file" => "/boot/vmlinuz-$uname",
  11756. + "exec" => "scripts/extract-ikconfig",
  11757. + "test" => "scripts/extract-ikconfig",
  11758. + },
  11759. + {
  11760. + "file" => "vmlinux",
  11761. + "exec" => "scripts/extract-ikconfig",
  11762. + "test" => "scripts/extract-ikconfig",
  11763. + },
  11764. + {
  11765. + "file" => "/lib/modules/$uname/kernel/kernel/configs.ko",
  11766. + "exec" => "scripts/extract-ikconfig",
  11767. + "test" => "scripts/extract-ikconfig",
  11768. + },
  11769. + {
  11770. + "file" => "kernel/configs.ko",
  11771. + "exec" => "scripts/extract-ikconfig",
  11772. + "test" => "scripts/extract-ikconfig",
  11773. + },
  11774. + {
  11775. + "file" => "kernel/configs.o",
  11776. + "exec" => "scripts/extract-ikconfig",
  11777. + "test" => "scripts/extract-ikconfig",
  11778. + },
  11779. +);
  11780. +
  11781. +sub read_config {
  11782. + foreach my $conf (@searchconfigs) {
  11783. + my $file = $conf->{"file"};
  11784. +
  11785. + next if ( ! -f "$file");
  11786. +
  11787. + if (defined($conf->{"test"})) {
  11788. + `$conf->{"test"} $conf->{"file"} 2>/dev/null`;
  11789. + next if ($?);
  11790. + }
  11791. +
  11792. + my $exec = $conf->{"exec"};
  11793. +
  11794. + print STDERR "using config: '$file'\n";
  11795. +
  11796. + open(my $infile, '-|', "$exec $file") || die "Failed to run $exec $file";
  11797. + my @x = <$infile>;
  11798. + close $infile;
  11799. + return @x;
  11800. + }
  11801. + die "No config file found";
  11802. +}
  11803. +
  11804. +my @config_file = read_config;
  11805. +
  11806. +# Parse options
  11807. +my $localmodconfig = 0;
  11808. +my $localyesconfig = 0;
  11809. +
  11810. +GetOptions("localmodconfig" => \$localmodconfig,
  11811. + "localyesconfig" => \$localyesconfig);
  11812. +
  11813. +# Get the build source and top level Kconfig file (passed in)
  11814. +my $ksource = ($ARGV[0] ? $ARGV[0] : '.');
  11815. +my $kconfig = $ARGV[1];
  11816. +my $lsmod_file = $ENV{'LSMOD'};
  11817. +
  11818. +my @makefiles = `find $ksource -name Makefile 2>/dev/null`;
  11819. +chomp @makefiles;
  11820. +
  11821. +my %depends;
  11822. +my %selects;
  11823. +my %prompts;
  11824. +my %objects;
  11825. +my $var;
  11826. +my $iflevel = 0;
  11827. +my @ifdeps;
  11828. +
  11829. +# prevent recursion
  11830. +my %read_kconfigs;
  11831. +
  11832. +sub read_kconfig {
  11833. + my ($kconfig) = @_;
  11834. +
  11835. + my $state = "NONE";
  11836. + my $config;
  11837. +
  11838. + my $cont = 0;
  11839. + my $line;
  11840. +
  11841. + my $source = "$ksource/$kconfig";
  11842. + my $last_source = "";
  11843. +
  11844. + # Check for any environment variables used
  11845. + while ($source =~ /\$(\w+)/ && $last_source ne $source) {
  11846. + my $env = $1;
  11847. + $last_source = $source;
  11848. + $source =~ s/\$$env/$ENV{$env}/;
  11849. + }
  11850. +
  11851. + open(my $kinfile, '<', $source) || die "Can't open $kconfig";
  11852. + while (<$kinfile>) {
  11853. + chomp;
  11854. +
  11855. + # Make sure that lines ending with \ continue
  11856. + if ($cont) {
  11857. + $_ = $line . " " . $_;
  11858. + }
  11859. +
  11860. + if (s/\\$//) {
  11861. + $cont = 1;
  11862. + $line = $_;
  11863. + next;
  11864. + }
  11865. +
  11866. + $cont = 0;
  11867. +
  11868. + # collect any Kconfig sources
  11869. + if (/^source\s*"(.*)"/) {
  11870. + my $kconfig = $1;
  11871. + # prevent reading twice.
  11872. + if (!defined($read_kconfigs{$kconfig})) {
  11873. + $read_kconfigs{$kconfig} = 1;
  11874. + read_kconfig($kconfig);
  11875. + }
  11876. + next;
  11877. + }
  11878. +
  11879. + # configs found
  11880. + if (/^\s*(menu)?config\s+(\S+)\s*$/) {
  11881. + $state = "NEW";
  11882. + $config = $2;
  11883. +
  11884. + # Add depends for 'if' nesting
  11885. + for (my $i = 0; $i < $iflevel; $i++) {
  11886. + if ($i) {
  11887. + $depends{$config} .= " " . $ifdeps[$i];
  11888. + } else {
  11889. + $depends{$config} = $ifdeps[$i];
  11890. + }
  11891. + $state = "DEP";
  11892. + }
  11893. +
  11894. + # collect the depends for the config
  11895. + } elsif ($state eq "NEW" && /^\s*depends\s+on\s+(.*)$/) {
  11896. + $state = "DEP";
  11897. + $depends{$config} = $1;
  11898. + } elsif ($state eq "DEP" && /^\s*depends\s+on\s+(.*)$/) {
  11899. + $depends{$config} .= " " . $1;
  11900. +
  11901. + # Get the configs that select this config
  11902. + } elsif ($state ne "NONE" && /^\s*select\s+(\S+)/) {
  11903. + my $conf = $1;
  11904. + if (defined($selects{$conf})) {
  11905. + $selects{$conf} .= " " . $config;
  11906. + } else {
  11907. + $selects{$conf} = $config;
  11908. + }
  11909. +
  11910. + # configs without prompts must be selected
  11911. + } elsif ($state ne "NONE" && /^\s*tristate\s\S/) {
  11912. + # note if the config has a prompt
  11913. + $prompts{$config} = 1;
  11914. +
  11915. + # Check for if statements
  11916. + } elsif (/^if\s+(.*\S)\s*$/) {
  11917. + my $deps = $1;
  11918. + # remove beginning and ending non text
  11919. + $deps =~ s/^[^a-zA-Z0-9_]*//;
  11920. + $deps =~ s/[^a-zA-Z0-9_]*$//;
  11921. +
  11922. + my @deps = split /[^a-zA-Z0-9_]+/, $deps;
  11923. +
  11924. + $ifdeps[$iflevel++] = join ':', @deps;
  11925. +
  11926. + } elsif (/^endif/) {
  11927. +
  11928. + $iflevel-- if ($iflevel);
  11929. +
  11930. + # stop on "help"
  11931. + } elsif (/^\s*help\s*$/) {
  11932. + $state = "NONE";
  11933. + }
  11934. + }
  11935. + close($kinfile);
  11936. +}
  11937. +
  11938. +if ($kconfig) {
  11939. + read_kconfig($kconfig);
  11940. +}
  11941. +
  11942. +# Makefiles can use variables to define their dependencies
  11943. +sub convert_vars {
  11944. + my ($line, %vars) = @_;
  11945. +
  11946. + my $process = "";
  11947. +
  11948. + while ($line =~ s/^(.*?)(\$\((.*?)\))//) {
  11949. + my $start = $1;
  11950. + my $variable = $2;
  11951. + my $var = $3;
  11952. +
  11953. + if (defined($vars{$var})) {
  11954. + $process .= $start . $vars{$var};
  11955. + } else {
  11956. + $process .= $start . $variable;
  11957. + }
  11958. + }
  11959. +
  11960. + $process .= $line;
  11961. +
  11962. + return $process;
  11963. +}
  11964. +
  11965. +# Read all Makefiles to map the configs to the objects
  11966. +foreach my $makefile (@makefiles) {
  11967. +
  11968. + my $line = "";
  11969. + my %make_vars;
  11970. +
  11971. + open(my $infile, '<', $makefile) || die "Can't open $makefile";
  11972. + while (<$infile>) {
  11973. + # if this line ends with a backslash, continue
  11974. + chomp;
  11975. + if (/^(.*)\\$/) {
  11976. + $line .= $1;
  11977. + next;
  11978. + }
  11979. +
  11980. + $line .= $_;
  11981. + $_ = $line;
  11982. + $line = "";
  11983. +
  11984. + my $objs;
  11985. +
  11986. + # Convert variables in a line (could define configs)
  11987. + $_ = convert_vars($_, %make_vars);
  11988. +
  11989. + # collect objects after obj-$(CONFIG_FOO_BAR)
  11990. + if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) {
  11991. + $var = $1;
  11992. + $objs = $2;
  11993. +
  11994. + # check if variables are set
  11995. + } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/) {
  11996. + $make_vars{$1} = $2;
  11997. + }
  11998. + if (defined($objs)) {
  11999. + foreach my $obj (split /\s+/,$objs) {
  12000. + $obj =~ s/-/_/g;
  12001. + if ($obj =~ /(.*)\.o$/) {
  12002. + # Objects may be enabled by more than one config.
  12003. + # Store configs in an array.
  12004. + my @arr;
  12005. +
  12006. + if (defined($objects{$1})) {
  12007. + @arr = @{$objects{$1}};
  12008. + }
  12009. +
  12010. + $arr[$#arr+1] = $var;
  12011. +
  12012. + # The objects have a hash mapping to a reference
  12013. + # of an array of configs.
  12014. + $objects{$1} = \@arr;
  12015. + }
  12016. + }
  12017. + }
  12018. + }
  12019. + close($infile);
  12020. +}
  12021. +
  12022. +my %modules;
  12023. +my $linfile;
  12024. +
  12025. +if (defined($lsmod_file)) {
  12026. + if ( ! -f $lsmod_file) {
  12027. + if ( -f $ENV{'objtree'}."/".$lsmod_file) {
  12028. + $lsmod_file = $ENV{'objtree'}."/".$lsmod_file;
  12029. + } else {
  12030. + die "$lsmod_file not found";
  12031. + }
  12032. + }
  12033. +
  12034. + my $otype = ( -x $lsmod_file) ? '-|' : '<';
  12035. + open($linfile, $otype, $lsmod_file);
  12036. +
  12037. +} else {
  12038. +
  12039. + # see what modules are loaded on this system
  12040. + my $lsmod;
  12041. +
  12042. + foreach my $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) {
  12043. + if ( -x "$dir/lsmod" ) {
  12044. + $lsmod = "$dir/lsmod";
  12045. + last;
  12046. + }
  12047. +}
  12048. + if (!defined($lsmod)) {
  12049. + # try just the path
  12050. + $lsmod = "lsmod";
  12051. + }
  12052. +
  12053. + open($linfile, '-|', $lsmod) || die "Can not call lsmod with $lsmod";
  12054. +}
  12055. +
  12056. +while (<$linfile>) {
  12057. + next if (/^Module/); # Skip the first line.
  12058. + if (/^(\S+)/) {
  12059. + $modules{$1} = 1;
  12060. + }
  12061. +}
  12062. +close ($linfile);
  12063. +
  12064. +# add to the configs hash all configs that are needed to enable
  12065. +# a loaded module. This is a direct obj-${CONFIG_FOO} += bar.o
  12066. +# where we know we need bar.o so we add FOO to the list.
  12067. +my %configs;
  12068. +foreach my $module (keys(%modules)) {
  12069. + if (defined($objects{$module})) {
  12070. + my @arr = @{$objects{$module}};
  12071. + foreach my $conf (@arr) {
  12072. + $configs{$conf} = $module;
  12073. + dprint "$conf added by direct ($module)\n";
  12074. + if ($debugprint) {
  12075. + my $c=$conf;
  12076. + $c =~ s/^CONFIG_//;
  12077. + if (defined($depends{$c})) {
  12078. + dprint " deps = $depends{$c}\n";
  12079. + } else {
  12080. + dprint " no deps\n";
  12081. + }
  12082. + }
  12083. + }
  12084. + } else {
  12085. + # Most likely, someone has a custom (binary?) module loaded.
  12086. + print STDERR "$module config not found!!\n";
  12087. + }
  12088. +}
  12089. +
  12090. +# Read the current config, and see what is enabled. We want to
  12091. +# ignore configs that we would not enable anyway.
  12092. +
  12093. +my %orig_configs;
  12094. +my $valid = "A-Za-z_0-9";
  12095. +
  12096. +foreach my $line (@config_file) {
  12097. + $_ = $line;
  12098. +
  12099. + if (/(CONFIG_[$valid]*)=(m|y)/) {
  12100. + $orig_configs{$1} = $2;
  12101. + }
  12102. +}
  12103. +
  12104. +my $repeat = 1;
  12105. +
  12106. +my $depconfig;
  12107. +
  12108. +#
  12109. +# Note, we do not care about operands (like: &&, ||, !) we want to add any
  12110. +# config that is in the depend list of another config. This script does
  12111. +# not enable configs that are not already enabled. If we come across a
  12112. +# config A that depends on !B, we can still add B to the list of depends
  12113. +# to keep on. If A was on in the original config, B would not have been
  12114. +# and B would not be turned on by this script.
  12115. +#
  12116. +sub parse_config_depends
  12117. +{
  12118. + my ($p) = @_;
  12119. +
  12120. + while ($p =~ /[$valid]/) {
  12121. +
  12122. + if ($p =~ /^[^$valid]*([$valid]+)/) {
  12123. + my $conf = "CONFIG_" . $1;
  12124. +
  12125. + $p =~ s/^[^$valid]*[$valid]+//;
  12126. +
  12127. + # We only need to process if the depend config is a module
  12128. + if (!defined($orig_configs{$conf}) || !$orig_configs{conf} eq "m") {
  12129. + next;
  12130. + }
  12131. +
  12132. + if (!defined($configs{$conf})) {
  12133. + # We must make sure that this config has its
  12134. + # dependencies met.
  12135. + $repeat = 1; # do again
  12136. + dprint "$conf selected by depend $depconfig\n";
  12137. + $configs{$conf} = 1;
  12138. + }
  12139. + } else {
  12140. + die "this should never happen";
  12141. + }
  12142. + }
  12143. +}
  12144. +
  12145. +# Select is treated a bit differently than depends. We call this
  12146. +# when a config has no prompt and requires another config to be
  12147. +# selected. We use to just select all configs that selected this
  12148. +# config, but found that that can balloon into enabling hundreds
  12149. +# of configs that we do not care about.
  12150. +#
  12151. +# The idea is we look at all the configs that select it. If one
  12152. +# is already in our list of configs to enable, then there's nothing
  12153. +# else to do. If there isn't, we pick the first config that was
  12154. +# enabled in the orignal config and use that.
  12155. +sub parse_config_selects
  12156. +{
  12157. + my ($config, $p) = @_;
  12158. +
  12159. + my $next_config;
  12160. +
  12161. + while ($p =~ /[$valid]/) {
  12162. +
  12163. + if ($p =~ /^[^$valid]*([$valid]+)/) {
  12164. + my $conf = "CONFIG_" . $1;
  12165. +
  12166. + $p =~ s/^[^$valid]*[$valid]+//;
  12167. +
  12168. + # Make sure that this config exists in the current .config file
  12169. + if (!defined($orig_configs{$conf})) {
  12170. + dprint "$conf not set for $config select\n";
  12171. + next;
  12172. + }
  12173. +
  12174. + # Check if something other than a module selects this config
  12175. + if (defined($orig_configs{$conf}) && $orig_configs{$conf} ne "m") {
  12176. + dprint "$conf (non module) selects config, we are good\n";
  12177. + # we are good with this
  12178. + return;
  12179. + }
  12180. + if (defined($configs{$conf})) {
  12181. + dprint "$conf selects $config so we are good\n";
  12182. + # A set config selects this config, we are good
  12183. + return;
  12184. + }
  12185. + # Set this config to be selected
  12186. + if (!defined($next_config)) {
  12187. + $next_config = $conf;
  12188. + }
  12189. + } else {
  12190. + die "this should never happen";
  12191. + }
  12192. + }
  12193. +
  12194. + # If no possible config selected this, then something happened.
  12195. + if (!defined($next_config)) {
  12196. + print STDERR "WARNING: $config is required, but nothing in the\n";
  12197. + print STDERR " current config selects it.\n";
  12198. + return;
  12199. + }
  12200. +
  12201. + # If we are here, then we found no config that is set and
  12202. + # selects this config. Repeat.
  12203. + $repeat = 1;
  12204. + # Make this config need to be selected
  12205. + $configs{$next_config} = 1;
  12206. + dprint "$next_config selected by select $config\n";
  12207. +}
  12208. +
  12209. +my %process_selects;
  12210. +
  12211. +# loop through all configs, select their dependencies.
  12212. +sub loop_depend {
  12213. + $repeat = 1;
  12214. +
  12215. + while ($repeat) {
  12216. + $repeat = 0;
  12217. +
  12218. + forloop:
  12219. + foreach my $config (keys %configs) {
  12220. +
  12221. + # If this config is not a module, we do not need to process it
  12222. + if (defined($orig_configs{$config}) && $orig_configs{$config} ne "m") {
  12223. + next forloop;
  12224. + }
  12225. +
  12226. + $config =~ s/^CONFIG_//;
  12227. + $depconfig = $config;
  12228. +
  12229. + if (defined($depends{$config})) {
  12230. + # This config has dependencies. Make sure they are also included
  12231. + parse_config_depends $depends{$config};
  12232. + }
  12233. +
  12234. + # If the config has no prompt, then we need to check if a config
  12235. + # that is enabled selected it. Or if we need to enable one.
  12236. + if (!defined($prompts{$config}) && defined($selects{$config})) {
  12237. + $process_selects{$config} = 1;
  12238. + }
  12239. + }
  12240. + }
  12241. +}
  12242. +
  12243. +sub loop_select {
  12244. +
  12245. + foreach my $config (keys %process_selects) {
  12246. + $config =~ s/^CONFIG_//;
  12247. +
  12248. + dprint "Process select $config\n";
  12249. +
  12250. + # config has no prompt and must be selected.
  12251. + parse_config_selects $config, $selects{$config};
  12252. + }
  12253. +}
  12254. +
  12255. +while ($repeat) {
  12256. + # Get the first set of configs and their dependencies.
  12257. + loop_depend;
  12258. +
  12259. + $repeat = 0;
  12260. +
  12261. + # Now we need to see if we have to check selects;
  12262. + loop_select;
  12263. +}
  12264. +
  12265. +my %setconfigs;
  12266. +
  12267. +# Finally, read the .config file and turn off any module enabled that
  12268. +# we could not find a reason to keep enabled.
  12269. +foreach my $line (@config_file) {
  12270. + $_ = $line;
  12271. +
  12272. + if (/CONFIG_IKCONFIG/) {
  12273. + if (/# CONFIG_IKCONFIG is not set/) {
  12274. + # enable IKCONFIG at least as a module
  12275. + print "CONFIG_IKCONFIG=m\n";
  12276. + # don't ask about PROC
  12277. + print "# CONFIG_IKCONFIG_PROC is not set\n";
  12278. + } else {
  12279. + print;
  12280. + }
  12281. + next;
  12282. + }
  12283. +
  12284. + if (/^(CONFIG.*)=(m|y)/) {
  12285. + if (defined($configs{$1})) {
  12286. + if ($localyesconfig) {
  12287. + $setconfigs{$1} = 'y';
  12288. + print "$1=y\n";
  12289. + next;
  12290. + } else {
  12291. + $setconfigs{$1} = $2;
  12292. + }
  12293. + } elsif ($2 eq "m") {
  12294. + print "# $1 is not set\n";
  12295. + next;
  12296. + }
  12297. + }
  12298. + print;
  12299. +}
  12300. +
  12301. +# Integrity check, make sure all modules that we want enabled do
  12302. +# indeed have their configs set.
  12303. +loop:
  12304. +foreach my $module (keys(%modules)) {
  12305. + if (defined($objects{$module})) {
  12306. + my @arr = @{$objects{$module}};
  12307. + foreach my $conf (@arr) {
  12308. + if (defined($setconfigs{$conf})) {
  12309. + next loop;
  12310. + }
  12311. + }
  12312. + print STDERR "module $module did not have configs";
  12313. + foreach my $conf (@arr) {
  12314. + print STDERR " " , $conf;
  12315. + }
  12316. + print STDERR "\n";
  12317. + }
  12318. +}
  12319. diff -Nur uClibc-0.9.33.2/extra/config/symbol.c uClibc-git/extra/config/symbol.c
  12320. --- uClibc-0.9.33.2/extra/config/symbol.c 2012-05-15 09:20:09.000000000 +0200
  12321. +++ uClibc-git/extra/config/symbol.c 2014-02-03 12:32:56.000000000 +0100
  12322. @@ -7,8 +7,8 @@
  12323. #include <stdlib.h>
  12324. #include <string.h>
  12325. #include <regex.h>
  12326. +#include <sys/utsname.h>
  12327. -#define LKC_DIRECT_LINK
  12328. #include "lkc.h"
  12329. struct symbol symbol_yes = {
  12330. @@ -35,7 +35,7 @@
  12331. struct expr *sym_env_list;
  12332. -void sym_add_default(struct symbol *sym, const char *def)
  12333. +static void sym_add_default(struct symbol *sym, const char *def)
  12334. {
  12335. struct property *prop = prop_alloc(P_DEFAULT, sym);
  12336. @@ -45,20 +45,19 @@
  12337. void sym_init(void)
  12338. {
  12339. struct symbol *sym;
  12340. - char *p;
  12341. + struct utsname uts;
  12342. static bool inited = false;
  12343. if (inited)
  12344. return;
  12345. inited = true;
  12346. - p = getenv("VERSION");
  12347. - if (p) {
  12348. - sym = sym_lookup("VERSION", 0);
  12349. - sym->type = S_STRING;
  12350. - sym->flags |= SYMBOL_AUTO;
  12351. - sym_add_default(sym, p);
  12352. - }
  12353. + uname(&uts);
  12354. +
  12355. + sym = sym_lookup("UNAME_RELEASE", 0);
  12356. + sym->type = S_STRING;
  12357. + sym->flags |= SYMBOL_AUTO;
  12358. + sym_add_default(sym, uts.release);
  12359. }
  12360. enum symbol_type sym_get_type(struct symbol *sym)
  12361. @@ -125,7 +124,7 @@
  12362. return NULL;
  12363. }
  12364. -struct property *sym_get_range_prop(struct symbol *sym)
  12365. +static struct property *sym_get_range_prop(struct symbol *sym)
  12366. {
  12367. struct property *prop;
  12368. @@ -137,7 +136,7 @@
  12369. return NULL;
  12370. }
  12371. -static int sym_get_range_val(struct symbol *sym, int base)
  12372. +static long sym_get_range_val(struct symbol *sym, int base)
  12373. {
  12374. sym_calc_value(sym);
  12375. switch (sym->type) {
  12376. @@ -156,7 +155,7 @@
  12377. static void sym_validate_range(struct symbol *sym)
  12378. {
  12379. struct property *prop;
  12380. - int base, val, val2;
  12381. + long base, val, val2;
  12382. char str[64];
  12383. switch (sym->type) {
  12384. @@ -180,9 +179,9 @@
  12385. return;
  12386. }
  12387. if (sym->type == S_INT)
  12388. - sprintf(str, "%d", val2);
  12389. + sprintf(str, "%ld", val2);
  12390. else
  12391. - sprintf(str, "0x%x", val2);
  12392. + sprintf(str, "0x%lx", val2);
  12393. sym->curr.val = strdup(str);
  12394. }
  12395. @@ -205,6 +204,16 @@
  12396. }
  12397. if (sym_is_choice_value(sym))
  12398. return;
  12399. + /* defaulting to "yes" if no explicit "depends on" are given */
  12400. + tri = yes;
  12401. + if (sym->dir_dep.expr)
  12402. + tri = expr_calc_value(sym->dir_dep.expr);
  12403. + if (tri == mod)
  12404. + tri = yes;
  12405. + if (sym->dir_dep.tri != tri) {
  12406. + sym->dir_dep.tri = tri;
  12407. + sym_set_changed(sym);
  12408. + }
  12409. tri = no;
  12410. if (sym->rev_dep.expr)
  12411. tri = expr_calc_value(sym->rev_dep.expr);
  12412. @@ -216,42 +225,68 @@
  12413. }
  12414. }
  12415. -static struct symbol *sym_calc_choice(struct symbol *sym)
  12416. +/*
  12417. + * Find the default symbol for a choice.
  12418. + * First try the default values for the choice symbol
  12419. + * Next locate the first visible choice value
  12420. + * Return NULL if none was found
  12421. + */
  12422. +struct symbol *sym_choice_default(struct symbol *sym)
  12423. {
  12424. struct symbol *def_sym;
  12425. struct property *prop;
  12426. struct expr *e;
  12427. - /* is the user choice visible? */
  12428. - def_sym = sym->def[S_DEF_USER].val;
  12429. - if (def_sym) {
  12430. - sym_calc_visibility(def_sym);
  12431. - if (def_sym->visible != no)
  12432. - return def_sym;
  12433. - }
  12434. -
  12435. /* any of the defaults visible? */
  12436. for_all_defaults(sym, prop) {
  12437. prop->visible.tri = expr_calc_value(prop->visible.expr);
  12438. if (prop->visible.tri == no)
  12439. continue;
  12440. def_sym = prop_get_symbol(prop);
  12441. - sym_calc_visibility(def_sym);
  12442. if (def_sym->visible != no)
  12443. return def_sym;
  12444. }
  12445. /* just get the first visible value */
  12446. prop = sym_get_choice_prop(sym);
  12447. + expr_list_for_each_sym(prop->expr, e, def_sym)
  12448. + if (def_sym->visible != no)
  12449. + return def_sym;
  12450. +
  12451. + /* failed to locate any defaults */
  12452. + return NULL;
  12453. +}
  12454. +
  12455. +static struct symbol *sym_calc_choice(struct symbol *sym)
  12456. +{
  12457. + struct symbol *def_sym;
  12458. + struct property *prop;
  12459. + struct expr *e;
  12460. + int flags;
  12461. +
  12462. + /* first calculate all choice values' visibilities */
  12463. + flags = sym->flags;
  12464. + prop = sym_get_choice_prop(sym);
  12465. expr_list_for_each_sym(prop->expr, e, def_sym) {
  12466. sym_calc_visibility(def_sym);
  12467. if (def_sym->visible != no)
  12468. - return def_sym;
  12469. + flags &= def_sym->flags;
  12470. }
  12471. - /* no choice? reset tristate value */
  12472. - sym->curr.tri = no;
  12473. - return NULL;
  12474. + sym->flags &= flags | ~SYMBOL_DEF_USER;
  12475. +
  12476. + /* is the user choice visible? */
  12477. + def_sym = sym->def[S_DEF_USER].val;
  12478. + if (def_sym && def_sym->visible != no)
  12479. + return def_sym;
  12480. +
  12481. + def_sym = sym_choice_default(sym);
  12482. +
  12483. + if (def_sym == NULL)
  12484. + /* no choice? reset tristate value */
  12485. + sym->curr.tri = no;
  12486. +
  12487. + return def_sym;
  12488. }
  12489. void sym_calc_value(struct symbol *sym)
  12490. @@ -265,6 +300,14 @@
  12491. if (sym->flags & SYMBOL_VALID)
  12492. return;
  12493. +
  12494. + if (sym_is_choice_value(sym) &&
  12495. + sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) {
  12496. + sym->flags &= ~SYMBOL_NEED_SET_CHOICE_VALUES;
  12497. + prop = sym_get_choice_prop(sym);
  12498. + sym_calc_value(prop_get_symbol(prop));
  12499. + }
  12500. +
  12501. sym->flags |= SYMBOL_VALID;
  12502. oldval = sym->curr;
  12503. @@ -321,6 +364,18 @@
  12504. }
  12505. }
  12506. calc_newval:
  12507. + if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) {
  12508. + struct expr *e;
  12509. + e = expr_simplify_unmet_dep(sym->rev_dep.expr,
  12510. + sym->dir_dep.expr);
  12511. + fprintf(stderr, "warning: (");
  12512. + expr_fprint(e, stderr);
  12513. + fprintf(stderr, ") selects %s which has unmet direct dependencies (",
  12514. + sym->name);
  12515. + expr_fprint(sym->dir_dep.expr, stderr);
  12516. + fprintf(stderr, ")\n");
  12517. + expr_free(e);
  12518. + }
  12519. newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
  12520. }
  12521. if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
  12522. @@ -365,18 +420,22 @@
  12523. if (sym_is_choice(sym)) {
  12524. struct symbol *choice_sym;
  12525. - int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
  12526. prop = sym_get_choice_prop(sym);
  12527. expr_list_for_each_sym(prop->expr, e, choice_sym) {
  12528. - choice_sym->flags |= flags;
  12529. - if (flags & SYMBOL_CHANGED)
  12530. + if ((sym->flags & SYMBOL_WRITE) &&
  12531. + choice_sym->visible != no)
  12532. + choice_sym->flags |= SYMBOL_WRITE;
  12533. + if (sym->flags & SYMBOL_CHANGED)
  12534. sym_set_changed(choice_sym);
  12535. }
  12536. }
  12537. if (sym->flags & SYMBOL_AUTO)
  12538. sym->flags &= ~SYMBOL_WRITE;
  12539. +
  12540. + if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES)
  12541. + set_all_choice_values(sym);
  12542. }
  12543. void sym_clear_all_valid(void)
  12544. @@ -535,7 +594,7 @@
  12545. bool sym_string_within_range(struct symbol *sym, const char *str)
  12546. {
  12547. struct property *prop;
  12548. - int val;
  12549. + long val;
  12550. switch (sym->type) {
  12551. case S_STRING:
  12552. @@ -608,11 +667,11 @@
  12553. size = strlen(newval) + 1;
  12554. if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
  12555. size += 2;
  12556. - sym->def[S_DEF_USER].val = val = malloc(size);
  12557. + sym->def[S_DEF_USER].val = val = xmalloc(size);
  12558. *val++ = '0';
  12559. *val++ = 'x';
  12560. } else if (!oldval || strcmp(oldval, newval))
  12561. - sym->def[S_DEF_USER].val = val = malloc(size);
  12562. + sym->def[S_DEF_USER].val = val = xmalloc(size);
  12563. else
  12564. return true;
  12565. @@ -623,6 +682,80 @@
  12566. return true;
  12567. }
  12568. +/*
  12569. + * Find the default value associated to a symbol.
  12570. + * For tristate symbol handle the modules=n case
  12571. + * in which case "m" becomes "y".
  12572. + * If the symbol does not have any default then fallback
  12573. + * to the fixed default values.
  12574. + */
  12575. +const char *sym_get_string_default(struct symbol *sym)
  12576. +{
  12577. + struct property *prop;
  12578. + struct symbol *ds;
  12579. + const char *str;
  12580. + tristate val;
  12581. +
  12582. + sym_calc_visibility(sym);
  12583. + sym_calc_value(modules_sym);
  12584. + val = symbol_no.curr.tri;
  12585. + str = symbol_empty.curr.val;
  12586. +
  12587. + /* If symbol has a default value look it up */
  12588. + prop = sym_get_default_prop(sym);
  12589. + if (prop != NULL) {
  12590. + switch (sym->type) {
  12591. + case S_BOOLEAN:
  12592. + case S_TRISTATE:
  12593. + /* The visibility may limit the value from yes => mod */
  12594. + val = EXPR_AND(expr_calc_value(prop->expr), prop->visible.tri);
  12595. + break;
  12596. + default:
  12597. + /*
  12598. + * The following fails to handle the situation
  12599. + * where a default value is further limited by
  12600. + * the valid range.
  12601. + */
  12602. + ds = prop_get_symbol(prop);
  12603. + if (ds != NULL) {
  12604. + sym_calc_value(ds);
  12605. + str = (const char *)ds->curr.val;
  12606. + }
  12607. + }
  12608. + }
  12609. +
  12610. + /* Handle select statements */
  12611. + val = EXPR_OR(val, sym->rev_dep.tri);
  12612. +
  12613. + /* transpose mod to yes if modules are not enabled */
  12614. + if (val == mod)
  12615. + if (!sym_is_choice_value(sym) && modules_sym->curr.tri == no)
  12616. + val = yes;
  12617. +
  12618. + /* transpose mod to yes if type is bool */
  12619. + if (sym->type == S_BOOLEAN && val == mod)
  12620. + val = yes;
  12621. +
  12622. + switch (sym->type) {
  12623. + case S_BOOLEAN:
  12624. + case S_TRISTATE:
  12625. + switch (val) {
  12626. + case no: return "n";
  12627. + case mod: return "m";
  12628. + case yes: return "y";
  12629. + }
  12630. + case S_INT:
  12631. + case S_HEX:
  12632. + return str;
  12633. + case S_STRING:
  12634. + return str;
  12635. + case S_OTHER:
  12636. + case S_UNKNOWN:
  12637. + break;
  12638. + }
  12639. + return "";
  12640. +}
  12641. +
  12642. const char *sym_get_string_value(struct symbol *sym)
  12643. {
  12644. tristate val;
  12645. @@ -635,7 +768,8 @@
  12646. case no:
  12647. return "n";
  12648. case mod:
  12649. - return "m";
  12650. + sym_calc_value(modules_sym);
  12651. + return (modules_sym->curr.tri == no) ? "n" : "m";
  12652. case yes:
  12653. return "y";
  12654. }
  12655. @@ -651,12 +785,20 @@
  12656. return sym->visible > sym->rev_dep.tri;
  12657. }
  12658. +static unsigned strhash(const char *s)
  12659. +{
  12660. + /* fnv32 hash */
  12661. + unsigned hash = 2166136261U;
  12662. + for (; *s; s++)
  12663. + hash = (hash ^ *s) * 0x01000193;
  12664. + return hash;
  12665. +}
  12666. +
  12667. struct symbol *sym_lookup(const char *name, int flags)
  12668. {
  12669. struct symbol *symbol;
  12670. - const char *ptr;
  12671. char *new_name;
  12672. - int hash = 0;
  12673. + int hash;
  12674. if (name) {
  12675. if (name[0] && !name[1]) {
  12676. @@ -666,12 +808,11 @@
  12677. case 'n': return &symbol_no;
  12678. }
  12679. }
  12680. - for (ptr = name; *ptr; ptr++)
  12681. - hash += *ptr;
  12682. - hash &= 0xff;
  12683. + hash = strhash(name) % SYMBOL_HASHSIZE;
  12684. for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
  12685. - if (!strcmp(symbol->name, name) &&
  12686. + if (symbol->name &&
  12687. + !strcmp(symbol->name, name) &&
  12688. (flags ? symbol->flags & flags
  12689. : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))
  12690. return symbol;
  12691. @@ -679,10 +820,10 @@
  12692. new_name = strdup(name);
  12693. } else {
  12694. new_name = NULL;
  12695. - hash = 256;
  12696. + hash = 0;
  12697. }
  12698. - symbol = malloc(sizeof(*symbol));
  12699. + symbol = xmalloc(sizeof(*symbol));
  12700. memset(symbol, 0, sizeof(*symbol));
  12701. symbol->name = new_name;
  12702. symbol->type = S_UNKNOWN;
  12703. @@ -697,7 +838,6 @@
  12704. struct symbol *sym_find(const char *name)
  12705. {
  12706. struct symbol *symbol = NULL;
  12707. - const char *ptr;
  12708. int hash = 0;
  12709. if (!name)
  12710. @@ -710,12 +850,11 @@
  12711. case 'n': return &symbol_no;
  12712. }
  12713. }
  12714. - for (ptr = name; *ptr; ptr++)
  12715. - hash += *ptr;
  12716. - hash &= 0xff;
  12717. + hash = strhash(name) % SYMBOL_HASHSIZE;
  12718. for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
  12719. - if (!strcmp(symbol->name, name) &&
  12720. + if (symbol->name &&
  12721. + !strcmp(symbol->name, name) &&
  12722. !(symbol->flags & SYMBOL_CONST))
  12723. break;
  12724. }
  12725. @@ -723,42 +862,301 @@
  12726. return symbol;
  12727. }
  12728. +/*
  12729. + * Expand symbol's names embedded in the string given in argument. Symbols'
  12730. + * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to
  12731. + * the empty string.
  12732. + */
  12733. +const char *sym_expand_string_value(const char *in)
  12734. +{
  12735. + const char *src;
  12736. + char *res;
  12737. + size_t reslen;
  12738. +
  12739. + reslen = strlen(in) + 1;
  12740. + res = xmalloc(reslen);
  12741. + res[0] = '\0';
  12742. +
  12743. + while ((src = strchr(in, '$'))) {
  12744. + char *p, name[SYMBOL_MAXLENGTH];
  12745. + const char *symval = "";
  12746. + struct symbol *sym;
  12747. + size_t newlen;
  12748. +
  12749. + strncat(res, in, src - in);
  12750. + src++;
  12751. +
  12752. + p = name;
  12753. + while (isalnum(*src) || *src == '_')
  12754. + *p++ = *src++;
  12755. + *p = '\0';
  12756. +
  12757. + sym = sym_find(name);
  12758. + if (sym != NULL) {
  12759. + sym_calc_value(sym);
  12760. + symval = sym_get_string_value(sym);
  12761. + }
  12762. +
  12763. + newlen = strlen(res) + strlen(symval) + strlen(src) + 1;
  12764. + if (newlen > reslen) {
  12765. + reslen = newlen;
  12766. + res = realloc(res, reslen);
  12767. + }
  12768. +
  12769. + strcat(res, symval);
  12770. + in = src;
  12771. + }
  12772. + strcat(res, in);
  12773. +
  12774. + return res;
  12775. +}
  12776. +
  12777. +const char *sym_escape_string_value(const char *in)
  12778. +{
  12779. + const char *p;
  12780. + size_t reslen;
  12781. + char *res;
  12782. + size_t l;
  12783. +
  12784. + reslen = strlen(in) + strlen("\"\"") + 1;
  12785. +
  12786. + p = in;
  12787. + for (;;) {
  12788. + l = strcspn(p, "\"\\");
  12789. + p += l;
  12790. +
  12791. + if (p[0] == '\0')
  12792. + break;
  12793. +
  12794. + reslen++;
  12795. + p++;
  12796. + }
  12797. +
  12798. + res = xmalloc(reslen);
  12799. + res[0] = '\0';
  12800. +
  12801. + strcat(res, "\"");
  12802. +
  12803. + p = in;
  12804. + for (;;) {
  12805. + l = strcspn(p, "\"\\");
  12806. + strncat(res, p, l);
  12807. + p += l;
  12808. +
  12809. + if (p[0] == '\0')
  12810. + break;
  12811. +
  12812. + strcat(res, "\\");
  12813. + strncat(res, p++, 1);
  12814. + }
  12815. +
  12816. + strcat(res, "\"");
  12817. + return res;
  12818. +}
  12819. +
  12820. +struct sym_match {
  12821. + struct symbol *sym;
  12822. + off_t so, eo;
  12823. +};
  12824. +
  12825. +/* Compare matched symbols as thus:
  12826. + * - first, symbols that match exactly
  12827. + * - then, alphabetical sort
  12828. + */
  12829. +static int sym_rel_comp( const void *sym1, const void *sym2 )
  12830. +{
  12831. + struct sym_match *s1 = *(struct sym_match **)sym1;
  12832. + struct sym_match *s2 = *(struct sym_match **)sym2;
  12833. + int l1, l2;
  12834. +
  12835. + /* Exact match:
  12836. + * - if matched length on symbol s1 is the length of that symbol,
  12837. + * then this symbol should come first;
  12838. + * - if matched length on symbol s2 is the length of that symbol,
  12839. + * then this symbol should come first.
  12840. + * Note: since the search can be a regexp, both symbols may match
  12841. + * exactly; if this is the case, we can't decide which comes first,
  12842. + * and we fallback to sorting alphabetically.
  12843. + */
  12844. + l1 = s1->eo - s1->so;
  12845. + l2 = s2->eo - s2->so;
  12846. + if (l1 == strlen(s1->sym->name) && l2 != strlen(s2->sym->name))
  12847. + return -1;
  12848. + if (l1 != strlen(s1->sym->name) && l2 == strlen(s2->sym->name))
  12849. + return 1;
  12850. +
  12851. + /* As a fallback, sort symbols alphabetically */
  12852. + return strcmp(s1->sym->name, s2->sym->name);
  12853. +}
  12854. +
  12855. struct symbol **sym_re_search(const char *pattern)
  12856. {
  12857. struct symbol *sym, **sym_arr = NULL;
  12858. + struct sym_match **sym_match_arr = NULL;
  12859. int i, cnt, size;
  12860. regex_t re;
  12861. + regmatch_t match[1];
  12862. cnt = size = 0;
  12863. /* Skip if empty */
  12864. if (strlen(pattern) == 0)
  12865. return NULL;
  12866. - if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB|REG_ICASE))
  12867. + if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE))
  12868. return NULL;
  12869. for_all_symbols(i, sym) {
  12870. + struct sym_match *tmp_sym_match;
  12871. if (sym->flags & SYMBOL_CONST || !sym->name)
  12872. continue;
  12873. - if (regexec(&re, sym->name, 0, NULL, 0))
  12874. + if (regexec(&re, sym->name, 1, match, 0))
  12875. continue;
  12876. if (cnt + 1 >= size) {
  12877. - void *tmp = sym_arr;
  12878. + void *tmp;
  12879. size += 16;
  12880. - sym_arr = realloc(sym_arr, size * sizeof(struct symbol *));
  12881. - if (!sym_arr) {
  12882. - free(tmp);
  12883. - return NULL;
  12884. + tmp = realloc(sym_match_arr, size * sizeof(struct sym_match *));
  12885. + if (!tmp) {
  12886. + goto sym_re_search_free;
  12887. }
  12888. + sym_match_arr = tmp;
  12889. }
  12890. - sym_arr[cnt++] = sym;
  12891. - }
  12892. - if (sym_arr)
  12893. + sym_calc_value(sym);
  12894. + tmp_sym_match = (struct sym_match*)malloc(sizeof(struct sym_match));
  12895. + if (!tmp_sym_match)
  12896. + goto sym_re_search_free;
  12897. + tmp_sym_match->sym = sym;
  12898. + /* As regexec return 0, we know we have a match, so
  12899. + * we can use match[0].rm_[se]o without further checks
  12900. + */
  12901. + tmp_sym_match->so = match[0].rm_so;
  12902. + tmp_sym_match->eo = match[0].rm_eo;
  12903. + sym_match_arr[cnt++] = tmp_sym_match;
  12904. + }
  12905. + if (sym_match_arr) {
  12906. + qsort(sym_match_arr, cnt, sizeof(struct sym_match*), sym_rel_comp);
  12907. + sym_arr = malloc((cnt+1) * sizeof(struct symbol));
  12908. + if (!sym_arr)
  12909. + goto sym_re_search_free;
  12910. + for (i = 0; i < cnt; i++)
  12911. + sym_arr[i] = sym_match_arr[i]->sym;
  12912. sym_arr[cnt] = NULL;
  12913. + }
  12914. +sym_re_search_free:
  12915. + if (sym_match_arr) {
  12916. + for (i = 0; i < cnt; i++)
  12917. + free(sym_match_arr[i]);
  12918. + free(sym_match_arr);
  12919. + }
  12920. regfree(&re);
  12921. return sym_arr;
  12922. }
  12923. +/*
  12924. + * When we check for recursive dependencies we use a stack to save
  12925. + * current state so we can print out relevant info to user.
  12926. + * The entries are located on the call stack so no need to free memory.
  12927. + * Note inser() remove() must always match to properly clear the stack.
  12928. + */
  12929. +static struct dep_stack {
  12930. + struct dep_stack *prev, *next;
  12931. + struct symbol *sym;
  12932. + struct property *prop;
  12933. + struct expr *expr;
  12934. +} *check_top;
  12935. +
  12936. +static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym)
  12937. +{
  12938. + memset(stack, 0, sizeof(*stack));
  12939. + if (check_top)
  12940. + check_top->next = stack;
  12941. + stack->prev = check_top;
  12942. + stack->sym = sym;
  12943. + check_top = stack;
  12944. +}
  12945. +
  12946. +static void dep_stack_remove(void)
  12947. +{
  12948. + check_top = check_top->prev;
  12949. + if (check_top)
  12950. + check_top->next = NULL;
  12951. +}
  12952. +
  12953. +/*
  12954. + * Called when we have detected a recursive dependency.
  12955. + * check_top point to the top of the stact so we use
  12956. + * the ->prev pointer to locate the bottom of the stack.
  12957. + */
  12958. +static void sym_check_print_recursive(struct symbol *last_sym)
  12959. +{
  12960. + struct dep_stack *stack;
  12961. + struct symbol *sym, *next_sym;
  12962. + struct menu *menu = NULL;
  12963. + struct property *prop;
  12964. + struct dep_stack cv_stack;
  12965. +
  12966. + if (sym_is_choice_value(last_sym)) {
  12967. + dep_stack_insert(&cv_stack, last_sym);
  12968. + last_sym = prop_get_symbol(sym_get_choice_prop(last_sym));
  12969. + }
  12970. +
  12971. + for (stack = check_top; stack != NULL; stack = stack->prev)
  12972. + if (stack->sym == last_sym)
  12973. + break;
  12974. + if (!stack) {
  12975. + fprintf(stderr, "unexpected recursive dependency error\n");
  12976. + return;
  12977. + }
  12978. +
  12979. + for (; stack; stack = stack->next) {
  12980. + sym = stack->sym;
  12981. + next_sym = stack->next ? stack->next->sym : last_sym;
  12982. + prop = stack->prop;
  12983. + if (prop == NULL)
  12984. + prop = stack->sym->prop;
  12985. +
  12986. + /* for choice values find the menu entry (used below) */
  12987. + if (sym_is_choice(sym) || sym_is_choice_value(sym)) {
  12988. + for (prop = sym->prop; prop; prop = prop->next) {
  12989. + menu = prop->menu;
  12990. + if (prop->menu)
  12991. + break;
  12992. + }
  12993. + }
  12994. + if (stack->sym == last_sym)
  12995. + fprintf(stderr, "%s:%d:error: recursive dependency detected!\n",
  12996. + prop->file->name, prop->lineno);
  12997. + if (stack->expr) {
  12998. + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n",
  12999. + prop->file->name, prop->lineno,
  13000. + sym->name ? sym->name : "<choice>",
  13001. + prop_get_type_name(prop->type),
  13002. + next_sym->name ? next_sym->name : "<choice>");
  13003. + } else if (stack->prop) {
  13004. + fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n",
  13005. + prop->file->name, prop->lineno,
  13006. + sym->name ? sym->name : "<choice>",
  13007. + next_sym->name ? next_sym->name : "<choice>");
  13008. + } else if (sym_is_choice(sym)) {
  13009. + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n",
  13010. + menu->file->name, menu->lineno,
  13011. + sym->name ? sym->name : "<choice>",
  13012. + next_sym->name ? next_sym->name : "<choice>");
  13013. + } else if (sym_is_choice_value(sym)) {
  13014. + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n",
  13015. + menu->file->name, menu->lineno,
  13016. + sym->name ? sym->name : "<choice>",
  13017. + next_sym->name ? next_sym->name : "<choice>");
  13018. + } else {
  13019. + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n",
  13020. + prop->file->name, prop->lineno,
  13021. + sym->name ? sym->name : "<choice>",
  13022. + next_sym->name ? next_sym->name : "<choice>");
  13023. + }
  13024. + }
  13025. +
  13026. + if (check_top == &cv_stack)
  13027. + dep_stack_remove();
  13028. +}
  13029. static struct symbol *sym_check_expr_deps(struct expr *e)
  13030. {
  13031. @@ -795,24 +1193,33 @@
  13032. {
  13033. struct symbol *sym2;
  13034. struct property *prop;
  13035. + struct dep_stack stack;
  13036. +
  13037. + dep_stack_insert(&stack, sym);
  13038. sym2 = sym_check_expr_deps(sym->rev_dep.expr);
  13039. if (sym2)
  13040. - return sym2;
  13041. + goto out;
  13042. for (prop = sym->prop; prop; prop = prop->next) {
  13043. if (prop->type == P_CHOICE || prop->type == P_SELECT)
  13044. continue;
  13045. + stack.prop = prop;
  13046. sym2 = sym_check_expr_deps(prop->visible.expr);
  13047. if (sym2)
  13048. break;
  13049. if (prop->type != P_DEFAULT || sym_is_choice(sym))
  13050. continue;
  13051. + stack.expr = prop->expr;
  13052. sym2 = sym_check_expr_deps(prop->expr);
  13053. if (sym2)
  13054. break;
  13055. + stack.expr = NULL;
  13056. }
  13057. +out:
  13058. + dep_stack_remove();
  13059. +
  13060. return sym2;
  13061. }
  13062. @@ -821,6 +1228,9 @@
  13063. struct symbol *sym, *sym2;
  13064. struct property *prop;
  13065. struct expr *e;
  13066. + struct dep_stack stack;
  13067. +
  13068. + dep_stack_insert(&stack, choice);
  13069. prop = sym_get_choice_prop(choice);
  13070. expr_list_for_each_sym(prop->expr, e, sym)
  13071. @@ -834,10 +1244,8 @@
  13072. expr_list_for_each_sym(prop->expr, e, sym) {
  13073. sym2 = sym_check_sym_deps(sym);
  13074. - if (sym2) {
  13075. - fprintf(stderr, " -> %s", sym->name);
  13076. + if (sym2)
  13077. break;
  13078. - }
  13079. }
  13080. out:
  13081. expr_list_for_each_sym(prop->expr, e, sym)
  13082. @@ -847,6 +1255,8 @@
  13083. prop_get_symbol(sym_get_choice_prop(sym2)) == choice)
  13084. sym2 = choice;
  13085. + dep_stack_remove();
  13086. +
  13087. return sym2;
  13088. }
  13089. @@ -856,18 +1266,20 @@
  13090. struct property *prop;
  13091. if (sym->flags & SYMBOL_CHECK) {
  13092. - fprintf(stderr, "%s:%d:error: found recursive dependency: %s",
  13093. - sym->prop->file->name, sym->prop->lineno,
  13094. - sym->name ? sym->name : "<choice>");
  13095. + sym_check_print_recursive(sym);
  13096. return sym;
  13097. }
  13098. if (sym->flags & SYMBOL_CHECKED)
  13099. return NULL;
  13100. if (sym_is_choice_value(sym)) {
  13101. + struct dep_stack stack;
  13102. +
  13103. /* for choice groups start the check with main choice symbol */
  13104. + dep_stack_insert(&stack, sym);
  13105. prop = sym_get_choice_prop(sym);
  13106. sym2 = sym_check_deps(prop_get_symbol(prop));
  13107. + dep_stack_remove();
  13108. } else if (sym_is_choice(sym)) {
  13109. sym2 = sym_check_choice_deps(sym);
  13110. } else {
  13111. @@ -876,14 +1288,8 @@
  13112. sym->flags &= ~SYMBOL_CHECK;
  13113. }
  13114. - if (sym2) {
  13115. - fprintf(stderr, " -> %s", sym->name ? sym->name : "<choice>");
  13116. - if (sym2 == sym) {
  13117. - fprintf(stderr, "\n");
  13118. - zconfnerrs++;
  13119. - sym2 = NULL;
  13120. - }
  13121. - }
  13122. + if (sym2 && sym2 == sym)
  13123. + sym2 = NULL;
  13124. return sym2;
  13125. }
  13126. @@ -893,7 +1299,7 @@
  13127. struct property *prop;
  13128. struct property **propp;
  13129. - prop = malloc(sizeof(*prop));
  13130. + prop = xmalloc(sizeof(*prop));
  13131. memset(prop, 0, sizeof(*prop));
  13132. prop->type = type;
  13133. prop->sym = sym;
  13134. @@ -937,13 +1343,15 @@
  13135. return "select";
  13136. case P_RANGE:
  13137. return "range";
  13138. + case P_SYMBOL:
  13139. + return "symbol";
  13140. case P_UNKNOWN:
  13141. break;
  13142. }
  13143. return "unknown";
  13144. }
  13145. -void prop_add_env(const char *env)
  13146. +static void prop_add_env(const char *env)
  13147. {
  13148. struct symbol *sym, *sym2;
  13149. struct property *prop;
  13150. diff -Nur uClibc-0.9.33.2/extra/config/util.c uClibc-git/extra/config/util.c
  13151. --- uClibc-0.9.33.2/extra/config/util.c 2012-05-15 09:20:09.000000000 +0200
  13152. +++ uClibc-git/extra/config/util.c 2014-02-03 12:32:56.000000000 +0100
  13153. @@ -5,6 +5,8 @@
  13154. * Released under the terms of the GNU GPL v2.0.
  13155. */
  13156. +#include <stdarg.h>
  13157. +#include <stdlib.h>
  13158. #include <string.h>
  13159. #include "lkc.h"
  13160. @@ -12,15 +14,18 @@
  13161. struct file *file_lookup(const char *name)
  13162. {
  13163. struct file *file;
  13164. + const char *file_name = sym_expand_string_value(name);
  13165. for (file = file_list; file; file = file->next) {
  13166. - if (!strcmp(name, file->name))
  13167. + if (!strcmp(name, file->name)) {
  13168. + free((void *)file_name);
  13169. return file;
  13170. + }
  13171. }
  13172. - file = malloc(sizeof(*file));
  13173. + file = xmalloc(sizeof(*file));
  13174. memset(file, 0, sizeof(*file));
  13175. - file->name = strdup(name);
  13176. + file->name = file_name;
  13177. file->next = file_list;
  13178. file_list = file;
  13179. return file;
  13180. @@ -32,11 +37,15 @@
  13181. struct symbol *sym, *env_sym;
  13182. struct expr *e;
  13183. struct file *file;
  13184. + char tmpf[PATH_MAX+1];
  13185. FILE *out;
  13186. if (!name)
  13187. name = ".kconfig.d";
  13188. - out = fopen("..config.tmp", "w");
  13189. + strcpy(tmpf, name);
  13190. + dir_name(tmpf);
  13191. + strcat(tmpf, "..config.tmp");
  13192. + out = fopen(tmpf, "w");
  13193. if (!out)
  13194. return 1;
  13195. fprintf(out, "deps_config := \\\n");
  13196. @@ -46,8 +55,8 @@
  13197. else
  13198. fprintf(out, "\t%s\n", file->name);
  13199. }
  13200. - fprintf(out, "\ninclude/config/auto.conf: \\\n"
  13201. - "\t$(deps_config)\n\n");
  13202. + fprintf(out, "\n%s: \\\n"
  13203. + "\t$(deps_config)\n\n", conf_get_autoconfig_name());
  13204. expr_list_for_each_sym(sym_env_list, e, sym) {
  13205. struct property *prop;
  13206. @@ -61,23 +70,24 @@
  13207. if (!value)
  13208. value = "";
  13209. fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value);
  13210. - fprintf(out, "include/config/auto.conf: FORCE\n");
  13211. + fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name());
  13212. fprintf(out, "endif\n");
  13213. }
  13214. fprintf(out, "\n$(deps_config): ;\n");
  13215. fclose(out);
  13216. - rename("..config.tmp", name);
  13217. + rename(tmpf, name);
  13218. return 0;
  13219. }
  13220. -/* Allocate initial growable sting */
  13221. +/* Allocate initial growable string */
  13222. struct gstr str_new(void)
  13223. {
  13224. struct gstr gs;
  13225. - gs.s = malloc(sizeof(char) * 64);
  13226. + gs.s = xmalloc(sizeof(char) * 64);
  13227. gs.len = 64;
  13228. + gs.max_width = 0;
  13229. strcpy(gs.s, "\0");
  13230. return gs;
  13231. }
  13232. @@ -88,6 +98,7 @@
  13233. struct gstr gs;
  13234. gs.s = strdup(s);
  13235. gs.len = strlen(s) + 1;
  13236. + gs.max_width = 0;
  13237. return gs;
  13238. }
  13239. @@ -131,3 +142,40 @@
  13240. return gs->s;
  13241. }
  13242. +void *xmalloc(size_t size)
  13243. +{
  13244. + void *p = malloc(size);
  13245. + if (p)
  13246. + return p;
  13247. + fprintf(stderr, "Out of memory.\n");
  13248. + exit(1);
  13249. +}
  13250. +
  13251. +void *xcalloc(size_t nmemb, size_t size)
  13252. +{
  13253. + void *p = calloc(nmemb, size);
  13254. + if (p)
  13255. + return p;
  13256. + fprintf(stderr, "Out of memory.\n");
  13257. + exit(1);
  13258. +}
  13259. +
  13260. +/* basename, dirname - parse pathname components */
  13261. +char *dir_name(char *path)
  13262. +{
  13263. + char *slash = strrchr(path, '/');
  13264. + int size = 0;
  13265. + if (slash)
  13266. + size = slash - path + 1;
  13267. + path[size] = 0;
  13268. + return path;
  13269. +}
  13270. +char *base_name(char *path)
  13271. +{
  13272. + char *slash = strrchr(path, '/');
  13273. + if (slash)
  13274. + path += slash - path + 1;
  13275. + return path;
  13276. +
  13277. +}
  13278. +
  13279. diff -Nur uClibc-0.9.33.2/extra/config/zconf.gperf uClibc-git/extra/config/zconf.gperf
  13280. --- uClibc-0.9.33.2/extra/config/zconf.gperf 2012-05-15 09:20:09.000000000 +0200
  13281. +++ uClibc-git/extra/config/zconf.gperf 2014-02-03 12:32:56.000000000 +0100
  13282. @@ -9,6 +9,8 @@
  13283. struct kconf_id;
  13284. +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
  13285. +
  13286. %%
  13287. mainmenu, T_MAINMENU, TF_COMMAND
  13288. menu, T_MENU, TF_COMMAND
  13289. @@ -36,6 +38,7 @@
  13290. string, T_TYPE, TF_COMMAND, S_STRING
  13291. select, T_SELECT, TF_COMMAND
  13292. range, T_RANGE, TF_COMMAND
  13293. +visible, T_VISIBLE, TF_COMMAND
  13294. option, T_OPTION, TF_COMMAND
  13295. on, T_ON, TF_PARAM
  13296. modules, T_OPT_MODULES, TF_OPTION
  13297. diff -Nur uClibc-0.9.33.2/extra/config/zconf.hash.c_shipped uClibc-git/extra/config/zconf.hash.c_shipped
  13298. --- uClibc-0.9.33.2/extra/config/zconf.hash.c_shipped 2012-05-15 09:20:09.000000000 +0200
  13299. +++ uClibc-git/extra/config/zconf.hash.c_shipped 2014-02-03 12:32:56.000000000 +0100
  13300. @@ -1,6 +1,5 @@
  13301. -/* ANSI-C code produced by gperf version 3.0.3 */
  13302. -/* Command-line: gperf */
  13303. -/* Computed positions: -k'1,3' */
  13304. +/* ANSI-C code produced by gperf version 3.0.4 */
  13305. +/* Command-line: gperf -t --output-file scripts/kconfig/zconf.hash.c_shipped -a -C -E -g -k '1,3,$' -p -t scripts/kconfig/zconf.gperf */
  13306. #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
  13307. && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
  13308. @@ -29,8 +28,11 @@
  13309. #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
  13310. #endif
  13311. +#line 10 "scripts/kconfig/zconf.gperf"
  13312. struct kconf_id;
  13313. -/* maximum key range = 47, duplicates = 0 */
  13314. +
  13315. +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
  13316. +/* maximum key range = 71, duplicates = 0 */
  13317. #ifdef __GNUC__
  13318. __inline
  13319. @@ -42,34 +44,34 @@
  13320. static unsigned int
  13321. kconf_id_hash (register const char *str, register unsigned int len)
  13322. {
  13323. - static unsigned char asso_values[] =
  13324. + static const unsigned char asso_values[] =
  13325. {
  13326. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13327. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13328. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13329. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13330. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13331. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13332. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13333. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13334. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13335. - 49, 49, 49, 49, 49, 49, 49, 49, 11, 5,
  13336. - 0, 0, 5, 49, 5, 20, 49, 49, 5, 20,
  13337. - 5, 0, 30, 49, 0, 15, 0, 10, 0, 49,
  13338. - 25, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13339. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13340. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13341. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13342. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13343. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13344. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13345. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13346. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13347. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13348. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13349. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13350. - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
  13351. - 49, 49, 49, 49, 49, 49
  13352. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13353. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13354. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13355. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13356. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13357. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13358. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13359. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13360. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13361. + 73, 73, 73, 73, 73, 73, 73, 73, 25, 25,
  13362. + 0, 0, 0, 5, 0, 0, 73, 73, 5, 0,
  13363. + 10, 5, 45, 73, 20, 20, 0, 15, 15, 73,
  13364. + 20, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13365. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13366. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13367. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13368. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13369. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13370. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13371. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13372. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13373. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13374. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13375. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13376. + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
  13377. + 73, 73, 73, 73, 73, 73
  13378. };
  13379. register int hval = len;
  13380. @@ -83,137 +85,183 @@
  13381. hval += asso_values[(unsigned char)str[0]];
  13382. break;
  13383. }
  13384. - return hval;
  13385. + return hval + asso_values[(unsigned char)str[len - 1]];
  13386. }
  13387. struct kconf_id_strings_t
  13388. {
  13389. - char kconf_id_strings_str2[sizeof("on")];
  13390. - char kconf_id_strings_str3[sizeof("env")];
  13391. + char kconf_id_strings_str2[sizeof("if")];
  13392. + char kconf_id_strings_str3[sizeof("int")];
  13393. char kconf_id_strings_str5[sizeof("endif")];
  13394. - char kconf_id_strings_str6[sizeof("option")];
  13395. - char kconf_id_strings_str7[sizeof("endmenu")];
  13396. - char kconf_id_strings_str8[sizeof("optional")];
  13397. + char kconf_id_strings_str7[sizeof("default")];
  13398. + char kconf_id_strings_str8[sizeof("tristate")];
  13399. char kconf_id_strings_str9[sizeof("endchoice")];
  13400. - char kconf_id_strings_str10[sizeof("range")];
  13401. - char kconf_id_strings_str11[sizeof("choice")];
  13402. - char kconf_id_strings_str12[sizeof("default")];
  13403. + char kconf_id_strings_str12[sizeof("def_tristate")];
  13404. char kconf_id_strings_str13[sizeof("def_bool")];
  13405. - char kconf_id_strings_str14[sizeof("help")];
  13406. - char kconf_id_strings_str15[sizeof("bool")];
  13407. - char kconf_id_strings_str16[sizeof("config")];
  13408. - char kconf_id_strings_str17[sizeof("def_tristate")];
  13409. - char kconf_id_strings_str18[sizeof("boolean")];
  13410. - char kconf_id_strings_str19[sizeof("defconfig_list")];
  13411. - char kconf_id_strings_str21[sizeof("string")];
  13412. - char kconf_id_strings_str22[sizeof("if")];
  13413. - char kconf_id_strings_str23[sizeof("int")];
  13414. - char kconf_id_strings_str26[sizeof("select")];
  13415. + char kconf_id_strings_str14[sizeof("defconfig_list")];
  13416. + char kconf_id_strings_str17[sizeof("on")];
  13417. + char kconf_id_strings_str18[sizeof("optional")];
  13418. + char kconf_id_strings_str21[sizeof("option")];
  13419. + char kconf_id_strings_str22[sizeof("endmenu")];
  13420. + char kconf_id_strings_str23[sizeof("mainmenu")];
  13421. + char kconf_id_strings_str25[sizeof("menuconfig")];
  13422. char kconf_id_strings_str27[sizeof("modules")];
  13423. - char kconf_id_strings_str28[sizeof("tristate")];
  13424. char kconf_id_strings_str29[sizeof("menu")];
  13425. - char kconf_id_strings_str31[sizeof("source")];
  13426. + char kconf_id_strings_str31[sizeof("select")];
  13427. char kconf_id_strings_str32[sizeof("comment")];
  13428. - char kconf_id_strings_str33[sizeof("hex")];
  13429. - char kconf_id_strings_str35[sizeof("menuconfig")];
  13430. - char kconf_id_strings_str36[sizeof("prompt")];
  13431. - char kconf_id_strings_str37[sizeof("depends")];
  13432. - char kconf_id_strings_str48[sizeof("mainmenu")];
  13433. + char kconf_id_strings_str33[sizeof("env")];
  13434. + char kconf_id_strings_str35[sizeof("range")];
  13435. + char kconf_id_strings_str36[sizeof("choice")];
  13436. + char kconf_id_strings_str39[sizeof("bool")];
  13437. + char kconf_id_strings_str41[sizeof("source")];
  13438. + char kconf_id_strings_str42[sizeof("visible")];
  13439. + char kconf_id_strings_str43[sizeof("hex")];
  13440. + char kconf_id_strings_str46[sizeof("config")];
  13441. + char kconf_id_strings_str47[sizeof("boolean")];
  13442. + char kconf_id_strings_str51[sizeof("string")];
  13443. + char kconf_id_strings_str54[sizeof("help")];
  13444. + char kconf_id_strings_str56[sizeof("prompt")];
  13445. + char kconf_id_strings_str72[sizeof("depends")];
  13446. };
  13447. -static struct kconf_id_strings_t kconf_id_strings_contents =
  13448. +static const struct kconf_id_strings_t kconf_id_strings_contents =
  13449. {
  13450. - "on",
  13451. - "env",
  13452. + "if",
  13453. + "int",
  13454. "endif",
  13455. + "default",
  13456. + "tristate",
  13457. + "endchoice",
  13458. + "def_tristate",
  13459. + "def_bool",
  13460. + "defconfig_list",
  13461. + "on",
  13462. + "optional",
  13463. "option",
  13464. "endmenu",
  13465. - "optional",
  13466. - "endchoice",
  13467. + "mainmenu",
  13468. + "menuconfig",
  13469. + "modules",
  13470. + "menu",
  13471. + "select",
  13472. + "comment",
  13473. + "env",
  13474. "range",
  13475. "choice",
  13476. - "default",
  13477. - "def_bool",
  13478. - "help",
  13479. "bool",
  13480. + "source",
  13481. + "visible",
  13482. + "hex",
  13483. "config",
  13484. - "def_tristate",
  13485. "boolean",
  13486. - "defconfig_list",
  13487. "string",
  13488. - "if",
  13489. - "int",
  13490. - "select",
  13491. - "modules",
  13492. - "tristate",
  13493. - "menu",
  13494. - "source",
  13495. - "comment",
  13496. - "hex",
  13497. - "menuconfig",
  13498. + "help",
  13499. "prompt",
  13500. - "depends",
  13501. - "mainmenu"
  13502. + "depends"
  13503. };
  13504. #define kconf_id_strings ((const char *) &kconf_id_strings_contents)
  13505. #ifdef __GNUC__
  13506. __inline
  13507. -#ifdef __GNUC_STDC_INLINE__
  13508. +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
  13509. __attribute__ ((__gnu_inline__))
  13510. #endif
  13511. #endif
  13512. -struct kconf_id *
  13513. +const struct kconf_id *
  13514. kconf_id_lookup (register const char *str, register unsigned int len)
  13515. {
  13516. enum
  13517. {
  13518. - TOTAL_KEYWORDS = 31,
  13519. + TOTAL_KEYWORDS = 32,
  13520. MIN_WORD_LENGTH = 2,
  13521. MAX_WORD_LENGTH = 14,
  13522. MIN_HASH_VALUE = 2,
  13523. - MAX_HASH_VALUE = 48
  13524. + MAX_HASH_VALUE = 72
  13525. };
  13526. - static struct kconf_id wordlist[] =
  13527. + static const struct kconf_id wordlist[] =
  13528. {
  13529. {-1}, {-1},
  13530. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
  13531. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_OPT_ENV, TF_OPTION},
  13532. +#line 25 "scripts/kconfig/zconf.gperf"
  13533. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM},
  13534. +#line 36 "scripts/kconfig/zconf.gperf"
  13535. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT},
  13536. {-1},
  13537. +#line 26 "scripts/kconfig/zconf.gperf"
  13538. {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
  13539. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND},
  13540. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
  13541. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_OPTIONAL, TF_COMMAND},
  13542. + {-1},
  13543. +#line 29 "scripts/kconfig/zconf.gperf"
  13544. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
  13545. +#line 31 "scripts/kconfig/zconf.gperf"
  13546. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE},
  13547. +#line 20 "scripts/kconfig/zconf.gperf"
  13548. {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
  13549. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_RANGE, TF_COMMAND},
  13550. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11, T_CHOICE, TF_COMMAND},
  13551. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
  13552. + {-1}, {-1},
  13553. +#line 32 "scripts/kconfig/zconf.gperf"
  13554. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE},
  13555. +#line 35 "scripts/kconfig/zconf.gperf"
  13556. {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
  13557. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND},
  13558. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN},
  13559. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND},
  13560. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE},
  13561. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN},
  13562. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION},
  13563. - {-1},
  13564. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
  13565. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
  13566. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
  13567. +#line 45 "scripts/kconfig/zconf.gperf"
  13568. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION},
  13569. + {-1}, {-1},
  13570. +#line 43 "scripts/kconfig/zconf.gperf"
  13571. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_ON, TF_PARAM},
  13572. +#line 28 "scripts/kconfig/zconf.gperf"
  13573. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND},
  13574. {-1}, {-1},
  13575. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
  13576. +#line 42 "scripts/kconfig/zconf.gperf"
  13577. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_OPTION, TF_COMMAND},
  13578. +#line 17 "scripts/kconfig/zconf.gperf"
  13579. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND},
  13580. +#line 15 "scripts/kconfig/zconf.gperf"
  13581. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_MAINMENU, TF_COMMAND},
  13582. + {-1},
  13583. +#line 23 "scripts/kconfig/zconf.gperf"
  13584. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND},
  13585. + {-1},
  13586. +#line 44 "scripts/kconfig/zconf.gperf"
  13587. {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
  13588. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},
  13589. + {-1},
  13590. +#line 16 "scripts/kconfig/zconf.gperf"
  13591. {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
  13592. {-1},
  13593. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND},
  13594. +#line 39 "scripts/kconfig/zconf.gperf"
  13595. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND},
  13596. +#line 21 "scripts/kconfig/zconf.gperf"
  13597. {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
  13598. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX},
  13599. +#line 46 "scripts/kconfig/zconf.gperf"
  13600. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_OPT_ENV, TF_OPTION},
  13601. {-1},
  13602. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND},
  13603. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND},
  13604. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND},
  13605. - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
  13606. +#line 40 "scripts/kconfig/zconf.gperf"
  13607. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_RANGE, TF_COMMAND},
  13608. +#line 19 "scripts/kconfig/zconf.gperf"
  13609. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CHOICE, TF_COMMAND},
  13610. + {-1}, {-1},
  13611. +#line 33 "scripts/kconfig/zconf.gperf"
  13612. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN},
  13613. + {-1},
  13614. +#line 18 "scripts/kconfig/zconf.gperf"
  13615. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND},
  13616. +#line 41 "scripts/kconfig/zconf.gperf"
  13617. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_VISIBLE, TF_COMMAND},
  13618. +#line 37 "scripts/kconfig/zconf.gperf"
  13619. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_TYPE, TF_COMMAND, S_HEX},
  13620. + {-1}, {-1},
  13621. +#line 22 "scripts/kconfig/zconf.gperf"
  13622. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_CONFIG, TF_COMMAND},
  13623. +#line 34 "scripts/kconfig/zconf.gperf"
  13624. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN},
  13625. + {-1}, {-1}, {-1},
  13626. +#line 38 "scripts/kconfig/zconf.gperf"
  13627. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_TYPE, TF_COMMAND, S_STRING},
  13628. + {-1}, {-1},
  13629. +#line 24 "scripts/kconfig/zconf.gperf"
  13630. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str54, T_HELP, TF_COMMAND},
  13631. {-1},
  13632. - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND}
  13633. +#line 30 "scripts/kconfig/zconf.gperf"
  13634. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str56, T_PROMPT, TF_COMMAND},
  13635. + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
  13636. + {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
  13637. +#line 27 "scripts/kconfig/zconf.gperf"
  13638. + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str72, T_DEPENDS, TF_COMMAND}
  13639. };
  13640. if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  13641. @@ -234,4 +282,5 @@
  13642. }
  13643. return 0;
  13644. }
  13645. +#line 47 "scripts/kconfig/zconf.gperf"
  13646. diff -Nur uClibc-0.9.33.2/extra/config/zconf.l uClibc-git/extra/config/zconf.l
  13647. --- uClibc-0.9.33.2/extra/config/zconf.l 2012-05-15 09:20:09.000000000 +0200
  13648. +++ uClibc-git/extra/config/zconf.l 2014-02-03 12:32:56.000000000 +0100
  13649. @@ -1,5 +1,5 @@
  13650. -%option backup nostdinit noyywrap never-interactive full ecs
  13651. -%option 8bit backup nodefault perf-report perf-report
  13652. +%option nostdinit noyywrap never-interactive full ecs
  13653. +%option 8bit nodefault perf-report perf-report
  13654. %option noinput
  13655. %x COMMAND HELP STRING PARAM
  13656. %{
  13657. @@ -14,7 +14,6 @@
  13658. #include <string.h>
  13659. #include <unistd.h>
  13660. -#define LKC_DIRECT_LINK
  13661. #include "lkc.h"
  13662. #define START_STRSIZE 16
  13663. @@ -39,15 +38,15 @@
  13664. static void zconf_endhelp(void);
  13665. static void zconf_endfile(void);
  13666. -void new_string(void)
  13667. +static void new_string(void)
  13668. {
  13669. - text = malloc(START_STRSIZE);
  13670. + text = xmalloc(START_STRSIZE);
  13671. text_asize = START_STRSIZE;
  13672. text_size = 0;
  13673. *text = 0;
  13674. }
  13675. -void append_string(const char *str, int size)
  13676. +static void append_string(const char *str, int size)
  13677. {
  13678. int new_size = text_size + size + 1;
  13679. if (new_size > text_asize) {
  13680. @@ -61,9 +60,9 @@
  13681. text[text_size] = 0;
  13682. }
  13683. -void alloc_string(const char *str, int size)
  13684. +static void alloc_string(const char *str, int size)
  13685. {
  13686. - text = malloc(size + 1);
  13687. + text = xmalloc(size + 1);
  13688. memcpy(text, str, size);
  13689. text[size] = 0;
  13690. }
  13691. @@ -96,7 +95,7 @@
  13692. <COMMAND>{
  13693. {n}+ {
  13694. - struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
  13695. + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
  13696. BEGIN(PARAM);
  13697. current_pos.file = current_file;
  13698. current_pos.lineno = current_file->lineno;
  13699. @@ -132,7 +131,7 @@
  13700. \n BEGIN(INITIAL); current_file->lineno++; return T_EOL;
  13701. --- /* ignore */
  13702. ({n}|[-/.])+ {
  13703. - struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
  13704. + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
  13705. if (id && id->flags & TF_PARAM) {
  13706. zconflval.id = id;
  13707. return id->token;
  13708. @@ -289,42 +288,50 @@
  13709. exit(1);
  13710. }
  13711. - current_buf = malloc(sizeof(*current_buf));
  13712. + current_buf = xmalloc(sizeof(*current_buf));
  13713. memset(current_buf, 0, sizeof(*current_buf));
  13714. current_file = file_lookup(name);
  13715. current_file->lineno = 1;
  13716. - current_file->flags = FILE_BUSY;
  13717. }
  13718. void zconf_nextfile(const char *name)
  13719. {
  13720. + struct file *iter;
  13721. struct file *file = file_lookup(name);
  13722. - struct buffer *buf = malloc(sizeof(*buf));
  13723. + struct buffer *buf = xmalloc(sizeof(*buf));
  13724. memset(buf, 0, sizeof(*buf));
  13725. current_buf->state = YY_CURRENT_BUFFER;
  13726. - yyin = zconf_fopen(name);
  13727. + yyin = zconf_fopen(file->name);
  13728. if (!yyin) {
  13729. - printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
  13730. + printf("%s:%d: can't open file \"%s\"\n",
  13731. + zconf_curname(), zconf_lineno(), file->name);
  13732. exit(1);
  13733. }
  13734. yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
  13735. buf->parent = current_buf;
  13736. current_buf = buf;
  13737. - if (file->flags & FILE_BUSY) {
  13738. - printf("%s:%d: do not source '%s' from itself\n",
  13739. - zconf_curname(), zconf_lineno(), name);
  13740. - exit(1);
  13741. - }
  13742. - if (file->flags & FILE_SCANNED) {
  13743. - printf("%s:%d: file '%s' is already sourced from '%s'\n",
  13744. - zconf_curname(), zconf_lineno(), name,
  13745. - file->parent->name);
  13746. - exit(1);
  13747. + for (iter = current_file->parent; iter; iter = iter->parent ) {
  13748. + if (!strcmp(current_file->name,iter->name) ) {
  13749. + printf("%s:%d: recursive inclusion detected. "
  13750. + "Inclusion path:\n current file : '%s'\n",
  13751. + zconf_curname(), zconf_lineno(),
  13752. + zconf_curname());
  13753. + iter = current_file->parent;
  13754. + while (iter && \
  13755. + strcmp(iter->name,current_file->name)) {
  13756. + printf(" included from: '%s:%d'\n",
  13757. + iter->name, iter->lineno-1);
  13758. + iter = iter->parent;
  13759. + }
  13760. + if (iter)
  13761. + printf(" included from: '%s:%d'\n",
  13762. + iter->name, iter->lineno+1);
  13763. + exit(1);
  13764. + }
  13765. }
  13766. - file->flags |= FILE_BUSY;
  13767. file->lineno = 1;
  13768. file->parent = current_file;
  13769. current_file = file;
  13770. @@ -334,8 +341,6 @@
  13771. {
  13772. struct buffer *parent;
  13773. - current_file->flags |= FILE_SCANNED;
  13774. - current_file->flags &= ~FILE_BUSY;
  13775. current_file = current_file->parent;
  13776. parent = current_buf->parent;
  13777. @@ -353,7 +358,7 @@
  13778. return current_pos.lineno;
  13779. }
  13780. -char *zconf_curname(void)
  13781. +const char *zconf_curname(void)
  13782. {
  13783. return current_pos.file ? current_pos.file->name : "<none>";
  13784. }
  13785. diff -Nur uClibc-0.9.33.2/extra/config/zconf.lex.c_shipped uClibc-git/extra/config/zconf.lex.c_shipped
  13786. --- uClibc-0.9.33.2/extra/config/zconf.lex.c_shipped 1970-01-01 01:00:00.000000000 +0100
  13787. +++ uClibc-git/extra/config/zconf.lex.c_shipped 2014-02-03 12:32:56.000000000 +0100
  13788. @@ -0,0 +1,2420 @@
  13789. +
  13790. +#line 3 "scripts/kconfig/zconf.lex.c_shipped"
  13791. +
  13792. +#define YY_INT_ALIGNED short int
  13793. +
  13794. +/* A lexical scanner generated by flex */
  13795. +
  13796. +#define yy_create_buffer zconf_create_buffer
  13797. +#define yy_delete_buffer zconf_delete_buffer
  13798. +#define yy_flex_debug zconf_flex_debug
  13799. +#define yy_init_buffer zconf_init_buffer
  13800. +#define yy_flush_buffer zconf_flush_buffer
  13801. +#define yy_load_buffer_state zconf_load_buffer_state
  13802. +#define yy_switch_to_buffer zconf_switch_to_buffer
  13803. +#define yyin zconfin
  13804. +#define yyleng zconfleng
  13805. +#define yylex zconflex
  13806. +#define yylineno zconflineno
  13807. +#define yyout zconfout
  13808. +#define yyrestart zconfrestart
  13809. +#define yytext zconftext
  13810. +#define yywrap zconfwrap
  13811. +#define yyalloc zconfalloc
  13812. +#define yyrealloc zconfrealloc
  13813. +#define yyfree zconffree
  13814. +
  13815. +#define FLEX_SCANNER
  13816. +#define YY_FLEX_MAJOR_VERSION 2
  13817. +#define YY_FLEX_MINOR_VERSION 5
  13818. +#define YY_FLEX_SUBMINOR_VERSION 35
  13819. +#if YY_FLEX_SUBMINOR_VERSION > 0
  13820. +#define FLEX_BETA
  13821. +#endif
  13822. +
  13823. +/* First, we deal with platform-specific or compiler-specific issues. */
  13824. +
  13825. +/* begin standard C headers. */
  13826. +#include <stdio.h>
  13827. +#include <string.h>
  13828. +#include <errno.h>
  13829. +#include <stdlib.h>
  13830. +
  13831. +/* end standard C headers. */
  13832. +
  13833. +/* flex integer type definitions */
  13834. +
  13835. +#ifndef FLEXINT_H
  13836. +#define FLEXINT_H
  13837. +
  13838. +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
  13839. +
  13840. +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
  13841. +
  13842. +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  13843. + * if you want the limit (max/min) macros for int types.
  13844. + */
  13845. +#ifndef __STDC_LIMIT_MACROS
  13846. +#define __STDC_LIMIT_MACROS 1
  13847. +#endif
  13848. +
  13849. +#include <inttypes.h>
  13850. +typedef int8_t flex_int8_t;
  13851. +typedef uint8_t flex_uint8_t;
  13852. +typedef int16_t flex_int16_t;
  13853. +typedef uint16_t flex_uint16_t;
  13854. +typedef int32_t flex_int32_t;
  13855. +typedef uint32_t flex_uint32_t;
  13856. +#else
  13857. +typedef signed char flex_int8_t;
  13858. +typedef short int flex_int16_t;
  13859. +typedef int flex_int32_t;
  13860. +typedef unsigned char flex_uint8_t;
  13861. +typedef unsigned short int flex_uint16_t;
  13862. +typedef unsigned int flex_uint32_t;
  13863. +#endif /* ! C99 */
  13864. +
  13865. +/* Limits of integral types. */
  13866. +#ifndef INT8_MIN
  13867. +#define INT8_MIN (-128)
  13868. +#endif
  13869. +#ifndef INT16_MIN
  13870. +#define INT16_MIN (-32767-1)
  13871. +#endif
  13872. +#ifndef INT32_MIN
  13873. +#define INT32_MIN (-2147483647-1)
  13874. +#endif
  13875. +#ifndef INT8_MAX
  13876. +#define INT8_MAX (127)
  13877. +#endif
  13878. +#ifndef INT16_MAX
  13879. +#define INT16_MAX (32767)
  13880. +#endif
  13881. +#ifndef INT32_MAX
  13882. +#define INT32_MAX (2147483647)
  13883. +#endif
  13884. +#ifndef UINT8_MAX
  13885. +#define UINT8_MAX (255U)
  13886. +#endif
  13887. +#ifndef UINT16_MAX
  13888. +#define UINT16_MAX (65535U)
  13889. +#endif
  13890. +#ifndef UINT32_MAX
  13891. +#define UINT32_MAX (4294967295U)
  13892. +#endif
  13893. +
  13894. +#endif /* ! FLEXINT_H */
  13895. +
  13896. +#ifdef __cplusplus
  13897. +
  13898. +/* The "const" storage-class-modifier is valid. */
  13899. +#define YY_USE_CONST
  13900. +
  13901. +#else /* ! __cplusplus */
  13902. +
  13903. +/* C99 requires __STDC__ to be defined as 1. */
  13904. +#if defined (__STDC__)
  13905. +
  13906. +#define YY_USE_CONST
  13907. +
  13908. +#endif /* defined (__STDC__) */
  13909. +#endif /* ! __cplusplus */
  13910. +
  13911. +#ifdef YY_USE_CONST
  13912. +#define yyconst const
  13913. +#else
  13914. +#define yyconst
  13915. +#endif
  13916. +
  13917. +/* Returned upon end-of-file. */
  13918. +#define YY_NULL 0
  13919. +
  13920. +/* Promotes a possibly negative, possibly signed char to an unsigned
  13921. + * integer for use as an array index. If the signed char is negative,
  13922. + * we want to instead treat it as an 8-bit unsigned char, hence the
  13923. + * double cast.
  13924. + */
  13925. +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
  13926. +
  13927. +/* Enter a start condition. This macro really ought to take a parameter,
  13928. + * but we do it the disgusting crufty way forced on us by the ()-less
  13929. + * definition of BEGIN.
  13930. + */
  13931. +#define BEGIN (yy_start) = 1 + 2 *
  13932. +
  13933. +/* Translate the current start state into a value that can be later handed
  13934. + * to BEGIN to return to the state. The YYSTATE alias is for lex
  13935. + * compatibility.
  13936. + */
  13937. +#define YY_START (((yy_start) - 1) / 2)
  13938. +#define YYSTATE YY_START
  13939. +
  13940. +/* Action number for EOF rule of a given start state. */
  13941. +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  13942. +
  13943. +/* Special action meaning "start processing a new file". */
  13944. +#define YY_NEW_FILE zconfrestart(zconfin )
  13945. +
  13946. +#define YY_END_OF_BUFFER_CHAR 0
  13947. +
  13948. +/* Size of default input buffer. */
  13949. +#ifndef YY_BUF_SIZE
  13950. +#define YY_BUF_SIZE 16384
  13951. +#endif
  13952. +
  13953. +/* The state buf must be large enough to hold one state per character in the main buffer.
  13954. + */
  13955. +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
  13956. +
  13957. +#ifndef YY_TYPEDEF_YY_BUFFER_STATE
  13958. +#define YY_TYPEDEF_YY_BUFFER_STATE
  13959. +typedef struct yy_buffer_state *YY_BUFFER_STATE;
  13960. +#endif
  13961. +
  13962. +extern int zconfleng;
  13963. +
  13964. +extern FILE *zconfin, *zconfout;
  13965. +
  13966. +#define EOB_ACT_CONTINUE_SCAN 0
  13967. +#define EOB_ACT_END_OF_FILE 1
  13968. +#define EOB_ACT_LAST_MATCH 2
  13969. +
  13970. + #define YY_LESS_LINENO(n)
  13971. +
  13972. +/* Return all but the first "n" matched characters back to the input stream. */
  13973. +#define yyless(n) \
  13974. + do \
  13975. + { \
  13976. + /* Undo effects of setting up zconftext. */ \
  13977. + int yyless_macro_arg = (n); \
  13978. + YY_LESS_LINENO(yyless_macro_arg);\
  13979. + *yy_cp = (yy_hold_char); \
  13980. + YY_RESTORE_YY_MORE_OFFSET \
  13981. + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
  13982. + YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
  13983. + } \
  13984. + while ( 0 )
  13985. +
  13986. +#define unput(c) yyunput( c, (yytext_ptr) )
  13987. +
  13988. +#ifndef YY_TYPEDEF_YY_SIZE_T
  13989. +#define YY_TYPEDEF_YY_SIZE_T
  13990. +typedef size_t yy_size_t;
  13991. +#endif
  13992. +
  13993. +#ifndef YY_STRUCT_YY_BUFFER_STATE
  13994. +#define YY_STRUCT_YY_BUFFER_STATE
  13995. +struct yy_buffer_state
  13996. + {
  13997. + FILE *yy_input_file;
  13998. +
  13999. + char *yy_ch_buf; /* input buffer */
  14000. + char *yy_buf_pos; /* current position in input buffer */
  14001. +
  14002. + /* Size of input buffer in bytes, not including room for EOB
  14003. + * characters.
  14004. + */
  14005. + yy_size_t yy_buf_size;
  14006. +
  14007. + /* Number of characters read into yy_ch_buf, not including EOB
  14008. + * characters.
  14009. + */
  14010. + int yy_n_chars;
  14011. +
  14012. + /* Whether we "own" the buffer - i.e., we know we created it,
  14013. + * and can realloc() it to grow it, and should free() it to
  14014. + * delete it.
  14015. + */
  14016. + int yy_is_our_buffer;
  14017. +
  14018. + /* Whether this is an "interactive" input source; if so, and
  14019. + * if we're using stdio for input, then we want to use getc()
  14020. + * instead of fread(), to make sure we stop fetching input after
  14021. + * each newline.
  14022. + */
  14023. + int yy_is_interactive;
  14024. +
  14025. + /* Whether we're considered to be at the beginning of a line.
  14026. + * If so, '^' rules will be active on the next match, otherwise
  14027. + * not.
  14028. + */
  14029. + int yy_at_bol;
  14030. +
  14031. + int yy_bs_lineno; /**< The line count. */
  14032. + int yy_bs_column; /**< The column count. */
  14033. +
  14034. + /* Whether to try to fill the input buffer when we reach the
  14035. + * end of it.
  14036. + */
  14037. + int yy_fill_buffer;
  14038. +
  14039. + int yy_buffer_status;
  14040. +
  14041. +#define YY_BUFFER_NEW 0
  14042. +#define YY_BUFFER_NORMAL 1
  14043. + /* When an EOF's been seen but there's still some text to process
  14044. + * then we mark the buffer as YY_EOF_PENDING, to indicate that we
  14045. + * shouldn't try reading from the input source any more. We might
  14046. + * still have a bunch of tokens to match, though, because of
  14047. + * possible backing-up.
  14048. + *
  14049. + * When we actually see the EOF, we change the status to "new"
  14050. + * (via zconfrestart()), so that the user can continue scanning by
  14051. + * just pointing zconfin at a new input file.
  14052. + */
  14053. +#define YY_BUFFER_EOF_PENDING 2
  14054. +
  14055. + };
  14056. +#endif /* !YY_STRUCT_YY_BUFFER_STATE */
  14057. +
  14058. +/* Stack of input buffers. */
  14059. +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
  14060. +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
  14061. +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
  14062. +
  14063. +/* We provide macros for accessing buffer states in case in the
  14064. + * future we want to put the buffer states in a more general
  14065. + * "scanner state".
  14066. + *
  14067. + * Returns the top of the stack, or NULL.
  14068. + */
  14069. +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
  14070. + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
  14071. + : NULL)
  14072. +
  14073. +/* Same as previous macro, but useful when we know that the buffer stack is not
  14074. + * NULL or when we need an lvalue. For internal use only.
  14075. + */
  14076. +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
  14077. +
  14078. +/* yy_hold_char holds the character lost when zconftext is formed. */
  14079. +static char yy_hold_char;
  14080. +static int yy_n_chars; /* number of characters read into yy_ch_buf */
  14081. +int zconfleng;
  14082. +
  14083. +/* Points to current character in buffer. */
  14084. +static char *yy_c_buf_p = (char *) 0;
  14085. +static int yy_init = 0; /* whether we need to initialize */
  14086. +static int yy_start = 0; /* start state number */
  14087. +
  14088. +/* Flag which is used to allow zconfwrap()'s to do buffer switches
  14089. + * instead of setting up a fresh zconfin. A bit of a hack ...
  14090. + */
  14091. +static int yy_did_buffer_switch_on_eof;
  14092. +
  14093. +void zconfrestart (FILE *input_file );
  14094. +void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
  14095. +YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
  14096. +void zconf_delete_buffer (YY_BUFFER_STATE b );
  14097. +void zconf_flush_buffer (YY_BUFFER_STATE b );
  14098. +void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
  14099. +void zconfpop_buffer_state (void );
  14100. +
  14101. +static void zconfensure_buffer_stack (void );
  14102. +static void zconf_load_buffer_state (void );
  14103. +static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
  14104. +
  14105. +#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
  14106. +
  14107. +YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
  14108. +YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
  14109. +YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
  14110. +
  14111. +void *zconfalloc (yy_size_t );
  14112. +void *zconfrealloc (void *,yy_size_t );
  14113. +void zconffree (void * );
  14114. +
  14115. +#define yy_new_buffer zconf_create_buffer
  14116. +
  14117. +#define yy_set_interactive(is_interactive) \
  14118. + { \
  14119. + if ( ! YY_CURRENT_BUFFER ){ \
  14120. + zconfensure_buffer_stack (); \
  14121. + YY_CURRENT_BUFFER_LVALUE = \
  14122. + zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
  14123. + } \
  14124. + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
  14125. + }
  14126. +
  14127. +#define yy_set_bol(at_bol) \
  14128. + { \
  14129. + if ( ! YY_CURRENT_BUFFER ){\
  14130. + zconfensure_buffer_stack (); \
  14131. + YY_CURRENT_BUFFER_LVALUE = \
  14132. + zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
  14133. + } \
  14134. + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
  14135. + }
  14136. +
  14137. +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
  14138. +
  14139. +/* Begin user sect3 */
  14140. +
  14141. +#define zconfwrap(n) 1
  14142. +#define YY_SKIP_YYWRAP
  14143. +
  14144. +typedef unsigned char YY_CHAR;
  14145. +
  14146. +FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
  14147. +
  14148. +typedef int yy_state_type;
  14149. +
  14150. +extern int zconflineno;
  14151. +
  14152. +int zconflineno = 1;
  14153. +
  14154. +extern char *zconftext;
  14155. +#define yytext_ptr zconftext
  14156. +static yyconst flex_int16_t yy_nxt[][17] =
  14157. + {
  14158. + {
  14159. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14160. + 0, 0, 0, 0, 0, 0, 0
  14161. + },
  14162. +
  14163. + {
  14164. + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
  14165. + 12, 12, 12, 12, 12, 12, 12
  14166. + },
  14167. +
  14168. + {
  14169. + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
  14170. + 12, 12, 12, 12, 12, 12, 12
  14171. + },
  14172. +
  14173. + {
  14174. + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
  14175. + 16, 16, 16, 18, 16, 16, 16
  14176. + },
  14177. +
  14178. + {
  14179. + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
  14180. + 16, 16, 16, 18, 16, 16, 16
  14181. +
  14182. + },
  14183. +
  14184. + {
  14185. + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
  14186. + 19, 19, 19, 19, 19, 19, 19
  14187. + },
  14188. +
  14189. + {
  14190. + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
  14191. + 19, 19, 19, 19, 19, 19, 19
  14192. + },
  14193. +
  14194. + {
  14195. + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
  14196. + 22, 22, 22, 22, 22, 25, 22
  14197. + },
  14198. +
  14199. + {
  14200. + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
  14201. + 22, 22, 22, 22, 22, 25, 22
  14202. + },
  14203. +
  14204. + {
  14205. + 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
  14206. + 33, 34, 35, 35, 36, 37, 38
  14207. +
  14208. + },
  14209. +
  14210. + {
  14211. + 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
  14212. + 33, 34, 35, 35, 36, 37, 38
  14213. + },
  14214. +
  14215. + {
  14216. + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
  14217. + -11, -11, -11, -11, -11, -11, -11
  14218. + },
  14219. +
  14220. + {
  14221. + 11, -12, -12, -12, -12, -12, -12, -12, -12, -12,
  14222. + -12, -12, -12, -12, -12, -12, -12
  14223. + },
  14224. +
  14225. + {
  14226. + 11, -13, 39, 40, -13, -13, 41, -13, -13, -13,
  14227. + -13, -13, -13, -13, -13, -13, -13
  14228. + },
  14229. +
  14230. + {
  14231. + 11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
  14232. + -14, -14, -14, -14, -14, -14, -14
  14233. +
  14234. + },
  14235. +
  14236. + {
  14237. + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
  14238. + 42, 42, 42, 42, 42, 42, 42
  14239. + },
  14240. +
  14241. + {
  14242. + 11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
  14243. + -16, -16, -16, -16, -16, -16, -16
  14244. + },
  14245. +
  14246. + {
  14247. + 11, -17, -17, -17, -17, -17, -17, -17, -17, -17,
  14248. + -17, -17, -17, -17, -17, -17, -17
  14249. + },
  14250. +
  14251. + {
  14252. + 11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
  14253. + -18, -18, -18, 44, -18, -18, -18
  14254. + },
  14255. +
  14256. + {
  14257. + 11, 45, 45, -19, 45, 45, 45, 45, 45, 45,
  14258. + 45, 45, 45, 45, 45, 45, 45
  14259. +
  14260. + },
  14261. +
  14262. + {
  14263. + 11, -20, 46, 47, -20, -20, -20, -20, -20, -20,
  14264. + -20, -20, -20, -20, -20, -20, -20
  14265. + },
  14266. +
  14267. + {
  14268. + 11, 48, -21, -21, 48, 48, 48, 48, 48, 48,
  14269. + 48, 48, 48, 48, 48, 48, 48
  14270. + },
  14271. +
  14272. + {
  14273. + 11, 49, 49, 50, 49, -22, 49, 49, -22, 49,
  14274. + 49, 49, 49, 49, 49, -22, 49
  14275. + },
  14276. +
  14277. + {
  14278. + 11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
  14279. + -23, -23, -23, -23, -23, -23, -23
  14280. + },
  14281. +
  14282. + {
  14283. + 11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
  14284. + -24, -24, -24, -24, -24, -24, -24
  14285. +
  14286. + },
  14287. +
  14288. + {
  14289. + 11, 51, 51, 52, 51, 51, 51, 51, 51, 51,
  14290. + 51, 51, 51, 51, 51, 51, 51
  14291. + },
  14292. +
  14293. + {
  14294. + 11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
  14295. + -26, -26, -26, -26, -26, -26, -26
  14296. + },
  14297. +
  14298. + {
  14299. + 11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
  14300. + -27, -27, -27, -27, -27, -27, -27
  14301. + },
  14302. +
  14303. + {
  14304. + 11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
  14305. + -28, -28, -28, -28, 53, -28, -28
  14306. + },
  14307. +
  14308. + {
  14309. + 11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
  14310. + -29, -29, -29, -29, -29, -29, -29
  14311. +
  14312. + },
  14313. +
  14314. + {
  14315. + 11, 54, 54, -30, 54, 54, 54, 54, 54, 54,
  14316. + 54, 54, 54, 54, 54, 54, 54
  14317. + },
  14318. +
  14319. + {
  14320. + 11, -31, -31, -31, -31, -31, -31, 55, -31, -31,
  14321. + -31, -31, -31, -31, -31, -31, -31
  14322. + },
  14323. +
  14324. + {
  14325. + 11, -32, -32, -32, -32, -32, -32, -32, -32, -32,
  14326. + -32, -32, -32, -32, -32, -32, -32
  14327. + },
  14328. +
  14329. + {
  14330. + 11, -33, -33, -33, -33, -33, -33, -33, -33, -33,
  14331. + -33, -33, -33, -33, -33, -33, -33
  14332. + },
  14333. +
  14334. + {
  14335. + 11, -34, -34, -34, -34, -34, -34, -34, -34, -34,
  14336. + -34, 56, 57, 57, -34, -34, -34
  14337. +
  14338. + },
  14339. +
  14340. + {
  14341. + 11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
  14342. + -35, 57, 57, 57, -35, -35, -35
  14343. + },
  14344. +
  14345. + {
  14346. + 11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
  14347. + -36, -36, -36, -36, -36, -36, -36
  14348. + },
  14349. +
  14350. + {
  14351. + 11, -37, -37, 58, -37, -37, -37, -37, -37, -37,
  14352. + -37, -37, -37, -37, -37, -37, -37
  14353. + },
  14354. +
  14355. + {
  14356. + 11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
  14357. + -38, -38, -38, -38, -38, -38, 59
  14358. + },
  14359. +
  14360. + {
  14361. + 11, -39, 39, 40, -39, -39, 41, -39, -39, -39,
  14362. + -39, -39, -39, -39, -39, -39, -39
  14363. +
  14364. + },
  14365. +
  14366. + {
  14367. + 11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
  14368. + -40, -40, -40, -40, -40, -40, -40
  14369. + },
  14370. +
  14371. + {
  14372. + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
  14373. + 42, 42, 42, 42, 42, 42, 42
  14374. + },
  14375. +
  14376. + {
  14377. + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
  14378. + 42, 42, 42, 42, 42, 42, 42
  14379. + },
  14380. +
  14381. + {
  14382. + 11, -43, -43, -43, -43, -43, -43, -43, -43, -43,
  14383. + -43, -43, -43, -43, -43, -43, -43
  14384. + },
  14385. +
  14386. + {
  14387. + 11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
  14388. + -44, -44, -44, 44, -44, -44, -44
  14389. +
  14390. + },
  14391. +
  14392. + {
  14393. + 11, 45, 45, -45, 45, 45, 45, 45, 45, 45,
  14394. + 45, 45, 45, 45, 45, 45, 45
  14395. + },
  14396. +
  14397. + {
  14398. + 11, -46, 46, 47, -46, -46, -46, -46, -46, -46,
  14399. + -46, -46, -46, -46, -46, -46, -46
  14400. + },
  14401. +
  14402. + {
  14403. + 11, 48, -47, -47, 48, 48, 48, 48, 48, 48,
  14404. + 48, 48, 48, 48, 48, 48, 48
  14405. + },
  14406. +
  14407. + {
  14408. + 11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
  14409. + -48, -48, -48, -48, -48, -48, -48
  14410. + },
  14411. +
  14412. + {
  14413. + 11, 49, 49, 50, 49, -49, 49, 49, -49, 49,
  14414. + 49, 49, 49, 49, 49, -49, 49
  14415. +
  14416. + },
  14417. +
  14418. + {
  14419. + 11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
  14420. + -50, -50, -50, -50, -50, -50, -50
  14421. + },
  14422. +
  14423. + {
  14424. + 11, -51, -51, 52, -51, -51, -51, -51, -51, -51,
  14425. + -51, -51, -51, -51, -51, -51, -51
  14426. + },
  14427. +
  14428. + {
  14429. + 11, -52, -52, -52, -52, -52, -52, -52, -52, -52,
  14430. + -52, -52, -52, -52, -52, -52, -52
  14431. + },
  14432. +
  14433. + {
  14434. + 11, -53, -53, -53, -53, -53, -53, -53, -53, -53,
  14435. + -53, -53, -53, -53, -53, -53, -53
  14436. + },
  14437. +
  14438. + {
  14439. + 11, 54, 54, -54, 54, 54, 54, 54, 54, 54,
  14440. + 54, 54, 54, 54, 54, 54, 54
  14441. +
  14442. + },
  14443. +
  14444. + {
  14445. + 11, -55, -55, -55, -55, -55, -55, -55, -55, -55,
  14446. + -55, -55, -55, -55, -55, -55, -55
  14447. + },
  14448. +
  14449. + {
  14450. + 11, -56, -56, -56, -56, -56, -56, -56, -56, -56,
  14451. + -56, 60, 57, 57, -56, -56, -56
  14452. + },
  14453. +
  14454. + {
  14455. + 11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
  14456. + -57, 57, 57, 57, -57, -57, -57
  14457. + },
  14458. +
  14459. + {
  14460. + 11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
  14461. + -58, -58, -58, -58, -58, -58, -58
  14462. + },
  14463. +
  14464. + {
  14465. + 11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
  14466. + -59, -59, -59, -59, -59, -59, -59
  14467. +
  14468. + },
  14469. +
  14470. + {
  14471. + 11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
  14472. + -60, 57, 57, 57, -60, -60, -60
  14473. + },
  14474. +
  14475. + } ;
  14476. +
  14477. +static yy_state_type yy_get_previous_state (void );
  14478. +static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
  14479. +static int yy_get_next_buffer (void );
  14480. +static void yy_fatal_error (yyconst char msg[] );
  14481. +
  14482. +/* Done after the current pattern has been matched and before the
  14483. + * corresponding action - sets up zconftext.
  14484. + */
  14485. +#define YY_DO_BEFORE_ACTION \
  14486. + (yytext_ptr) = yy_bp; \
  14487. + zconfleng = (size_t) (yy_cp - yy_bp); \
  14488. + (yy_hold_char) = *yy_cp; \
  14489. + *yy_cp = '\0'; \
  14490. + (yy_c_buf_p) = yy_cp;
  14491. +
  14492. +#define YY_NUM_RULES 33
  14493. +#define YY_END_OF_BUFFER 34
  14494. +/* This struct is not used in this scanner,
  14495. + but its presence is necessary. */
  14496. +struct yy_trans_info
  14497. + {
  14498. + flex_int32_t yy_verify;
  14499. + flex_int32_t yy_nxt;
  14500. + };
  14501. +static yyconst flex_int16_t yy_accept[61] =
  14502. + { 0,
  14503. + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  14504. + 34, 5, 4, 2, 3, 7, 8, 6, 32, 29,
  14505. + 31, 24, 28, 27, 26, 22, 17, 13, 16, 20,
  14506. + 22, 11, 12, 19, 19, 14, 22, 22, 4, 2,
  14507. + 3, 3, 1, 6, 32, 29, 31, 30, 24, 23,
  14508. + 26, 25, 15, 20, 9, 19, 19, 21, 10, 18
  14509. + } ;
  14510. +
  14511. +static yyconst flex_int32_t yy_ec[256] =
  14512. + { 0,
  14513. + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
  14514. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14515. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14516. + 1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
  14517. + 10, 1, 1, 1, 11, 12, 12, 13, 13, 13,
  14518. + 13, 13, 13, 13, 13, 13, 13, 1, 1, 1,
  14519. + 14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
  14520. + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  14521. + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  14522. + 1, 15, 1, 1, 13, 1, 13, 13, 13, 13,
  14523. +
  14524. + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  14525. + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
  14526. + 13, 13, 1, 16, 1, 1, 1, 1, 1, 1,
  14527. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14528. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14529. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14530. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14531. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14532. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14533. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14534. +
  14535. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14536. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14537. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14538. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14539. + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  14540. + 1, 1, 1, 1, 1
  14541. + } ;
  14542. +
  14543. +extern int zconf_flex_debug;
  14544. +int zconf_flex_debug = 0;
  14545. +
  14546. +/* The intent behind this definition is that it'll catch
  14547. + * any uses of REJECT which flex missed.
  14548. + */
  14549. +#define REJECT reject_used_but_not_detected
  14550. +#define yymore() yymore_used_but_not_detected
  14551. +#define YY_MORE_ADJ 0
  14552. +#define YY_RESTORE_YY_MORE_OFFSET
  14553. +char *zconftext;
  14554. +#define YY_NO_INPUT 1
  14555. +
  14556. +/*
  14557. + * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  14558. + * Released under the terms of the GNU GPL v2.0.
  14559. + */
  14560. +
  14561. +#include <limits.h>
  14562. +#include <stdio.h>
  14563. +#include <stdlib.h>
  14564. +#include <string.h>
  14565. +#include <unistd.h>
  14566. +
  14567. +#include "lkc.h"
  14568. +
  14569. +#define START_STRSIZE 16
  14570. +
  14571. +static struct {
  14572. + struct file *file;
  14573. + int lineno;
  14574. +} current_pos;
  14575. +
  14576. +static char *text;
  14577. +static int text_size, text_asize;
  14578. +
  14579. +struct buffer {
  14580. + struct buffer *parent;
  14581. + YY_BUFFER_STATE state;
  14582. +};
  14583. +
  14584. +struct buffer *current_buf;
  14585. +
  14586. +static int last_ts, first_ts;
  14587. +
  14588. +static void zconf_endhelp(void);
  14589. +static void zconf_endfile(void);
  14590. +
  14591. +static void new_string(void)
  14592. +{
  14593. + text = xmalloc(START_STRSIZE);
  14594. + text_asize = START_STRSIZE;
  14595. + text_size = 0;
  14596. + *text = 0;
  14597. +}
  14598. +
  14599. +static void append_string(const char *str, int size)
  14600. +{
  14601. + int new_size = text_size + size + 1;
  14602. + if (new_size > text_asize) {
  14603. + new_size += START_STRSIZE - 1;
  14604. + new_size &= -START_STRSIZE;
  14605. + text = realloc(text, new_size);
  14606. + text_asize = new_size;
  14607. + }
  14608. + memcpy(text + text_size, str, size);
  14609. + text_size += size;
  14610. + text[text_size] = 0;
  14611. +}
  14612. +
  14613. +static void alloc_string(const char *str, int size)
  14614. +{
  14615. + text = xmalloc(size + 1);
  14616. + memcpy(text, str, size);
  14617. + text[size] = 0;
  14618. +}
  14619. +
  14620. +#define INITIAL 0
  14621. +#define COMMAND 1
  14622. +#define HELP 2
  14623. +#define STRING 3
  14624. +#define PARAM 4
  14625. +
  14626. +#ifndef YY_NO_UNISTD_H
  14627. +/* Special case for "unistd.h", since it is non-ANSI. We include it way
  14628. + * down here because we want the user's section 1 to have been scanned first.
  14629. + * The user has a chance to override it with an option.
  14630. + */
  14631. +#include <unistd.h>
  14632. +#endif
  14633. +
  14634. +#ifndef YY_EXTRA_TYPE
  14635. +#define YY_EXTRA_TYPE void *
  14636. +#endif
  14637. +
  14638. +static int yy_init_globals (void );
  14639. +
  14640. +/* Accessor methods to globals.
  14641. + These are made visible to non-reentrant scanners for convenience. */
  14642. +
  14643. +int zconflex_destroy (void );
  14644. +
  14645. +int zconfget_debug (void );
  14646. +
  14647. +void zconfset_debug (int debug_flag );
  14648. +
  14649. +YY_EXTRA_TYPE zconfget_extra (void );
  14650. +
  14651. +void zconfset_extra (YY_EXTRA_TYPE user_defined );
  14652. +
  14653. +FILE *zconfget_in (void );
  14654. +
  14655. +void zconfset_in (FILE * in_str );
  14656. +
  14657. +FILE *zconfget_out (void );
  14658. +
  14659. +void zconfset_out (FILE * out_str );
  14660. +
  14661. +int zconfget_leng (void );
  14662. +
  14663. +char *zconfget_text (void );
  14664. +
  14665. +int zconfget_lineno (void );
  14666. +
  14667. +void zconfset_lineno (int line_number );
  14668. +
  14669. +/* Macros after this point can all be overridden by user definitions in
  14670. + * section 1.
  14671. + */
  14672. +
  14673. +#ifndef YY_SKIP_YYWRAP
  14674. +#ifdef __cplusplus
  14675. +extern "C" int zconfwrap (void );
  14676. +#else
  14677. +extern int zconfwrap (void );
  14678. +#endif
  14679. +#endif
  14680. +
  14681. + static void yyunput (int c,char *buf_ptr );
  14682. +
  14683. +#ifndef yytext_ptr
  14684. +static void yy_flex_strncpy (char *,yyconst char *,int );
  14685. +#endif
  14686. +
  14687. +#ifdef YY_NEED_STRLEN
  14688. +static int yy_flex_strlen (yyconst char * );
  14689. +#endif
  14690. +
  14691. +#ifndef YY_NO_INPUT
  14692. +
  14693. +#ifdef __cplusplus
  14694. +static int yyinput (void );
  14695. +#else
  14696. +static int input (void );
  14697. +#endif
  14698. +
  14699. +#endif
  14700. +
  14701. +/* Amount of stuff to slurp up with each read. */
  14702. +#ifndef YY_READ_BUF_SIZE
  14703. +#define YY_READ_BUF_SIZE 8192
  14704. +#endif
  14705. +
  14706. +/* Copy whatever the last rule matched to the standard output. */
  14707. +#ifndef ECHO
  14708. +/* This used to be an fputs(), but since the string might contain NUL's,
  14709. + * we now use fwrite().
  14710. + */
  14711. +#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0)
  14712. +#endif
  14713. +
  14714. +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
  14715. + * is returned in "result".
  14716. + */
  14717. +#ifndef YY_INPUT
  14718. +#define YY_INPUT(buf,result,max_size) \
  14719. + errno=0; \
  14720. + while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
  14721. + { \
  14722. + if( errno != EINTR) \
  14723. + { \
  14724. + YY_FATAL_ERROR( "input in flex scanner failed" ); \
  14725. + break; \
  14726. + } \
  14727. + errno=0; \
  14728. + clearerr(zconfin); \
  14729. + }\
  14730. +\
  14731. +
  14732. +#endif
  14733. +
  14734. +/* No semi-colon after return; correct usage is to write "yyterminate();" -
  14735. + * we don't want an extra ';' after the "return" because that will cause
  14736. + * some compilers to complain about unreachable statements.
  14737. + */
  14738. +#ifndef yyterminate
  14739. +#define yyterminate() return YY_NULL
  14740. +#endif
  14741. +
  14742. +/* Number of entries by which start-condition stack grows. */
  14743. +#ifndef YY_START_STACK_INCR
  14744. +#define YY_START_STACK_INCR 25
  14745. +#endif
  14746. +
  14747. +/* Report a fatal error. */
  14748. +#ifndef YY_FATAL_ERROR
  14749. +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
  14750. +#endif
  14751. +
  14752. +/* end tables serialization structures and prototypes */
  14753. +
  14754. +/* Default declaration of generated scanner - a define so the user can
  14755. + * easily add parameters.
  14756. + */
  14757. +#ifndef YY_DECL
  14758. +#define YY_DECL_IS_OURS 1
  14759. +
  14760. +extern int zconflex (void);
  14761. +
  14762. +#define YY_DECL int zconflex (void)
  14763. +#endif /* !YY_DECL */
  14764. +
  14765. +/* Code executed at the beginning of each rule, after zconftext and zconfleng
  14766. + * have been set up.
  14767. + */
  14768. +#ifndef YY_USER_ACTION
  14769. +#define YY_USER_ACTION
  14770. +#endif
  14771. +
  14772. +/* Code executed at the end of each rule. */
  14773. +#ifndef YY_BREAK
  14774. +#define YY_BREAK break;
  14775. +#endif
  14776. +
  14777. +#define YY_RULE_SETUP \
  14778. + YY_USER_ACTION
  14779. +
  14780. +/** The main scanner function which does all the work.
  14781. + */
  14782. +YY_DECL
  14783. +{
  14784. + register yy_state_type yy_current_state;
  14785. + register char *yy_cp, *yy_bp;
  14786. + register int yy_act;
  14787. +
  14788. + int str = 0;
  14789. + int ts, i;
  14790. +
  14791. + if ( !(yy_init) )
  14792. + {
  14793. + (yy_init) = 1;
  14794. +
  14795. +#ifdef YY_USER_INIT
  14796. + YY_USER_INIT;
  14797. +#endif
  14798. +
  14799. + if ( ! (yy_start) )
  14800. + (yy_start) = 1; /* first start state */
  14801. +
  14802. + if ( ! zconfin )
  14803. + zconfin = stdin;
  14804. +
  14805. + if ( ! zconfout )
  14806. + zconfout = stdout;
  14807. +
  14808. + if ( ! YY_CURRENT_BUFFER ) {
  14809. + zconfensure_buffer_stack ();
  14810. + YY_CURRENT_BUFFER_LVALUE =
  14811. + zconf_create_buffer(zconfin,YY_BUF_SIZE );
  14812. + }
  14813. +
  14814. + zconf_load_buffer_state( );
  14815. + }
  14816. +
  14817. + while ( 1 ) /* loops until end-of-file is reached */
  14818. + {
  14819. + yy_cp = (yy_c_buf_p);
  14820. +
  14821. + /* Support of zconftext. */
  14822. + *yy_cp = (yy_hold_char);
  14823. +
  14824. + /* yy_bp points to the position in yy_ch_buf of the start of
  14825. + * the current run.
  14826. + */
  14827. + yy_bp = yy_cp;
  14828. +
  14829. + yy_current_state = (yy_start);
  14830. +yy_match:
  14831. + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
  14832. + ++yy_cp;
  14833. +
  14834. + yy_current_state = -yy_current_state;
  14835. +
  14836. +yy_find_action:
  14837. + yy_act = yy_accept[yy_current_state];
  14838. +
  14839. + YY_DO_BEFORE_ACTION;
  14840. +
  14841. +do_action: /* This label is used only to access EOF actions. */
  14842. +
  14843. + switch ( yy_act )
  14844. + { /* beginning of action switch */
  14845. +case 1:
  14846. +/* rule 1 can match eol */
  14847. +case 2:
  14848. +/* rule 2 can match eol */
  14849. +YY_RULE_SETUP
  14850. +{
  14851. + current_file->lineno++;
  14852. + return T_EOL;
  14853. +}
  14854. + YY_BREAK
  14855. +case 3:
  14856. +YY_RULE_SETUP
  14857. +
  14858. + YY_BREAK
  14859. +case 4:
  14860. +YY_RULE_SETUP
  14861. +{
  14862. + BEGIN(COMMAND);
  14863. +}
  14864. + YY_BREAK
  14865. +case 5:
  14866. +YY_RULE_SETUP
  14867. +{
  14868. + unput(zconftext[0]);
  14869. + BEGIN(COMMAND);
  14870. +}
  14871. + YY_BREAK
  14872. +
  14873. +case 6:
  14874. +YY_RULE_SETUP
  14875. +{
  14876. + const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
  14877. + BEGIN(PARAM);
  14878. + current_pos.file = current_file;
  14879. + current_pos.lineno = current_file->lineno;
  14880. + if (id && id->flags & TF_COMMAND) {
  14881. + zconflval.id = id;
  14882. + return id->token;
  14883. + }
  14884. + alloc_string(zconftext, zconfleng);
  14885. + zconflval.string = text;
  14886. + return T_WORD;
  14887. + }
  14888. + YY_BREAK
  14889. +case 7:
  14890. +YY_RULE_SETUP
  14891. +
  14892. + YY_BREAK
  14893. +case 8:
  14894. +/* rule 8 can match eol */
  14895. +YY_RULE_SETUP
  14896. +{
  14897. + BEGIN(INITIAL);
  14898. + current_file->lineno++;
  14899. + return T_EOL;
  14900. + }
  14901. + YY_BREAK
  14902. +
  14903. +case 9:
  14904. +YY_RULE_SETUP
  14905. +return T_AND;
  14906. + YY_BREAK
  14907. +case 10:
  14908. +YY_RULE_SETUP
  14909. +return T_OR;
  14910. + YY_BREAK
  14911. +case 11:
  14912. +YY_RULE_SETUP
  14913. +return T_OPEN_PAREN;
  14914. + YY_BREAK
  14915. +case 12:
  14916. +YY_RULE_SETUP
  14917. +return T_CLOSE_PAREN;
  14918. + YY_BREAK
  14919. +case 13:
  14920. +YY_RULE_SETUP
  14921. +return T_NOT;
  14922. + YY_BREAK
  14923. +case 14:
  14924. +YY_RULE_SETUP
  14925. +return T_EQUAL;
  14926. + YY_BREAK
  14927. +case 15:
  14928. +YY_RULE_SETUP
  14929. +return T_UNEQUAL;
  14930. + YY_BREAK
  14931. +case 16:
  14932. +YY_RULE_SETUP
  14933. +{
  14934. + str = zconftext[0];
  14935. + new_string();
  14936. + BEGIN(STRING);
  14937. + }
  14938. + YY_BREAK
  14939. +case 17:
  14940. +/* rule 17 can match eol */
  14941. +YY_RULE_SETUP
  14942. +BEGIN(INITIAL); current_file->lineno++; return T_EOL;
  14943. + YY_BREAK
  14944. +case 18:
  14945. +YY_RULE_SETUP
  14946. +/* ignore */
  14947. + YY_BREAK
  14948. +case 19:
  14949. +YY_RULE_SETUP
  14950. +{
  14951. + const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
  14952. + if (id && id->flags & TF_PARAM) {
  14953. + zconflval.id = id;
  14954. + return id->token;
  14955. + }
  14956. + alloc_string(zconftext, zconfleng);
  14957. + zconflval.string = text;
  14958. + return T_WORD;
  14959. + }
  14960. + YY_BREAK
  14961. +case 20:
  14962. +YY_RULE_SETUP
  14963. +/* comment */
  14964. + YY_BREAK
  14965. +case 21:
  14966. +/* rule 21 can match eol */
  14967. +YY_RULE_SETUP
  14968. +current_file->lineno++;
  14969. + YY_BREAK
  14970. +case 22:
  14971. +YY_RULE_SETUP
  14972. +
  14973. + YY_BREAK
  14974. +case YY_STATE_EOF(PARAM):
  14975. +{
  14976. + BEGIN(INITIAL);
  14977. + }
  14978. + YY_BREAK
  14979. +
  14980. +case 23:
  14981. +/* rule 23 can match eol */
  14982. +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
  14983. +(yy_c_buf_p) = yy_cp -= 1;
  14984. +YY_DO_BEFORE_ACTION; /* set up zconftext again */
  14985. +YY_RULE_SETUP
  14986. +{
  14987. + append_string(zconftext, zconfleng);
  14988. + zconflval.string = text;
  14989. + return T_WORD_QUOTE;
  14990. + }
  14991. + YY_BREAK
  14992. +case 24:
  14993. +YY_RULE_SETUP
  14994. +{
  14995. + append_string(zconftext, zconfleng);
  14996. + }
  14997. + YY_BREAK
  14998. +case 25:
  14999. +/* rule 25 can match eol */
  15000. +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
  15001. +(yy_c_buf_p) = yy_cp -= 1;
  15002. +YY_DO_BEFORE_ACTION; /* set up zconftext again */
  15003. +YY_RULE_SETUP
  15004. +{
  15005. + append_string(zconftext + 1, zconfleng - 1);
  15006. + zconflval.string = text;
  15007. + return T_WORD_QUOTE;
  15008. + }
  15009. + YY_BREAK
  15010. +case 26:
  15011. +YY_RULE_SETUP
  15012. +{
  15013. + append_string(zconftext + 1, zconfleng - 1);
  15014. + }
  15015. + YY_BREAK
  15016. +case 27:
  15017. +YY_RULE_SETUP
  15018. +{
  15019. + if (str == zconftext[0]) {
  15020. + BEGIN(PARAM);
  15021. + zconflval.string = text;
  15022. + return T_WORD_QUOTE;
  15023. + } else
  15024. + append_string(zconftext, 1);
  15025. + }
  15026. + YY_BREAK
  15027. +case 28:
  15028. +/* rule 28 can match eol */
  15029. +YY_RULE_SETUP
  15030. +{
  15031. + printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
  15032. + current_file->lineno++;
  15033. + BEGIN(INITIAL);
  15034. + return T_EOL;
  15035. + }
  15036. + YY_BREAK
  15037. +case YY_STATE_EOF(STRING):
  15038. +{
  15039. + BEGIN(INITIAL);
  15040. + }
  15041. + YY_BREAK
  15042. +
  15043. +case 29:
  15044. +YY_RULE_SETUP
  15045. +{
  15046. + ts = 0;
  15047. + for (i = 0; i < zconfleng; i++) {
  15048. + if (zconftext[i] == '\t')
  15049. + ts = (ts & ~7) + 8;
  15050. + else
  15051. + ts++;
  15052. + }
  15053. + last_ts = ts;
  15054. + if (first_ts) {
  15055. + if (ts < first_ts) {
  15056. + zconf_endhelp();
  15057. + return T_HELPTEXT;
  15058. + }
  15059. + ts -= first_ts;
  15060. + while (ts > 8) {
  15061. + append_string(" ", 8);
  15062. + ts -= 8;
  15063. + }
  15064. + append_string(" ", ts);
  15065. + }
  15066. + }
  15067. + YY_BREAK
  15068. +case 30:
  15069. +/* rule 30 can match eol */
  15070. +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
  15071. +(yy_c_buf_p) = yy_cp -= 1;
  15072. +YY_DO_BEFORE_ACTION; /* set up zconftext again */
  15073. +YY_RULE_SETUP
  15074. +{
  15075. + current_file->lineno++;
  15076. + zconf_endhelp();
  15077. + return T_HELPTEXT;
  15078. + }
  15079. + YY_BREAK
  15080. +case 31:
  15081. +/* rule 31 can match eol */
  15082. +YY_RULE_SETUP
  15083. +{
  15084. + current_file->lineno++;
  15085. + append_string("\n", 1);
  15086. + }
  15087. + YY_BREAK
  15088. +case 32:
  15089. +YY_RULE_SETUP
  15090. +{
  15091. + while (zconfleng) {
  15092. + if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
  15093. + break;
  15094. + zconfleng--;
  15095. + }
  15096. + append_string(zconftext, zconfleng);
  15097. + if (!first_ts)
  15098. + first_ts = last_ts;
  15099. + }
  15100. + YY_BREAK
  15101. +case YY_STATE_EOF(HELP):
  15102. +{
  15103. + zconf_endhelp();
  15104. + return T_HELPTEXT;
  15105. + }
  15106. + YY_BREAK
  15107. +
  15108. +case YY_STATE_EOF(INITIAL):
  15109. +case YY_STATE_EOF(COMMAND):
  15110. +{
  15111. + if (current_file) {
  15112. + zconf_endfile();
  15113. + return T_EOL;
  15114. + }
  15115. + fclose(zconfin);
  15116. + yyterminate();
  15117. +}
  15118. + YY_BREAK
  15119. +case 33:
  15120. +YY_RULE_SETUP
  15121. +YY_FATAL_ERROR( "flex scanner jammed" );
  15122. + YY_BREAK
  15123. +
  15124. + case YY_END_OF_BUFFER:
  15125. + {
  15126. + /* Amount of text matched not including the EOB char. */
  15127. + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
  15128. +
  15129. + /* Undo the effects of YY_DO_BEFORE_ACTION. */
  15130. + *yy_cp = (yy_hold_char);
  15131. + YY_RESTORE_YY_MORE_OFFSET
  15132. +
  15133. + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
  15134. + {
  15135. + /* We're scanning a new file or input source. It's
  15136. + * possible that this happened because the user
  15137. + * just pointed zconfin at a new source and called
  15138. + * zconflex(). If so, then we have to assure
  15139. + * consistency between YY_CURRENT_BUFFER and our
  15140. + * globals. Here is the right place to do so, because
  15141. + * this is the first action (other than possibly a
  15142. + * back-up) that will match for the new input source.
  15143. + */
  15144. + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  15145. + YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
  15146. + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
  15147. + }
  15148. +
  15149. + /* Note that here we test for yy_c_buf_p "<=" to the position
  15150. + * of the first EOB in the buffer, since yy_c_buf_p will
  15151. + * already have been incremented past the NUL character
  15152. + * (since all states make transitions on EOB to the
  15153. + * end-of-buffer state). Contrast this with the test
  15154. + * in input().
  15155. + */
  15156. + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
  15157. + { /* This was really a NUL. */
  15158. + yy_state_type yy_next_state;
  15159. +
  15160. + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
  15161. +
  15162. + yy_current_state = yy_get_previous_state( );
  15163. +
  15164. + /* Okay, we're now positioned to make the NUL
  15165. + * transition. We couldn't have
  15166. + * yy_get_previous_state() go ahead and do it
  15167. + * for us because it doesn't know how to deal
  15168. + * with the possibility of jamming (and we don't
  15169. + * want to build jamming into it because then it
  15170. + * will run more slowly).
  15171. + */
  15172. +
  15173. + yy_next_state = yy_try_NUL_trans( yy_current_state );
  15174. +
  15175. + yy_bp = (yytext_ptr) + YY_MORE_ADJ;
  15176. +
  15177. + if ( yy_next_state )
  15178. + {
  15179. + /* Consume the NUL. */
  15180. + yy_cp = ++(yy_c_buf_p);
  15181. + yy_current_state = yy_next_state;
  15182. + goto yy_match;
  15183. + }
  15184. +
  15185. + else
  15186. + {
  15187. + yy_cp = (yy_c_buf_p);
  15188. + goto yy_find_action;
  15189. + }
  15190. + }
  15191. +
  15192. + else switch ( yy_get_next_buffer( ) )
  15193. + {
  15194. + case EOB_ACT_END_OF_FILE:
  15195. + {
  15196. + (yy_did_buffer_switch_on_eof) = 0;
  15197. +
  15198. + if ( zconfwrap( ) )
  15199. + {
  15200. + /* Note: because we've taken care in
  15201. + * yy_get_next_buffer() to have set up
  15202. + * zconftext, we can now set up
  15203. + * yy_c_buf_p so that if some total
  15204. + * hoser (like flex itself) wants to
  15205. + * call the scanner after we return the
  15206. + * YY_NULL, it'll still work - another
  15207. + * YY_NULL will get returned.
  15208. + */
  15209. + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
  15210. +
  15211. + yy_act = YY_STATE_EOF(YY_START);
  15212. + goto do_action;
  15213. + }
  15214. +
  15215. + else
  15216. + {
  15217. + if ( ! (yy_did_buffer_switch_on_eof) )
  15218. + YY_NEW_FILE;
  15219. + }
  15220. + break;
  15221. + }
  15222. +
  15223. + case EOB_ACT_CONTINUE_SCAN:
  15224. + (yy_c_buf_p) =
  15225. + (yytext_ptr) + yy_amount_of_matched_text;
  15226. +
  15227. + yy_current_state = yy_get_previous_state( );
  15228. +
  15229. + yy_cp = (yy_c_buf_p);
  15230. + yy_bp = (yytext_ptr) + YY_MORE_ADJ;
  15231. + goto yy_match;
  15232. +
  15233. + case EOB_ACT_LAST_MATCH:
  15234. + (yy_c_buf_p) =
  15235. + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
  15236. +
  15237. + yy_current_state = yy_get_previous_state( );
  15238. +
  15239. + yy_cp = (yy_c_buf_p);
  15240. + yy_bp = (yytext_ptr) + YY_MORE_ADJ;
  15241. + goto yy_find_action;
  15242. + }
  15243. + break;
  15244. + }
  15245. +
  15246. + default:
  15247. + YY_FATAL_ERROR(
  15248. + "fatal flex scanner internal error--no action found" );
  15249. + } /* end of action switch */
  15250. + } /* end of scanning one token */
  15251. +} /* end of zconflex */
  15252. +
  15253. +/* yy_get_next_buffer - try to read in a new buffer
  15254. + *
  15255. + * Returns a code representing an action:
  15256. + * EOB_ACT_LAST_MATCH -
  15257. + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  15258. + * EOB_ACT_END_OF_FILE - end of file
  15259. + */
  15260. +static int yy_get_next_buffer (void)
  15261. +{
  15262. + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
  15263. + register char *source = (yytext_ptr);
  15264. + register int number_to_move, i;
  15265. + int ret_val;
  15266. +
  15267. + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
  15268. + YY_FATAL_ERROR(
  15269. + "fatal flex scanner internal error--end of buffer missed" );
  15270. +
  15271. + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
  15272. + { /* Don't try to fill the buffer, so this is an EOF. */
  15273. + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
  15274. + {
  15275. + /* We matched a single character, the EOB, so
  15276. + * treat this as a final EOF.
  15277. + */
  15278. + return EOB_ACT_END_OF_FILE;
  15279. + }
  15280. +
  15281. + else
  15282. + {
  15283. + /* We matched some text prior to the EOB, first
  15284. + * process it.
  15285. + */
  15286. + return EOB_ACT_LAST_MATCH;
  15287. + }
  15288. + }
  15289. +
  15290. + /* Try to read more data. */
  15291. +
  15292. + /* First move last chars to start of buffer. */
  15293. + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
  15294. +
  15295. + for ( i = 0; i < number_to_move; ++i )
  15296. + *(dest++) = *(source++);
  15297. +
  15298. + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
  15299. + /* don't do the read, it's not guaranteed to return an EOF,
  15300. + * just force an EOF
  15301. + */
  15302. + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
  15303. +
  15304. + else
  15305. + {
  15306. + int num_to_read =
  15307. + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
  15308. +
  15309. + while ( num_to_read <= 0 )
  15310. + { /* Not enough room in the buffer - grow it. */
  15311. +
  15312. + /* just a shorter name for the current buffer */
  15313. + YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
  15314. +
  15315. + int yy_c_buf_p_offset =
  15316. + (int) ((yy_c_buf_p) - b->yy_ch_buf);
  15317. +
  15318. + if ( b->yy_is_our_buffer )
  15319. + {
  15320. + int new_size = b->yy_buf_size * 2;
  15321. +
  15322. + if ( new_size <= 0 )
  15323. + b->yy_buf_size += b->yy_buf_size / 8;
  15324. + else
  15325. + b->yy_buf_size *= 2;
  15326. +
  15327. + b->yy_ch_buf = (char *)
  15328. + /* Include room in for 2 EOB chars. */
  15329. + zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
  15330. + }
  15331. + else
  15332. + /* Can't grow it, we don't own it. */
  15333. + b->yy_ch_buf = 0;
  15334. +
  15335. + if ( ! b->yy_ch_buf )
  15336. + YY_FATAL_ERROR(
  15337. + "fatal error - scanner input buffer overflow" );
  15338. +
  15339. + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
  15340. +
  15341. + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
  15342. + number_to_move - 1;
  15343. +
  15344. + }
  15345. +
  15346. + if ( num_to_read > YY_READ_BUF_SIZE )
  15347. + num_to_read = YY_READ_BUF_SIZE;
  15348. +
  15349. + /* Read in more data. */
  15350. + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
  15351. + (yy_n_chars), (size_t) num_to_read );
  15352. +
  15353. + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  15354. + }
  15355. +
  15356. + if ( (yy_n_chars) == 0 )
  15357. + {
  15358. + if ( number_to_move == YY_MORE_ADJ )
  15359. + {
  15360. + ret_val = EOB_ACT_END_OF_FILE;
  15361. + zconfrestart(zconfin );
  15362. + }
  15363. +
  15364. + else
  15365. + {
  15366. + ret_val = EOB_ACT_LAST_MATCH;
  15367. + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
  15368. + YY_BUFFER_EOF_PENDING;
  15369. + }
  15370. + }
  15371. +
  15372. + else
  15373. + ret_val = EOB_ACT_CONTINUE_SCAN;
  15374. +
  15375. + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
  15376. + /* Extend the array by 50%, plus the number we really need. */
  15377. + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
  15378. + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
  15379. + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  15380. + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
  15381. + }
  15382. +
  15383. + (yy_n_chars) += number_to_move;
  15384. + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
  15385. + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
  15386. +
  15387. + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
  15388. +
  15389. + return ret_val;
  15390. +}
  15391. +
  15392. +/* yy_get_previous_state - get the state just before the EOB char was reached */
  15393. +
  15394. + static yy_state_type yy_get_previous_state (void)
  15395. +{
  15396. + register yy_state_type yy_current_state;
  15397. + register char *yy_cp;
  15398. +
  15399. + yy_current_state = (yy_start);
  15400. +
  15401. + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
  15402. + {
  15403. + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
  15404. + }
  15405. +
  15406. + return yy_current_state;
  15407. +}
  15408. +
  15409. +/* yy_try_NUL_trans - try to make a transition on the NUL character
  15410. + *
  15411. + * synopsis
  15412. + * next_state = yy_try_NUL_trans( current_state );
  15413. + */
  15414. + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
  15415. +{
  15416. + register int yy_is_jam;
  15417. +
  15418. + yy_current_state = yy_nxt[yy_current_state][1];
  15419. + yy_is_jam = (yy_current_state <= 0);
  15420. +
  15421. + return yy_is_jam ? 0 : yy_current_state;
  15422. +}
  15423. +
  15424. + static void yyunput (int c, register char * yy_bp )
  15425. +{
  15426. + register char *yy_cp;
  15427. +
  15428. + yy_cp = (yy_c_buf_p);
  15429. +
  15430. + /* undo effects of setting up zconftext */
  15431. + *yy_cp = (yy_hold_char);
  15432. +
  15433. + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
  15434. + { /* need to shift things up to make room */
  15435. + /* +2 for EOB chars. */
  15436. + register int number_to_move = (yy_n_chars) + 2;
  15437. + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
  15438. + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
  15439. + register char *source =
  15440. + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
  15441. +
  15442. + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
  15443. + *--dest = *--source;
  15444. +
  15445. + yy_cp += (int) (dest - source);
  15446. + yy_bp += (int) (dest - source);
  15447. + YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
  15448. + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
  15449. +
  15450. + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
  15451. + YY_FATAL_ERROR( "flex scanner push-back overflow" );
  15452. + }
  15453. +
  15454. + *--yy_cp = (char) c;
  15455. +
  15456. + (yytext_ptr) = yy_bp;
  15457. + (yy_hold_char) = *yy_cp;
  15458. + (yy_c_buf_p) = yy_cp;
  15459. +}
  15460. +
  15461. +#ifndef YY_NO_INPUT
  15462. +#ifdef __cplusplus
  15463. + static int yyinput (void)
  15464. +#else
  15465. + static int input (void)
  15466. +#endif
  15467. +
  15468. +{
  15469. + int c;
  15470. +
  15471. + *(yy_c_buf_p) = (yy_hold_char);
  15472. +
  15473. + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
  15474. + {
  15475. + /* yy_c_buf_p now points to the character we want to return.
  15476. + * If this occurs *before* the EOB characters, then it's a
  15477. + * valid NUL; if not, then we've hit the end of the buffer.
  15478. + */
  15479. + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
  15480. + /* This was really a NUL. */
  15481. + *(yy_c_buf_p) = '\0';
  15482. +
  15483. + else
  15484. + { /* need more input */
  15485. + int offset = (yy_c_buf_p) - (yytext_ptr);
  15486. + ++(yy_c_buf_p);
  15487. +
  15488. + switch ( yy_get_next_buffer( ) )
  15489. + {
  15490. + case EOB_ACT_LAST_MATCH:
  15491. + /* This happens because yy_g_n_b()
  15492. + * sees that we've accumulated a
  15493. + * token and flags that we need to
  15494. + * try matching the token before
  15495. + * proceeding. But for input(),
  15496. + * there's no matching to consider.
  15497. + * So convert the EOB_ACT_LAST_MATCH
  15498. + * to EOB_ACT_END_OF_FILE.
  15499. + */
  15500. +
  15501. + /* Reset buffer status. */
  15502. + zconfrestart(zconfin );
  15503. +
  15504. + /*FALLTHROUGH*/
  15505. +
  15506. + case EOB_ACT_END_OF_FILE:
  15507. + {
  15508. + if ( zconfwrap( ) )
  15509. + return EOF;
  15510. +
  15511. + if ( ! (yy_did_buffer_switch_on_eof) )
  15512. + YY_NEW_FILE;
  15513. +#ifdef __cplusplus
  15514. + return yyinput();
  15515. +#else
  15516. + return input();
  15517. +#endif
  15518. + }
  15519. +
  15520. + case EOB_ACT_CONTINUE_SCAN:
  15521. + (yy_c_buf_p) = (yytext_ptr) + offset;
  15522. + break;
  15523. + }
  15524. + }
  15525. + }
  15526. +
  15527. + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
  15528. + *(yy_c_buf_p) = '\0'; /* preserve zconftext */
  15529. + (yy_hold_char) = *++(yy_c_buf_p);
  15530. +
  15531. + return c;
  15532. +}
  15533. +#endif /* ifndef YY_NO_INPUT */
  15534. +
  15535. +/** Immediately switch to a different input stream.
  15536. + * @param input_file A readable stream.
  15537. + *
  15538. + * @note This function does not reset the start condition to @c INITIAL .
  15539. + */
  15540. + void zconfrestart (FILE * input_file )
  15541. +{
  15542. +
  15543. + if ( ! YY_CURRENT_BUFFER ){
  15544. + zconfensure_buffer_stack ();
  15545. + YY_CURRENT_BUFFER_LVALUE =
  15546. + zconf_create_buffer(zconfin,YY_BUF_SIZE );
  15547. + }
  15548. +
  15549. + zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
  15550. + zconf_load_buffer_state( );
  15551. +}
  15552. +
  15553. +/** Switch to a different input buffer.
  15554. + * @param new_buffer The new input buffer.
  15555. + *
  15556. + */
  15557. + void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
  15558. +{
  15559. +
  15560. + /* TODO. We should be able to replace this entire function body
  15561. + * with
  15562. + * zconfpop_buffer_state();
  15563. + * zconfpush_buffer_state(new_buffer);
  15564. + */
  15565. + zconfensure_buffer_stack ();
  15566. + if ( YY_CURRENT_BUFFER == new_buffer )
  15567. + return;
  15568. +
  15569. + if ( YY_CURRENT_BUFFER )
  15570. + {
  15571. + /* Flush out information for old buffer. */
  15572. + *(yy_c_buf_p) = (yy_hold_char);
  15573. + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
  15574. + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  15575. + }
  15576. +
  15577. + YY_CURRENT_BUFFER_LVALUE = new_buffer;
  15578. + zconf_load_buffer_state( );
  15579. +
  15580. + /* We don't actually know whether we did this switch during
  15581. + * EOF (zconfwrap()) processing, but the only time this flag
  15582. + * is looked at is after zconfwrap() is called, so it's safe
  15583. + * to go ahead and always set it.
  15584. + */
  15585. + (yy_did_buffer_switch_on_eof) = 1;
  15586. +}
  15587. +
  15588. +static void zconf_load_buffer_state (void)
  15589. +{
  15590. + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
  15591. + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
  15592. + zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
  15593. + (yy_hold_char) = *(yy_c_buf_p);
  15594. +}
  15595. +
  15596. +/** Allocate and initialize an input buffer state.
  15597. + * @param file A readable stream.
  15598. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
  15599. + *
  15600. + * @return the allocated buffer state.
  15601. + */
  15602. + YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
  15603. +{
  15604. + YY_BUFFER_STATE b;
  15605. +
  15606. + b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
  15607. + if ( ! b )
  15608. + YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
  15609. +
  15610. + b->yy_buf_size = size;
  15611. +
  15612. + /* yy_ch_buf has to be 2 characters longer than the size given because
  15613. + * we need to put in 2 end-of-buffer characters.
  15614. + */
  15615. + b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
  15616. + if ( ! b->yy_ch_buf )
  15617. + YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
  15618. +
  15619. + b->yy_is_our_buffer = 1;
  15620. +
  15621. + zconf_init_buffer(b,file );
  15622. +
  15623. + return b;
  15624. +}
  15625. +
  15626. +/** Destroy the buffer.
  15627. + * @param b a buffer created with zconf_create_buffer()
  15628. + *
  15629. + */
  15630. + void zconf_delete_buffer (YY_BUFFER_STATE b )
  15631. +{
  15632. +
  15633. + if ( ! b )
  15634. + return;
  15635. +
  15636. + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
  15637. + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
  15638. +
  15639. + if ( b->yy_is_our_buffer )
  15640. + zconffree((void *) b->yy_ch_buf );
  15641. +
  15642. + zconffree((void *) b );
  15643. +}
  15644. +
  15645. +/* Initializes or reinitializes a buffer.
  15646. + * This function is sometimes called more than once on the same buffer,
  15647. + * such as during a zconfrestart() or at EOF.
  15648. + */
  15649. + static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
  15650. +
  15651. +{
  15652. + int oerrno = errno;
  15653. +
  15654. + zconf_flush_buffer(b );
  15655. +
  15656. + b->yy_input_file = file;
  15657. + b->yy_fill_buffer = 1;
  15658. +
  15659. + /* If b is the current buffer, then zconf_init_buffer was _probably_
  15660. + * called from zconfrestart() or through yy_get_next_buffer.
  15661. + * In that case, we don't want to reset the lineno or column.
  15662. + */
  15663. + if (b != YY_CURRENT_BUFFER){
  15664. + b->yy_bs_lineno = 1;
  15665. + b->yy_bs_column = 0;
  15666. + }
  15667. +
  15668. + b->yy_is_interactive = 0;
  15669. +
  15670. + errno = oerrno;
  15671. +}
  15672. +
  15673. +/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
  15674. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  15675. + *
  15676. + */
  15677. + void zconf_flush_buffer (YY_BUFFER_STATE b )
  15678. +{
  15679. + if ( ! b )
  15680. + return;
  15681. +
  15682. + b->yy_n_chars = 0;
  15683. +
  15684. + /* We always need two end-of-buffer characters. The first causes
  15685. + * a transition to the end-of-buffer state. The second causes
  15686. + * a jam in that state.
  15687. + */
  15688. + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
  15689. + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  15690. +
  15691. + b->yy_buf_pos = &b->yy_ch_buf[0];
  15692. +
  15693. + b->yy_at_bol = 1;
  15694. + b->yy_buffer_status = YY_BUFFER_NEW;
  15695. +
  15696. + if ( b == YY_CURRENT_BUFFER )
  15697. + zconf_load_buffer_state( );
  15698. +}
  15699. +
  15700. +/** Pushes the new state onto the stack. The new state becomes
  15701. + * the current state. This function will allocate the stack
  15702. + * if necessary.
  15703. + * @param new_buffer The new state.
  15704. + *
  15705. + */
  15706. +void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
  15707. +{
  15708. + if (new_buffer == NULL)
  15709. + return;
  15710. +
  15711. + zconfensure_buffer_stack();
  15712. +
  15713. + /* This block is copied from zconf_switch_to_buffer. */
  15714. + if ( YY_CURRENT_BUFFER )
  15715. + {
  15716. + /* Flush out information for old buffer. */
  15717. + *(yy_c_buf_p) = (yy_hold_char);
  15718. + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
  15719. + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
  15720. + }
  15721. +
  15722. + /* Only push if top exists. Otherwise, replace top. */
  15723. + if (YY_CURRENT_BUFFER)
  15724. + (yy_buffer_stack_top)++;
  15725. + YY_CURRENT_BUFFER_LVALUE = new_buffer;
  15726. +
  15727. + /* copied from zconf_switch_to_buffer. */
  15728. + zconf_load_buffer_state( );
  15729. + (yy_did_buffer_switch_on_eof) = 1;
  15730. +}
  15731. +
  15732. +/** Removes and deletes the top of the stack, if present.
  15733. + * The next element becomes the new top.
  15734. + *
  15735. + */
  15736. +void zconfpop_buffer_state (void)
  15737. +{
  15738. + if (!YY_CURRENT_BUFFER)
  15739. + return;
  15740. +
  15741. + zconf_delete_buffer(YY_CURRENT_BUFFER );
  15742. + YY_CURRENT_BUFFER_LVALUE = NULL;
  15743. + if ((yy_buffer_stack_top) > 0)
  15744. + --(yy_buffer_stack_top);
  15745. +
  15746. + if (YY_CURRENT_BUFFER) {
  15747. + zconf_load_buffer_state( );
  15748. + (yy_did_buffer_switch_on_eof) = 1;
  15749. + }
  15750. +}
  15751. +
  15752. +/* Allocates the stack if it does not exist.
  15753. + * Guarantees space for at least one push.
  15754. + */
  15755. +static void zconfensure_buffer_stack (void)
  15756. +{
  15757. + int num_to_alloc;
  15758. +
  15759. + if (!(yy_buffer_stack)) {
  15760. +
  15761. + /* First allocation is just for 2 elements, since we don't know if this
  15762. + * scanner will even need a stack. We use 2 instead of 1 to avoid an
  15763. + * immediate realloc on the next call.
  15764. + */
  15765. + num_to_alloc = 1;
  15766. + (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
  15767. + (num_to_alloc * sizeof(struct yy_buffer_state*)
  15768. + );
  15769. + if ( ! (yy_buffer_stack) )
  15770. + YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
  15771. +
  15772. + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
  15773. +
  15774. + (yy_buffer_stack_max) = num_to_alloc;
  15775. + (yy_buffer_stack_top) = 0;
  15776. + return;
  15777. + }
  15778. +
  15779. + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
  15780. +
  15781. + /* Increase the buffer to prepare for a possible push. */
  15782. + int grow_size = 8 /* arbitrary grow size */;
  15783. +
  15784. + num_to_alloc = (yy_buffer_stack_max) + grow_size;
  15785. + (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
  15786. + ((yy_buffer_stack),
  15787. + num_to_alloc * sizeof(struct yy_buffer_state*)
  15788. + );
  15789. + if ( ! (yy_buffer_stack) )
  15790. + YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
  15791. +
  15792. + /* zero only the new slots.*/
  15793. + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
  15794. + (yy_buffer_stack_max) = num_to_alloc;
  15795. + }
  15796. +}
  15797. +
  15798. +/** Setup the input buffer state to scan directly from a user-specified character buffer.
  15799. + * @param base the character buffer
  15800. + * @param size the size in bytes of the character buffer
  15801. + *
  15802. + * @return the newly allocated buffer state object.
  15803. + */
  15804. +YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
  15805. +{
  15806. + YY_BUFFER_STATE b;
  15807. +
  15808. + if ( size < 2 ||
  15809. + base[size-2] != YY_END_OF_BUFFER_CHAR ||
  15810. + base[size-1] != YY_END_OF_BUFFER_CHAR )
  15811. + /* They forgot to leave room for the EOB's. */
  15812. + return 0;
  15813. +
  15814. + b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
  15815. + if ( ! b )
  15816. + YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
  15817. +
  15818. + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
  15819. + b->yy_buf_pos = b->yy_ch_buf = base;
  15820. + b->yy_is_our_buffer = 0;
  15821. + b->yy_input_file = 0;
  15822. + b->yy_n_chars = b->yy_buf_size;
  15823. + b->yy_is_interactive = 0;
  15824. + b->yy_at_bol = 1;
  15825. + b->yy_fill_buffer = 0;
  15826. + b->yy_buffer_status = YY_BUFFER_NEW;
  15827. +
  15828. + zconf_switch_to_buffer(b );
  15829. +
  15830. + return b;
  15831. +}
  15832. +
  15833. +/** Setup the input buffer state to scan a string. The next call to zconflex() will
  15834. + * scan from a @e copy of @a str.
  15835. + * @param yystr a NUL-terminated string to scan
  15836. + *
  15837. + * @return the newly allocated buffer state object.
  15838. + * @note If you want to scan bytes that may contain NUL values, then use
  15839. + * zconf_scan_bytes() instead.
  15840. + */
  15841. +YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
  15842. +{
  15843. +
  15844. + return zconf_scan_bytes(yystr,strlen(yystr) );
  15845. +}
  15846. +
  15847. +/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
  15848. + * scan from a @e copy of @a bytes.
  15849. + * @param bytes the byte buffer to scan
  15850. + * @param len the number of bytes in the buffer pointed to by @a bytes.
  15851. + *
  15852. + * @return the newly allocated buffer state object.
  15853. + */
  15854. +YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len )
  15855. +{
  15856. + YY_BUFFER_STATE b;
  15857. + char *buf;
  15858. + yy_size_t n;
  15859. + int i;
  15860. +
  15861. + /* Get memory for full buffer, including space for trailing EOB's. */
  15862. + n = _yybytes_len + 2;
  15863. + buf = (char *) zconfalloc(n );
  15864. + if ( ! buf )
  15865. + YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
  15866. +
  15867. + for ( i = 0; i < _yybytes_len; ++i )
  15868. + buf[i] = yybytes[i];
  15869. +
  15870. + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
  15871. +
  15872. + b = zconf_scan_buffer(buf,n );
  15873. + if ( ! b )
  15874. + YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
  15875. +
  15876. + /* It's okay to grow etc. this buffer, and we should throw it
  15877. + * away when we're done.
  15878. + */
  15879. + b->yy_is_our_buffer = 1;
  15880. +
  15881. + return b;
  15882. +}
  15883. +
  15884. +#ifndef YY_EXIT_FAILURE
  15885. +#define YY_EXIT_FAILURE 2
  15886. +#endif
  15887. +
  15888. +static void yy_fatal_error (yyconst char* msg )
  15889. +{
  15890. + (void) fprintf( stderr, "%s\n", msg );
  15891. + exit( YY_EXIT_FAILURE );
  15892. +}
  15893. +
  15894. +/* Redefine yyless() so it works in section 3 code. */
  15895. +
  15896. +#undef yyless
  15897. +#define yyless(n) \
  15898. + do \
  15899. + { \
  15900. + /* Undo effects of setting up zconftext. */ \
  15901. + int yyless_macro_arg = (n); \
  15902. + YY_LESS_LINENO(yyless_macro_arg);\
  15903. + zconftext[zconfleng] = (yy_hold_char); \
  15904. + (yy_c_buf_p) = zconftext + yyless_macro_arg; \
  15905. + (yy_hold_char) = *(yy_c_buf_p); \
  15906. + *(yy_c_buf_p) = '\0'; \
  15907. + zconfleng = yyless_macro_arg; \
  15908. + } \
  15909. + while ( 0 )
  15910. +
  15911. +/* Accessor methods (get/set functions) to struct members. */
  15912. +
  15913. +/** Get the current line number.
  15914. + *
  15915. + */
  15916. +int zconfget_lineno (void)
  15917. +{
  15918. +
  15919. + return zconflineno;
  15920. +}
  15921. +
  15922. +/** Get the input stream.
  15923. + *
  15924. + */
  15925. +FILE *zconfget_in (void)
  15926. +{
  15927. + return zconfin;
  15928. +}
  15929. +
  15930. +/** Get the output stream.
  15931. + *
  15932. + */
  15933. +FILE *zconfget_out (void)
  15934. +{
  15935. + return zconfout;
  15936. +}
  15937. +
  15938. +/** Get the length of the current token.
  15939. + *
  15940. + */
  15941. +int zconfget_leng (void)
  15942. +{
  15943. + return zconfleng;
  15944. +}
  15945. +
  15946. +/** Get the current token.
  15947. + *
  15948. + */
  15949. +
  15950. +char *zconfget_text (void)
  15951. +{
  15952. + return zconftext;
  15953. +}
  15954. +
  15955. +/** Set the current line number.
  15956. + * @param line_number
  15957. + *
  15958. + */
  15959. +void zconfset_lineno (int line_number )
  15960. +{
  15961. +
  15962. + zconflineno = line_number;
  15963. +}
  15964. +
  15965. +/** Set the input stream. This does not discard the current
  15966. + * input buffer.
  15967. + * @param in_str A readable stream.
  15968. + *
  15969. + * @see zconf_switch_to_buffer
  15970. + */
  15971. +void zconfset_in (FILE * in_str )
  15972. +{
  15973. + zconfin = in_str ;
  15974. +}
  15975. +
  15976. +void zconfset_out (FILE * out_str )
  15977. +{
  15978. + zconfout = out_str ;
  15979. +}
  15980. +
  15981. +int zconfget_debug (void)
  15982. +{
  15983. + return zconf_flex_debug;
  15984. +}
  15985. +
  15986. +void zconfset_debug (int bdebug )
  15987. +{
  15988. + zconf_flex_debug = bdebug ;
  15989. +}
  15990. +
  15991. +static int yy_init_globals (void)
  15992. +{
  15993. + /* Initialization is the same as for the non-reentrant scanner.
  15994. + * This function is called from zconflex_destroy(), so don't allocate here.
  15995. + */
  15996. +
  15997. + (yy_buffer_stack) = 0;
  15998. + (yy_buffer_stack_top) = 0;
  15999. + (yy_buffer_stack_max) = 0;
  16000. + (yy_c_buf_p) = (char *) 0;
  16001. + (yy_init) = 0;
  16002. + (yy_start) = 0;
  16003. +
  16004. +/* Defined in main.c */
  16005. +#ifdef YY_STDINIT
  16006. + zconfin = stdin;
  16007. + zconfout = stdout;
  16008. +#else
  16009. + zconfin = (FILE *) 0;
  16010. + zconfout = (FILE *) 0;
  16011. +#endif
  16012. +
  16013. + /* For future reference: Set errno on error, since we are called by
  16014. + * zconflex_init()
  16015. + */
  16016. + return 0;
  16017. +}
  16018. +
  16019. +/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
  16020. +int zconflex_destroy (void)
  16021. +{
  16022. +
  16023. + /* Pop the buffer stack, destroying each element. */
  16024. + while(YY_CURRENT_BUFFER){
  16025. + zconf_delete_buffer(YY_CURRENT_BUFFER );
  16026. + YY_CURRENT_BUFFER_LVALUE = NULL;
  16027. + zconfpop_buffer_state();
  16028. + }
  16029. +
  16030. + /* Destroy the stack itself. */
  16031. + zconffree((yy_buffer_stack) );
  16032. + (yy_buffer_stack) = NULL;
  16033. +
  16034. + /* Reset the globals. This is important in a non-reentrant scanner so the next time
  16035. + * zconflex() is called, initialization will occur. */
  16036. + yy_init_globals( );
  16037. +
  16038. + return 0;
  16039. +}
  16040. +
  16041. +/*
  16042. + * Internal utility routines.
  16043. + */
  16044. +
  16045. +#ifndef yytext_ptr
  16046. +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
  16047. +{
  16048. + register int i;
  16049. + for ( i = 0; i < n; ++i )
  16050. + s1[i] = s2[i];
  16051. +}
  16052. +#endif
  16053. +
  16054. +#ifdef YY_NEED_STRLEN
  16055. +static int yy_flex_strlen (yyconst char * s )
  16056. +{
  16057. + register int n;
  16058. + for ( n = 0; s[n]; ++n )
  16059. + ;
  16060. +
  16061. + return n;
  16062. +}
  16063. +#endif
  16064. +
  16065. +void *zconfalloc (yy_size_t size )
  16066. +{
  16067. + return (void *) malloc( size );
  16068. +}
  16069. +
  16070. +void *zconfrealloc (void * ptr, yy_size_t size )
  16071. +{
  16072. + /* The cast to (char *) in the following accommodates both
  16073. + * implementations that use char* generic pointers, and those
  16074. + * that use void* generic pointers. It works with the latter
  16075. + * because both ANSI C and C++ allow castless assignment from
  16076. + * any pointer type to void*, and deal with argument conversions
  16077. + * as though doing an assignment.
  16078. + */
  16079. + return (void *) realloc( (char *) ptr, size );
  16080. +}
  16081. +
  16082. +void zconffree (void * ptr )
  16083. +{
  16084. + free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
  16085. +}
  16086. +
  16087. +#define YYTABLES_NAME "yytables"
  16088. +
  16089. +void zconf_starthelp(void)
  16090. +{
  16091. + new_string();
  16092. + last_ts = first_ts = 0;
  16093. + BEGIN(HELP);
  16094. +}
  16095. +
  16096. +static void zconf_endhelp(void)
  16097. +{
  16098. + zconflval.string = text;
  16099. + BEGIN(INITIAL);
  16100. +}
  16101. +
  16102. +/*
  16103. + * Try to open specified file with following names:
  16104. + * ./name
  16105. + * $(srctree)/name
  16106. + * The latter is used when srctree is separate from objtree
  16107. + * when compiling the kernel.
  16108. + * Return NULL if file is not found.
  16109. + */
  16110. +FILE *zconf_fopen(const char *name)
  16111. +{
  16112. + char *env, fullname[PATH_MAX+1];
  16113. + FILE *f;
  16114. +
  16115. + f = fopen(name, "r");
  16116. + if (!f && name != NULL && name[0] != '/') {
  16117. + env = getenv(SRCTREE);
  16118. + if (env) {
  16119. + sprintf(fullname, "%s/%s", env, name);
  16120. + f = fopen(fullname, "r");
  16121. + }
  16122. + }
  16123. + return f;
  16124. +}
  16125. +
  16126. +void zconf_initscan(const char *name)
  16127. +{
  16128. + zconfin = zconf_fopen(name);
  16129. + if (!zconfin) {
  16130. + printf("can't find file %s\n", name);
  16131. + exit(1);
  16132. + }
  16133. +
  16134. + current_buf = xmalloc(sizeof(*current_buf));
  16135. + memset(current_buf, 0, sizeof(*current_buf));
  16136. +
  16137. + current_file = file_lookup(name);
  16138. + current_file->lineno = 1;
  16139. +}
  16140. +
  16141. +void zconf_nextfile(const char *name)
  16142. +{
  16143. + struct file *iter;
  16144. + struct file *file = file_lookup(name);
  16145. + struct buffer *buf = xmalloc(sizeof(*buf));
  16146. + memset(buf, 0, sizeof(*buf));
  16147. +
  16148. + current_buf->state = YY_CURRENT_BUFFER;
  16149. + zconfin = zconf_fopen(file->name);
  16150. + if (!zconfin) {
  16151. + printf("%s:%d: can't open file \"%s\"\n",
  16152. + zconf_curname(), zconf_lineno(), file->name);
  16153. + exit(1);
  16154. + }
  16155. + zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
  16156. + buf->parent = current_buf;
  16157. + current_buf = buf;
  16158. +
  16159. + for (iter = current_file->parent; iter; iter = iter->parent ) {
  16160. + if (!strcmp(current_file->name,iter->name) ) {
  16161. + printf("%s:%d: recursive inclusion detected. "
  16162. + "Inclusion path:\n current file : '%s'\n",
  16163. + zconf_curname(), zconf_lineno(),
  16164. + zconf_curname());
  16165. + iter = current_file->parent;
  16166. + while (iter && \
  16167. + strcmp(iter->name,current_file->name)) {
  16168. + printf(" included from: '%s:%d'\n",
  16169. + iter->name, iter->lineno-1);
  16170. + iter = iter->parent;
  16171. + }
  16172. + if (iter)
  16173. + printf(" included from: '%s:%d'\n",
  16174. + iter->name, iter->lineno+1);
  16175. + exit(1);
  16176. + }
  16177. + }
  16178. + file->lineno = 1;
  16179. + file->parent = current_file;
  16180. + current_file = file;
  16181. +}
  16182. +
  16183. +static void zconf_endfile(void)
  16184. +{
  16185. + struct buffer *parent;
  16186. +
  16187. + current_file = current_file->parent;
  16188. +
  16189. + parent = current_buf->parent;
  16190. + if (parent) {
  16191. + fclose(zconfin);
  16192. + zconf_delete_buffer(YY_CURRENT_BUFFER);
  16193. + zconf_switch_to_buffer(parent->state);
  16194. + }
  16195. + free(current_buf);
  16196. + current_buf = parent;
  16197. +}
  16198. +
  16199. +int zconf_lineno(void)
  16200. +{
  16201. + return current_pos.lineno;
  16202. +}
  16203. +
  16204. +const char *zconf_curname(void)
  16205. +{
  16206. + return current_pos.file ? current_pos.file->name : "<none>";
  16207. +}
  16208. +
  16209. diff -Nur uClibc-0.9.33.2/extra/config/zconf.tab.c_shipped uClibc-git/extra/config/zconf.tab.c_shipped
  16210. --- uClibc-0.9.33.2/extra/config/zconf.tab.c_shipped 2012-05-15 09:20:09.000000000 +0200
  16211. +++ uClibc-git/extra/config/zconf.tab.c_shipped 2014-02-03 12:32:56.000000000 +0100
  16212. @@ -1,24 +1,22 @@
  16213. -/* A Bison parser, made by GNU Bison 2.3. */
  16214. +/* A Bison parser, made by GNU Bison 2.4.3. */
  16215. /* Skeleton implementation for Bison's Yacc-like parsers in C
  16216. -
  16217. - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
  16218. - Free Software Foundation, Inc.
  16219. -
  16220. - This program is free software; you can redistribute it and/or modify
  16221. +
  16222. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
  16223. + 2009, 2010 Free Software Foundation, Inc.
  16224. +
  16225. + This program is free software: you can redistribute it and/or modify
  16226. it under the terms of the GNU General Public License as published by
  16227. - the Free Software Foundation; either version 2, or (at your option)
  16228. - any later version.
  16229. -
  16230. + the Free Software Foundation, either version 3 of the License, or
  16231. + (at your option) any later version.
  16232. +
  16233. This program is distributed in the hope that it will be useful,
  16234. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16235. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16236. GNU General Public License for more details.
  16237. -
  16238. +
  16239. You should have received a copy of the GNU General Public License
  16240. - along with this program; if not, write to the Free Software
  16241. - Foundation, Inc., 51 Franklin Street, Fifth Floor,
  16242. - Boston, MA 02110-1301, USA. */
  16243. + along with this program. If not, see <http://www.gnu.org/licenses/>. */
  16244. /* As a special exception, you may create a larger work that contains
  16245. part or all of the Bison parser skeleton and distribute that work
  16246. @@ -29,7 +27,7 @@
  16247. special exception, which will cause the skeleton and the resulting
  16248. Bison output files to be licensed under the GNU General Public
  16249. License without this special exception.
  16250. -
  16251. +
  16252. This special exception was added by the Free Software Foundation in
  16253. version 2.2 of Bison. */
  16254. @@ -47,7 +45,7 @@
  16255. #define YYBISON 1
  16256. /* Bison version. */
  16257. -#define YYBISON_VERSION "2.3"
  16258. +#define YYBISON_VERSION "2.4.3"
  16259. /* Skeleton name. */
  16260. #define YYSKELETON_NAME "yacc.c"
  16261. @@ -55,94 +53,23 @@
  16262. /* Pure parsers. */
  16263. #define YYPURE 0
  16264. +/* Push parsers. */
  16265. +#define YYPUSH 0
  16266. +
  16267. +/* Pull parsers. */
  16268. +#define YYPULL 1
  16269. +
  16270. /* Using locations. */
  16271. #define YYLSP_NEEDED 0
  16272. /* Substitute the variable and function names. */
  16273. -#define yyparse zconfparse
  16274. -#define yylex zconflex
  16275. -#define yyerror zconferror
  16276. -#define yylval zconflval
  16277. -#define yychar zconfchar
  16278. -#define yydebug zconfdebug
  16279. -#define yynerrs zconfnerrs
  16280. -
  16281. -
  16282. -/* Tokens. */
  16283. -#ifndef YYTOKENTYPE
  16284. -# define YYTOKENTYPE
  16285. - /* Put the tokens into the symbol table, so that GDB and other debuggers
  16286. - know about them. */
  16287. - enum yytokentype {
  16288. - T_MAINMENU = 258,
  16289. - T_MENU = 259,
  16290. - T_ENDMENU = 260,
  16291. - T_SOURCE = 261,
  16292. - T_CHOICE = 262,
  16293. - T_ENDCHOICE = 263,
  16294. - T_COMMENT = 264,
  16295. - T_CONFIG = 265,
  16296. - T_MENUCONFIG = 266,
  16297. - T_HELP = 267,
  16298. - T_HELPTEXT = 268,
  16299. - T_IF = 269,
  16300. - T_ENDIF = 270,
  16301. - T_DEPENDS = 271,
  16302. - T_OPTIONAL = 272,
  16303. - T_PROMPT = 273,
  16304. - T_TYPE = 274,
  16305. - T_DEFAULT = 275,
  16306. - T_SELECT = 276,
  16307. - T_RANGE = 277,
  16308. - T_OPTION = 278,
  16309. - T_ON = 279,
  16310. - T_WORD = 280,
  16311. - T_WORD_QUOTE = 281,
  16312. - T_UNEQUAL = 282,
  16313. - T_CLOSE_PAREN = 283,
  16314. - T_OPEN_PAREN = 284,
  16315. - T_EOL = 285,
  16316. - T_OR = 286,
  16317. - T_AND = 287,
  16318. - T_EQUAL = 288,
  16319. - T_NOT = 289
  16320. - };
  16321. -#endif
  16322. -/* Tokens. */
  16323. -#define T_MAINMENU 258
  16324. -#define T_MENU 259
  16325. -#define T_ENDMENU 260
  16326. -#define T_SOURCE 261
  16327. -#define T_CHOICE 262
  16328. -#define T_ENDCHOICE 263
  16329. -#define T_COMMENT 264
  16330. -#define T_CONFIG 265
  16331. -#define T_MENUCONFIG 266
  16332. -#define T_HELP 267
  16333. -#define T_HELPTEXT 268
  16334. -#define T_IF 269
  16335. -#define T_ENDIF 270
  16336. -#define T_DEPENDS 271
  16337. -#define T_OPTIONAL 272
  16338. -#define T_PROMPT 273
  16339. -#define T_TYPE 274
  16340. -#define T_DEFAULT 275
  16341. -#define T_SELECT 276
  16342. -#define T_RANGE 277
  16343. -#define T_OPTION 278
  16344. -#define T_ON 279
  16345. -#define T_WORD 280
  16346. -#define T_WORD_QUOTE 281
  16347. -#define T_UNEQUAL 282
  16348. -#define T_CLOSE_PAREN 283
  16349. -#define T_OPEN_PAREN 284
  16350. -#define T_EOL 285
  16351. -#define T_OR 286
  16352. -#define T_AND 287
  16353. -#define T_EQUAL 288
  16354. -#define T_NOT 289
  16355. -
  16356. -
  16357. +#define yyparse zconfparse
  16358. +#define yylex zconflex
  16359. +#define yyerror zconferror
  16360. +#define yylval zconflval
  16361. +#define yychar zconfchar
  16362. +#define yydebug zconfdebug
  16363. +#define yynerrs zconfnerrs
  16364. /* Copy the first part of user declarations. */
  16365. @@ -160,11 +87,8 @@
  16366. #include <string.h>
  16367. #include <stdbool.h>
  16368. -#define LKC_DIRECT_LINK
  16369. #include "lkc.h"
  16370. -#include "zconf.hash.c"
  16371. -
  16372. #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
  16373. #define PRINTD 0x0001
  16374. @@ -176,21 +100,18 @@
  16375. static void zconfprint(const char *err, ...);
  16376. static void zconf_error(const char *err, ...);
  16377. static void zconferror(const char *err);
  16378. -static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
  16379. +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
  16380. -struct symbol *symbol_hash[257];
  16381. +struct symbol *symbol_hash[SYMBOL_HASHSIZE];
  16382. static struct menu *current_menu, *current_entry;
  16383. -#define YYDEBUG 0
  16384. -#if YYDEBUG
  16385. -#define YYERROR_VERBOSE
  16386. -#endif
  16387. +
  16388. /* Enabling traces. */
  16389. #ifndef YYDEBUG
  16390. -# define YYDEBUG 0
  16391. +# define YYDEBUG 1
  16392. #endif
  16393. /* Enabling verbose error messages. */
  16394. @@ -206,31 +127,78 @@
  16395. # define YYTOKEN_TABLE 0
  16396. #endif
  16397. +
  16398. +/* Tokens. */
  16399. +#ifndef YYTOKENTYPE
  16400. +# define YYTOKENTYPE
  16401. + /* Put the tokens into the symbol table, so that GDB and other debuggers
  16402. + know about them. */
  16403. + enum yytokentype {
  16404. + T_MAINMENU = 258,
  16405. + T_MENU = 259,
  16406. + T_ENDMENU = 260,
  16407. + T_SOURCE = 261,
  16408. + T_CHOICE = 262,
  16409. + T_ENDCHOICE = 263,
  16410. + T_COMMENT = 264,
  16411. + T_CONFIG = 265,
  16412. + T_MENUCONFIG = 266,
  16413. + T_HELP = 267,
  16414. + T_HELPTEXT = 268,
  16415. + T_IF = 269,
  16416. + T_ENDIF = 270,
  16417. + T_DEPENDS = 271,
  16418. + T_OPTIONAL = 272,
  16419. + T_PROMPT = 273,
  16420. + T_TYPE = 274,
  16421. + T_DEFAULT = 275,
  16422. + T_SELECT = 276,
  16423. + T_RANGE = 277,
  16424. + T_VISIBLE = 278,
  16425. + T_OPTION = 279,
  16426. + T_ON = 280,
  16427. + T_WORD = 281,
  16428. + T_WORD_QUOTE = 282,
  16429. + T_UNEQUAL = 283,
  16430. + T_CLOSE_PAREN = 284,
  16431. + T_OPEN_PAREN = 285,
  16432. + T_EOL = 286,
  16433. + T_OR = 287,
  16434. + T_AND = 288,
  16435. + T_EQUAL = 289,
  16436. + T_NOT = 290
  16437. + };
  16438. +#endif
  16439. +
  16440. +
  16441. +
  16442. #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
  16443. typedef union YYSTYPE
  16444. -
  16445. {
  16446. +
  16447. +
  16448. char *string;
  16449. struct file *file;
  16450. struct symbol *symbol;
  16451. struct expr *expr;
  16452. struct menu *menu;
  16453. - struct kconf_id *id;
  16454. -}
  16455. -/* Line 187 of yacc.c. */
  16456. + const struct kconf_id *id;
  16457. +
  16458. +
  16459. - YYSTYPE;
  16460. +} YYSTYPE;
  16461. +# define YYSTYPE_IS_TRIVIAL 1
  16462. # define yystype YYSTYPE /* obsolescent; will be withdrawn */
  16463. # define YYSTYPE_IS_DECLARED 1
  16464. -# define YYSTYPE_IS_TRIVIAL 1
  16465. #endif
  16466. -
  16467. /* Copy the second part of user declarations. */
  16468. -/* Line 216 of yacc.c. */
  16469. +/* Include zconf.hash.c here so it can see the token constants. */
  16470. +#include "zconf.hash.c"
  16471. +
  16472. #ifdef short
  16473. @@ -281,7 +249,7 @@
  16474. #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
  16475. #ifndef YY_
  16476. -# if YYENABLE_NLS
  16477. +# if defined YYENABLE_NLS && YYENABLE_NLS
  16478. # if ENABLE_NLS
  16479. # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
  16480. # define YY_(msgid) dgettext ("bison-runtime", msgid)
  16481. @@ -306,14 +274,14 @@
  16482. #if (defined __STDC__ || defined __C99__FUNC__ \
  16483. || defined __cplusplus || defined _MSC_VER)
  16484. static int
  16485. -YYID (int i)
  16486. +YYID (int yyi)
  16487. #else
  16488. static int
  16489. -YYID (i)
  16490. - int i;
  16491. +YYID (yyi)
  16492. + int yyi;
  16493. #endif
  16494. {
  16495. - return i;
  16496. + return yyi;
  16497. }
  16498. #endif
  16499. @@ -394,9 +362,9 @@
  16500. /* A type that is properly aligned for any stack member. */
  16501. union yyalloc
  16502. {
  16503. - yytype_int16 yyss;
  16504. - YYSTYPE yyvs;
  16505. - };
  16506. + yytype_int16 yyss_alloc;
  16507. + YYSTYPE yyvs_alloc;
  16508. +};
  16509. /* The size of the maximum gap between one aligned stack and the next. */
  16510. # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
  16511. @@ -430,12 +398,12 @@
  16512. elements in the stack, and YYPTR gives the new location of the
  16513. stack. Advance YYPTR to a properly aligned location for the next
  16514. stack. */
  16515. -# define YYSTACK_RELOCATE(Stack) \
  16516. +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
  16517. do \
  16518. { \
  16519. YYSIZE_T yynewbytes; \
  16520. - YYCOPY (&yyptr->Stack, Stack, yysize); \
  16521. - Stack = &yyptr->Stack; \
  16522. + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
  16523. + Stack = &yyptr->Stack_alloc; \
  16524. yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
  16525. yyptr += yynewbytes / sizeof (*yyptr); \
  16526. } \
  16527. @@ -444,22 +412,22 @@
  16528. #endif
  16529. /* YYFINAL -- State number of the termination state. */
  16530. -#define YYFINAL 3
  16531. +#define YYFINAL 11
  16532. /* YYLAST -- Last index in YYTABLE. */
  16533. -#define YYLAST 259
  16534. +#define YYLAST 290
  16535. /* YYNTOKENS -- Number of terminals. */
  16536. -#define YYNTOKENS 35
  16537. +#define YYNTOKENS 36
  16538. /* YYNNTS -- Number of nonterminals. */
  16539. -#define YYNNTS 46
  16540. +#define YYNNTS 50
  16541. /* YYNRULES -- Number of rules. */
  16542. -#define YYNRULES 110
  16543. +#define YYNRULES 118
  16544. /* YYNRULES -- Number of states. */
  16545. -#define YYNSTATES 180
  16546. +#define YYNSTATES 191
  16547. /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
  16548. #define YYUNDEFTOK 2
  16549. -#define YYMAXUTOK 289
  16550. +#define YYMAXUTOK 290
  16551. #define YYTRANSLATE(YYX) \
  16552. ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  16553. @@ -495,7 +463,8 @@
  16554. 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
  16555. 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
  16556. 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
  16557. - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
  16558. + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
  16559. + 35
  16560. };
  16561. #if YYDEBUG
  16562. @@ -503,73 +472,75 @@
  16563. YYRHS. */
  16564. static const yytype_uint16 yyprhs[] =
  16565. {
  16566. - 0, 0, 3, 5, 6, 9, 12, 15, 20, 23,
  16567. - 28, 33, 37, 39, 41, 43, 45, 47, 49, 51,
  16568. - 53, 55, 57, 59, 61, 63, 67, 70, 74, 77,
  16569. - 81, 84, 85, 88, 91, 94, 97, 100, 103, 107,
  16570. - 112, 117, 122, 128, 132, 133, 137, 138, 141, 145,
  16571. - 148, 150, 154, 155, 158, 161, 164, 167, 170, 175,
  16572. - 179, 182, 187, 188, 191, 195, 197, 201, 202, 205,
  16573. - 208, 211, 215, 218, 220, 224, 225, 228, 231, 234,
  16574. - 238, 242, 245, 248, 251, 252, 255, 258, 261, 266,
  16575. - 267, 270, 272, 274, 277, 280, 283, 285, 288, 289,
  16576. - 292, 294, 298, 302, 306, 309, 313, 317, 319, 321,
  16577. - 322
  16578. + 0, 0, 3, 6, 8, 11, 13, 14, 17, 20,
  16579. + 23, 26, 31, 36, 40, 42, 44, 46, 48, 50,
  16580. + 52, 54, 56, 58, 60, 62, 64, 66, 68, 72,
  16581. + 75, 79, 82, 86, 89, 90, 93, 96, 99, 102,
  16582. + 105, 108, 112, 117, 122, 127, 133, 137, 138, 142,
  16583. + 143, 146, 150, 153, 155, 159, 160, 163, 166, 169,
  16584. + 172, 175, 180, 184, 187, 192, 193, 196, 200, 202,
  16585. + 206, 207, 210, 213, 216, 220, 224, 228, 230, 234,
  16586. + 235, 238, 241, 244, 248, 252, 255, 258, 261, 262,
  16587. + 265, 268, 271, 276, 277, 280, 283, 286, 287, 290,
  16588. + 292, 294, 297, 300, 303, 305, 308, 309, 312, 314,
  16589. + 318, 322, 326, 329, 333, 337, 339, 341, 342
  16590. };
  16591. /* YYRHS -- A `-1'-separated list of the rules' RHS. */
  16592. static const yytype_int8 yyrhs[] =
  16593. {
  16594. - 36, 0, -1, 37, -1, -1, 37, 39, -1, 37,
  16595. - 53, -1, 37, 64, -1, 37, 3, 74, 76, -1,
  16596. - 37, 75, -1, 37, 25, 1, 30, -1, 37, 38,
  16597. - 1, 30, -1, 37, 1, 30, -1, 16, -1, 18,
  16598. - -1, 19, -1, 21, -1, 17, -1, 22, -1, 20,
  16599. - -1, 30, -1, 59, -1, 68, -1, 42, -1, 44,
  16600. - -1, 66, -1, 25, 1, 30, -1, 1, 30, -1,
  16601. - 10, 25, 30, -1, 41, 45, -1, 11, 25, 30,
  16602. - -1, 43, 45, -1, -1, 45, 46, -1, 45, 47,
  16603. - -1, 45, 72, -1, 45, 70, -1, 45, 40, -1,
  16604. - 45, 30, -1, 19, 73, 30, -1, 18, 74, 77,
  16605. - 30, -1, 20, 78, 77, 30, -1, 21, 25, 77,
  16606. - 30, -1, 22, 79, 79, 77, 30, -1, 23, 48,
  16607. - 30, -1, -1, 48, 25, 49, -1, -1, 33, 74,
  16608. - -1, 7, 80, 30, -1, 50, 54, -1, 75, -1,
  16609. - 51, 56, 52, -1, -1, 54, 55, -1, 54, 72,
  16610. - -1, 54, 70, -1, 54, 30, -1, 54, 40, -1,
  16611. - 18, 74, 77, 30, -1, 19, 73, 30, -1, 17,
  16612. - 30, -1, 20, 25, 77, 30, -1, -1, 56, 39,
  16613. - -1, 14, 78, 76, -1, 75, -1, 57, 60, 58,
  16614. - -1, -1, 60, 39, -1, 60, 64, -1, 60, 53,
  16615. - -1, 4, 74, 30, -1, 61, 71, -1, 75, -1,
  16616. - 62, 65, 63, -1, -1, 65, 39, -1, 65, 64,
  16617. - -1, 65, 53, -1, 6, 74, 30, -1, 9, 74,
  16618. - 30, -1, 67, 71, -1, 12, 30, -1, 69, 13,
  16619. - -1, -1, 71, 72, -1, 71, 30, -1, 71, 40,
  16620. - -1, 16, 24, 78, 30, -1, -1, 74, 77, -1,
  16621. - 25, -1, 26, -1, 5, 30, -1, 8, 30, -1,
  16622. - 15, 30, -1, 30, -1, 76, 30, -1, -1, 14,
  16623. - 78, -1, 79, -1, 79, 33, 79, -1, 79, 27,
  16624. - 79, -1, 29, 78, 28, -1, 34, 78, -1, 78,
  16625. - 31, 78, -1, 78, 32, 78, -1, 25, -1, 26,
  16626. - -1, -1, 25, -1
  16627. + 37, 0, -1, 81, 38, -1, 38, -1, 63, 39,
  16628. + -1, 39, -1, -1, 39, 41, -1, 39, 55, -1,
  16629. + 39, 67, -1, 39, 80, -1, 39, 26, 1, 31,
  16630. + -1, 39, 40, 1, 31, -1, 39, 1, 31, -1,
  16631. + 16, -1, 18, -1, 19, -1, 21, -1, 17, -1,
  16632. + 22, -1, 20, -1, 23, -1, 31, -1, 61, -1,
  16633. + 71, -1, 44, -1, 46, -1, 69, -1, 26, 1,
  16634. + 31, -1, 1, 31, -1, 10, 26, 31, -1, 43,
  16635. + 47, -1, 11, 26, 31, -1, 45, 47, -1, -1,
  16636. + 47, 48, -1, 47, 49, -1, 47, 75, -1, 47,
  16637. + 73, -1, 47, 42, -1, 47, 31, -1, 19, 78,
  16638. + 31, -1, 18, 79, 82, 31, -1, 20, 83, 82,
  16639. + 31, -1, 21, 26, 82, 31, -1, 22, 84, 84,
  16640. + 82, 31, -1, 24, 50, 31, -1, -1, 50, 26,
  16641. + 51, -1, -1, 34, 79, -1, 7, 85, 31, -1,
  16642. + 52, 56, -1, 80, -1, 53, 58, 54, -1, -1,
  16643. + 56, 57, -1, 56, 75, -1, 56, 73, -1, 56,
  16644. + 31, -1, 56, 42, -1, 18, 79, 82, 31, -1,
  16645. + 19, 78, 31, -1, 17, 31, -1, 20, 26, 82,
  16646. + 31, -1, -1, 58, 41, -1, 14, 83, 81, -1,
  16647. + 80, -1, 59, 62, 60, -1, -1, 62, 41, -1,
  16648. + 62, 67, -1, 62, 55, -1, 3, 79, 81, -1,
  16649. + 4, 79, 31, -1, 64, 76, 74, -1, 80, -1,
  16650. + 65, 68, 66, -1, -1, 68, 41, -1, 68, 67,
  16651. + -1, 68, 55, -1, 6, 79, 31, -1, 9, 79,
  16652. + 31, -1, 70, 74, -1, 12, 31, -1, 72, 13,
  16653. + -1, -1, 74, 75, -1, 74, 31, -1, 74, 42,
  16654. + -1, 16, 25, 83, 31, -1, -1, 76, 77, -1,
  16655. + 76, 31, -1, 23, 82, -1, -1, 79, 82, -1,
  16656. + 26, -1, 27, -1, 5, 31, -1, 8, 31, -1,
  16657. + 15, 31, -1, 31, -1, 81, 31, -1, -1, 14,
  16658. + 83, -1, 84, -1, 84, 34, 84, -1, 84, 28,
  16659. + 84, -1, 30, 83, 29, -1, 35, 83, -1, 83,
  16660. + 32, 83, -1, 83, 33, 83, -1, 26, -1, 27,
  16661. + -1, -1, 26, -1
  16662. };
  16663. /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
  16664. static const yytype_uint16 yyrline[] =
  16665. {
  16666. - 0, 104, 104, 106, 108, 109, 110, 111, 112, 113,
  16667. - 114, 118, 122, 122, 122, 122, 122, 122, 122, 126,
  16668. - 127, 128, 129, 130, 131, 135, 136, 142, 150, 156,
  16669. - 164, 174, 176, 177, 178, 179, 180, 181, 184, 192,
  16670. - 198, 208, 214, 220, 223, 225, 236, 237, 242, 251,
  16671. - 256, 264, 267, 269, 270, 271, 272, 273, 276, 282,
  16672. - 293, 299, 309, 311, 316, 324, 332, 335, 337, 338,
  16673. - 339, 344, 351, 356, 364, 367, 369, 370, 371, 374,
  16674. - 382, 389, 396, 402, 409, 411, 412, 413, 416, 424,
  16675. - 426, 431, 432, 435, 436, 437, 441, 442, 445, 446,
  16676. - 449, 450, 451, 452, 453, 454, 455, 458, 459, 462,
  16677. - 463
  16678. + 0, 104, 104, 104, 106, 106, 108, 110, 111, 112,
  16679. + 113, 114, 115, 119, 123, 123, 123, 123, 123, 123,
  16680. + 123, 123, 127, 128, 129, 130, 131, 132, 136, 137,
  16681. + 143, 151, 157, 165, 175, 177, 178, 179, 180, 181,
  16682. + 182, 185, 193, 199, 209, 215, 221, 224, 226, 237,
  16683. + 238, 243, 252, 257, 265, 268, 270, 271, 272, 273,
  16684. + 274, 277, 283, 294, 300, 310, 312, 317, 325, 333,
  16685. + 336, 338, 339, 340, 345, 352, 359, 364, 372, 375,
  16686. + 377, 378, 379, 382, 390, 397, 404, 410, 417, 419,
  16687. + 420, 421, 424, 432, 434, 435, 438, 445, 447, 452,
  16688. + 453, 456, 457, 458, 462, 463, 466, 467, 470, 471,
  16689. + 472, 473, 474, 475, 476, 479, 480, 483, 484
  16690. };
  16691. #endif
  16692. @@ -582,19 +553,19 @@
  16693. "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
  16694. "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
  16695. "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
  16696. - "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
  16697. + "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
  16698. "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
  16699. - "T_NOT", "$accept", "input", "stmt_list", "option_name", "common_stmt",
  16700. - "option_error", "config_entry_start", "config_stmt",
  16701. + "T_NOT", "$accept", "input", "start", "stmt_list", "option_name",
  16702. + "common_stmt", "option_error", "config_entry_start", "config_stmt",
  16703. "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
  16704. "config_option", "symbol_option", "symbol_option_list",
  16705. "symbol_option_arg", "choice", "choice_entry", "choice_end",
  16706. "choice_stmt", "choice_option_list", "choice_option", "choice_block",
  16707. - "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry",
  16708. - "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment",
  16709. - "comment_stmt", "help_start", "help", "depends_list", "depends",
  16710. - "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol",
  16711. - "word_opt", 0
  16712. + "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu",
  16713. + "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt",
  16714. + "comment", "comment_stmt", "help_start", "help", "depends_list",
  16715. + "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt",
  16716. + "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0
  16717. };
  16718. #endif
  16719. @@ -606,42 +577,42 @@
  16720. 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
  16721. 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
  16722. 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
  16723. - 285, 286, 287, 288, 289
  16724. + 285, 286, 287, 288, 289, 290
  16725. };
  16726. # endif
  16727. /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
  16728. static const yytype_uint8 yyr1[] =
  16729. {
  16730. - 0, 35, 36, 37, 37, 37, 37, 37, 37, 37,
  16731. - 37, 37, 38, 38, 38, 38, 38, 38, 38, 39,
  16732. - 39, 39, 39, 39, 39, 40, 40, 41, 42, 43,
  16733. - 44, 45, 45, 45, 45, 45, 45, 45, 46, 46,
  16734. - 46, 46, 46, 47, 48, 48, 49, 49, 50, 51,
  16735. - 52, 53, 54, 54, 54, 54, 54, 54, 55, 55,
  16736. - 55, 55, 56, 56, 57, 58, 59, 60, 60, 60,
  16737. - 60, 61, 62, 63, 64, 65, 65, 65, 65, 66,
  16738. - 67, 68, 69, 70, 71, 71, 71, 71, 72, 73,
  16739. - 73, 74, 74, 75, 75, 75, 76, 76, 77, 77,
  16740. - 78, 78, 78, 78, 78, 78, 78, 79, 79, 80,
  16741. - 80
  16742. + 0, 36, 37, 37, 38, 38, 39, 39, 39, 39,
  16743. + 39, 39, 39, 39, 40, 40, 40, 40, 40, 40,
  16744. + 40, 40, 41, 41, 41, 41, 41, 41, 42, 42,
  16745. + 43, 44, 45, 46, 47, 47, 47, 47, 47, 47,
  16746. + 47, 48, 48, 48, 48, 48, 49, 50, 50, 51,
  16747. + 51, 52, 53, 54, 55, 56, 56, 56, 56, 56,
  16748. + 56, 57, 57, 57, 57, 58, 58, 59, 60, 61,
  16749. + 62, 62, 62, 62, 63, 64, 65, 66, 67, 68,
  16750. + 68, 68, 68, 69, 70, 71, 72, 73, 74, 74,
  16751. + 74, 74, 75, 76, 76, 76, 77, 78, 78, 79,
  16752. + 79, 80, 80, 80, 81, 81, 82, 82, 83, 83,
  16753. + 83, 83, 83, 83, 83, 84, 84, 85, 85
  16754. };
  16755. /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
  16756. static const yytype_uint8 yyr2[] =
  16757. {
  16758. - 0, 2, 1, 0, 2, 2, 2, 4, 2, 4,
  16759. - 4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
  16760. - 1, 1, 1, 1, 1, 3, 2, 3, 2, 3,
  16761. - 2, 0, 2, 2, 2, 2, 2, 2, 3, 4,
  16762. - 4, 4, 5, 3, 0, 3, 0, 2, 3, 2,
  16763. - 1, 3, 0, 2, 2, 2, 2, 2, 4, 3,
  16764. - 2, 4, 0, 2, 3, 1, 3, 0, 2, 2,
  16765. - 2, 3, 2, 1, 3, 0, 2, 2, 2, 3,
  16766. - 3, 2, 2, 2, 0, 2, 2, 2, 4, 0,
  16767. - 2, 1, 1, 2, 2, 2, 1, 2, 0, 2,
  16768. - 1, 3, 3, 3, 2, 3, 3, 1, 1, 0,
  16769. - 1
  16770. + 0, 2, 2, 1, 2, 1, 0, 2, 2, 2,
  16771. + 2, 4, 4, 3, 1, 1, 1, 1, 1, 1,
  16772. + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2,
  16773. + 3, 2, 3, 2, 0, 2, 2, 2, 2, 2,
  16774. + 2, 3, 4, 4, 4, 5, 3, 0, 3, 0,
  16775. + 2, 3, 2, 1, 3, 0, 2, 2, 2, 2,
  16776. + 2, 4, 3, 2, 4, 0, 2, 3, 1, 3,
  16777. + 0, 2, 2, 2, 3, 3, 3, 1, 3, 0,
  16778. + 2, 2, 2, 3, 3, 2, 2, 2, 0, 2,
  16779. + 2, 2, 4, 0, 2, 2, 2, 0, 2, 1,
  16780. + 1, 2, 2, 2, 1, 2, 0, 2, 1, 3,
  16781. + 3, 3, 2, 3, 3, 1, 1, 0, 1
  16782. };
  16783. /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
  16784. @@ -649,158 +620,172 @@
  16785. means the default is an error. */
  16786. static const yytype_uint8 yydefact[] =
  16787. {
  16788. - 3, 0, 0, 1, 0, 0, 0, 0, 0, 109,
  16789. - 0, 0, 0, 0, 0, 0, 12, 16, 13, 14,
  16790. - 18, 15, 17, 0, 19, 0, 4, 31, 22, 31,
  16791. - 23, 52, 62, 5, 67, 20, 84, 75, 6, 24,
  16792. - 84, 21, 8, 11, 91, 92, 0, 0, 93, 0,
  16793. - 110, 0, 94, 0, 0, 0, 107, 108, 0, 0,
  16794. - 0, 100, 95, 0, 0, 0, 0, 0, 0, 0,
  16795. - 0, 0, 0, 96, 7, 71, 79, 48, 80, 27,
  16796. - 29, 0, 104, 0, 0, 64, 0, 0, 9, 10,
  16797. - 0, 0, 0, 0, 89, 0, 0, 0, 44, 0,
  16798. - 37, 36, 32, 33, 0, 35, 34, 0, 0, 89,
  16799. - 0, 56, 57, 53, 55, 54, 63, 51, 50, 68,
  16800. - 70, 66, 69, 65, 86, 87, 85, 76, 78, 74,
  16801. - 77, 73, 97, 103, 105, 106, 102, 101, 26, 82,
  16802. - 0, 98, 0, 98, 98, 98, 0, 0, 0, 83,
  16803. - 60, 98, 0, 98, 0, 0, 0, 38, 90, 0,
  16804. - 0, 98, 46, 43, 25, 0, 59, 0, 88, 99,
  16805. - 39, 40, 41, 0, 0, 45, 58, 61, 42, 47
  16806. + 6, 0, 104, 0, 3, 0, 6, 6, 99, 100,
  16807. + 0, 1, 0, 0, 0, 0, 117, 0, 0, 0,
  16808. + 0, 0, 0, 14, 18, 15, 16, 20, 17, 19,
  16809. + 21, 0, 22, 0, 7, 34, 25, 34, 26, 55,
  16810. + 65, 8, 70, 23, 93, 79, 9, 27, 88, 24,
  16811. + 10, 0, 105, 2, 74, 13, 0, 101, 0, 118,
  16812. + 0, 102, 0, 0, 0, 115, 116, 0, 0, 0,
  16813. + 108, 103, 0, 0, 0, 0, 0, 0, 0, 88,
  16814. + 0, 0, 75, 83, 51, 84, 30, 32, 0, 112,
  16815. + 0, 0, 67, 0, 0, 11, 12, 0, 0, 0,
  16816. + 0, 97, 0, 0, 0, 47, 0, 40, 39, 35,
  16817. + 36, 0, 38, 37, 0, 0, 97, 0, 59, 60,
  16818. + 56, 58, 57, 66, 54, 53, 71, 73, 69, 72,
  16819. + 68, 106, 95, 0, 94, 80, 82, 78, 81, 77,
  16820. + 90, 91, 89, 111, 113, 114, 110, 109, 29, 86,
  16821. + 0, 106, 0, 106, 106, 106, 0, 0, 0, 87,
  16822. + 63, 106, 0, 106, 0, 96, 0, 0, 41, 98,
  16823. + 0, 0, 106, 49, 46, 28, 0, 62, 0, 107,
  16824. + 92, 42, 43, 44, 0, 0, 48, 61, 64, 45,
  16825. + 50
  16826. };
  16827. /* YYDEFGOTO[NTERM-NUM]. */
  16828. static const yytype_int16 yydefgoto[] =
  16829. {
  16830. - -1, 1, 2, 25, 26, 101, 27, 28, 29, 30,
  16831. - 65, 102, 103, 147, 175, 31, 32, 117, 33, 67,
  16832. - 113, 68, 34, 121, 35, 69, 36, 37, 129, 38,
  16833. - 71, 39, 40, 41, 104, 105, 70, 106, 142, 143,
  16834. - 42, 74, 156, 60, 61, 51
  16835. + -1, 3, 4, 5, 33, 34, 108, 35, 36, 37,
  16836. + 38, 74, 109, 110, 157, 186, 39, 40, 124, 41,
  16837. + 76, 120, 77, 42, 128, 43, 78, 6, 44, 45,
  16838. + 137, 46, 80, 47, 48, 49, 111, 112, 81, 113,
  16839. + 79, 134, 152, 153, 50, 7, 165, 69, 70, 60
  16840. };
  16841. /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
  16842. STATE-NUM. */
  16843. -#define YYPACT_NINF -80
  16844. +#define YYPACT_NINF -90
  16845. static const yytype_int16 yypact[] =
  16846. {
  16847. - -80, 2, 132, -80, -13, -1, -1, -2, -1, 9,
  16848. - 33, -1, 27, 40, -3, 38, -80, -80, -80, -80,
  16849. - -80, -80, -80, 71, -80, 77, -80, -80, -80, -80,
  16850. - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
  16851. - -80, -80, -80, -80, -80, -80, 57, 61, -80, 63,
  16852. - -80, 76, -80, 87, 101, 133, -80, -80, -3, -3,
  16853. - 195, -6, -80, 136, 149, 39, 104, 65, 150, 5,
  16854. - 194, 5, 167, -80, 176, -80, -80, -80, -80, -80,
  16855. - -80, 68, -80, -3, -3, 176, 72, 72, -80, -80,
  16856. - 177, 187, 78, -1, -1, -3, 196, 72, -80, 222,
  16857. - -80, -80, -80, -80, 221, -80, -80, 205, -1, -1,
  16858. - 211, -80, -80, -80, -80, -80, -80, -80, -80, -80,
  16859. - -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
  16860. - -80, -80, -80, -80, 206, -80, -80, -80, -80, -80,
  16861. - -3, 223, 209, 223, 197, 223, 72, 7, 210, -80,
  16862. - -80, 223, 212, 223, 201, -3, 213, -80, -80, 214,
  16863. - 215, 223, 208, -80, -80, 216, -80, 217, -80, 113,
  16864. - -80, -80, -80, 218, -1, -80, -80, -80, -80, -80
  16865. + 4, 42, -90, 96, -90, 111, -90, 15, -90, -90,
  16866. + 75, -90, 82, 42, 104, 42, 110, 107, 42, 115,
  16867. + 125, -4, 121, -90, -90, -90, -90, -90, -90, -90,
  16868. + -90, 162, -90, 163, -90, -90, -90, -90, -90, -90,
  16869. + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
  16870. + -90, 139, -90, -90, 138, -90, 142, -90, 143, -90,
  16871. + 152, -90, 164, 167, 168, -90, -90, -4, -4, 77,
  16872. + -18, -90, 177, 185, 33, 71, 195, 247, 236, -2,
  16873. + 236, 171, -90, -90, -90, -90, -90, -90, 41, -90,
  16874. + -4, -4, 138, 97, 97, -90, -90, 186, 187, 194,
  16875. + 42, 42, -4, 196, 97, -90, 219, -90, -90, -90,
  16876. + -90, 210, -90, -90, 204, 42, 42, 199, -90, -90,
  16877. + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
  16878. + -90, 222, -90, 223, -90, -90, -90, -90, -90, -90,
  16879. + -90, -90, -90, -90, 215, -90, -90, -90, -90, -90,
  16880. + -4, 222, 228, 222, -5, 222, 97, 35, 229, -90,
  16881. + -90, 222, 232, 222, -4, -90, 135, 233, -90, -90,
  16882. + 234, 235, 222, 240, -90, -90, 237, -90, 239, -13,
  16883. + -90, -90, -90, -90, 244, 42, -90, -90, -90, -90,
  16884. + -90
  16885. };
  16886. /* YYPGOTO[NTERM-NUM]. */
  16887. static const yytype_int16 yypgoto[] =
  16888. {
  16889. - -80, -80, -80, -80, 122, -34, -80, -80, -80, -80,
  16890. - 220, -80, -80, -80, -80, -80, -80, -80, 59, -80,
  16891. - -80, -80, -80, -80, -80, -80, -80, -80, -80, 125,
  16892. - -80, -80, -80, -80, -80, 183, 219, 22, 142, -5,
  16893. - 147, 192, 69, -54, -79, -80
  16894. + -90, -90, 269, 271, -90, 23, -70, -90, -90, -90,
  16895. + -90, 243, -90, -90, -90, -90, -90, -90, -90, -48,
  16896. + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
  16897. + -90, -20, -90, -90, -90, -90, -90, 206, 205, -68,
  16898. + -90, -90, 169, -1, 27, -7, 118, -66, -89, -90
  16899. };
  16900. /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
  16901. positive, shift that token. If negative, reduce the rule which
  16902. number is the opposite. If zero, do what YYDEFACT says.
  16903. If YYTABLE_NINF, syntax error. */
  16904. -#define YYTABLE_NINF -82
  16905. +#define YYTABLE_NINF -86
  16906. static const yytype_int16 yytable[] =
  16907. {
  16908. - 46, 47, 3, 49, 81, 82, 53, 136, 137, 6,
  16909. - 7, 8, 9, 10, 11, 12, 13, 43, 146, 14,
  16910. - 15, 86, 56, 57, 44, 45, 58, 87, 48, 134,
  16911. - 135, 59, 162, 112, 50, 24, 125, 163, 125, -28,
  16912. - 90, 144, -28, -28, -28, -28, -28, -28, -28, -28,
  16913. - -28, 91, 54, -28, -28, 92, -28, 93, 94, 95,
  16914. - 96, 97, 98, 52, 99, 55, 90, 161, 62, 100,
  16915. - -49, -49, 63, -49, -49, -49, -49, 91, 64, -49,
  16916. - -49, 92, 107, 108, 109, 110, 154, 73, 141, 115,
  16917. - 99, 75, 126, 76, 126, 111, 133, 56, 57, 83,
  16918. - 84, 169, 140, 151, -30, 90, 77, -30, -30, -30,
  16919. - -30, -30, -30, -30, -30, -30, 91, 78, -30, -30,
  16920. - 92, -30, 93, 94, 95, 96, 97, 98, 120, 99,
  16921. - 128, 79, -2, 4, 100, 5, 6, 7, 8, 9,
  16922. - 10, 11, 12, 13, 83, 84, 14, 15, 16, 17,
  16923. - 18, 19, 20, 21, 22, 7, 8, 23, 10, 11,
  16924. - 12, 13, 24, 80, 14, 15, 88, -81, 90, 179,
  16925. - -81, -81, -81, -81, -81, -81, -81, -81, -81, 89,
  16926. - 24, -81, -81, 92, -81, -81, -81, -81, -81, -81,
  16927. - 116, 119, 99, 127, 122, 90, 130, 124, -72, -72,
  16928. - -72, -72, -72, -72, -72, -72, 132, 138, -72, -72,
  16929. - 92, 155, 158, 159, 160, 118, 123, 139, 131, 99,
  16930. - 165, 145, 167, 148, 124, 73, 83, 84, 83, 84,
  16931. - 173, 168, 83, 84, 149, 150, 153, 155, 84, 157,
  16932. - 164, 174, 166, 170, 171, 172, 176, 177, 178, 66,
  16933. - 114, 152, 85, 0, 0, 0, 0, 0, 0, 72
  16934. + 10, 88, 89, 54, 146, 147, 119, 1, 122, 164,
  16935. + 93, 141, 56, 142, 58, 156, 94, 62, 1, 90,
  16936. + 91, 131, 65, 66, 144, 145, 67, 90, 91, 132,
  16937. + 127, 68, 136, -31, 97, 2, 154, -31, -31, -31,
  16938. + -31, -31, -31, -31, -31, 98, 52, -31, -31, 99,
  16939. + -31, 100, 101, 102, 103, 104, -31, 105, 129, 106,
  16940. + 138, 173, 92, 141, 107, 142, 174, 172, 8, 9,
  16941. + 143, -33, 97, 90, 91, -33, -33, -33, -33, -33,
  16942. + -33, -33, -33, 98, 166, -33, -33, 99, -33, 100,
  16943. + 101, 102, 103, 104, -33, 105, 11, 106, 179, 151,
  16944. + 123, 126, 107, 135, 125, 130, 2, 139, 2, 90,
  16945. + 91, -5, 12, 55, 161, 13, 14, 15, 16, 17,
  16946. + 18, 19, 20, 65, 66, 21, 22, 23, 24, 25,
  16947. + 26, 27, 28, 29, 30, 57, 59, 31, 61, -4,
  16948. + 12, 63, 32, 13, 14, 15, 16, 17, 18, 19,
  16949. + 20, 64, 71, 21, 22, 23, 24, 25, 26, 27,
  16950. + 28, 29, 30, 72, 73, 31, 180, 90, 91, 52,
  16951. + 32, -85, 97, 82, 83, -85, -85, -85, -85, -85,
  16952. + -85, -85, -85, 84, 190, -85, -85, 99, -85, -85,
  16953. + -85, -85, -85, -85, -85, 85, 97, 106, 86, 87,
  16954. + -52, -52, 140, -52, -52, -52, -52, 98, 95, -52,
  16955. + -52, 99, 114, 115, 116, 117, 96, 148, 149, 150,
  16956. + 158, 106, 155, 159, 97, 163, 118, -76, -76, -76,
  16957. + -76, -76, -76, -76, -76, 160, 164, -76, -76, 99,
  16958. + 13, 14, 15, 16, 17, 18, 19, 20, 91, 106,
  16959. + 21, 22, 14, 15, 140, 17, 18, 19, 20, 168,
  16960. + 175, 21, 22, 177, 181, 182, 183, 32, 187, 167,
  16961. + 188, 169, 170, 171, 185, 189, 53, 51, 32, 176,
  16962. + 75, 178, 121, 0, 133, 162, 0, 0, 0, 0,
  16963. + 184
  16964. };
  16965. static const yytype_int16 yycheck[] =
  16966. {
  16967. - 5, 6, 0, 8, 58, 59, 11, 86, 87, 4,
  16968. - 5, 6, 7, 8, 9, 10, 11, 30, 97, 14,
  16969. - 15, 27, 25, 26, 25, 26, 29, 33, 30, 83,
  16970. - 84, 34, 25, 67, 25, 30, 70, 30, 72, 0,
  16971. - 1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
  16972. - 11, 12, 25, 14, 15, 16, 17, 18, 19, 20,
  16973. - 21, 22, 23, 30, 25, 25, 1, 146, 30, 30,
  16974. - 5, 6, 1, 8, 9, 10, 11, 12, 1, 14,
  16975. - 15, 16, 17, 18, 19, 20, 140, 30, 93, 67,
  16976. - 25, 30, 70, 30, 72, 30, 28, 25, 26, 31,
  16977. - 32, 155, 24, 108, 0, 1, 30, 3, 4, 5,
  16978. - 6, 7, 8, 9, 10, 11, 12, 30, 14, 15,
  16979. - 16, 17, 18, 19, 20, 21, 22, 23, 69, 25,
  16980. - 71, 30, 0, 1, 30, 3, 4, 5, 6, 7,
  16981. - 8, 9, 10, 11, 31, 32, 14, 15, 16, 17,
  16982. - 18, 19, 20, 21, 22, 5, 6, 25, 8, 9,
  16983. - 10, 11, 30, 30, 14, 15, 30, 0, 1, 174,
  16984. - 3, 4, 5, 6, 7, 8, 9, 10, 11, 30,
  16985. - 30, 14, 15, 16, 17, 18, 19, 20, 21, 22,
  16986. - 68, 69, 25, 71, 69, 1, 71, 30, 4, 5,
  16987. - 6, 7, 8, 9, 10, 11, 30, 30, 14, 15,
  16988. - 16, 14, 143, 144, 145, 68, 69, 30, 71, 25,
  16989. - 151, 25, 153, 1, 30, 30, 31, 32, 31, 32,
  16990. - 161, 30, 31, 32, 13, 30, 25, 14, 32, 30,
  16991. - 30, 33, 30, 30, 30, 30, 30, 30, 30, 29,
  16992. - 67, 109, 60, -1, -1, -1, -1, -1, -1, 40
  16993. + 1, 67, 68, 10, 93, 94, 76, 3, 76, 14,
  16994. + 28, 81, 13, 81, 15, 104, 34, 18, 3, 32,
  16995. + 33, 23, 26, 27, 90, 91, 30, 32, 33, 31,
  16996. + 78, 35, 80, 0, 1, 31, 102, 4, 5, 6,
  16997. + 7, 8, 9, 10, 11, 12, 31, 14, 15, 16,
  16998. + 17, 18, 19, 20, 21, 22, 23, 24, 78, 26,
  16999. + 80, 26, 69, 133, 31, 133, 31, 156, 26, 27,
  17000. + 29, 0, 1, 32, 33, 4, 5, 6, 7, 8,
  17001. + 9, 10, 11, 12, 150, 14, 15, 16, 17, 18,
  17002. + 19, 20, 21, 22, 23, 24, 0, 26, 164, 100,
  17003. + 77, 78, 31, 80, 77, 78, 31, 80, 31, 32,
  17004. + 33, 0, 1, 31, 115, 4, 5, 6, 7, 8,
  17005. + 9, 10, 11, 26, 27, 14, 15, 16, 17, 18,
  17006. + 19, 20, 21, 22, 23, 31, 26, 26, 31, 0,
  17007. + 1, 26, 31, 4, 5, 6, 7, 8, 9, 10,
  17008. + 11, 26, 31, 14, 15, 16, 17, 18, 19, 20,
  17009. + 21, 22, 23, 1, 1, 26, 31, 32, 33, 31,
  17010. + 31, 0, 1, 31, 31, 4, 5, 6, 7, 8,
  17011. + 9, 10, 11, 31, 185, 14, 15, 16, 17, 18,
  17012. + 19, 20, 21, 22, 23, 31, 1, 26, 31, 31,
  17013. + 5, 6, 31, 8, 9, 10, 11, 12, 31, 14,
  17014. + 15, 16, 17, 18, 19, 20, 31, 31, 31, 25,
  17015. + 1, 26, 26, 13, 1, 26, 31, 4, 5, 6,
  17016. + 7, 8, 9, 10, 11, 31, 14, 14, 15, 16,
  17017. + 4, 5, 6, 7, 8, 9, 10, 11, 33, 26,
  17018. + 14, 15, 5, 6, 31, 8, 9, 10, 11, 31,
  17019. + 31, 14, 15, 31, 31, 31, 31, 31, 31, 151,
  17020. + 31, 153, 154, 155, 34, 31, 7, 6, 31, 161,
  17021. + 37, 163, 76, -1, 79, 116, -1, -1, -1, -1,
  17022. + 172
  17023. };
  17024. /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
  17025. symbol of state STATE-NUM. */
  17026. static const yytype_uint8 yystos[] =
  17027. {
  17028. - 0, 36, 37, 0, 1, 3, 4, 5, 6, 7,
  17029. - 8, 9, 10, 11, 14, 15, 16, 17, 18, 19,
  17030. - 20, 21, 22, 25, 30, 38, 39, 41, 42, 43,
  17031. - 44, 50, 51, 53, 57, 59, 61, 62, 64, 66,
  17032. - 67, 68, 75, 30, 25, 26, 74, 74, 30, 74,
  17033. - 25, 80, 30, 74, 25, 25, 25, 26, 29, 34,
  17034. - 78, 79, 30, 1, 1, 45, 45, 54, 56, 60,
  17035. - 71, 65, 71, 30, 76, 30, 30, 30, 30, 30,
  17036. - 30, 78, 78, 31, 32, 76, 27, 33, 30, 30,
  17037. - 1, 12, 16, 18, 19, 20, 21, 22, 23, 25,
  17038. - 30, 40, 46, 47, 69, 70, 72, 17, 18, 19,
  17039. - 20, 30, 40, 55, 70, 72, 39, 52, 75, 39,
  17040. - 53, 58, 64, 75, 30, 40, 72, 39, 53, 63,
  17041. - 64, 75, 30, 28, 78, 78, 79, 79, 30, 30,
  17042. - 24, 74, 73, 74, 78, 25, 79, 48, 1, 13,
  17043. - 30, 74, 73, 25, 78, 14, 77, 30, 77, 77,
  17044. - 77, 79, 25, 30, 30, 77, 30, 77, 30, 78,
  17045. - 30, 30, 30, 77, 33, 49, 30, 30, 30, 74
  17046. + 0, 3, 31, 37, 38, 39, 63, 81, 26, 27,
  17047. + 79, 0, 1, 4, 5, 6, 7, 8, 9, 10,
  17048. + 11, 14, 15, 16, 17, 18, 19, 20, 21, 22,
  17049. + 23, 26, 31, 40, 41, 43, 44, 45, 46, 52,
  17050. + 53, 55, 59, 61, 64, 65, 67, 69, 70, 71,
  17051. + 80, 39, 31, 38, 81, 31, 79, 31, 79, 26,
  17052. + 85, 31, 79, 26, 26, 26, 27, 30, 35, 83,
  17053. + 84, 31, 1, 1, 47, 47, 56, 58, 62, 76,
  17054. + 68, 74, 31, 31, 31, 31, 31, 31, 83, 83,
  17055. + 32, 33, 81, 28, 34, 31, 31, 1, 12, 16,
  17056. + 18, 19, 20, 21, 22, 24, 26, 31, 42, 48,
  17057. + 49, 72, 73, 75, 17, 18, 19, 20, 31, 42,
  17058. + 57, 73, 75, 41, 54, 80, 41, 55, 60, 67,
  17059. + 80, 23, 31, 74, 77, 41, 55, 66, 67, 80,
  17060. + 31, 42, 75, 29, 83, 83, 84, 84, 31, 31,
  17061. + 25, 79, 78, 79, 83, 26, 84, 50, 1, 13,
  17062. + 31, 79, 78, 26, 14, 82, 83, 82, 31, 82,
  17063. + 82, 82, 84, 26, 31, 31, 82, 31, 82, 83,
  17064. + 31, 31, 31, 31, 82, 34, 51, 31, 31, 31,
  17065. + 79
  17066. };
  17067. #define yyerrok (yyerrstatus = 0)
  17068. @@ -815,9 +800,18 @@
  17069. /* Like YYERROR except do call yyerror. This remains here temporarily
  17070. to ease the transition to the new meaning of YYERROR, for GCC.
  17071. - Once GCC version 2 has supplanted version 1, this can go. */
  17072. + Once GCC version 2 has supplanted version 1, this can go. However,
  17073. + YYFAIL appears to be in use. Nevertheless, it is formally deprecated
  17074. + in Bison 2.4.2's NEWS entry, where a plan to phase it out is
  17075. + discussed. */
  17076. #define YYFAIL goto yyerrlab
  17077. +#if defined YYFAIL
  17078. + /* This is here to suppress warnings from the GCC cpp's
  17079. + -Wunused-macros. Normally we don't worry about that warning, but
  17080. + some users do, and we want to make it easy for users to remove
  17081. + YYFAIL uses, which will produce warnings from Bison 2.5. */
  17082. +#endif
  17083. #define YYRECOVERING() (!!yyerrstatus)
  17084. @@ -874,7 +868,7 @@
  17085. we won't break user code: when these are the locations we know. */
  17086. #ifndef YY_LOCATION_PRINT
  17087. -# if YYLTYPE_IS_TRIVIAL
  17088. +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
  17089. # define YY_LOCATION_PRINT(File, Loc) \
  17090. fprintf (File, "%d.%d-%d.%d", \
  17091. (Loc).first_line, (Loc).first_column, \
  17092. @@ -985,17 +979,20 @@
  17093. #if (defined __STDC__ || defined __C99__FUNC__ \
  17094. || defined __cplusplus || defined _MSC_VER)
  17095. static void
  17096. -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
  17097. +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
  17098. #else
  17099. static void
  17100. -yy_stack_print (bottom, top)
  17101. - yytype_int16 *bottom;
  17102. - yytype_int16 *top;
  17103. +yy_stack_print (yybottom, yytop)
  17104. + yytype_int16 *yybottom;
  17105. + yytype_int16 *yytop;
  17106. #endif
  17107. {
  17108. YYFPRINTF (stderr, "Stack now");
  17109. - for (; bottom <= top; ++bottom)
  17110. - YYFPRINTF (stderr, " %d", *bottom);
  17111. + for (; yybottom <= yytop; yybottom++)
  17112. + {
  17113. + int yybot = *yybottom;
  17114. + YYFPRINTF (stderr, " %d", yybot);
  17115. + }
  17116. YYFPRINTF (stderr, "\n");
  17117. }
  17118. @@ -1029,11 +1026,11 @@
  17119. /* The symbols being reduced. */
  17120. for (yyi = 0; yyi < yynrhs; yyi++)
  17121. {
  17122. - fprintf (stderr, " $%d = ", yyi + 1);
  17123. + YYFPRINTF (stderr, " $%d = ", yyi + 1);
  17124. yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
  17125. &(yyvsp[(yyi + 1) - (yynrhs)])
  17126. );
  17127. - fprintf (stderr, "\n");
  17128. + YYFPRINTF (stderr, "\n");
  17129. }
  17130. }
  17131. @@ -1308,7 +1305,7 @@
  17132. switch (yytype)
  17133. {
  17134. - case 51: /* "choice_entry" */
  17135. + case 53: /* "choice_entry" */
  17136. {
  17137. fprintf(stderr, "%s:%d: missing end statement for this entry\n",
  17138. @@ -1318,7 +1315,7 @@
  17139. };
  17140. break;
  17141. - case 57: /* "if_entry" */
  17142. + case 59: /* "if_entry" */
  17143. {
  17144. fprintf(stderr, "%s:%d: missing end statement for this entry\n",
  17145. @@ -1328,7 +1325,7 @@
  17146. };
  17147. break;
  17148. - case 62: /* "menu_entry" */
  17149. + case 65: /* "menu_entry" */
  17150. {
  17151. fprintf(stderr, "%s:%d: missing end statement for this entry\n",
  17152. @@ -1343,10 +1340,8 @@
  17153. break;
  17154. }
  17155. }
  17156. -
  17157. /* Prevent warnings from -Wmissing-prototypes. */
  17158. -
  17159. #ifdef YYPARSE_PARAM
  17160. #if defined __STDC__ || defined __cplusplus
  17161. int yyparse (void *YYPARSE_PARAM);
  17162. @@ -1362,11 +1357,10 @@
  17163. #endif /* ! YYPARSE_PARAM */
  17164. -
  17165. -/* The look-ahead symbol. */
  17166. +/* The lookahead symbol. */
  17167. int yychar;
  17168. -/* The semantic value of the look-ahead symbol. */
  17169. +/* The semantic value of the lookahead symbol. */
  17170. YYSTYPE yylval;
  17171. /* Number of syntax errors so far. */
  17172. @@ -1374,9 +1368,9 @@
  17173. -/*----------.
  17174. -| yyparse. |
  17175. -`----------*/
  17176. +/*-------------------------.
  17177. +| yyparse or yypush_parse. |
  17178. +`-------------------------*/
  17179. #ifdef YYPARSE_PARAM
  17180. #if (defined __STDC__ || defined __C99__FUNC__ \
  17181. @@ -1400,14 +1394,39 @@
  17182. #endif
  17183. #endif
  17184. {
  17185. -
  17186. - int yystate;
  17187. +
  17188. +
  17189. + int yystate;
  17190. + /* Number of tokens to shift before error messages enabled. */
  17191. + int yyerrstatus;
  17192. +
  17193. + /* The stacks and their tools:
  17194. + `yyss': related to states.
  17195. + `yyvs': related to semantic values.
  17196. +
  17197. + Refer to the stacks thru separate pointers, to allow yyoverflow
  17198. + to reallocate them elsewhere. */
  17199. +
  17200. + /* The state stack. */
  17201. + yytype_int16 yyssa[YYINITDEPTH];
  17202. + yytype_int16 *yyss;
  17203. + yytype_int16 *yyssp;
  17204. +
  17205. + /* The semantic value stack. */
  17206. + YYSTYPE yyvsa[YYINITDEPTH];
  17207. + YYSTYPE *yyvs;
  17208. + YYSTYPE *yyvsp;
  17209. +
  17210. + YYSIZE_T yystacksize;
  17211. +
  17212. int yyn;
  17213. int yyresult;
  17214. - /* Number of tokens to shift before error messages enabled. */
  17215. - int yyerrstatus;
  17216. - /* Look-ahead token as an internal (translated) token number. */
  17217. - int yytoken = 0;
  17218. + /* Lookahead token as an internal (translated) token number. */
  17219. + int yytoken;
  17220. + /* The variables used to return semantic value and location from the
  17221. + action routines. */
  17222. + YYSTYPE yyval;
  17223. +
  17224. #if YYERROR_VERBOSE
  17225. /* Buffer for error messages, and its allocated size. */
  17226. char yymsgbuf[128];
  17227. @@ -1415,51 +1434,28 @@
  17228. YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
  17229. #endif
  17230. - /* Three stacks and their tools:
  17231. - `yyss': related to states,
  17232. - `yyvs': related to semantic values,
  17233. - `yyls': related to locations.
  17234. -
  17235. - Refer to the stacks thru separate pointers, to allow yyoverflow
  17236. - to reallocate them elsewhere. */
  17237. -
  17238. - /* The state stack. */
  17239. - yytype_int16 yyssa[YYINITDEPTH];
  17240. - yytype_int16 *yyss = yyssa;
  17241. - yytype_int16 *yyssp;
  17242. -
  17243. - /* The semantic value stack. */
  17244. - YYSTYPE yyvsa[YYINITDEPTH];
  17245. - YYSTYPE *yyvs = yyvsa;
  17246. - YYSTYPE *yyvsp;
  17247. -
  17248. -
  17249. -
  17250. #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
  17251. - YYSIZE_T yystacksize = YYINITDEPTH;
  17252. -
  17253. - /* The variables used to return semantic value and location from the
  17254. - action routines. */
  17255. - YYSTYPE yyval;
  17256. -
  17257. -
  17258. /* The number of symbols on the RHS of the reduced rule.
  17259. Keep to zero when no symbol should be popped. */
  17260. int yylen = 0;
  17261. + yytoken = 0;
  17262. + yyss = yyssa;
  17263. + yyvs = yyvsa;
  17264. + yystacksize = YYINITDEPTH;
  17265. +
  17266. YYDPRINTF ((stderr, "Starting parse\n"));
  17267. yystate = 0;
  17268. yyerrstatus = 0;
  17269. yynerrs = 0;
  17270. - yychar = YYEMPTY; /* Cause a token to be read. */
  17271. + yychar = YYEMPTY; /* Cause a token to be read. */
  17272. /* Initialize stack pointers.
  17273. Waste one element of value and location stack
  17274. so that they stay on the same level as the state stack.
  17275. The wasted elements are never initialized. */
  17276. -
  17277. yyssp = yyss;
  17278. yyvsp = yyvs;
  17279. @@ -1489,7 +1485,6 @@
  17280. YYSTYPE *yyvs1 = yyvs;
  17281. yytype_int16 *yyss1 = yyss;
  17282. -
  17283. /* Each stack pointer address is followed by the size of the
  17284. data in use in that stack, in bytes. This used to be a
  17285. conditional around just the two extra args, but that might
  17286. @@ -1497,7 +1492,6 @@
  17287. yyoverflow (YY_("memory exhausted"),
  17288. &yyss1, yysize * sizeof (*yyssp),
  17289. &yyvs1, yysize * sizeof (*yyvsp),
  17290. -
  17291. &yystacksize);
  17292. yyss = yyss1;
  17293. @@ -1520,9 +1514,8 @@
  17294. (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
  17295. if (! yyptr)
  17296. goto yyexhaustedlab;
  17297. - YYSTACK_RELOCATE (yyss);
  17298. - YYSTACK_RELOCATE (yyvs);
  17299. -
  17300. + YYSTACK_RELOCATE (yyss_alloc, yyss);
  17301. + YYSTACK_RELOCATE (yyvs_alloc, yyvs);
  17302. # undef YYSTACK_RELOCATE
  17303. if (yyss1 != yyssa)
  17304. YYSTACK_FREE (yyss1);
  17305. @@ -1533,7 +1526,6 @@
  17306. yyssp = yyss + yysize - 1;
  17307. yyvsp = yyvs + yysize - 1;
  17308. -
  17309. YYDPRINTF ((stderr, "Stack size increased to %lu\n",
  17310. (unsigned long int) yystacksize));
  17311. @@ -1543,6 +1535,9 @@
  17312. YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  17313. + if (yystate == YYFINAL)
  17314. + YYACCEPT;
  17315. +
  17316. goto yybackup;
  17317. /*-----------.
  17318. @@ -1551,16 +1546,16 @@
  17319. yybackup:
  17320. /* Do appropriate processing given the current state. Read a
  17321. - look-ahead token if we need one and don't already have one. */
  17322. + lookahead token if we need one and don't already have one. */
  17323. - /* First try to decide what to do without reference to look-ahead token. */
  17324. + /* First try to decide what to do without reference to lookahead token. */
  17325. yyn = yypact[yystate];
  17326. if (yyn == YYPACT_NINF)
  17327. goto yydefault;
  17328. - /* Not known => get a look-ahead token if don't already have one. */
  17329. + /* Not known => get a lookahead token if don't already have one. */
  17330. - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
  17331. + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
  17332. if (yychar == YYEMPTY)
  17333. {
  17334. YYDPRINTF ((stderr, "Reading a token: "));
  17335. @@ -1592,20 +1587,16 @@
  17336. goto yyreduce;
  17337. }
  17338. - if (yyn == YYFINAL)
  17339. - YYACCEPT;
  17340. -
  17341. /* Count tokens shifted since error; after three, turn off error
  17342. status. */
  17343. if (yyerrstatus)
  17344. yyerrstatus--;
  17345. - /* Shift the look-ahead token. */
  17346. + /* Shift the lookahead token. */
  17347. YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
  17348. - /* Discard the shifted token unless it is eof. */
  17349. - if (yychar != YYEOF)
  17350. - yychar = YYEMPTY;
  17351. + /* Discard the shifted token. */
  17352. + yychar = YYEMPTY;
  17353. yystate = yyn;
  17354. *++yyvsp = yylval;
  17355. @@ -1644,39 +1635,39 @@
  17356. YY_REDUCE_PRINT (yyn);
  17357. switch (yyn)
  17358. {
  17359. - case 8:
  17360. + case 10:
  17361. { zconf_error("unexpected end statement"); ;}
  17362. break;
  17363. - case 9:
  17364. + case 11:
  17365. { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); ;}
  17366. break;
  17367. - case 10:
  17368. + case 12:
  17369. {
  17370. zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
  17371. ;}
  17372. break;
  17373. - case 11:
  17374. + case 13:
  17375. { zconf_error("invalid statement"); ;}
  17376. break;
  17377. - case 25:
  17378. + case 28:
  17379. { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;}
  17380. break;
  17381. - case 26:
  17382. + case 29:
  17383. { zconf_error("invalid option"); ;}
  17384. break;
  17385. - case 27:
  17386. + case 30:
  17387. {
  17388. struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
  17389. @@ -1686,7 +1677,7 @@
  17390. ;}
  17391. break;
  17392. - case 28:
  17393. + case 31:
  17394. {
  17395. menu_end_entry();
  17396. @@ -1694,7 +1685,7 @@
  17397. ;}
  17398. break;
  17399. - case 29:
  17400. + case 32:
  17401. {
  17402. struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
  17403. @@ -1704,7 +1695,7 @@
  17404. ;}
  17405. break;
  17406. - case 30:
  17407. + case 33:
  17408. {
  17409. if (current_entry->prompt)
  17410. @@ -1716,7 +1707,7 @@
  17411. ;}
  17412. break;
  17413. - case 38:
  17414. + case 41:
  17415. {
  17416. menu_set_type((yyvsp[(1) - (3)].id)->stype);
  17417. @@ -1726,7 +1717,7 @@
  17418. ;}
  17419. break;
  17420. - case 39:
  17421. + case 42:
  17422. {
  17423. menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
  17424. @@ -1734,7 +1725,7 @@
  17425. ;}
  17426. break;
  17427. - case 40:
  17428. + case 43:
  17429. {
  17430. menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
  17431. @@ -1746,7 +1737,7 @@
  17432. ;}
  17433. break;
  17434. - case 41:
  17435. + case 44:
  17436. {
  17437. menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
  17438. @@ -1754,7 +1745,7 @@
  17439. ;}
  17440. break;
  17441. - case 42:
  17442. + case 45:
  17443. {
  17444. menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
  17445. @@ -1762,10 +1753,10 @@
  17446. ;}
  17447. break;
  17448. - case 45:
  17449. + case 48:
  17450. {
  17451. - struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
  17452. + const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
  17453. if (id && id->flags & TF_OPTION)
  17454. menu_add_option(id->token, (yyvsp[(3) - (3)].string));
  17455. else
  17456. @@ -1774,17 +1765,17 @@
  17457. ;}
  17458. break;
  17459. - case 46:
  17460. + case 49:
  17461. { (yyval.string) = NULL; ;}
  17462. break;
  17463. - case 47:
  17464. + case 50:
  17465. { (yyval.string) = (yyvsp[(2) - (2)].string); ;}
  17466. break;
  17467. - case 48:
  17468. + case 51:
  17469. {
  17470. struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
  17471. @@ -1795,14 +1786,14 @@
  17472. ;}
  17473. break;
  17474. - case 49:
  17475. + case 52:
  17476. {
  17477. (yyval.menu) = menu_add_menu();
  17478. ;}
  17479. break;
  17480. - case 50:
  17481. + case 53:
  17482. {
  17483. if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
  17484. @@ -1812,7 +1803,7 @@
  17485. ;}
  17486. break;
  17487. - case 58:
  17488. + case 61:
  17489. {
  17490. menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
  17491. @@ -1820,7 +1811,7 @@
  17492. ;}
  17493. break;
  17494. - case 59:
  17495. + case 62:
  17496. {
  17497. if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
  17498. @@ -1833,7 +1824,7 @@
  17499. ;}
  17500. break;
  17501. - case 60:
  17502. + case 63:
  17503. {
  17504. current_entry->sym->flags |= SYMBOL_OPTIONAL;
  17505. @@ -1841,7 +1832,7 @@
  17506. ;}
  17507. break;
  17508. - case 61:
  17509. + case 64:
  17510. {
  17511. if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
  17512. @@ -1853,7 +1844,7 @@
  17513. ;}
  17514. break;
  17515. - case 64:
  17516. + case 67:
  17517. {
  17518. printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
  17519. @@ -1863,7 +1854,7 @@
  17520. ;}
  17521. break;
  17522. - case 65:
  17523. + case 68:
  17524. {
  17525. if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
  17526. @@ -1873,7 +1864,14 @@
  17527. ;}
  17528. break;
  17529. - case 71:
  17530. + case 74:
  17531. +
  17532. + {
  17533. + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
  17534. +;}
  17535. + break;
  17536. +
  17537. + case 75:
  17538. {
  17539. menu_add_entry(NULL);
  17540. @@ -1882,14 +1880,14 @@
  17541. ;}
  17542. break;
  17543. - case 72:
  17544. + case 76:
  17545. {
  17546. (yyval.menu) = menu_add_menu();
  17547. ;}
  17548. break;
  17549. - case 73:
  17550. + case 77:
  17551. {
  17552. if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
  17553. @@ -1899,7 +1897,7 @@
  17554. ;}
  17555. break;
  17556. - case 79:
  17557. + case 83:
  17558. {
  17559. printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
  17560. @@ -1907,7 +1905,7 @@
  17561. ;}
  17562. break;
  17563. - case 80:
  17564. + case 84:
  17565. {
  17566. menu_add_entry(NULL);
  17567. @@ -1916,14 +1914,14 @@
  17568. ;}
  17569. break;
  17570. - case 81:
  17571. + case 85:
  17572. {
  17573. menu_end_entry();
  17574. ;}
  17575. break;
  17576. - case 82:
  17577. + case 86:
  17578. {
  17579. printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
  17580. @@ -1931,14 +1929,14 @@
  17581. ;}
  17582. break;
  17583. - case 83:
  17584. + case 87:
  17585. {
  17586. current_entry->help = (yyvsp[(2) - (2)].string);
  17587. ;}
  17588. break;
  17589. - case 88:
  17590. + case 92:
  17591. {
  17592. menu_add_dep((yyvsp[(3) - (4)].expr));
  17593. @@ -1946,90 +1944,96 @@
  17594. ;}
  17595. break;
  17596. - case 90:
  17597. + case 96:
  17598. +
  17599. + {
  17600. + menu_add_visibility((yyvsp[(2) - (2)].expr));
  17601. +;}
  17602. + break;
  17603. +
  17604. + case 98:
  17605. {
  17606. menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
  17607. ;}
  17608. break;
  17609. - case 93:
  17610. + case 101:
  17611. { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
  17612. break;
  17613. - case 94:
  17614. + case 102:
  17615. { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
  17616. break;
  17617. - case 95:
  17618. + case 103:
  17619. { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
  17620. break;
  17621. - case 98:
  17622. + case 106:
  17623. { (yyval.expr) = NULL; ;}
  17624. break;
  17625. - case 99:
  17626. + case 107:
  17627. { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
  17628. break;
  17629. - case 100:
  17630. + case 108:
  17631. { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;}
  17632. break;
  17633. - case 101:
  17634. + case 109:
  17635. { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
  17636. break;
  17637. - case 102:
  17638. + case 110:
  17639. { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
  17640. break;
  17641. - case 103:
  17642. + case 111:
  17643. { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
  17644. break;
  17645. - case 104:
  17646. + case 112:
  17647. { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;}
  17648. break;
  17649. - case 105:
  17650. + case 113:
  17651. { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
  17652. break;
  17653. - case 106:
  17654. + case 114:
  17655. { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
  17656. break;
  17657. - case 107:
  17658. + case 115:
  17659. { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;}
  17660. break;
  17661. - case 108:
  17662. + case 116:
  17663. { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
  17664. break;
  17665. - case 109:
  17666. + case 117:
  17667. { (yyval.string) = NULL; ;}
  17668. break;
  17669. -/* Line 1267 of yacc.c. */
  17670. default: break;
  17671. }
  17672. @@ -2041,7 +2045,6 @@
  17673. *++yyvsp = yyval;
  17674. -
  17675. /* Now `shift' the result of the reduction. Determine what state
  17676. that goes to, based on the state we popped back to and the rule
  17677. number reduced by. */
  17678. @@ -2106,7 +2109,7 @@
  17679. if (yyerrstatus == 3)
  17680. {
  17681. - /* If just tried and failed to reuse look-ahead token after an
  17682. + /* If just tried and failed to reuse lookahead token after an
  17683. error, discard it. */
  17684. if (yychar <= YYEOF)
  17685. @@ -2123,7 +2126,7 @@
  17686. }
  17687. }
  17688. - /* Else will try to reuse look-ahead token after shifting the error
  17689. + /* Else will try to reuse lookahead token after shifting the error
  17690. token. */
  17691. goto yyerrlab1;
  17692. @@ -2180,9 +2183,6 @@
  17693. YY_STACK_PRINT (yyss, yyssp);
  17694. }
  17695. - if (yyn == YYFINAL)
  17696. - YYACCEPT;
  17697. -
  17698. *++yyvsp = yylval;
  17699. @@ -2207,7 +2207,7 @@
  17700. yyresult = 1;
  17701. goto yyreturn;
  17702. -#ifndef yyoverflow
  17703. +#if !defined(yyoverflow) || YYERROR_VERBOSE
  17704. /*-------------------------------------------------.
  17705. | yyexhaustedlab -- memory exhaustion comes here. |
  17706. `-------------------------------------------------*/
  17707. @@ -2218,7 +2218,7 @@
  17708. #endif
  17709. yyreturn:
  17710. - if (yychar != YYEOF && yychar != YYEMPTY)
  17711. + if (yychar != YYEMPTY)
  17712. yydestruct ("Cleanup: discarding lookahead",
  17713. yytoken, &yylval);
  17714. /* Do not reclaim the symbols of the rule which action triggered
  17715. @@ -2255,16 +2255,14 @@
  17716. zconf_initscan(name);
  17717. sym_init();
  17718. - menu_init();
  17719. + _menu_init();
  17720. modules_sym = sym_lookup(NULL, 0);
  17721. modules_sym->type = S_BOOLEAN;
  17722. modules_sym->flags |= SYMBOL_AUTO;
  17723. rootmenu.prompt = menu_add_prompt(P_MENU, "uClibc Configuration", NULL);
  17724. -#if YYDEBUG
  17725. if (getenv("ZCONF_DEBUG"))
  17726. zconfdebug = 1;
  17727. -#endif
  17728. zconfparse();
  17729. if (zconfnerrs)
  17730. exit(1);
  17731. @@ -2274,6 +2272,10 @@
  17732. prop = prop_alloc(P_DEFAULT, modules_sym);
  17733. prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
  17734. }
  17735. +
  17736. + rootmenu.prompt->text = _(rootmenu.prompt->text);
  17737. + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);
  17738. +
  17739. menu_finalize(&rootmenu);
  17740. for_all_symbols(i, sym) {
  17741. if (sym_check_deps(sym))
  17742. @@ -2284,7 +2286,7 @@
  17743. sym_set_change_count(1);
  17744. }
  17745. -const char *zconf_tokenname(int token)
  17746. +static const char *zconf_tokenname(int token)
  17747. {
  17748. switch (token) {
  17749. case T_MENU: return "menu";
  17750. @@ -2294,11 +2296,12 @@
  17751. case T_IF: return "if";
  17752. case T_ENDIF: return "endif";
  17753. case T_DEPENDS: return "depends";
  17754. + case T_VISIBLE: return "visible";
  17755. }
  17756. return "<token>";
  17757. }
  17758. -static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
  17759. +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)
  17760. {
  17761. if (id->token != endtoken) {
  17762. zconf_error("unexpected '%s' within %s block",
  17763. @@ -2343,12 +2346,10 @@
  17764. static void zconferror(const char *err)
  17765. {
  17766. -#if YYDEBUG
  17767. fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
  17768. -#endif
  17769. }
  17770. -void print_quoted_string(FILE *out, const char *str)
  17771. +static void print_quoted_string(FILE *out, const char *str)
  17772. {
  17773. const char *p;
  17774. int len;
  17775. @@ -2365,15 +2366,15 @@
  17776. putc('"', out);
  17777. }
  17778. -void print_symbol(FILE *out, struct menu *menu)
  17779. +static void print_symbol(FILE *out, struct menu *menu)
  17780. {
  17781. struct symbol *sym = menu->sym;
  17782. struct property *prop;
  17783. if (sym_is_choice(sym))
  17784. - fprintf(out, "choice\n");
  17785. + fprintf(out, "\nchoice\n");
  17786. else
  17787. - fprintf(out, "config %s\n", sym->name);
  17788. + fprintf(out, "\nconfig %s\n", sym->name);
  17789. switch (sym->type) {
  17790. case S_BOOLEAN:
  17791. fputs(" boolean\n", out);
  17792. @@ -2419,6 +2420,21 @@
  17793. case P_CHOICE:
  17794. fputs(" #choice value\n", out);
  17795. break;
  17796. + case P_SELECT:
  17797. + fputs( " select ", out);
  17798. + expr_fprint(prop->expr, out);
  17799. + fputc('\n', out);
  17800. + break;
  17801. + case P_RANGE:
  17802. + fputs( " range ", out);
  17803. + expr_fprint(prop->expr, out);
  17804. + fputc('\n', out);
  17805. + break;
  17806. + case P_MENU:
  17807. + fputs( " menu ", out);
  17808. + print_quoted_string(out, prop->text);
  17809. + fputc('\n', out);
  17810. + break;
  17811. default:
  17812. fprintf(out, " unknown prop %d!\n", prop->type);
  17813. break;
  17814. @@ -2430,7 +2446,6 @@
  17815. menu->help[len] = 0;
  17816. fprintf(out, " help\n%s\n", menu->help);
  17817. }
  17818. - fputc('\n', out);
  17819. }
  17820. void zconfdump(FILE *out)
  17821. @@ -2463,7 +2478,6 @@
  17822. expr_fprint(prop->visible.expr, out);
  17823. fputc('\n', out);
  17824. }
  17825. - fputs("\n", out);
  17826. }
  17827. if (menu->list)
  17828. @@ -2481,7 +2495,7 @@
  17829. }
  17830. }
  17831. -#include "lex.zconf.c"
  17832. +#include "zconf.lex.c"
  17833. #include "util.c"
  17834. #include "confdata.c"
  17835. #include "expr.c"
  17836. diff -Nur uClibc-0.9.33.2/extra/config/zconf.y uClibc-git/extra/config/zconf.y
  17837. --- uClibc-0.9.33.2/extra/config/zconf.y 2012-05-15 09:20:09.000000000 +0200
  17838. +++ uClibc-git/extra/config/zconf.y 2014-02-03 12:32:56.000000000 +0100
  17839. @@ -11,11 +11,8 @@
  17840. #include <string.h>
  17841. #include <stdbool.h>
  17842. -#define LKC_DIRECT_LINK
  17843. #include "lkc.h"
  17844. -#include "zconf.hash.c"
  17845. -
  17846. #define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
  17847. #define PRINTD 0x0001
  17848. @@ -27,18 +24,14 @@
  17849. static void zconfprint(const char *err, ...);
  17850. static void zconf_error(const char *err, ...);
  17851. static void zconferror(const char *err);
  17852. -static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
  17853. +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken);
  17854. -struct symbol *symbol_hash[257];
  17855. +struct symbol *symbol_hash[SYMBOL_HASHSIZE];
  17856. static struct menu *current_menu, *current_entry;
  17857. -#define YYDEBUG 0
  17858. -#if YYDEBUG
  17859. -#define YYERROR_VERBOSE
  17860. -#endif
  17861. %}
  17862. -%expect 26
  17863. +%expect 30
  17864. %union
  17865. {
  17866. @@ -47,7 +40,7 @@
  17867. struct symbol *symbol;
  17868. struct expr *expr;
  17869. struct menu *menu;
  17870. - struct kconf_id *id;
  17871. + const struct kconf_id *id;
  17872. }
  17873. %token <id>T_MAINMENU
  17874. @@ -70,6 +63,7 @@
  17875. %token <id>T_DEFAULT
  17876. %token <id>T_SELECT
  17877. %token <id>T_RANGE
  17878. +%token <id>T_VISIBLE
  17879. %token <id>T_OPTION
  17880. %token <id>T_ON
  17881. %token <string> T_WORD
  17882. @@ -100,15 +94,21 @@
  17883. menu_end_menu();
  17884. } if_entry menu_entry choice_entry
  17885. +%{
  17886. +/* Include zconf.hash.c here so it can see the token constants. */
  17887. +#include "zconf.hash.c"
  17888. +%}
  17889. +
  17890. %%
  17891. -input: stmt_list;
  17892. +input: nl start | start;
  17893. +
  17894. +start: mainmenu_stmt stmt_list | stmt_list;
  17895. stmt_list:
  17896. /* empty */
  17897. | stmt_list common_stmt
  17898. | stmt_list choice_stmt
  17899. | stmt_list menu_stmt
  17900. - | stmt_list T_MAINMENU prompt nl
  17901. | stmt_list end { zconf_error("unexpected end statement"); }
  17902. | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
  17903. | stmt_list option_name error T_EOL
  17904. @@ -119,7 +119,7 @@
  17905. ;
  17906. option_name:
  17907. - T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT
  17908. + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE
  17909. ;
  17910. common_stmt:
  17911. @@ -224,7 +224,7 @@
  17912. /* empty */
  17913. | symbol_option_list T_WORD symbol_option_arg
  17914. {
  17915. - struct kconf_id *id = kconf_id_lookup($2, strlen($2));
  17916. + const struct kconf_id *id = kconf_id_lookup($2, strlen($2));
  17917. if (id && id->flags & TF_OPTION)
  17918. menu_add_option(id->token, $3);
  17919. else
  17920. @@ -339,6 +339,13 @@
  17921. | if_block choice_stmt
  17922. ;
  17923. +/* mainmenu entry */
  17924. +
  17925. +mainmenu_stmt: T_MAINMENU prompt nl
  17926. +{
  17927. + menu_add_prompt(P_MENU, $2, NULL);
  17928. +};
  17929. +
  17930. /* menu entry */
  17931. menu: T_MENU prompt T_EOL
  17932. @@ -348,7 +355,7 @@
  17933. printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
  17934. };
  17935. -menu_entry: menu depends_list
  17936. +menu_entry: menu visibility_list depends_list
  17937. {
  17938. $$ = menu_add_menu();
  17939. };
  17940. @@ -419,6 +426,19 @@
  17941. printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
  17942. };
  17943. +/* visibility option */
  17944. +
  17945. +visibility_list:
  17946. + /* empty */
  17947. + | visibility_list visible
  17948. + | visibility_list T_EOL
  17949. +;
  17950. +
  17951. +visible: T_VISIBLE if_expr
  17952. +{
  17953. + menu_add_visibility($2);
  17954. +};
  17955. +
  17956. /* prompt statement */
  17957. prompt_stmt_opt:
  17958. @@ -472,16 +492,14 @@
  17959. zconf_initscan(name);
  17960. sym_init();
  17961. - menu_init();
  17962. + _menu_init();
  17963. modules_sym = sym_lookup(NULL, 0);
  17964. modules_sym->type = S_BOOLEAN;
  17965. modules_sym->flags |= SYMBOL_AUTO;
  17966. rootmenu.prompt = menu_add_prompt(P_MENU, "uClibc Configuration", NULL);
  17967. -#if YYDEBUG
  17968. if (getenv("ZCONF_DEBUG"))
  17969. zconfdebug = 1;
  17970. -#endif
  17971. zconfparse();
  17972. if (zconfnerrs)
  17973. exit(1);
  17974. @@ -491,6 +509,10 @@
  17975. prop = prop_alloc(P_DEFAULT, modules_sym);
  17976. prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
  17977. }
  17978. +
  17979. + rootmenu.prompt->text = _(rootmenu.prompt->text);
  17980. + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text);
  17981. +
  17982. menu_finalize(&rootmenu);
  17983. for_all_symbols(i, sym) {
  17984. if (sym_check_deps(sym))
  17985. @@ -501,7 +523,7 @@
  17986. sym_set_change_count(1);
  17987. }
  17988. -const char *zconf_tokenname(int token)
  17989. +static const char *zconf_tokenname(int token)
  17990. {
  17991. switch (token) {
  17992. case T_MENU: return "menu";
  17993. @@ -511,11 +533,12 @@
  17994. case T_IF: return "if";
  17995. case T_ENDIF: return "endif";
  17996. case T_DEPENDS: return "depends";
  17997. + case T_VISIBLE: return "visible";
  17998. }
  17999. return "<token>";
  18000. }
  18001. -static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
  18002. +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken)
  18003. {
  18004. if (id->token != endtoken) {
  18005. zconf_error("unexpected '%s' within %s block",
  18006. @@ -560,12 +583,10 @@
  18007. static void zconferror(const char *err)
  18008. {
  18009. -#if YYDEBUG
  18010. fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
  18011. -#endif
  18012. }
  18013. -void print_quoted_string(FILE *out, const char *str)
  18014. +static void print_quoted_string(FILE *out, const char *str)
  18015. {
  18016. const char *p;
  18017. int len;
  18018. @@ -582,15 +603,15 @@
  18019. putc('"', out);
  18020. }
  18021. -void print_symbol(FILE *out, struct menu *menu)
  18022. +static void print_symbol(FILE *out, struct menu *menu)
  18023. {
  18024. struct symbol *sym = menu->sym;
  18025. struct property *prop;
  18026. if (sym_is_choice(sym))
  18027. - fprintf(out, "choice\n");
  18028. + fprintf(out, "\nchoice\n");
  18029. else
  18030. - fprintf(out, "config %s\n", sym->name);
  18031. + fprintf(out, "\nconfig %s\n", sym->name);
  18032. switch (sym->type) {
  18033. case S_BOOLEAN:
  18034. fputs(" boolean\n", out);
  18035. @@ -636,6 +657,21 @@
  18036. case P_CHOICE:
  18037. fputs(" #choice value\n", out);
  18038. break;
  18039. + case P_SELECT:
  18040. + fputs( " select ", out);
  18041. + expr_fprint(prop->expr, out);
  18042. + fputc('\n', out);
  18043. + break;
  18044. + case P_RANGE:
  18045. + fputs( " range ", out);
  18046. + expr_fprint(prop->expr, out);
  18047. + fputc('\n', out);
  18048. + break;
  18049. + case P_MENU:
  18050. + fputs( " menu ", out);
  18051. + print_quoted_string(out, prop->text);
  18052. + fputc('\n', out);
  18053. + break;
  18054. default:
  18055. fprintf(out, " unknown prop %d!\n", prop->type);
  18056. break;
  18057. @@ -647,7 +683,6 @@
  18058. menu->help[len] = 0;
  18059. fprintf(out, " help\n%s\n", menu->help);
  18060. }
  18061. - fputc('\n', out);
  18062. }
  18063. void zconfdump(FILE *out)
  18064. @@ -680,7 +715,6 @@
  18065. expr_fprint(prop->visible.expr, out);
  18066. fputc('\n', out);
  18067. }
  18068. - fputs("\n", out);
  18069. }
  18070. if (menu->list)
  18071. @@ -698,7 +732,7 @@
  18072. }
  18073. }
  18074. -#include "lex.zconf.c"
  18075. +#include "zconf.lex.c"
  18076. #include "util.c"
  18077. #include "confdata.c"
  18078. #include "expr.c"
  18079. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.alpha uClibc-git/extra/Configs/Config.alpha
  18080. --- uClibc-0.9.33.2/extra/Configs/Config.alpha 2012-05-15 09:20:09.000000000 +0200
  18081. +++ uClibc-git/extra/Configs/Config.alpha 2014-02-03 12:32:56.000000000 +0100
  18082. @@ -13,4 +13,5 @@
  18083. select ARCH_LITTLE_ENDIAN
  18084. select ARCH_HAS_MMU
  18085. select ARCH_HAS_NO_LDSO
  18086. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18087. select UCLIBC_HAS_LFS
  18088. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.arc uClibc-git/extra/Configs/Config.arc
  18089. --- uClibc-0.9.33.2/extra/Configs/Config.arc 1970-01-01 01:00:00.000000000 +0100
  18090. +++ uClibc-git/extra/Configs/Config.arc 2014-02-03 12:32:56.000000000 +0100
  18091. @@ -0,0 +1,23 @@
  18092. +#
  18093. +# For a description of the syntax of this configuration file,
  18094. +# see extra/config/Kconfig-language.txt
  18095. +#
  18096. +config TARGET_ARCH
  18097. + default "arc"
  18098. +
  18099. +config FORCE_OPTIONS_FOR_ARCH
  18100. + bool
  18101. + default y
  18102. + select ARCH_ANY_ENDIAN
  18103. +
  18104. +choice
  18105. + prompt "Target Processor Type"
  18106. + default CONFIG_ARC_CPU_700
  18107. +
  18108. +config CONFIG_ARC_CPU_700
  18109. + bool "ARC700"
  18110. + select ARCH_HAS_MMU
  18111. + help
  18112. + ARCompact ISA based ARC CPU
  18113. +
  18114. +endchoice
  18115. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.arm uClibc-git/extra/Configs/Config.arm
  18116. --- uClibc-0.9.33.2/extra/Configs/Config.arm 2012-05-15 09:20:09.000000000 +0200
  18117. +++ uClibc-git/extra/Configs/Config.arm 2014-02-03 12:32:56.000000000 +0100
  18118. @@ -11,6 +11,8 @@
  18119. bool
  18120. default y
  18121. select ARCH_ANY_ENDIAN
  18122. + select ARCH_HAS_UCONTEXT
  18123. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18124. config CONFIG_ARM_EABI
  18125. bool "Build for EABI"
  18126. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.avr32 uClibc-git/extra/Configs/Config.avr32
  18127. --- uClibc-0.9.33.2/extra/Configs/Config.avr32 2012-05-15 09:20:09.000000000 +0200
  18128. +++ uClibc-git/extra/Configs/Config.avr32 2014-02-03 12:32:56.000000000 +0100
  18129. @@ -11,6 +11,7 @@
  18130. bool
  18131. default y
  18132. select ARCH_BIG_ENDIAN
  18133. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18134. select FORCE_SHAREABLE_TEXT_SEGMENTS
  18135. choice
  18136. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.bfin uClibc-git/extra/Configs/Config.bfin
  18137. --- uClibc-0.9.33.2/extra/Configs/Config.bfin 2012-05-15 09:20:09.000000000 +0200
  18138. +++ uClibc-git/extra/Configs/Config.bfin 2014-02-03 12:32:56.000000000 +0100
  18139. @@ -12,3 +12,4 @@
  18140. default y
  18141. select ARCH_LITTLE_ENDIAN
  18142. select ARCH_HAS_NO_MMU
  18143. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18144. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.cris uClibc-git/extra/Configs/Config.cris
  18145. --- uClibc-0.9.33.2/extra/Configs/Config.cris 2012-05-15 09:20:09.000000000 +0200
  18146. +++ uClibc-git/extra/Configs/Config.cris 2014-02-03 12:32:56.000000000 +0100
  18147. @@ -11,6 +11,7 @@
  18148. bool
  18149. default y
  18150. select ARCH_LITTLE_ENDIAN
  18151. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18152. choice
  18153. prompt "Target Architecture Type"
  18154. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.e1 uClibc-git/extra/Configs/Config.e1
  18155. --- uClibc-0.9.33.2/extra/Configs/Config.e1 2012-05-15 09:20:09.000000000 +0200
  18156. +++ uClibc-git/extra/Configs/Config.e1 2014-02-03 12:32:56.000000000 +0100
  18157. @@ -13,3 +13,4 @@
  18158. select ARCH_BIG_ENDIAN
  18159. select ARCH_HAS_NO_MMU
  18160. select ARCH_HAS_NO_SHARED
  18161. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18162. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.frv uClibc-git/extra/Configs/Config.frv
  18163. --- uClibc-0.9.33.2/extra/Configs/Config.frv 2012-05-15 09:20:09.000000000 +0200
  18164. +++ uClibc-git/extra/Configs/Config.frv 2014-02-03 12:32:56.000000000 +0100
  18165. @@ -13,3 +13,4 @@
  18166. select ARCH_BIG_ENDIAN
  18167. select UCLIBC_HAS_FPU
  18168. select ARCH_HAS_NO_MMU
  18169. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18170. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.h8300 uClibc-git/extra/Configs/Config.h8300
  18171. --- uClibc-0.9.33.2/extra/Configs/Config.h8300 2012-05-15 09:20:09.000000000 +0200
  18172. +++ uClibc-git/extra/Configs/Config.h8300 2014-02-03 12:32:56.000000000 +0100
  18173. @@ -12,6 +12,7 @@
  18174. default y
  18175. select ARCH_ANY_ENDIAN
  18176. select ARCH_HAS_NO_MMU
  18177. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18178. choice
  18179. prompt "Target Processor"
  18180. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.hppa uClibc-git/extra/Configs/Config.hppa
  18181. --- uClibc-0.9.33.2/extra/Configs/Config.hppa 2012-05-15 09:20:09.000000000 +0200
  18182. +++ uClibc-git/extra/Configs/Config.hppa 2014-02-03 12:32:56.000000000 +0100
  18183. @@ -15,3 +15,4 @@
  18184. select HAS_NO_THREADS
  18185. select ARCH_HAS_NO_LDSO
  18186. select HAVE_NO_SSP
  18187. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18188. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.i386 uClibc-git/extra/Configs/Config.i386
  18189. --- uClibc-0.9.33.2/extra/Configs/Config.i386 2012-05-15 09:20:09.000000000 +0200
  18190. +++ uClibc-git/extra/Configs/Config.i386 2014-02-03 12:32:56.000000000 +0100
  18191. @@ -12,44 +12,17 @@
  18192. default y
  18193. select ARCH_LITTLE_ENDIAN
  18194. select ARCH_HAS_MMU
  18195. + select ARCH_HAS_UCONTEXT
  18196. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18197. choice
  18198. prompt "Target x86 Processor Family"
  18199. - default CONFIG_486
  18200. + default CONFIG_686
  18201. help
  18202. This is the processor type of your CPU. This information is used for
  18203. - optimizing purposes. To build a library that will run on all x86 CPU
  18204. - types (albeit not optimally fast), you can specify "386" here. If
  18205. - you pick anything other than "386", there is no guarantee that uClibc
  18206. - will even run on anything other than the selected processor type.
  18207. -
  18208. - Here are the settings recommended for greatest speed:
  18209. - - "Generic 386" select this if your compiler is already setup to
  18210. - optimize things properly.
  18211. - - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
  18212. - 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels
  18213. - will run on a 386 class machine.
  18214. - - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
  18215. - SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
  18216. - - "586" for Intel Pentium and other generic Pentium CPUs
  18217. - - "Pentium-MMX" for the Intel Pentium MMX.
  18218. - - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II.
  18219. - - "Pentium-III" for the Intel Pentium III
  18220. - and Celerons based on the Coppermine core.
  18221. - - "Pentium-4" for the Intel Pentium 4.
  18222. - - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
  18223. - - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
  18224. - - "Elan" for the AMD Elan.
  18225. - - "Crusoe" for the Transmeta Crusoe series.
  18226. - - "Winchip-C6" for original IDT Winchip.
  18227. - - "Winchip-2/Winchip-2A/Winchip-3" for IDT Winchip CPUs
  18228. - - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
  18229. - - "VIA C3-2 Nehemiah" model 9 and above.
  18230. -
  18231. - If you don't know what to do, choose "386".
  18232. -
  18233. -config CONFIG_GENERIC_386
  18234. - bool "Generic 386"
  18235. + selecting different handcoded optimization functions. Nowadays, most
  18236. + people have an i686 CPU. If you don't, you most likely know what this
  18237. + means and can pick the right one for your processor.
  18238. config CONFIG_386
  18239. bool "386"
  18240. @@ -58,45 +31,9 @@
  18241. bool "486"
  18242. config CONFIG_586
  18243. - bool "Pentium/586/K5/5x86/6x86/6x86MX"
  18244. -
  18245. -config CONFIG_586MMX
  18246. - bool "Pentium-MMX"
  18247. + bool "586"
  18248. config CONFIG_686
  18249. - bool "Pentium-Pro"
  18250. -
  18251. -config CONFIG_PENTIUMII
  18252. - bool "Celeron/Pentium-II"
  18253. -
  18254. -config CONFIG_PENTIUMIII
  18255. - bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
  18256. -
  18257. -config CONFIG_PENTIUM4
  18258. - bool "Pentium-4/Celeron(P4-based)/Xeon"
  18259. -
  18260. -config CONFIG_K6
  18261. - bool "K6/K6-II/K6-III"
  18262. -
  18263. -config CONFIG_K7
  18264. - bool "Athlon/Duron/K7"
  18265. -
  18266. -config CONFIG_ELAN
  18267. - bool "Elan"
  18268. -
  18269. -config CONFIG_CRUSOE
  18270. - bool "Crusoe"
  18271. -
  18272. -config CONFIG_WINCHIPC6
  18273. - bool "Winchip-C6"
  18274. -
  18275. -config CONFIG_WINCHIP2
  18276. - bool "Winchip-2/Winchip-2A/Winchip-3"
  18277. -
  18278. -config CONFIG_CYRIXIII
  18279. - bool "CyrixIII/VIA-C3"
  18280. -
  18281. -config CONFIG_NEHEMIAH
  18282. - bool "VIA C3-2 (Nehemiah)"
  18283. + bool "686"
  18284. endchoice
  18285. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.i960 uClibc-git/extra/Configs/Config.i960
  18286. --- uClibc-0.9.33.2/extra/Configs/Config.i960 2012-05-15 09:20:09.000000000 +0200
  18287. +++ uClibc-git/extra/Configs/Config.i960 2014-02-03 12:32:56.000000000 +0100
  18288. @@ -13,3 +13,4 @@
  18289. select ARCH_LITTLE_ENDIAN
  18290. select ARCH_HAS_NO_MMU
  18291. select HAS_NO_THREADS
  18292. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18293. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.ia64 uClibc-git/extra/Configs/Config.ia64
  18294. --- uClibc-0.9.33.2/extra/Configs/Config.ia64 2012-05-15 09:20:09.000000000 +0200
  18295. +++ uClibc-git/extra/Configs/Config.ia64 2014-02-03 12:32:56.000000000 +0100
  18296. @@ -13,3 +13,4 @@
  18297. select ARCH_LITTLE_ENDIAN
  18298. select ARCH_HAS_MMU
  18299. select ARCH_HAS_NO_LDSO
  18300. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18301. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.in uClibc-git/extra/Configs/Config.in
  18302. --- uClibc-0.9.33.2/extra/Configs/Config.in 2012-05-15 09:20:09.000000000 +0200
  18303. +++ uClibc-git/extra/Configs/Config.in 2014-02-03 12:32:56.000000000 +0100
  18304. @@ -3,15 +3,20 @@
  18305. # see extra/config/Kconfig-language.txt
  18306. #
  18307. -mainmenu "uClibc C Library Configuration"
  18308. +mainmenu "uClibc $VERSION C Library Configuration"
  18309. config DESIRED_TARGET_ARCH
  18310. string
  18311. option env="ARCH"
  18312. +config VERSION
  18313. + string
  18314. + option env="VERSION"
  18315. +
  18316. choice
  18317. prompt "Target Architecture"
  18318. default TARGET_alpha if DESIRED_TARGET_ARCH = "alpha"
  18319. + default TARGET_arc if DESIRED_TARGET_ARCH = "arc"
  18320. default TARGET_arm if DESIRED_TARGET_ARCH = "arm"
  18321. default TARGET_avr32 if DESIRED_TARGET_ARCH = "avr32"
  18322. default TARGET_bfin if DESIRED_TARGET_ARCH = "bfin"
  18323. @@ -24,6 +29,7 @@
  18324. default TARGET_i960 if DESIRED_TARGET_ARCH = "i960"
  18325. default TARGET_ia64 if DESIRED_TARGET_ARCH = "ia64"
  18326. default TARGET_m68k if DESIRED_TARGET_ARCH = "m68k"
  18327. + default TARGET_metag if DESIRED_TARGET_ARCH = "metag"
  18328. default TARGET_microblaze if DESIRED_TARGET_ARCH = "microblaze"
  18329. default TARGET_mips if DESIRED_TARGET_ARCH = "mips"
  18330. default TARGET_nios if DESIRED_TARGET_ARCH = "nios"
  18331. @@ -42,6 +48,9 @@
  18332. config TARGET_alpha
  18333. bool "alpha"
  18334. +config TARGET_arc
  18335. + bool "arc"
  18336. +
  18337. config TARGET_arm
  18338. bool "arm"
  18339. @@ -81,6 +90,9 @@
  18340. config TARGET_m68k
  18341. bool "m68k"
  18342. +config TARGET_metag
  18343. + bool "metag"
  18344. +
  18345. config TARGET_microblaze
  18346. bool "microblaze"
  18347. @@ -174,6 +186,10 @@
  18348. source "extra/Configs/Config.m68k"
  18349. endif
  18350. +if TARGET_metag
  18351. +source "extra/Configs/Config.metag"
  18352. +endif
  18353. +
  18354. if TARGET_nios
  18355. source "extra/Configs/Config.nios"
  18356. endif
  18357. @@ -226,15 +242,19 @@
  18358. source "extra/Configs/Config.c6x"
  18359. endif
  18360. +if TARGET_arc
  18361. +source "extra/Configs/Config.arc"
  18362. +endif
  18363. +
  18364. config TARGET_SUBARCH
  18365. string
  18366. default "e500" if CONFIG_E500
  18367. default "classic" if CONFIG_CLASSIC
  18368. default "sh4" if CONFIG_SH4
  18369. - default "" if CONFIG_GENERIC_386 || CONFIG_386
  18370. + default "" if CONFIG_386
  18371. default "i486" if CONFIG_486
  18372. - default "i586" if CONFIG_586 || CONFIG_586MMX
  18373. - default "i686" if TARGET_ARCH = "i386"
  18374. + default "i586" if CONFIG_586
  18375. + default "i686" if CONFIG_686
  18376. default ""
  18377. source "extra/Configs/Config.in.arch"
  18378. @@ -261,6 +281,9 @@
  18379. bool
  18380. select ARCH_HAS_NO_SHARED
  18381. +config ARCH_HAS_UCONTEXT
  18382. + bool
  18383. +
  18384. config HAVE_SHARED
  18385. bool "Enable shared libraries"
  18386. depends on !ARCH_HAS_NO_SHARED
  18387. @@ -395,6 +418,13 @@
  18388. Usage of RUNPATH tags is not too common, so disabling this feature
  18389. should be safe for most people.
  18390. +config LDSO_SAFE_RUNPATH
  18391. + bool "Allow only RUNPATH beginning with /"
  18392. + depends on LDSO_RUNPATH
  18393. + default y
  18394. + help
  18395. + Allow only absolute path in RPATH/RUNPATH.
  18396. +
  18397. config LDSO_SEARCH_INTERP_PATH
  18398. bool "Add ldso path to lib search path"
  18399. depends on HAVE_SHARED
  18400. @@ -423,7 +453,6 @@
  18401. config LDSO_NO_CLEANUP
  18402. bool "Disable automatic unloading of dynamically loaded shared objects"
  18403. depends on HAVE_SHARED
  18404. - default n
  18405. help
  18406. If you need complete allocation traces when debugging memory leaks
  18407. using Valgrind in a process that dynamically loads shared objects,
  18408. @@ -491,6 +520,7 @@
  18409. config LINUXTHREADS_NEW
  18410. bool "slightly newer version of linuxthreads"
  18411. + depends on ARCH_HAS_DEPRECATED_SYSCALLS
  18412. help
  18413. The new version has not been tested much, and lacks ports for arches
  18414. which glibc does not support (like bfin/frv/etc...), but is based on
  18415. @@ -501,6 +531,7 @@
  18416. bool "Native POSIX Threading (NPTL)"
  18417. select UCLIBC_HAS_TLS
  18418. select UCLIBC_HAS_STDIO_FUTEXES
  18419. + select UCLIBC_HAS_REALTIME
  18420. # i386 has no lowlevellock support (yet) as opposed to i486 onward
  18421. depends on !CONFIG_386
  18422. help
  18423. @@ -629,6 +660,15 @@
  18424. does not detect glibc style returning-a-valid-pointer-for-malloc(0)
  18425. behavior). Most people can safely answer N.
  18426. +config UCLIBC_HAS_OBSTACK
  18427. + bool "Obstack Support (gnu extension)"
  18428. + help
  18429. + When this option is enabled, uClibc will provide support for obstacks.
  18430. + An obstack is a structure in which memory can be dynamically allocated
  18431. + as a 'stack of objects'. Many programs need this GNU extention and
  18432. + you should say Y if you are using any. Otherwise, say N to save some
  18433. + space.
  18434. +
  18435. config UCLIBC_DYNAMIC_ATEXIT
  18436. bool "Dynamic atexit() Support"
  18437. default y
  18438. @@ -650,6 +690,16 @@
  18439. Enable this option if you want to update from 0.9.28 to git/0.9.29,
  18440. else you will be missing atexit() until you rebuild all apps.
  18441. +config UCLIBC_SUSV2_LEGACY
  18442. + bool "Enable SuSv2 LEGACY functions"
  18443. + help
  18444. + Enable this option if you want to have SuSv2 LEGACY functions
  18445. + Currently applies to:
  18446. +
  18447. + valloc
  18448. +
  18449. + WARNING! ABI incompatibility.
  18450. +
  18451. config UCLIBC_SUSV3_LEGACY
  18452. bool "Enable SuSv3 LEGACY functions"
  18453. #vfork,
  18454. @@ -670,6 +720,19 @@
  18455. WARNING! ABI incompatibility.
  18456. +config UCLIBC_HAS_CONTEXT_FUNCS
  18457. + bool "Use obsolescent context control functions"
  18458. + depends on UCLIBC_SUSV3_LEGACY && ARCH_HAS_UCONTEXT
  18459. + help
  18460. + Add into library the SuSv3 obsolescent functions used for context
  18461. + control. The setcontext family allows the implementation in C of
  18462. + advanced control flow patterns such as iterators, fibers, and
  18463. + coroutines. They may be viewed as an advanced version of
  18464. + setjmp/longjmp; whereas the latter allows only a single non-local jump
  18465. + up the stack, setcontext allows the creation of multiple cooperative
  18466. + threads of control, each with its own stack.
  18467. + These functions are: setcontext, getcontext, makecontext, swapcontext.
  18468. +
  18469. config UCLIBC_SUSV3_LEGACY_MACROS
  18470. bool "Enable SuSv3 LEGACY macros"
  18471. help
  18472. @@ -737,7 +800,6 @@
  18473. config UCLIBC_HAS___PROGNAME
  18474. bool "Support for __progname"
  18475. default y
  18476. - depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME
  18477. help
  18478. Some packages (like openssh) like to peek into internal libc
  18479. symbols to make their output a bit more user friendly.
  18480. @@ -1320,6 +1382,12 @@
  18481. In particular, the following functions will be added to the
  18482. library:
  18483. + ns_skiprr, ns_initparse, ns_parserr, ns_msg_getflag,
  18484. + res_mkquery, res_init, res_ninit, res_close, res_nclose
  18485. + res_query, res_search, res_querydomain,
  18486. + dn_expand, dn_comp,
  18487. + ns_name_uncompress, ns_name_ntop, ns_name_pton, ns_name_unpack,
  18488. + ns_name_pack, ns_name_compress, ns_name_skip, dn_skipname,
  18489. ns_get16, ns_get32, ns_put16, ns_put32
  18490. config UCLIBC_HAS_LIBRESOLV_STUB
  18491. @@ -1462,7 +1530,7 @@
  18492. config UCLIBC_PREGENERATED_LOCALE_DATA
  18493. bool "Use Pre-generated Locale Data"
  18494. - depends on UCLIBC_HAS_LOCALE
  18495. + depends on UCLIBC_HAS_LOCALE && !TARGET_metag
  18496. help
  18497. Use pre-built locale data.
  18498. @@ -1590,19 +1658,6 @@
  18499. Most people will answer 9.
  18500. -
  18501. -config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
  18502. - bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
  18503. - help
  18504. - NOTE!!! Currently Not Implemented!!! Just A Place Holder!! NOTE!!!
  18505. - NOTE!!! Conflicts with an ANSI/ISO C99 scanf flag!! NOTE!!!
  18506. -
  18507. - Answer Y to enable support for glibc's 'a' flag for the scanf string
  18508. - conversions '%s', '%[', '%ls', '%l[', and '%S'. This is used to
  18509. - auto-allocate sufficient memory to hold the data retrieved.
  18510. -
  18511. - Most people will answer N.
  18512. -
  18513. choice
  18514. prompt "Stdio buffer size"
  18515. default UCLIBC_HAS_STDIO_BUFSIZ_4096
  18516. @@ -2093,6 +2148,16 @@
  18517. Most people will answer N.
  18518. +config ARC4RANDOM_USES_NODEV
  18519. + bool "Do not use /dev/urandom with arc4random()"
  18520. + depends on UCLIBC_HAS_ARC4RANDOM
  18521. + help
  18522. + Answer Y to use gettimeofday(2) and getpid(2) exclusively for
  18523. + arc4random(). This is not a bad idea for a diskless system, but
  18524. + it uses a lot of syscalls to stir each array element.
  18525. +
  18526. + Most people will answer N.
  18527. +
  18528. config HAVE_NO_SSP
  18529. bool
  18530. @@ -2145,8 +2210,8 @@
  18531. choice
  18532. prompt "Propolice protection blocking signal"
  18533. depends on UCLIBC_HAS_SSP
  18534. - default PROPOLICE_BLOCK_ABRT if ! DODEBUG
  18535. - default PROPOLICE_BLOCK_SEGV if DODEBUG
  18536. + depends on DODEBUG
  18537. + default PROPOLICE_BLOCK_SEGV
  18538. help
  18539. "abort" use SIGABRT to block offending programs.
  18540. This is the default implementation.
  18541. @@ -2340,6 +2405,7 @@
  18542. config UCLIBC_MALLOC_DEBUGGING
  18543. bool "Build malloc with debugging support"
  18544. depends on MALLOC || MALLOC_STANDARD
  18545. + select DOASSERTS
  18546. help
  18547. Answer Y here to compile extra debugging support code into malloc.
  18548. Malloc debugging output may then be enabled at runtime using the
  18549. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.in.arch uClibc-git/extra/Configs/Config.in.arch
  18550. --- uClibc-0.9.33.2/extra/Configs/Config.in.arch 2012-05-15 09:20:09.000000000 +0200
  18551. +++ uClibc-git/extra/Configs/Config.in.arch 2014-02-03 12:32:56.000000000 +0100
  18552. @@ -10,9 +10,6 @@
  18553. if !ARCH_USE_MMU
  18554. choice
  18555. prompt "Target File Format"
  18556. -config UCLIBC_FORMAT_ELF
  18557. - bool "ELF"
  18558. - depends on ARCH_USE_MMU
  18559. config UCLIBC_FORMAT_FDPIC_ELF
  18560. bool "FDPIC ELF"
  18561. depends on !ARCH_USE_MMU && (TARGET_bfin || TARGET_frv)
  18562. @@ -42,6 +39,14 @@
  18563. comment "Using ELF file format"
  18564. endif
  18565. +config ARCH_HAS_DEPRECATED_SYSCALLS
  18566. + bool
  18567. + help
  18568. + New architectures do not support deprecated system calls. However,
  18569. + these system calls are needed to build linuxthreads (old and new) so
  18570. + this symbol controls whether there is support for these threading libraries
  18571. + or not.
  18572. +
  18573. config UCLIBC_SHARED_FLAT_ID
  18574. int "Shared library ID"
  18575. default 1
  18576. @@ -152,7 +157,6 @@
  18577. config DO_C99_MATH
  18578. bool "Enable full C99 math library support"
  18579. depends on UCLIBC_HAS_FLOATS
  18580. - default n
  18581. help
  18582. If you want the uClibc math library to contain the full set C99
  18583. math library features, then answer Y. If you leave this set to
  18584. @@ -166,7 +170,6 @@
  18585. config DO_XSI_MATH
  18586. bool "Enable XSI math extensions to the ISO C standard (bessel)"
  18587. depends on UCLIBC_HAS_FLOATS
  18588. - default n
  18589. help
  18590. X/Open System Interfaces extensions to ISO C math functions
  18591. (differential equation functions):
  18592. @@ -177,7 +180,6 @@
  18593. config UCLIBC_HAS_FENV
  18594. bool "Enable C99 Floating-point environment"
  18595. depends on UCLIBC_HAS_FLOATS
  18596. - default n
  18597. help
  18598. If you want the uClibc math library to contain the C99 floating
  18599. point environment, rounding and exception handling functions then
  18600. @@ -198,7 +200,7 @@
  18601. config KERNEL_HEADERS
  18602. string "Linux kernel header location"
  18603. - default "/usr/include"
  18604. + default ""
  18605. help
  18606. The kernel source you use to compile with should be the same
  18607. as the Linux kernel you run your apps on. uClibc doesn't even
  18608. @@ -209,6 +211,8 @@
  18609. but then run on Linux 2.0.x, lchown will be compiled into uClibc,
  18610. but won't work at all. You have been warned.
  18611. + If you don't set this, we'll assume the toolchain can find them.
  18612. +
  18613. config UCLIBC_UCLINUX_BROKEN_MUNMAP
  18614. bool
  18615. depends on !ARCH_USE_MMU
  18616. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.m68k uClibc-git/extra/Configs/Config.m68k
  18617. --- uClibc-0.9.33.2/extra/Configs/Config.m68k 2012-05-15 09:20:09.000000000 +0200
  18618. +++ uClibc-git/extra/Configs/Config.m68k 2014-02-03 12:32:56.000000000 +0100
  18619. @@ -11,3 +11,4 @@
  18620. bool
  18621. default y
  18622. select ARCH_BIG_ENDIAN
  18623. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18624. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.metag uClibc-git/extra/Configs/Config.metag
  18625. --- uClibc-0.9.33.2/extra/Configs/Config.metag 1970-01-01 01:00:00.000000000 +0100
  18626. +++ uClibc-git/extra/Configs/Config.metag 2014-02-03 12:32:56.000000000 +0100
  18627. @@ -0,0 +1,32 @@
  18628. +#
  18629. +# For a description of the syntax of this configuration file,
  18630. +# see extra/config/Kconfig-language.txt
  18631. +#
  18632. +# Copyright (C) 2013, Imagination Technologies Ltd.
  18633. +#
  18634. +# Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  18635. +#
  18636. +
  18637. +config TARGET_ARCH
  18638. + default "metag"
  18639. +
  18640. +config FORCE_OPTIONS_FOR_ARCH
  18641. + bool
  18642. + default y
  18643. + select ARCH_LITTLE_ENDIAN
  18644. + select ARCH_HAS_MMU
  18645. +
  18646. +choice
  18647. + prompt "Target Processor Type"
  18648. + default CONFIG_META_2_1
  18649. + help
  18650. + This is the processor type of your CPU. This information is used for
  18651. + optimizing purposes.
  18652. +
  18653. +config CONFIG_META_1_2
  18654. + bool "Meta 1.2"
  18655. +
  18656. +config CONFIG_META_2_1
  18657. + bool "Meta 2.1"
  18658. +
  18659. +endchoice
  18660. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.microblaze uClibc-git/extra/Configs/Config.microblaze
  18661. --- uClibc-0.9.33.2/extra/Configs/Config.microblaze 2012-05-15 09:20:09.000000000 +0200
  18662. +++ uClibc-git/extra/Configs/Config.microblaze 2014-02-03 12:32:56.000000000 +0100
  18663. @@ -6,3 +6,8 @@
  18664. config TARGET_ARCH
  18665. string
  18666. default "microblaze"
  18667. +
  18668. +config FORCE_OPTIONS_FOR_ARCH
  18669. + bool
  18670. + default y
  18671. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18672. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.mips uClibc-git/extra/Configs/Config.mips
  18673. --- uClibc-0.9.33.2/extra/Configs/Config.mips 2012-05-15 09:20:09.000000000 +0200
  18674. +++ uClibc-git/extra/Configs/Config.mips 2014-02-15 14:18:15.000000000 +0100
  18675. @@ -11,6 +11,8 @@
  18676. bool
  18677. default y
  18678. select ARCH_ANY_ENDIAN
  18679. + select ARCH_HAS_UCONTEXT
  18680. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18681. choice
  18682. prompt "Target ABI"
  18683. @@ -70,4 +72,7 @@
  18684. config CONFIG_MIPS_ISA_MIPS64
  18685. bool "MIPS64"
  18686. +config CONFIG_MIPS_ISA_MIPS64R2
  18687. + bool "MIPS64r2"
  18688. +
  18689. endchoice
  18690. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.nios uClibc-git/extra/Configs/Config.nios
  18691. --- uClibc-0.9.33.2/extra/Configs/Config.nios 2012-05-15 09:20:09.000000000 +0200
  18692. +++ uClibc-git/extra/Configs/Config.nios 2014-02-03 12:32:56.000000000 +0100
  18693. @@ -13,4 +13,5 @@
  18694. select ARCH_LITTLE_ENDIAN
  18695. select ARCH_HAS_NO_MMU
  18696. select ARCH_HAS_NO_LDSO
  18697. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18698. select HAVE_NO_PIC
  18699. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.nios2 uClibc-git/extra/Configs/Config.nios2
  18700. --- uClibc-0.9.33.2/extra/Configs/Config.nios2 2012-05-15 09:20:09.000000000 +0200
  18701. +++ uClibc-git/extra/Configs/Config.nios2 2014-02-03 12:32:56.000000000 +0100
  18702. @@ -13,4 +13,5 @@
  18703. select ARCH_LITTLE_ENDIAN
  18704. select ARCH_HAS_NO_MMU
  18705. select ARCH_HAS_NO_LDSO
  18706. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18707. select HAVE_NO_PIC
  18708. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.powerpc uClibc-git/extra/Configs/Config.powerpc
  18709. --- uClibc-0.9.33.2/extra/Configs/Config.powerpc 2012-05-15 09:20:09.000000000 +0200
  18710. +++ uClibc-git/extra/Configs/Config.powerpc 2014-02-03 12:32:56.000000000 +0100
  18711. @@ -12,6 +12,7 @@
  18712. default y
  18713. select ARCH_BIG_ENDIAN
  18714. select ARCH_HAS_MMU
  18715. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18716. choice
  18717. prompt "Target Processor Type"
  18718. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.sh uClibc-git/extra/Configs/Config.sh
  18719. --- uClibc-0.9.33.2/extra/Configs/Config.sh 2012-05-15 09:20:09.000000000 +0200
  18720. +++ uClibc-git/extra/Configs/Config.sh 2014-02-03 12:32:56.000000000 +0100
  18721. @@ -11,6 +11,7 @@
  18722. bool
  18723. default y
  18724. select ARCH_ANY_ENDIAN
  18725. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18726. choice
  18727. prompt "Target Processor Type"
  18728. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.sh64 uClibc-git/extra/Configs/Config.sh64
  18729. --- uClibc-0.9.33.2/extra/Configs/Config.sh64 2012-05-15 09:20:09.000000000 +0200
  18730. +++ uClibc-git/extra/Configs/Config.sh64 2014-02-03 12:32:56.000000000 +0100
  18731. @@ -11,6 +11,7 @@
  18732. bool
  18733. default y
  18734. select ARCH_ANY_ENDIAN
  18735. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18736. choice
  18737. prompt "Target Processor Type"
  18738. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.sparc uClibc-git/extra/Configs/Config.sparc
  18739. --- uClibc-0.9.33.2/extra/Configs/Config.sparc 2012-05-15 09:20:09.000000000 +0200
  18740. +++ uClibc-git/extra/Configs/Config.sparc 2014-02-03 12:32:56.000000000 +0100
  18741. @@ -11,6 +11,7 @@
  18742. bool
  18743. default y
  18744. select ARCH_BIG_ENDIAN
  18745. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18746. choice
  18747. prompt "Target Processor Type"
  18748. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.v850 uClibc-git/extra/Configs/Config.v850
  18749. --- uClibc-0.9.33.2/extra/Configs/Config.v850 2012-05-15 09:20:09.000000000 +0200
  18750. +++ uClibc-git/extra/Configs/Config.v850 2014-02-03 12:32:56.000000000 +0100
  18751. @@ -12,4 +12,5 @@
  18752. default y
  18753. select ARCH_LITTLE_ENDIAN
  18754. select ARCH_HAS_NO_MMU
  18755. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18756. select HAVE_NO_PIC
  18757. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.vax uClibc-git/extra/Configs/Config.vax
  18758. --- uClibc-0.9.33.2/extra/Configs/Config.vax 2012-05-15 09:20:09.000000000 +0200
  18759. +++ uClibc-git/extra/Configs/Config.vax 2014-02-03 12:32:56.000000000 +0100
  18760. @@ -12,3 +12,4 @@
  18761. default y
  18762. select ARCH_LITTLE_ENDIAN
  18763. select ARCH_HAS_NO_LDSO
  18764. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18765. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.x86_64 uClibc-git/extra/Configs/Config.x86_64
  18766. --- uClibc-0.9.33.2/extra/Configs/Config.x86_64 2012-05-15 09:20:09.000000000 +0200
  18767. +++ uClibc-git/extra/Configs/Config.x86_64 2014-02-03 12:32:56.000000000 +0100
  18768. @@ -12,3 +12,5 @@
  18769. default y
  18770. select ARCH_LITTLE_ENDIAN
  18771. select ARCH_HAS_MMU
  18772. + select ARCH_HAS_UCONTEXT
  18773. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18774. diff -Nur uClibc-0.9.33.2/extra/Configs/Config.xtensa uClibc-git/extra/Configs/Config.xtensa
  18775. --- uClibc-0.9.33.2/extra/Configs/Config.xtensa 2012-05-15 09:20:09.000000000 +0200
  18776. +++ uClibc-git/extra/Configs/Config.xtensa 2014-02-03 12:32:56.000000000 +0100
  18777. @@ -6,3 +6,8 @@
  18778. config TARGET_ARCH
  18779. string
  18780. default "xtensa"
  18781. +
  18782. +config FORCE_OPTIONS_FOR_ARCH
  18783. + bool
  18784. + default y
  18785. + select ARCH_HAS_DEPRECATED_SYSCALLS
  18786. diff -Nur uClibc-0.9.33.2/extra/Configs/defconfigs/arc/defconfig uClibc-git/extra/Configs/defconfigs/arc/defconfig
  18787. --- uClibc-0.9.33.2/extra/Configs/defconfigs/arc/defconfig 1970-01-01 01:00:00.000000000 +0100
  18788. +++ uClibc-git/extra/Configs/defconfigs/arc/defconfig 2014-02-03 12:32:56.000000000 +0100
  18789. @@ -0,0 +1,28 @@
  18790. +ARCH_WANTS_LITTLE_ENDIAN=y
  18791. +# UCLIBC_HAS_FPU is not set
  18792. +DO_C99_MATH=y
  18793. +KERNEL_HEADERS="%KERNEL_HEADERS%"
  18794. +# DOPIC is not set
  18795. +# LDSO_CACHE_SUPPORT is not set
  18796. +LDSO_RUNPATH=y
  18797. +# LDSO_SAFE_RUNPATH is not set
  18798. +LINUXTHREADS_OLD=y
  18799. +PTHREADS_DEBUG_SUPPORT=y
  18800. +UCLIBC_SUSV2_LEGACY=y
  18801. +UCLIBC_SUSV3_LEGACY=y
  18802. +UCLIBC_SUSV4_LEGACY=y
  18803. +UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
  18804. +UCLIBC_SV4_DEPRECATED=y
  18805. +UCLIBC_HAS_RPC=y
  18806. +UCLIBC_HAS_FULL_RPC=y
  18807. +UCLIBC_HAS_RESOLVER_SUPPORT=y
  18808. +UCLIBC_HAS_LIBRESOLV_STUB=y
  18809. +UCLIBC_HAS_LOCALE=y
  18810. +UCLIBC_HAS_NFTW=y
  18811. +UCLIBC_HAS_FTW=y
  18812. +RUNTIME_PREFIX="%RUNTIME_PREFIX%"
  18813. +DEVEL_PREFIX="%DEVEL_PREFIX%"
  18814. +CROSS_COMPILER_PREFIX="arc-linux-uclibc-"
  18815. +# DOSTRIP is not set
  18816. +SUPPORT_LD_DEBUG=y
  18817. +UCLIBC_HAS_BACKTRACE=y
  18818. diff -Nur uClibc-0.9.33.2/extra/Configs/defconfigs/arc/tb10x_defconfig uClibc-git/extra/Configs/defconfigs/arc/tb10x_defconfig
  18819. --- uClibc-0.9.33.2/extra/Configs/defconfigs/arc/tb10x_defconfig 1970-01-01 01:00:00.000000000 +0100
  18820. +++ uClibc-git/extra/Configs/defconfigs/arc/tb10x_defconfig 2014-02-03 12:32:56.000000000 +0100
  18821. @@ -0,0 +1,37 @@
  18822. +ARCH_WANTS_LITTLE_ENDIAN=y
  18823. +# UCLIBC_HAS_FPU is not set
  18824. +DO_C99_MATH=y
  18825. +KERNEL_HEADERS="%KERNEL_HEADERS%"
  18826. +# DOPIC is not set
  18827. +# LDSO_CACHE_SUPPORT is not set
  18828. +LDSO_RUNPATH=y
  18829. +# LDSO_SAFE_RUNPATH is not set
  18830. +LINUXTHREADS_OLD=y
  18831. +PTHREADS_DEBUG_SUPPORT=y
  18832. +MALLOC_GLIBC_COMPAT=y
  18833. +UCLIBC_SUSV3_LEGACY=y
  18834. +UCLIBC_SUSV4_LEGACY=y
  18835. +UCLIBC_HAS_GETPT=y
  18836. +UCLIBC_HAS_LIBUTIL=y
  18837. +UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
  18838. +UCLIBC_SV4_DEPRECATED=y
  18839. +UCLIBC_HAS_IPV6=y
  18840. +UCLIBC_HAS_RPC=y
  18841. +UCLIBC_HAS_FULL_RPC=y
  18842. +UCLIBC_HAS_REENTRANT_RPC=y
  18843. +UCLIBC_HAS_RESOLVER_SUPPORT=y
  18844. +UCLIBC_HAS_LIBRESOLV_STUB=y
  18845. +UCLIBC_HAS_LIBNSL_STUB=y
  18846. +UCLIBC_HAS_CTYPE_CHECKED=y
  18847. +UCLIBC_HAS_LOCALE=y
  18848. +UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
  18849. +UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE=y
  18850. +UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
  18851. +UCLIBC_HAS_PRINTF_M_SPEC=y
  18852. +UCLIBC_HAS_NFTW=y
  18853. +UCLIBC_HAS_FTW=y
  18854. +RUNTIME_PREFIX="%RUNTIME_PREFIX%"
  18855. +DEVEL_PREFIX="%DEVEL_PREFIX%"
  18856. +CROSS_COMPILER_PREFIX="arc-linux-uclibc-"
  18857. +# DOSTRIP is not set
  18858. +SUPPORT_LD_DEBUG=y
  18859. diff -Nur uClibc-0.9.33.2/extra/Configs/defconfigs/metag/defconfig uClibc-git/extra/Configs/defconfigs/metag/defconfig
  18860. --- uClibc-0.9.33.2/extra/Configs/defconfigs/metag/defconfig 1970-01-01 01:00:00.000000000 +0100
  18861. +++ uClibc-git/extra/Configs/defconfigs/metag/defconfig 2014-02-03 12:32:56.000000000 +0100
  18862. @@ -0,0 +1 @@
  18863. +TARGET_metag=y
  18864. diff -Nur uClibc-0.9.33.2/extra/locale/gen_wc8bit.c uClibc-git/extra/locale/gen_wc8bit.c
  18865. --- uClibc-0.9.33.2/extra/locale/gen_wc8bit.c 2012-05-15 09:20:09.000000000 +0200
  18866. +++ uClibc-git/extra/locale/gen_wc8bit.c 2014-02-03 12:32:56.000000000 +0100
  18867. @@ -182,7 +182,11 @@
  18868. printf("\tunsigned char idx8c2wc[%d];\n", C2WC_IDX_LEN);
  18869. printf("\tunsigned char idx8wc2c[%d];\n", II_LEN);
  18870. #endif
  18871. +#ifndef __metag__
  18872. printf("} __codeset_8_bit_t;\n\n");
  18873. +#else
  18874. + printf("} __attribute__((__packed__)) __codeset_8_bit_t;\n\n");
  18875. +#endif /* __metag__ */
  18876. printf("#ifdef WANT_DATA\n\n");
  18877. printf("static const __codeset_8_bit_t codeset_8_bit[%d] = {\n", argc-1);
  18878. diff -Nur uClibc-0.9.33.2/extra/locale/Makefile.in uClibc-git/extra/locale/Makefile.in
  18879. --- uClibc-0.9.33.2/extra/locale/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  18880. +++ uClibc-git/extra/locale/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  18881. @@ -111,16 +111,10 @@
  18882. $(Q)echo "$(CURDIR)/$(locale_DIR)/charmaps/ISO-8859-1.pairs" >> $@
  18883. else
  18884. $(Q)set -e; \
  18885. - tmp=`mktemp $@.XXXXXX 2>/dev/null || true`; \
  18886. - [ -z "$$tmp" ] && tmp='$@.new'; \
  18887. find $(CURDIR)/$(locale_DIR)/charmaps/ -name '*.pairs' | \
  18888. - sort > $$tmp; \
  18889. - [ -s $$tmp ]; \
  18890. - if cmp $@ $$tmp >/dev/null 2>&1; then \
  18891. - $(RM) $$tmp; \
  18892. - else \
  18893. - mv -f $$tmp $@; \
  18894. - fi
  18895. + sort > $@.new; \
  18896. + [ -s $@.new ]; \
  18897. + cmp -s $@ $@.new && $(RM) $@.new || mv -f $@.new $@
  18898. endif
  18899. # the lines beginning w/ '#-' are mandatory
  18900. diff -Nur uClibc-0.9.33.2/extra/locale/programs/locale.c uClibc-git/extra/locale/programs/locale.c
  18901. --- uClibc-0.9.33.2/extra/locale/programs/locale.c 2012-05-15 09:20:09.000000000 +0200
  18902. +++ uClibc-git/extra/locale/programs/locale.c 2014-02-03 12:32:56.000000000 +0100
  18903. @@ -31,7 +31,7 @@
  18904. unsigned char lc_messages_row;
  18905. } locale_entry;
  18906. -/* Need to include this before locale.h and xlocale.h! */
  18907. +/* Need to include this before locale.h! */
  18908. #include <bits/uClibc_locale.h>
  18909. #undef CODESET_LIST
  18910. diff -Nur uClibc-0.9.33.2/extra/scripts/gen_bits_syscall_h.sh uClibc-git/extra/scripts/gen_bits_syscall_h.sh
  18911. --- uClibc-0.9.33.2/extra/scripts/gen_bits_syscall_h.sh 2012-05-15 09:20:09.000000000 +0200
  18912. +++ uClibc-git/extra/scripts/gen_bits_syscall_h.sh 2014-02-03 12:32:56.000000000 +0100
  18913. @@ -8,14 +8,18 @@
  18914. # June 27, 2001 Manuel Novoa III
  18915. #
  18916. -# This script expects top_builddir and CC (as used in the Makefiles) to be set
  18917. -# in the environment, and outputs the appropriate
  18918. -# $top_builddir/include/bits/sysnum.h # corresponding to
  18919. -# $top_builddir/include/asm/unistd.h to stdout.
  18920. +# This script expects CC (as used in the Makefiles) to be set
  18921. +# in the environment, and outputs the appropriate bits/sysnum.h #
  18922. +# corresponding to asm/unistd.h to stdout.
  18923. #
  18924. # Warning!!! This does _no_ error checking!!!
  18925. -INCLUDE_OPTS="-nostdinc -I${KERNEL_HEADERS}"
  18926. +if [ "${KERNEL_HEADERS:-/}" != "/" ] ; then
  18927. + INCLUDE_OPTS="-nostdinc -I${KERNEL_HEADERS}"
  18928. +else
  18929. + # Let the toolchain use its configure paths.
  18930. + INCLUDE_OPTS=
  18931. +fi
  18932. case $CC in
  18933. *icc*) CC_SYSNUM_ARGS="-dM" ;;
  18934. @@ -25,22 +29,31 @@
  18935. ( echo "#include <asm/unistd.h>";
  18936. echo "#include <asm/unistd.h>" |
  18937. $CC -E $CC_SYSNUM_ARGS $INCLUDE_OPTS - |
  18938. - sed -ne 's/^[ ]*#define[ ]*\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\).*/UCLIBC\1\2 \1\2/gp' \
  18939. - -e 's/^[ ]*#undef[ ]*\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\).*/UNDEFUCLIBC\1\2 \1\2/gp' # needed to strip out any kernel-internal defines
  18940. + sed -n -r \
  18941. + -e 's/^[ ]*#define[ ]*(__ARM_NR_|__NR_)([A-Za-z0-9_]*).*/UCLIBC\1\2 \1\2/gp' \
  18942. + -e 's/^[ ]*#undef[ ]*(__ARM_NR_|__NR_)([A-Za-z0-9_]*).*/UNDEFUCLIBC\1\2 \1\2/gp' # needed to strip out any kernel-internal defines
  18943. ) |
  18944. $CC -E $INCLUDE_OPTS - |
  18945. -( echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" ;
  18946. - echo ;
  18947. - echo "#ifndef _BITS_SYSNUM_H" ;
  18948. - echo "#define _BITS_SYSNUM_H" ;
  18949. - echo ;
  18950. - echo "#ifndef _SYSCALL_H" ;
  18951. - echo "# error \"Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead.\"" ;
  18952. - echo "#endif" ; echo ;
  18953. - sed -ne 's/^UCLIBC\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\) *\(.*\)/#undef \1\2\
  18954. +(
  18955. + cat <<-EOF
  18956. +/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */
  18957. +/* See $0 for more information. */
  18958. +
  18959. +#ifndef _BITS_SYSNUM_H
  18960. +#define _BITS_SYSNUM_H
  18961. +
  18962. +#ifndef _SYSCALL_H
  18963. +# error "Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead."
  18964. +#endif
  18965. +
  18966. +EOF
  18967. + sed -n -r -e 's/^UCLIBC(__ARM_NR_|__NR_)([A-Za-z0-9_]*) *(.*)/#undef \1\2\
  18968. #define \1\2 \3\
  18969. #define SYS_\2 \1\2/gp' \
  18970. - -e 's/^UNDEFUCLIBC\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\).*/#undef \1\2/gp'
  18971. - echo ;
  18972. - echo "#endif" ;
  18973. + -e 's/^UNDEFUCLIBC(__ARM_NR_|__NR_)([A-Za-z0-9_]*).*/#undef \1\2\
  18974. +#undef SYS_\2/gp'
  18975. + cat <<-EOF
  18976. +
  18977. +#endif
  18978. +EOF
  18979. )
  18980. diff -Nur uClibc-0.9.33.2/extra/scripts/getent uClibc-git/extra/scripts/getent
  18981. --- uClibc-0.9.33.2/extra/scripts/getent 2012-05-15 09:20:09.000000000 +0200
  18982. +++ uClibc-git/extra/scripts/getent 2014-02-03 12:32:56.000000000 +0100
  18983. @@ -1,5 +1,4 @@
  18984. #!/bin/sh
  18985. -# $Header: /var/cvs/uClibc/extra/scripts/getent,v 1.2 2005/02/02 14:18:01 solar Exp $
  18986. #
  18987. # Closely (not perfectly) emulate the behavior of glibc's getent utility
  18988. #
  18989. @@ -9,7 +8,8 @@
  18990. # case-insensitive matches not supported (ethers; others?)
  18991. # may return false-positives (hosts,protocols,rpc,services,ethers)
  18992. -export PATH="${PATH}:/bin:/usr/bin"
  18993. +[ -z "$PATH" ] && PATH="/bin:/usr/bin" || PATH="${PATH}:/bin:/usr/bin"
  18994. +export PATH
  18995. file="/etc/$1"
  18996. case $1 in
  18997. diff -Nur uClibc-0.9.33.2/extra/scripts/install_headers.sh uClibc-git/extra/scripts/install_headers.sh
  18998. --- uClibc-0.9.33.2/extra/scripts/install_headers.sh 2012-05-15 09:20:09.000000000 +0200
  18999. +++ uClibc-git/extra/scripts/install_headers.sh 2014-02-03 12:32:56.000000000 +0100
  19000. @@ -32,10 +32,9 @@
  19001. exit 1
  19002. fi
  19003. -
  19004. # Sanitize and copy uclibc headers
  19005. (
  19006. -# We must cd, or else we'll prepend "${srcdir}" to filenames!
  19007. +# We must cd, or else we will prepend "${srcdir}" to filenames!
  19008. cd "${srcdir}" || exit 1
  19009. find . ! -name '.' -a ! -path '*/.*' | sed -e 's/^\.\///' -e '/^config\//d' \
  19010. -e '/^config$/d'
  19011. @@ -51,18 +50,20 @@
  19012. # Do not install libc-XXXX.h files
  19013. continue
  19014. fi
  19015. - # NB: unifdef exits with 1 if output is not
  19016. - # exactly the same as input. That's ok.
  19017. # Do not abort the script if unifdef "fails"!
  19018. # NB2: careful with sed command arguments, they contain tab character
  19019. "$top_builddir/extra/scripts/unifdef" \
  19020. + -B \
  19021. + -t \
  19022. + -x 2 \
  19023. + -f "$top_builddir/include/generated/unifdef_config.h" \
  19024. -U_LIBC \
  19025. -U__UCLIBC_GEN_LOCALE \
  19026. -U__NO_CTYPE \
  19027. "${srcdir}/$filename" \
  19028. | sed -e '/^rtld_hidden_proto[ ]*([a-zA-Z0-9_]*)$/d' \
  19029. | sed -e '/^lib\(c\|m\|resolv\|dl\|intl\|rt\|nsl\|util\|crypt\|pthread\)_hidden_proto[ ]*([a-zA-Z0-9_]*)$/d' \
  19030. - >"${dstdir}/$filename"
  19031. + > "${dstdir}/$filename"
  19032. done
  19033. )
  19034. diff -Nur uClibc-0.9.33.2/extra/scripts/relinfo.pl uClibc-git/extra/scripts/relinfo.pl
  19035. --- uClibc-0.9.33.2/extra/scripts/relinfo.pl 2012-05-15 09:20:09.000000000 +0200
  19036. +++ uClibc-git/extra/scripts/relinfo.pl 2014-02-03 12:32:56.000000000 +0100
  19037. @@ -1,5 +1,5 @@
  19038. #! /usr/bin/perl
  19039. -eval "exec /usr/bin/perl -S $0 $*"
  19040. +eval "exec /usr/bin/env perl -w -S $0 $@"
  19041. if 0;
  19042. # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc.
  19043. # Written by Ulrich Drepper <drepper@redhat.com>, 2000.
  19044. @@ -14,8 +14,7 @@
  19045. # GNU General Public License for more details.
  19046. #
  19047. # You should have received a copy of the GNU General Public License
  19048. -# along with this program; if not, write to the Free Software Foundation,
  19049. -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  19050. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  19051. for ($cnt = 0; $cnt <= $#ARGV; ++$cnt) {
  19052. $relent = 0;
  19053. diff -Nur uClibc-0.9.33.2/extra/scripts/unifdef.c uClibc-git/extra/scripts/unifdef.c
  19054. --- uClibc-0.9.33.2/extra/scripts/unifdef.c 2012-05-15 09:20:09.000000000 +0200
  19055. +++ uClibc-git/extra/scripts/unifdef.c 2014-02-03 12:32:56.000000000 +0100
  19056. @@ -1,13 +1,5 @@
  19057. /*
  19058. - * Copyright (c) 2002 - 2005 Tony Finch <dot@dotat.at>. All rights reserved.
  19059. - *
  19060. - * This code is derived from software contributed to Berkeley by Dave Yost.
  19061. - * It was rewritten to support ANSI C by Tony Finch. The original version of
  19062. - * unifdef carried the following copyright notice. None of its code remains
  19063. - * in this version (though some of the names remain).
  19064. - *
  19065. - * Copyright (c) 1985, 1993
  19066. - * The Regents of the University of California. All rights reserved.
  19067. + * Copyright (c) 2002 - 2014 Tony Finch <dot@dotat.at>
  19068. *
  19069. * Redistribution and use in source and binary forms, with or without
  19070. * modification, are permitted provided that the following conditions
  19071. @@ -31,27 +23,15 @@
  19072. * SUCH DAMAGE.
  19073. */
  19074. -#include <sys/cdefs.h>
  19075. -
  19076. -#ifndef lint
  19077. -#if 0
  19078. -static const char copyright[] =
  19079. -"@(#) Copyright (c) 1985, 1993\n\
  19080. - The Regents of the University of California. All rights reserved.\n";
  19081. -#endif
  19082. -#ifdef __IDSTRING
  19083. -__IDSTRING(Berkeley, "@(#)unifdef.c 8.1 (Berkeley) 6/6/93");
  19084. -__IDSTRING(NetBSD, "$NetBSD: unifdef.c,v 1.8 2000/07/03 02:51:36 matt Exp $");
  19085. -__IDSTRING(dotat, "$dotat: things/unifdef.c,v 1.171 2005/03/08 12:38:48 fanf2 Exp $");
  19086. -#endif
  19087. -#endif /* not lint */
  19088. -#ifdef __FBSDID
  19089. -__FBSDID("$FreeBSD: /repoman/r/ncvs/src/usr.bin/unifdef/unifdef.c,v 1.20 2005/05/21 09:55:09 ru Exp $");
  19090. -#endif
  19091. -
  19092. /*
  19093. * unifdef - remove ifdef'ed lines
  19094. *
  19095. + * This code was derived from software contributed to Berkeley by Dave Yost.
  19096. + * It was rewritten to support ANSI C by Tony Finch. The original version
  19097. + * of unifdef carried the 4-clause BSD copyright licence. None of its code
  19098. + * remains in this version (though some of the names remain) so it now
  19099. + * carries a more liberal licence.
  19100. + *
  19101. * Wishlist:
  19102. * provide an option which will append the name of the
  19103. * appropriate symbol after #else's and #endif's
  19104. @@ -59,26 +39,17 @@
  19105. * #else's and #endif's to see that they match their
  19106. * corresponding #ifdef or #ifndef
  19107. *
  19108. - * The first two items above require better buffer handling, which would
  19109. - * also make it possible to handle all "dodgy" directives correctly.
  19110. + * These require better buffer handling, which would also make
  19111. + * it possible to handle all "dodgy" directives correctly.
  19112. */
  19113. -#include <errno.h>
  19114. -#include <ctype.h>
  19115. -#include <stdarg.h>
  19116. -#include <stdbool.h>
  19117. -#include <stdio.h>
  19118. -#include <stdlib.h>
  19119. -#include <string.h>
  19120. -#include <unistd.h>
  19121. -
  19122. -/* Avoid err.h since uClibc can disable these things */
  19123. -#define vwarnx(fmt, args) ({ fprintf(stderr, "unifdef: "); vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); })
  19124. -#define warnx(fmt, args...) fprintf(stderr, "unifdef: " fmt "\n", ## args)
  19125. -#define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
  19126. -#define err(exit_code, fmt, args...) errx(exit_code, fmt ": %s", ## args, strerror(errno))
  19127. +#include "unifdef.h"
  19128. -size_t strlcpy(char *dst, const char *src, size_t siz);
  19129. +static const char copyright[] =
  19130. + #include "version.h"
  19131. + "@(#) $Author: Tony Finch (dot@dotat.at) $\n"
  19132. + "@(#) $URL: http://dotat.at/prog/unifdef $\n"
  19133. +;
  19134. /* types of input lines: */
  19135. typedef enum {
  19136. @@ -96,6 +67,7 @@
  19137. LT_DODGY_LAST = LT_DODGY + LT_ENDIF,
  19138. LT_PLAIN, /* ordinary line */
  19139. LT_EOF, /* end of file */
  19140. + LT_ERROR, /* unevaluable #if */
  19141. LT_COUNT
  19142. } Linetype;
  19143. @@ -106,9 +78,12 @@
  19144. "DODGY IF", "DODGY TRUE", "DODGY FALSE",
  19145. "DODGY ELIF", "DODGY ELTRUE", "DODGY ELFALSE",
  19146. "DODGY ELSE", "DODGY ENDIF",
  19147. - "PLAIN", "EOF"
  19148. + "PLAIN", "EOF", "ERROR"
  19149. };
  19150. +#define linetype_if2elif(lt) ((Linetype)(lt - LT_IF + LT_ELIF))
  19151. +#define linetype_2dodgy(lt) ((Linetype)(lt + LT_DODGY))
  19152. +
  19153. /* state of #if processing */
  19154. typedef enum {
  19155. IS_OUTSIDE,
  19156. @@ -162,7 +137,7 @@
  19157. */
  19158. #define MAXDEPTH 64 /* maximum #if nesting */
  19159. #define MAXLINE 4096 /* maximum length of line */
  19160. -#define MAXSYMS 4096 /* maximum number of symbols */
  19161. +#define MAXSYMS 16384 /* maximum number of symbols */
  19162. /*
  19163. * Sometimes when editing a keyword the replacement text is longer, so
  19164. @@ -174,13 +149,17 @@
  19165. * Globals.
  19166. */
  19167. +static bool compblank; /* -B: compress blank lines */
  19168. +static bool lnblank; /* -b: blank deleted lines */
  19169. static bool complement; /* -c: do the complement */
  19170. static bool debugging; /* -d: debugging reports */
  19171. +static bool inplace; /* -m: modify in place */
  19172. static bool iocccok; /* -e: fewer IOCCC errors */
  19173. +static bool strictlogic; /* -K: keep ambiguous #ifs */
  19174. static bool killconsts; /* -k: eval constant #ifs */
  19175. -static bool lnblank; /* -l: blank deleted lines */
  19176. static bool lnnum; /* -n: add #line directives */
  19177. static bool symlist; /* -s: output symbol list */
  19178. +static bool symdepth; /* -S: output symbol depth */
  19179. static bool text; /* -t: this is a text file */
  19180. static const char *symname[MAXSYMS]; /* symbol name */
  19181. @@ -191,10 +170,28 @@
  19182. static FILE *input; /* input file pointer */
  19183. static const char *filename; /* input file name */
  19184. static int linenum; /* current line number */
  19185. +static const char *linefile; /* file name for #line */
  19186. +static FILE *output; /* output file pointer */
  19187. +static const char *ofilename; /* output file name */
  19188. +static const char *backext; /* backup extension */
  19189. +static char *tempname; /* avoid splatting input */
  19190. static char tline[MAXLINE+EDITSLOP];/* input buffer plus space */
  19191. static char *keyword; /* used for editing #elif's */
  19192. +/*
  19193. + * When processing a file, the output's newline style will match the
  19194. + * input's, and unifdef correctly handles CRLF or LF endings whatever
  19195. + * the platform's native style. The stdio streams are opened in binary
  19196. + * mode to accommodate platforms whose native newline style is CRLF.
  19197. + * When the output isn't a processed input file (when it is error /
  19198. + * debug / diagnostic messages) then unifdef uses native line endings.
  19199. + */
  19200. +
  19201. +static const char *newline; /* input file format */
  19202. +static const char newline_unix[] = "\n";
  19203. +static const char newline_crlf[] = "\r\n";
  19204. +
  19205. static Comment_state incomment; /* comment parser state */
  19206. static Line_state linestate; /* #if line parser state */
  19207. static Ifstate ifstate[MAXDEPTH]; /* #if processor state */
  19208. @@ -202,31 +199,53 @@
  19209. static int stifline[MAXDEPTH]; /* start of current #if */
  19210. static int depth; /* current #if nesting */
  19211. static int delcount; /* count of deleted lines */
  19212. -static bool keepthis; /* don't delete constant #if */
  19213. +static unsigned blankcount; /* count of blank lines */
  19214. +static unsigned blankmax; /* maximum recent blankcount */
  19215. +static bool constexpr; /* constant #if expression */
  19216. +static bool zerosyms; /* to format symdepth output */
  19217. +static bool firstsym; /* ditto */
  19218. +static int exitmode; /* exit status mode */
  19219. static int exitstat; /* program exit status */
  19220. +static bool altered; /* was this file modified? */
  19221. -static void addsym(bool, bool, char *);
  19222. +static void addsym1(bool, bool, char *);
  19223. +static void addsym2(bool, const char *, const char *);
  19224. +static char *astrcat(const char *, const char *);
  19225. +static void cleantemp(void);
  19226. +static void closeio(void);
  19227. static void debug(const char *, ...);
  19228. +static void debugsym(const char *, int);
  19229. +static bool defundef(void);
  19230. +static void defundefile(const char *);
  19231. static void done(void);
  19232. static void error(const char *);
  19233. -static int findsym(const char *);
  19234. +static int findsym(const char **);
  19235. static void flushline(bool);
  19236. -static Linetype get_line(void);
  19237. +static void hashline(void);
  19238. +static void help(void);
  19239. static Linetype ifeval(const char **);
  19240. static void ignoreoff(void);
  19241. static void ignoreon(void);
  19242. +static void indirectsym(void);
  19243. static void keywordedit(const char *);
  19244. +static const char *matchsym(const char *, const char *);
  19245. static void nest(void);
  19246. +static Linetype parseline(void);
  19247. static void process(void);
  19248. +static void processinout(const char *, const char *);
  19249. +static const char *skipargs(const char *);
  19250. static const char *skipcomment(const char *);
  19251. +static const char *skiphash(void);
  19252. +static const char *skipline(const char *);
  19253. static const char *skipsym(const char *);
  19254. static void state(Ifstate);
  19255. -static int strlcmp(const char *, const char *, size_t);
  19256. static void unnest(void);
  19257. static void usage(void);
  19258. +static void version(void);
  19259. +static const char *xstrdup(const char *, const char *);
  19260. -#define endsym(c) (!isalpha((unsigned char)c) && !isdigit((unsigned char)c) && c != '_')
  19261. +#define endsym(c) (!isalnum((unsigned char)c) && c != '_')
  19262. /*
  19263. * The main program.
  19264. @@ -236,7 +255,7 @@
  19265. {
  19266. int opt;
  19267. - while ((opt = getopt(argc, argv, "i:D:U:I:cdeklnst")) != -1)
  19268. + while ((opt = getopt(argc, argv, "i:D:U:f:I:M:o:x:bBcdehKklmnsStV")) != -1)
  19269. switch (opt) {
  19270. case 'i': /* treat stuff controlled by these symbols as text */
  19271. /*
  19272. @@ -246,20 +265,26 @@
  19273. */
  19274. opt = *optarg++;
  19275. if (opt == 'D')
  19276. - addsym(true, true, optarg);
  19277. + addsym1(true, true, optarg);
  19278. else if (opt == 'U')
  19279. - addsym(true, false, optarg);
  19280. + addsym1(true, false, optarg);
  19281. else
  19282. usage();
  19283. break;
  19284. case 'D': /* define a symbol */
  19285. - addsym(false, true, optarg);
  19286. + addsym1(false, true, optarg);
  19287. break;
  19288. case 'U': /* undef a symbol */
  19289. - addsym(false, false, optarg);
  19290. + addsym1(false, false, optarg);
  19291. break;
  19292. - case 'I':
  19293. - /* no-op for compatibility with cpp */
  19294. + case 'I': /* no-op for compatibility with cpp */
  19295. + break;
  19296. + case 'b': /* blank deleted lines instead of omitting them */
  19297. + case 'l': /* backwards compatibility */
  19298. + lnblank = true;
  19299. + break;
  19300. + case 'B': /* compress blank lines around removed section */
  19301. + compblank = true;
  19302. break;
  19303. case 'c': /* treat -D as -U and vice versa */
  19304. complement = true;
  19305. @@ -270,50 +295,214 @@
  19306. case 'e': /* fewer errors from dodgy lines */
  19307. iocccok = true;
  19308. break;
  19309. + case 'f': /* definitions file */
  19310. + defundefile(optarg);
  19311. + break;
  19312. + case 'h':
  19313. + help();
  19314. + break;
  19315. + case 'K': /* keep ambiguous #ifs */
  19316. + strictlogic = true;
  19317. + break;
  19318. case 'k': /* process constant #ifs */
  19319. killconsts = true;
  19320. break;
  19321. - case 'l': /* blank deleted lines instead of omitting them */
  19322. - lnblank = true;
  19323. + case 'm': /* modify in place */
  19324. + inplace = true;
  19325. + break;
  19326. + case 'M': /* modify in place and keep backup */
  19327. + inplace = true;
  19328. + backext = optarg;
  19329. break;
  19330. case 'n': /* add #line directive after deleted lines */
  19331. lnnum = true;
  19332. break;
  19333. + case 'o': /* output to a file */
  19334. + ofilename = optarg;
  19335. + break;
  19336. case 's': /* only output list of symbols that control #ifs */
  19337. symlist = true;
  19338. break;
  19339. + case 'S': /* list symbols with their nesting depth */
  19340. + symlist = symdepth = true;
  19341. + break;
  19342. case 't': /* don't parse C comments */
  19343. text = true;
  19344. break;
  19345. + case 'V':
  19346. + version();
  19347. + break;
  19348. + case 'x':
  19349. + exitmode = atoi(optarg);
  19350. + if(exitmode < 0 || exitmode > 2)
  19351. + usage();
  19352. + break;
  19353. default:
  19354. usage();
  19355. }
  19356. argc -= optind;
  19357. argv += optind;
  19358. - if (argc > 1) {
  19359. - errx(2, "can only do one file");
  19360. - } else if (argc == 1 && strcmp(*argv, "-") != 0) {
  19361. - filename = *argv;
  19362. - input = fopen(filename, "r");
  19363. - if (input == NULL)
  19364. - err(2, "can't open %s", filename);
  19365. - } else {
  19366. + if (compblank && lnblank)
  19367. + errx(2, "-B and -b are mutually exclusive");
  19368. + if (symlist && (ofilename != NULL || inplace || argc > 1))
  19369. + errx(2, "-s only works with one input file");
  19370. + if (argc > 1 && ofilename != NULL)
  19371. + errx(2, "-o cannot be used with multiple input files");
  19372. + if (argc > 1 && !inplace)
  19373. + errx(2, "multiple input files require -m or -M");
  19374. + if (argc == 0)
  19375. + argc = 1;
  19376. + if (argc == 1 && !inplace && ofilename == NULL)
  19377. + ofilename = "-";
  19378. + indirectsym();
  19379. +
  19380. + atexit(cleantemp);
  19381. + if (ofilename != NULL)
  19382. + processinout(*argv, ofilename);
  19383. + else while (argc-- > 0) {
  19384. + processinout(*argv, *argv);
  19385. + argv++;
  19386. + }
  19387. + switch(exitmode) {
  19388. + case(0): exit(exitstat);
  19389. + case(1): exit(!exitstat);
  19390. + case(2): exit(0);
  19391. + default: abort(); /* bug */
  19392. + }
  19393. +}
  19394. +
  19395. +/*
  19396. + * File logistics.
  19397. + */
  19398. +static void
  19399. +processinout(const char *ifn, const char *ofn)
  19400. +{
  19401. + struct stat st;
  19402. +
  19403. + if (ifn == NULL || strcmp(ifn, "-") == 0) {
  19404. filename = "[stdin]";
  19405. - input = stdin;
  19406. + linefile = NULL;
  19407. + input = fbinmode(stdin);
  19408. + } else {
  19409. + filename = ifn;
  19410. + linefile = ifn;
  19411. + input = fopen(ifn, "rb");
  19412. + if (input == NULL)
  19413. + err(2, "can't open %s", ifn);
  19414. + }
  19415. + if (strcmp(ofn, "-") == 0) {
  19416. + output = fbinmode(stdout);
  19417. + process();
  19418. + return;
  19419. }
  19420. + if (stat(ofn, &st) < 0) {
  19421. + output = fopen(ofn, "wb");
  19422. + if (output == NULL)
  19423. + err(2, "can't create %s", ofn);
  19424. + process();
  19425. + return;
  19426. + }
  19427. +
  19428. + tempname = astrcat(ofn, ".XXXXXX");
  19429. + output = mktempmode(tempname, st.st_mode);
  19430. + if (output == NULL)
  19431. + err(2, "can't create %s", tempname);
  19432. +
  19433. process();
  19434. - debug("bug at line %d", __LINE__);
  19435. - abort(); /* bug */
  19436. +
  19437. + if (backext != NULL) {
  19438. + char *backname = astrcat(ofn, backext);
  19439. + if (rename(ofn, backname) < 0)
  19440. + err(2, "can't rename \"%s\" to \"%s\"", ofn, backname);
  19441. + free(backname);
  19442. + }
  19443. + /* leave file unmodified if unifdef made no changes */
  19444. + if (!altered && backext == NULL) {
  19445. + if (remove(tempname) < 0)
  19446. + warn("can't remove \"%s\"", tempname);
  19447. + } else if (replace(tempname, ofn) < 0)
  19448. + err(2, "can't rename \"%s\" to \"%s\"", tempname, ofn);
  19449. + free(tempname);
  19450. + tempname = NULL;
  19451. +}
  19452. +
  19453. +/*
  19454. + * For cleaning up if there is an error.
  19455. + */
  19456. +static void
  19457. +cleantemp(void)
  19458. +{
  19459. + if (tempname != NULL)
  19460. + remove(tempname);
  19461. +}
  19462. +
  19463. +/*
  19464. + * Self-identification functions.
  19465. + */
  19466. +
  19467. +static void
  19468. +version(void)
  19469. +{
  19470. + const char *c = copyright;
  19471. + for (;;) {
  19472. + while (*++c != '$')
  19473. + if (*c == '\0')
  19474. + exit(0);
  19475. + while (*++c != '$')
  19476. + putc(*c, stderr);
  19477. + putc('\n', stderr);
  19478. + }
  19479. +}
  19480. +
  19481. +static void
  19482. +synopsis(FILE *fp)
  19483. +{
  19484. + fprintf(fp,
  19485. + "usage: unifdef [-bBcdehKkmnsStV] [-x{012}] [-Mext] [-opath] \\\n"
  19486. + " [-[i]Dsym[=val]] [-[i]Usym] [-fpath] ... [file] ...\n");
  19487. }
  19488. static void
  19489. usage(void)
  19490. {
  19491. - fprintf(stderr, "usage: unifdef [-cdeklnst] [-Ipath]"
  19492. - " [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [file]\n");
  19493. + synopsis(stderr);
  19494. exit(2);
  19495. }
  19496. +static void
  19497. +help(void)
  19498. +{
  19499. + synopsis(stdout);
  19500. + printf(
  19501. + " -Dsym=val define preprocessor symbol with given value\n"
  19502. + " -Dsym define preprocessor symbol with value 1\n"
  19503. + " -Usym preprocessor symbol is undefined\n"
  19504. + " -iDsym=val \\ ignore C strings and comments\n"
  19505. + " -iDsym ) in sections controlled by these\n"
  19506. + " -iUsym / preprocessor symbols\n"
  19507. + " -fpath file containing #define and #undef directives\n"
  19508. + " -b blank lines instead of deleting them\n"
  19509. + " -B compress blank lines around deleted section\n"
  19510. + " -c complement (invert) keep vs. delete\n"
  19511. + " -d debugging mode\n"
  19512. + " -e ignore multiline preprocessor directives\n"
  19513. + " -h print help\n"
  19514. + " -Ipath extra include file path (ignored)\n"
  19515. + " -K disable && and || short-circuiting\n"
  19516. + " -k process constant #if expressions\n"
  19517. + " -Mext modify in place and keep backups\n"
  19518. + " -m modify input files in place\n"
  19519. + " -n add #line directives to output\n"
  19520. + " -opath output file name\n"
  19521. + " -S list #if control symbols with nesting\n"
  19522. + " -s list #if control symbols\n"
  19523. + " -t ignore C strings and comments\n"
  19524. + " -V print version\n"
  19525. + " -x{012} exit status mode\n"
  19526. + );
  19527. + exit(0);
  19528. +}
  19529. +
  19530. /*
  19531. * A state transition function alters the global #if processing state
  19532. * in a particular way. The table below is indexed by the current
  19533. @@ -327,7 +516,8 @@
  19534. * When we have processed a group that starts off with a known-false
  19535. * #if/#elif sequence (which has therefore been deleted) followed by a
  19536. * #elif that we don't understand and therefore must keep, we edit the
  19537. - * latter into a #if to keep the nesting correct.
  19538. + * latter into a #if to keep the nesting correct. We use memcpy() to
  19539. + * overwrite the 4 byte token "elif" with "if " without a '\0' byte.
  19540. *
  19541. * When we find a true #elif in a group, the following block will
  19542. * always be kept and the rest of the sequence after the next #elif or
  19543. @@ -380,75 +570,66 @@
  19544. static void Idrop (void) { Fdrop(); ignoreon(); }
  19545. static void Itrue (void) { Ftrue(); ignoreon(); }
  19546. static void Ifalse(void) { Ffalse(); ignoreon(); }
  19547. -/* edit this line */
  19548. -static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); }
  19549. -static void Mtrue (void) { keywordedit("else\n"); state(IS_TRUE_MIDDLE); }
  19550. -static void Melif (void) { keywordedit("endif\n"); state(IS_FALSE_TRAILER); }
  19551. -static void Melse (void) { keywordedit("endif\n"); state(IS_FALSE_ELSE); }
  19552. +/* modify this line */
  19553. +static void Mpass (void) { memcpy(keyword, "if ", 4); Pelif(); }
  19554. +static void Mtrue (void) { keywordedit("else"); state(IS_TRUE_MIDDLE); }
  19555. +static void Melif (void) { keywordedit("endif"); state(IS_FALSE_TRAILER); }
  19556. +static void Melse (void) { keywordedit("endif"); state(IS_FALSE_ELSE); }
  19557. static state_fn * const trans_table[IS_COUNT][LT_COUNT] = {
  19558. /* IS_OUTSIDE */
  19559. { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Eendif,
  19560. Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eendif,
  19561. - print, done },
  19562. + print, done, abort },
  19563. /* IS_FALSE_PREFIX */
  19564. { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Strue, Sfalse,Selse, Dendif,
  19565. Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Eioccc,Eioccc,Eioccc,Eioccc,
  19566. - drop, Eeof },
  19567. + drop, Eeof, abort },
  19568. /* IS_TRUE_PREFIX */
  19569. { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Dfalse,Dfalse,Dfalse,Delse, Dendif,
  19570. Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
  19571. - print, Eeof },
  19572. + print, Eeof, abort },
  19573. /* IS_PASS_MIDDLE */
  19574. { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Pelif, Mtrue, Delif, Pelse, Pendif,
  19575. Oiffy, Oiffy, Fpass, Oif, Oif, Pelif, Oelif, Oelif, Pelse, Pendif,
  19576. - print, Eeof },
  19577. + print, Eeof, abort },
  19578. /* IS_FALSE_MIDDLE */
  19579. { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Pelif, Mtrue, Delif, Pelse, Pendif,
  19580. Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
  19581. - drop, Eeof },
  19582. + drop, Eeof, abort },
  19583. /* IS_TRUE_MIDDLE */
  19584. { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Melif, Melif, Melif, Melse, Pendif,
  19585. Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Pendif,
  19586. - print, Eeof },
  19587. + print, Eeof, abort },
  19588. /* IS_PASS_ELSE */
  19589. { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Pendif,
  19590. Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Pendif,
  19591. - print, Eeof },
  19592. + print, Eeof, abort },
  19593. /* IS_FALSE_ELSE */
  19594. { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Dendif,
  19595. Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Eioccc,
  19596. - drop, Eeof },
  19597. + drop, Eeof, abort },
  19598. /* IS_TRUE_ELSE */
  19599. { Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Dendif,
  19600. Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eioccc,
  19601. - print, Eeof },
  19602. + print, Eeof, abort },
  19603. /* IS_FALSE_TRAILER */
  19604. { Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Dendif,
  19605. Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Eioccc,
  19606. - drop, Eeof }
  19607. + drop, Eeof, abort }
  19608. /*TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF
  19609. TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF (DODGY)
  19610. - PLAIN EOF */
  19611. + PLAIN EOF ERROR */
  19612. };
  19613. /*
  19614. * State machine utility functions
  19615. */
  19616. static void
  19617. -done(void)
  19618. -{
  19619. - if (incomment)
  19620. - error("EOF in comment");
  19621. - exit(exitstat);
  19622. -}
  19623. -static void
  19624. ignoreoff(void)
  19625. {
  19626. - if (depth == 0) {
  19627. - debug("bug at line %d", __LINE__);
  19628. + if (depth == 0)
  19629. abort(); /* bug */
  19630. - }
  19631. ignoring[depth] = ignoring[depth-1];
  19632. }
  19633. static void
  19634. @@ -459,31 +640,26 @@
  19635. static void
  19636. keywordedit(const char *replacement)
  19637. {
  19638. - size_t size = tline + sizeof(tline) - keyword;
  19639. - char *dst = keyword;
  19640. - const char *src = replacement;
  19641. - if (size != 0) {
  19642. - while ((--size != 0) && (*src != '\0'))
  19643. - *dst++ = *src++;
  19644. - *dst = '\0';
  19645. - }
  19646. + snprintf(keyword, tline + sizeof(tline) - keyword,
  19647. + "%s%s", replacement, newline);
  19648. + altered = true;
  19649. print();
  19650. }
  19651. static void
  19652. nest(void)
  19653. {
  19654. - depth += 1;
  19655. - if (depth >= MAXDEPTH)
  19656. + if (depth > MAXDEPTH-1)
  19657. + abort(); /* bug */
  19658. + if (depth == MAXDEPTH-1)
  19659. error("Too many levels of nesting");
  19660. + depth += 1;
  19661. stifline[depth] = linenum;
  19662. }
  19663. static void
  19664. unnest(void)
  19665. {
  19666. - if (depth == 0) {
  19667. - debug("bug at line %d", __LINE__);
  19668. + if (depth == 0)
  19669. abort(); /* bug */
  19670. - }
  19671. depth -= 1;
  19672. }
  19673. static void
  19674. @@ -493,7 +669,20 @@
  19675. }
  19676. /*
  19677. + * The last state transition function. When this is called,
  19678. + * lineval == LT_EOF, so the process() loop will terminate.
  19679. + */
  19680. +static void
  19681. +done(void)
  19682. +{
  19683. + if (incomment)
  19684. + error("EOF in comment");
  19685. + closeio();
  19686. +}
  19687. +
  19688. +/*
  19689. * Write a line to the output or not, according to command line options.
  19690. + * If writing fails, closeio() will print the error and exit.
  19691. */
  19692. static void
  19693. flushline(bool keep)
  19694. @@ -501,16 +690,58 @@
  19695. if (symlist)
  19696. return;
  19697. if (keep ^ complement) {
  19698. - if (lnnum && delcount > 0)
  19699. - printf("#line %d\n", linenum);
  19700. - fputs(tline, stdout);
  19701. - delcount = 0;
  19702. + bool blankline = tline[strspn(tline, " \t\r\n")] == '\0';
  19703. + if (blankline && compblank && blankcount != blankmax) {
  19704. + delcount += 1;
  19705. + blankcount += 1;
  19706. + } else {
  19707. + if (lnnum && delcount > 0)
  19708. + hashline();
  19709. + if (fputs(tline, output) == EOF)
  19710. + closeio();
  19711. + delcount = 0;
  19712. + blankmax = blankcount = blankline ? blankcount + 1 : 0;
  19713. + }
  19714. } else {
  19715. - if (lnblank)
  19716. - putc('\n', stdout);
  19717. - exitstat = 1;
  19718. + if (lnblank && fputs(newline, output) == EOF)
  19719. + closeio();
  19720. + altered = true;
  19721. delcount += 1;
  19722. + blankcount = 0;
  19723. }
  19724. + if (debugging && fflush(output) == EOF)
  19725. + closeio();
  19726. +}
  19727. +
  19728. +/*
  19729. + * Format of #line directives depends on whether we know the input filename.
  19730. + */
  19731. +static void
  19732. +hashline(void)
  19733. +{
  19734. + int e;
  19735. +
  19736. + if (linefile == NULL)
  19737. + e = fprintf(output, "#line %d%s", linenum, newline);
  19738. + else
  19739. + e = fprintf(output, "#line %d \"%s\"%s",
  19740. + linenum, linefile, newline);
  19741. + if (e < 0)
  19742. + closeio();
  19743. +}
  19744. +
  19745. +/*
  19746. + * Flush the output and handle errors.
  19747. + */
  19748. +static void
  19749. +closeio(void)
  19750. +{
  19751. + /* Tidy up after findsym(). */
  19752. + if (symdepth && !zerosyms)
  19753. + printf("\n");
  19754. + if (output != NULL && (ferror(output) || fclose(output) == EOF))
  19755. + err(2, "%s: can't write to output", filename);
  19756. + fclose(input);
  19757. }
  19758. /*
  19759. @@ -519,16 +750,22 @@
  19760. static void
  19761. process(void)
  19762. {
  19763. - Linetype lineval;
  19764. -
  19765. - for (;;) {
  19766. - linenum++;
  19767. - lineval = get_line();
  19768. + Linetype lineval = LT_PLAIN;
  19769. + /* When compressing blank lines, act as if the file
  19770. + is preceded by a large number of blank lines. */
  19771. + blankmax = blankcount = 1000;
  19772. + zerosyms = true;
  19773. + newline = NULL;
  19774. + linenum = 0;
  19775. + altered = false;
  19776. + while (lineval != LT_EOF) {
  19777. + lineval = parseline();
  19778. trans_table[ifstate[depth]][lineval]();
  19779. - debug("process %s -> %s depth %d",
  19780. - linetype_name[lineval],
  19781. + debug("process line %d %s -> %s depth %d",
  19782. + linenum, linetype_name[lineval],
  19783. ifstate_name[ifstate[depth]], depth);
  19784. }
  19785. + exitstat |= altered;
  19786. }
  19787. /*
  19788. @@ -537,104 +774,131 @@
  19789. * help from skipcomment().
  19790. */
  19791. static Linetype
  19792. -get_line(void)
  19793. +parseline(void)
  19794. {
  19795. const char *cp;
  19796. int cursym;
  19797. - int kwlen;
  19798. Linetype retval;
  19799. Comment_state wascomment;
  19800. - if (fgets(tline, MAXLINE, input) == NULL)
  19801. - return (LT_EOF);
  19802. - retval = LT_PLAIN;
  19803. wascomment = incomment;
  19804. - cp = skipcomment(tline);
  19805. - if (linestate == LS_START) {
  19806. - if (*cp == '#') {
  19807. - linestate = LS_HASH;
  19808. - cp = skipcomment(cp + 1);
  19809. - } else if (*cp != '\0')
  19810. - linestate = LS_DIRTY;
  19811. + cp = skiphash();
  19812. + if (cp == NULL)
  19813. + return (LT_EOF);
  19814. + if (newline == NULL) {
  19815. + if (strrchr(tline, '\n') == strrchr(tline, '\r') + 1)
  19816. + newline = newline_crlf;
  19817. + else
  19818. + newline = newline_unix;
  19819. }
  19820. - if (!incomment && linestate == LS_HASH) {
  19821. - keyword = tline + (cp - tline);
  19822. - cp = skipsym(cp);
  19823. - kwlen = cp - keyword;
  19824. - /* no way can we deal with a continuation inside a keyword */
  19825. - if (strncmp(cp, "\\\n", 2) == 0)
  19826. - Eioccc();
  19827. - if (strlcmp("ifdef", keyword, kwlen) == 0 ||
  19828. - strlcmp("ifndef", keyword, kwlen) == 0) {
  19829. - cp = skipcomment(cp);
  19830. - if ((cursym = findsym(cp)) < 0)
  19831. - retval = LT_IF;
  19832. - else {
  19833. - retval = (keyword[2] == 'n')
  19834. - ? LT_FALSE : LT_TRUE;
  19835. - if (value[cursym] == NULL)
  19836. - retval = (retval == LT_TRUE)
  19837. - ? LT_FALSE : LT_TRUE;
  19838. - if (ignore[cursym])
  19839. - retval = (retval == LT_TRUE)
  19840. - ? LT_TRUEI : LT_FALSEI;
  19841. - }
  19842. - cp = skipsym(cp);
  19843. - } else if (strlcmp("if", keyword, kwlen) == 0)
  19844. - retval = ifeval(&cp);
  19845. - else if (strlcmp("elif", keyword, kwlen) == 0)
  19846. - retval = ifeval(&cp) - LT_IF + LT_ELIF;
  19847. - else if (strlcmp("else", keyword, kwlen) == 0)
  19848. - retval = LT_ELSE;
  19849. - else if (strlcmp("endif", keyword, kwlen) == 0)
  19850. - retval = LT_ENDIF;
  19851. + if (*cp == '\0') {
  19852. + retval = LT_PLAIN;
  19853. + goto done;
  19854. + }
  19855. + keyword = tline + (cp - tline);
  19856. + if ((cp = matchsym("ifdef", keyword)) != NULL ||
  19857. + (cp = matchsym("ifndef", keyword)) != NULL) {
  19858. + cp = skipcomment(cp);
  19859. + if ((cursym = findsym(&cp)) < 0)
  19860. + retval = LT_IF;
  19861. else {
  19862. - linestate = LS_DIRTY;
  19863. - retval = LT_PLAIN;
  19864. + retval = (keyword[2] == 'n')
  19865. + ? LT_FALSE : LT_TRUE;
  19866. + if (value[cursym] == NULL)
  19867. + retval = (retval == LT_TRUE)
  19868. + ? LT_FALSE : LT_TRUE;
  19869. + if (ignore[cursym])
  19870. + retval = (retval == LT_TRUE)
  19871. + ? LT_TRUEI : LT_FALSEI;
  19872. }
  19873. - cp = skipcomment(cp);
  19874. - if (*cp != '\0') {
  19875. + } else if ((cp = matchsym("if", keyword)) != NULL)
  19876. + retval = ifeval(&cp);
  19877. + else if ((cp = matchsym("elif", keyword)) != NULL)
  19878. + retval = linetype_if2elif(ifeval(&cp));
  19879. + else if ((cp = matchsym("else", keyword)) != NULL)
  19880. + retval = LT_ELSE;
  19881. + else if ((cp = matchsym("endif", keyword)) != NULL)
  19882. + retval = LT_ENDIF;
  19883. + else {
  19884. + cp = skipsym(keyword);
  19885. + /* no way can we deal with a continuation inside a keyword */
  19886. + if (strncmp(cp, "\\\r\n", 3) == 0 ||
  19887. + strncmp(cp, "\\\n", 2) == 0)
  19888. + Eioccc();
  19889. + cp = skipline(cp);
  19890. + retval = LT_PLAIN;
  19891. + goto done;
  19892. + }
  19893. + cp = skipcomment(cp);
  19894. + if (*cp != '\0') {
  19895. + cp = skipline(cp);
  19896. + if (retval == LT_TRUE || retval == LT_FALSE ||
  19897. + retval == LT_TRUEI || retval == LT_FALSEI)
  19898. + retval = LT_IF;
  19899. + if (retval == LT_ELTRUE || retval == LT_ELFALSE)
  19900. + retval = LT_ELIF;
  19901. + }
  19902. + /* the following can happen if the last line of the file lacks a
  19903. + newline or if there is too much whitespace in a directive */
  19904. + if (linestate == LS_HASH) {
  19905. + long len = cp - tline;
  19906. + if (fgets(tline + len, MAXLINE - len, input) == NULL) {
  19907. + if (ferror(input))
  19908. + err(2, "can't read %s", filename);
  19909. + /* append the missing newline at eof */
  19910. + strcpy(tline + len, newline);
  19911. + cp += strlen(newline);
  19912. + linestate = LS_START;
  19913. + } else {
  19914. linestate = LS_DIRTY;
  19915. - if (retval == LT_TRUE || retval == LT_FALSE ||
  19916. - retval == LT_TRUEI || retval == LT_FALSEI)
  19917. - retval = LT_IF;
  19918. - if (retval == LT_ELTRUE || retval == LT_ELFALSE)
  19919. - retval = LT_ELIF;
  19920. - }
  19921. - if (retval != LT_PLAIN && (wascomment || incomment)) {
  19922. - retval += LT_DODGY;
  19923. - if (incomment)
  19924. - linestate = LS_DIRTY;
  19925. }
  19926. - /* skipcomment should have changed the state */
  19927. -// Hmm hppens sometimes on valid files
  19928. -// if (linestate == LS_HASH) {
  19929. -// debug("bug at line %d", __LINE__);
  19930. -// abort(); /* bug */
  19931. -// }
  19932. - }
  19933. - if (linestate == LS_DIRTY) {
  19934. - while (*cp != '\0')
  19935. - cp = skipcomment(cp + 1);
  19936. }
  19937. - debug("parser %s comment %s line",
  19938. + if (retval != LT_PLAIN && (wascomment || linestate != LS_START)) {
  19939. + retval = linetype_2dodgy(retval);
  19940. + linestate = LS_DIRTY;
  19941. + }
  19942. +done:
  19943. + debug("parser line %d state %s comment %s line", linenum,
  19944. comment_name[incomment], linestate_name[linestate]);
  19945. return (retval);
  19946. }
  19947. /*
  19948. * These are the binary operators that are supported by the expression
  19949. - * evaluator. Note that if support for division is added then we also
  19950. - * need short-circuiting booleans because of divide-by-zero.
  19951. + * evaluator.
  19952. */
  19953. -static int op_lt(int a, int b) { return (a < b); }
  19954. -static int op_gt(int a, int b) { return (a > b); }
  19955. -static int op_le(int a, int b) { return (a <= b); }
  19956. -static int op_ge(int a, int b) { return (a >= b); }
  19957. -static int op_eq(int a, int b) { return (a == b); }
  19958. -static int op_ne(int a, int b) { return (a != b); }
  19959. -static int op_or(int a, int b) { return (a || b); }
  19960. -static int op_and(int a, int b) { return (a && b); }
  19961. +static Linetype op_strict(long *p, long v, Linetype at, Linetype bt) {
  19962. + if(at == LT_IF || bt == LT_IF) return (LT_IF);
  19963. + return (*p = v, v ? LT_TRUE : LT_FALSE);
  19964. +}
  19965. +static Linetype op_lt(long *p, Linetype at, long a, Linetype bt, long b) {
  19966. + return op_strict(p, a < b, at, bt);
  19967. +}
  19968. +static Linetype op_gt(long *p, Linetype at, long a, Linetype bt, long b) {
  19969. + return op_strict(p, a > b, at, bt);
  19970. +}
  19971. +static Linetype op_le(long *p, Linetype at, long a, Linetype bt, long b) {
  19972. + return op_strict(p, a <= b, at, bt);
  19973. +}
  19974. +static Linetype op_ge(long *p, Linetype at, long a, Linetype bt, long b) {
  19975. + return op_strict(p, a >= b, at, bt);
  19976. +}
  19977. +static Linetype op_eq(long *p, Linetype at, long a, Linetype bt, long b) {
  19978. + return op_strict(p, a == b, at, bt);
  19979. +}
  19980. +static Linetype op_ne(long *p, Linetype at, long a, Linetype bt, long b) {
  19981. + return op_strict(p, a != b, at, bt);
  19982. +}
  19983. +static Linetype op_or(long *p, Linetype at, long a, Linetype bt, long b) {
  19984. + if (!strictlogic && (at == LT_TRUE || bt == LT_TRUE))
  19985. + return (*p = 1, LT_TRUE);
  19986. + return op_strict(p, a || b, at, bt);
  19987. +}
  19988. +static Linetype op_and(long *p, Linetype at, long a, Linetype bt, long b) {
  19989. + if (!strictlogic && (at == LT_FALSE || bt == LT_FALSE))
  19990. + return (*p = 0, LT_FALSE);
  19991. + return op_strict(p, a && b, at, bt);
  19992. +}
  19993. /*
  19994. * An evaluation function takes three arguments, as follows: (1) a pointer to
  19995. @@ -643,12 +907,12 @@
  19996. * value of the expression; and (3) a pointer to a char* that points to the
  19997. * expression to be evaluated and that is updated to the end of the expression
  19998. * when evaluation is complete. The function returns LT_FALSE if the value of
  19999. - * the expression is zero, LT_TRUE if it is non-zero, or LT_IF if the
  20000. - * expression could not be evaluated.
  20001. + * the expression is zero, LT_TRUE if it is non-zero, LT_IF if the expression
  20002. + * depends on an unknown symbol, or LT_ERROR if there is a parse failure.
  20003. */
  20004. struct ops;
  20005. -typedef Linetype eval_fn(const struct ops *, int *, const char **);
  20006. +typedef Linetype eval_fn(const struct ops *, long *, const char **);
  20007. static eval_fn eval_table, eval_unary;
  20008. @@ -659,139 +923,139 @@
  20009. * element of the table. Innermost expressions have special non-table-driven
  20010. * handling.
  20011. */
  20012. -static const struct ops {
  20013. +struct op {
  20014. + const char *str;
  20015. + Linetype (*fn)(long *, Linetype, long, Linetype, long);
  20016. +};
  20017. +struct ops {
  20018. eval_fn *inner;
  20019. - struct op {
  20020. - const char *str;
  20021. - int short_circuit_val;
  20022. - int (*fn)(int, int);
  20023. - } op[5];
  20024. -} eval_ops[] = {
  20025. - { eval_table, { { "||", 1, op_or } } },
  20026. - { eval_table, { { "&&", 0, op_and } } },
  20027. - { eval_table, { { "==", -1, op_eq },
  20028. - { "!=", -1, op_ne } } },
  20029. - { eval_unary, { { "<=", -1, op_le },
  20030. - { ">=", -1, op_ge },
  20031. - { "<", -1, op_lt },
  20032. - { ">", -1, op_gt } } }
  20033. + struct op op[5];
  20034. +};
  20035. +static const struct ops eval_ops[] = {
  20036. + { eval_table, { { "||", op_or } } },
  20037. + { eval_table, { { "&&", op_and } } },
  20038. + { eval_table, { { "==", op_eq },
  20039. + { "!=", op_ne } } },
  20040. + { eval_unary, { { "<=", op_le },
  20041. + { ">=", op_ge },
  20042. + { "<", op_lt },
  20043. + { ">", op_gt } } }
  20044. };
  20045. +/* Current operator precedence level */
  20046. +static long prec(const struct ops *ops)
  20047. +{
  20048. + return (ops - eval_ops);
  20049. +}
  20050. +
  20051. /*
  20052. - * Function for evaluating the innermost parts of expressions, viz.
  20053. - * "!expr", "(expr)", "defined(symbol)", "defined symbol", "symbol", "number".
  20054. - * We reset the keepthis flag when we find a non-constant subexpression.
  20055. - */
  20056. -// TODO: we use LT_IF both as "I don't know whether it's false or true"
  20057. -// (example: "#if defined FOO") and when we see syntax error
  20058. -// (example: "#if (1 || 2" - no closing paren!), but this is wrong.
  20059. -// Binary && and || need to distinguish these cases in order to handle this:
  20060. -// "#if defined KNOWN_UNDEFINED && FOO" - discard
  20061. -// "#if defined KNOWN_UNDEFINED && (syntax_error_here" - do not discard!
  20062. + * Function for evaluating the innermost parts of expressions,
  20063. + * viz. !expr (expr) number defined(symbol) symbol
  20064. + * We reset the constexpr flag in the last two cases.
  20065. + */
  20066. static Linetype
  20067. -eval_unary(const struct ops *ops, int *valp, const char **cpp)
  20068. +eval_unary(const struct ops *ops, long *valp, const char **cpp)
  20069. {
  20070. const char *cp;
  20071. char *ep;
  20072. int sym;
  20073. + bool defparen;
  20074. + Linetype lt;
  20075. cp = skipcomment(*cpp);
  20076. if (*cp == '!') {
  20077. - debug("eval%d !", ops - eval_ops);
  20078. + debug("eval%d !", prec(ops));
  20079. cp++;
  20080. - if (eval_unary(ops, valp, &cp) == LT_IF) {
  20081. - *cpp = cp;
  20082. - return (LT_IF);
  20083. + lt = eval_unary(ops, valp, &cp);
  20084. + if (lt == LT_ERROR)
  20085. + return (LT_ERROR);
  20086. + if (lt != LT_IF) {
  20087. + *valp = !*valp;
  20088. + lt = *valp ? LT_TRUE : LT_FALSE;
  20089. }
  20090. - *valp = !*valp;
  20091. -
  20092. } else if (*cp == '(') {
  20093. - Linetype expr_res;
  20094. -
  20095. cp++;
  20096. - debug("eval%d (%s", ops - eval_ops, cp);
  20097. - expr_res = eval_table(eval_ops, valp, &cp);
  20098. + debug("eval%d (", prec(ops));
  20099. + lt = eval_table(eval_ops, valp, &cp);
  20100. + if (lt == LT_ERROR)
  20101. + return (LT_ERROR);
  20102. cp = skipcomment(cp);
  20103. - *cpp = cp;
  20104. if (*cp++ != ')')
  20105. - return (LT_IF);
  20106. - *cpp = cp;
  20107. - if (expr_res == LT_IF)
  20108. - return (LT_IF);
  20109. -
  20110. + return (LT_ERROR);
  20111. } else if (isdigit((unsigned char)*cp)) {
  20112. - debug("eval%d number", ops - eval_ops);
  20113. + debug("eval%d number", prec(ops));
  20114. *valp = strtol(cp, &ep, 0);
  20115. - cp = skipsym(cp);
  20116. -
  20117. - } else if (strncmp(cp, "defined", 7) == 0 && endsym(cp[7])) {
  20118. - bool parens;
  20119. -
  20120. + if (ep == cp)
  20121. + return (LT_ERROR);
  20122. + lt = *valp ? LT_TRUE : LT_FALSE;
  20123. + cp = ep;
  20124. + } else if (matchsym("defined", cp) != NULL) {
  20125. cp = skipcomment(cp+7);
  20126. - debug("eval%d defined '%s'", ops - eval_ops, cp);
  20127. - parens = (*cp == '(');
  20128. - if (parens)
  20129. + if (*cp == '(') {
  20130. cp = skipcomment(cp+1);
  20131. - sym = findsym(cp);
  20132. - cp = skipsym(cp);
  20133. + defparen = true;
  20134. + } else {
  20135. + defparen = false;
  20136. + }
  20137. + sym = findsym(&cp);
  20138. cp = skipcomment(cp);
  20139. - if (parens) {
  20140. - if (*cp != ')')
  20141. - return (LT_IF);
  20142. - cp = skipcomment(cp+1);
  20143. + if (defparen && *cp++ != ')') {
  20144. + debug("eval%d defined missing ')'", prec(ops));
  20145. + return (LT_ERROR);
  20146. }
  20147. - *cpp = cp;
  20148. if (sym < 0) {
  20149. - debug("sym not found, returning LT_IF");
  20150. - return (LT_IF);
  20151. + debug("eval%d defined unknown", prec(ops));
  20152. + lt = LT_IF;
  20153. + } else {
  20154. + debug("eval%d defined %s", prec(ops), symname[sym]);
  20155. + *valp = (value[sym] != NULL);
  20156. + lt = *valp ? LT_TRUE : LT_FALSE;
  20157. }
  20158. - *valp = (value[sym] != NULL);
  20159. - keepthis = false;
  20160. -
  20161. + constexpr = false;
  20162. } else if (!endsym(*cp)) {
  20163. - debug("eval%d symbol", ops - eval_ops);
  20164. - sym = findsym(cp);
  20165. - cp = skipsym(cp);
  20166. - *cpp = cp;
  20167. - if (sym < 0)
  20168. - return (LT_IF);
  20169. - if (value[sym] == NULL)
  20170. + debug("eval%d symbol", prec(ops));
  20171. + sym = findsym(&cp);
  20172. + if (sym < 0) {
  20173. + lt = LT_IF;
  20174. + cp = skipargs(cp);
  20175. + } else if (value[sym] == NULL) {
  20176. *valp = 0;
  20177. - else {
  20178. + lt = LT_FALSE;
  20179. + } else {
  20180. *valp = strtol(value[sym], &ep, 0);
  20181. if (*ep != '\0' || ep == value[sym])
  20182. - return (LT_IF);
  20183. + return (LT_ERROR);
  20184. + lt = *valp ? LT_TRUE : LT_FALSE;
  20185. + cp = skipargs(cp);
  20186. }
  20187. - keepthis = false;
  20188. -
  20189. + constexpr = false;
  20190. } else {
  20191. - debug("eval%d bad expr", ops - eval_ops);
  20192. - return (LT_IF);
  20193. + debug("eval%d bad expr", prec(ops));
  20194. + return (LT_ERROR);
  20195. }
  20196. *cpp = cp;
  20197. - debug("eval%d = %d", ops - eval_ops, *valp);
  20198. - return (*valp ? LT_TRUE : LT_FALSE);
  20199. + debug("eval%d = %d", prec(ops), *valp);
  20200. + return (lt);
  20201. }
  20202. /*
  20203. * Table-driven evaluation of binary operators.
  20204. */
  20205. static Linetype
  20206. -eval_table(const struct ops *ops, int *valp, const char **cpp)
  20207. +eval_table(const struct ops *ops, long *valp, const char **cpp)
  20208. {
  20209. - Linetype left_side;
  20210. const struct op *op;
  20211. const char *cp;
  20212. - int val;
  20213. + long val;
  20214. + Linetype lt, rt;
  20215. - debug("eval%d '%s'", ops - eval_ops, *cpp);
  20216. - left_side = ops->inner(ops+1, valp, cpp);
  20217. + debug("eval%d", prec(ops));
  20218. cp = *cpp;
  20219. -
  20220. + lt = ops->inner(ops+1, valp, &cp);
  20221. + if (lt == LT_ERROR)
  20222. + return (LT_ERROR);
  20223. for (;;) {
  20224. - Linetype right_side;
  20225. -
  20226. cp = skipcomment(cp);
  20227. for (op = ops->op; op->str != NULL; op++)
  20228. if (strncmp(cp, op->str, strlen(op->str)) == 0)
  20229. @@ -799,38 +1063,17 @@
  20230. if (op->str == NULL)
  20231. break;
  20232. cp += strlen(op->str);
  20233. - debug("eval%d '%s'", ops - eval_ops, op->str);
  20234. - right_side = ops->inner(ops+1, &val, &cp);
  20235. - *cpp = cp;
  20236. -
  20237. - /* If short_circuit_val is 0 or 1, we can ignore
  20238. - * right side if left size is known, and its value
  20239. - * (i.e., *valp) is 0 or !0, respectively */
  20240. - if (left_side != LT_IF && op->short_circuit_val == !!*valp) {
  20241. - debug("op->short_circuit_val:%d *valp:%d cp:'%s'",
  20242. - op->short_circuit_val, *valp, cp);
  20243. - *valp = !!*valp;
  20244. - break;
  20245. - }
  20246. - /* Same for the right side */
  20247. - if (right_side != LT_IF && op->short_circuit_val == !!val) {
  20248. - debug("op->short_circuit_val:%d val:%d cp:'%s'",
  20249. - op->short_circuit_val, val, cp);
  20250. - left_side = right_side;
  20251. - *valp = !!val;
  20252. - break;
  20253. - }
  20254. -
  20255. - if (left_side == LT_IF || right_side == LT_IF)
  20256. - return (LT_IF);
  20257. - *valp = op->fn(*valp, val);
  20258. - left_side = right_side;
  20259. + debug("eval%d %s", prec(ops), op->str);
  20260. + rt = ops->inner(ops+1, &val, &cp);
  20261. + if (rt == LT_ERROR)
  20262. + return (LT_ERROR);
  20263. + lt = op->fn(valp, lt, *valp, rt, val);
  20264. }
  20265. - debug("eval%d = %d LT_IF:%d", ops - eval_ops, *valp, (left_side == LT_IF));
  20266. - if (left_side == LT_IF)
  20267. - return (LT_IF);
  20268. - return (*valp ? LT_TRUE : LT_FALSE);
  20269. + *cpp = cp;
  20270. + debug("eval%d = %d", prec(ops), *valp);
  20271. + debug("eval%d lt = %s", prec(ops), linetype_name[lt]);
  20272. + return (lt);
  20273. }
  20274. /*
  20275. @@ -841,14 +1084,57 @@
  20276. static Linetype
  20277. ifeval(const char **cpp)
  20278. {
  20279. - int ret;
  20280. - int val;
  20281. + Linetype ret;
  20282. + long val = 0;
  20283. debug("eval %s", *cpp);
  20284. - keepthis = killconsts ? false : true;
  20285. + constexpr = killconsts ? false : true;
  20286. ret = eval_table(eval_ops, &val, cpp);
  20287. - debug("val:%d ret:%d keepthis:%d", val, ret, keepthis);
  20288. - return (keepthis ? LT_IF : ret);
  20289. + debug("eval = %d", val);
  20290. + return (constexpr ? LT_IF : ret == LT_ERROR ? LT_IF : ret);
  20291. +}
  20292. +
  20293. +/*
  20294. + * Read a line and examine its initial part to determine if it is a
  20295. + * preprocessor directive. Returns NULL on EOF, or a pointer to a
  20296. + * preprocessor directive name, or a pointer to the zero byte at the
  20297. + * end of the line.
  20298. + */
  20299. +static const char *
  20300. +skiphash(void)
  20301. +{
  20302. + const char *cp;
  20303. +
  20304. + linenum++;
  20305. + if (fgets(tline, MAXLINE, input) == NULL) {
  20306. + if (ferror(input))
  20307. + err(2, "can't read %s", filename);
  20308. + else
  20309. + return (NULL);
  20310. + }
  20311. + cp = skipcomment(tline);
  20312. + if (linestate == LS_START && *cp == '#') {
  20313. + linestate = LS_HASH;
  20314. + return (skipcomment(cp + 1));
  20315. + } else if (*cp == '\0') {
  20316. + return (cp);
  20317. + } else {
  20318. + return (skipline(cp));
  20319. + }
  20320. +}
  20321. +
  20322. +/*
  20323. + * Mark a line dirty and consume the rest of it, keeping track of the
  20324. + * lexical state.
  20325. + */
  20326. +static const char *
  20327. +skipline(const char *cp)
  20328. +{
  20329. + if (*cp != '\0')
  20330. + linestate = LS_DIRTY;
  20331. + while (*cp != '\0')
  20332. + cp = skipcomment(cp + 1);
  20333. + return (cp);
  20334. }
  20335. /*
  20336. @@ -869,11 +1155,16 @@
  20337. }
  20338. while (*cp != '\0')
  20339. /* don't reset to LS_START after a line continuation */
  20340. - if (strncmp(cp, "\\\n", 2) == 0)
  20341. + if (strncmp(cp, "\\\r\n", 3) == 0)
  20342. + cp += 3;
  20343. + else if (strncmp(cp, "\\\n", 2) == 0)
  20344. cp += 2;
  20345. else switch (incomment) {
  20346. case NO_COMMENT:
  20347. - if (strncmp(cp, "/\\\n", 3) == 0) {
  20348. + if (strncmp(cp, "/\\\r\n", 4) == 0) {
  20349. + incomment = STARTING_COMMENT;
  20350. + cp += 4;
  20351. + } else if (strncmp(cp, "/\\\n", 3) == 0) {
  20352. incomment = STARTING_COMMENT;
  20353. cp += 3;
  20354. } else if (strncmp(cp, "/*", 2) == 0) {
  20355. @@ -893,7 +1184,7 @@
  20356. } else if (strncmp(cp, "\n", 1) == 0) {
  20357. linestate = LS_START;
  20358. cp += 1;
  20359. - } else if (strchr(" \t", *cp) != NULL) {
  20360. + } else if (strchr(" \r\t", *cp) != NULL) {
  20361. cp += 1;
  20362. } else
  20363. return (cp);
  20364. @@ -925,7 +1216,10 @@
  20365. cp += 1;
  20366. continue;
  20367. case C_COMMENT:
  20368. - if (strncmp(cp, "*\\\n", 3) == 0) {
  20369. + if (strncmp(cp, "*\\\r\n", 4) == 0) {
  20370. + incomment = FINISHING_COMMENT;
  20371. + cp += 4;
  20372. + } else if (strncmp(cp, "*\\\n", 3) == 0) {
  20373. incomment = FINISHING_COMMENT;
  20374. cp += 3;
  20375. } else if (strncmp(cp, "*/", 2) == 0) {
  20376. @@ -954,13 +1248,37 @@
  20377. incomment = C_COMMENT;
  20378. continue;
  20379. default:
  20380. - debug("bug at line %d", __LINE__);
  20381. abort(); /* bug */
  20382. }
  20383. return (cp);
  20384. }
  20385. /*
  20386. + * Skip macro arguments.
  20387. + */
  20388. +static const char *
  20389. +skipargs(const char *cp)
  20390. +{
  20391. + const char *ocp = cp;
  20392. + int level = 0;
  20393. + cp = skipcomment(cp);
  20394. + if (*cp != '(')
  20395. + return (cp);
  20396. + do {
  20397. + if (*cp == '(')
  20398. + level++;
  20399. + if (*cp == ')')
  20400. + level--;
  20401. + cp = skipcomment(cp+1);
  20402. + } while (level != 0 && *cp != '\0');
  20403. + if (level == 0)
  20404. + return (cp);
  20405. + else
  20406. + /* Rewind and re-detect the syntax error later. */
  20407. + return (ocp);
  20408. +}
  20409. +
  20410. +/*
  20411. * Skip over an identifier.
  20412. */
  20413. static const char *
  20414. @@ -972,27 +1290,69 @@
  20415. }
  20416. /*
  20417. - * Look for the symbol in the symbol table. If is is found, we return
  20418. + * Skip whitespace and take a copy of any following identifier.
  20419. + */
  20420. +static const char *
  20421. +getsym(const char **cpp)
  20422. +{
  20423. + const char *cp = *cpp, *sym;
  20424. +
  20425. + cp = skipcomment(cp);
  20426. + cp = skipsym(sym = cp);
  20427. + if (cp == sym)
  20428. + return NULL;
  20429. + *cpp = cp;
  20430. + return (xstrdup(sym, cp));
  20431. +}
  20432. +
  20433. +/*
  20434. + * Check that s (a symbol) matches the start of t, and that the
  20435. + * following character in t is not a symbol character. Returns a
  20436. + * pointer to the following character in t if there is a match,
  20437. + * otherwise NULL.
  20438. + */
  20439. +static const char *
  20440. +matchsym(const char *s, const char *t)
  20441. +{
  20442. + while (*s != '\0' && *t != '\0')
  20443. + if (*s != *t)
  20444. + return (NULL);
  20445. + else
  20446. + ++s, ++t;
  20447. + if (*s == '\0' && endsym(*t))
  20448. + return(t);
  20449. + else
  20450. + return(NULL);
  20451. +}
  20452. +
  20453. +/*
  20454. + * Look for the symbol in the symbol table. If it is found, we return
  20455. * the symbol table index, else we return -1.
  20456. */
  20457. static int
  20458. -findsym(const char *str)
  20459. +findsym(const char **strp)
  20460. {
  20461. - const char *cp;
  20462. + const char *str;
  20463. int symind;
  20464. - cp = skipsym(str);
  20465. - if (cp == str)
  20466. - return (-1);
  20467. + str = *strp;
  20468. + *strp = skipsym(str);
  20469. if (symlist) {
  20470. - printf("%.*s\n", (int)(cp-str), str);
  20471. + if (*strp == str)
  20472. + return (-1);
  20473. + if (symdepth && firstsym)
  20474. + printf("%s%3d", zerosyms ? "" : "\n", depth);
  20475. + firstsym = zerosyms = false;
  20476. + printf("%s%.*s%s",
  20477. + symdepth ? " " : "",
  20478. + (int)(*strp-str), str,
  20479. + symdepth ? "" : "\n");
  20480. /* we don't care about the value of the symbol */
  20481. return (0);
  20482. }
  20483. for (symind = 0; symind < nsyms; ++symind) {
  20484. - if (strlcmp(symname[symind], str, cp-str) == 0) {
  20485. - debug("findsym %s %s", symname[symind],
  20486. - value[symind] ? value[symind] : "");
  20487. + if (matchsym(symname[symind], str) != NULL) {
  20488. + debugsym("findsym", symind);
  20489. return (symind);
  20490. }
  20491. }
  20492. @@ -1000,51 +1360,194 @@
  20493. }
  20494. /*
  20495. + * Resolve indirect symbol values to their final definitions.
  20496. + */
  20497. +static void
  20498. +indirectsym(void)
  20499. +{
  20500. + const char *cp;
  20501. + int changed, sym, ind;
  20502. +
  20503. + do {
  20504. + changed = 0;
  20505. + for (sym = 0; sym < nsyms; ++sym) {
  20506. + if (value[sym] == NULL)
  20507. + continue;
  20508. + cp = value[sym];
  20509. + ind = findsym(&cp);
  20510. + if (ind == -1 || ind == sym ||
  20511. + *cp != '\0' ||
  20512. + value[ind] == NULL ||
  20513. + value[ind] == value[sym])
  20514. + continue;
  20515. + debugsym("indir...", sym);
  20516. + value[sym] = value[ind];
  20517. + debugsym("...ectsym", sym);
  20518. + changed++;
  20519. + }
  20520. + } while (changed);
  20521. +}
  20522. +
  20523. +/*
  20524. + * Add a symbol to the symbol table, specified with the format sym=val
  20525. + */
  20526. +static void
  20527. +addsym1(bool ignorethis, bool definethis, char *symval)
  20528. +{
  20529. + const char *sym, *val;
  20530. +
  20531. + sym = symval;
  20532. + val = skipsym(sym);
  20533. + if (definethis && *val == '=') {
  20534. + symval[val - sym] = '\0';
  20535. + val = val + 1;
  20536. + } else if (*val == '\0') {
  20537. + val = definethis ? "1" : NULL;
  20538. + } else {
  20539. + usage();
  20540. + }
  20541. + addsym2(ignorethis, sym, val);
  20542. +}
  20543. +
  20544. +/*
  20545. * Add a symbol to the symbol table.
  20546. */
  20547. static void
  20548. -addsym(bool ignorethis, bool definethis, char *sym)
  20549. +addsym2(bool ignorethis, const char *sym, const char *val)
  20550. {
  20551. + const char *cp = sym;
  20552. int symind;
  20553. - char *val;
  20554. - symind = findsym(sym);
  20555. + symind = findsym(&cp);
  20556. if (symind < 0) {
  20557. if (nsyms >= MAXSYMS)
  20558. errx(2, "too many symbols");
  20559. symind = nsyms++;
  20560. }
  20561. - symname[symind] = sym;
  20562. ignore[symind] = ignorethis;
  20563. - val = sym + (skipsym(sym) - sym);
  20564. - if (definethis) {
  20565. - if (*val == '=') {
  20566. - value[symind] = val+1;
  20567. - *val = '\0';
  20568. - } else if (*val == '\0')
  20569. - value[symind] = "";
  20570. - else
  20571. - usage();
  20572. + symname[symind] = sym;
  20573. + value[symind] = val;
  20574. + debugsym("addsym", symind);
  20575. +}
  20576. +
  20577. +static void
  20578. +debugsym(const char *why, int symind)
  20579. +{
  20580. + debug("%s %s%c%s", why, symname[symind],
  20581. + value[symind] ? '=' : ' ',
  20582. + value[symind] ? value[symind] : "undef");
  20583. +}
  20584. +
  20585. +/*
  20586. + * Add symbols to the symbol table from a file containing
  20587. + * #define and #undef preprocessor directives.
  20588. + */
  20589. +static void
  20590. +defundefile(const char *fn)
  20591. +{
  20592. + filename = fn;
  20593. + input = fopen(fn, "rb");
  20594. + if (input == NULL)
  20595. + err(2, "can't open %s", fn);
  20596. + linenum = 0;
  20597. + while (defundef())
  20598. + ;
  20599. + if (ferror(input))
  20600. + err(2, "can't read %s", filename);
  20601. + else
  20602. + fclose(input);
  20603. + if (incomment)
  20604. + error("EOF in comment");
  20605. +}
  20606. +
  20607. +/*
  20608. + * Read and process one #define or #undef directive
  20609. + */
  20610. +static bool
  20611. +defundef(void)
  20612. +{
  20613. + const char *cp, *kw, *sym, *val, *end;
  20614. +
  20615. + cp = skiphash();
  20616. + if (cp == NULL)
  20617. + return (false);
  20618. + if (*cp == '\0')
  20619. + goto done;
  20620. + /* strip trailing whitespace, and do a fairly rough check to
  20621. + avoid unsupported multi-line preprocessor directives */
  20622. + end = cp + strlen(cp);
  20623. + while (end > tline && strchr(" \t\n\r", end[-1]) != NULL)
  20624. + --end;
  20625. + if (end > tline && end[-1] == '\\')
  20626. + Eioccc();
  20627. +
  20628. + kw = cp;
  20629. + if ((cp = matchsym("define", kw)) != NULL) {
  20630. + sym = getsym(&cp);
  20631. + if (sym == NULL)
  20632. + error("missing macro name in #define");
  20633. + if (*cp == '(') {
  20634. + val = "1";
  20635. + } else {
  20636. + cp = skipcomment(cp);
  20637. + val = (cp < end) ? xstrdup(cp, end) : "";
  20638. + }
  20639. + debug("#define");
  20640. + addsym2(false, sym, val);
  20641. + } else if ((cp = matchsym("undef", kw)) != NULL) {
  20642. + sym = getsym(&cp);
  20643. + if (sym == NULL)
  20644. + error("missing macro name in #undef");
  20645. + cp = skipcomment(cp);
  20646. + debug("#undef");
  20647. + addsym2(false, sym, NULL);
  20648. } else {
  20649. - if (*val != '\0')
  20650. - usage();
  20651. - value[symind] = NULL;
  20652. + error("unrecognized preprocessor directive");
  20653. }
  20654. + skipline(cp);
  20655. +done:
  20656. + debug("parser line %d state %s comment %s line", linenum,
  20657. + comment_name[incomment], linestate_name[linestate]);
  20658. + return (true);
  20659. }
  20660. /*
  20661. - * Compare s with n characters of t.
  20662. - * The same as strncmp() except that it checks that s[n] == '\0'.
  20663. + * Concatenate two strings into new memory, checking for failure.
  20664. */
  20665. -static int
  20666. -strlcmp(const char *s, const char *t, size_t n)
  20667. +static char *
  20668. +astrcat(const char *s1, const char *s2)
  20669. {
  20670. - while (n-- && *t != '\0')
  20671. - if (*s != *t)
  20672. - return ((unsigned char)*s - (unsigned char)*t);
  20673. - else
  20674. - ++s, ++t;
  20675. - return ((unsigned char)*s);
  20676. + char *s;
  20677. + int len;
  20678. + size_t size;
  20679. +
  20680. + len = snprintf(NULL, 0, "%s%s", s1, s2);
  20681. + if (len < 0)
  20682. + err(2, "snprintf");
  20683. + size = (size_t)len + 1;
  20684. + s = (char *)malloc(size);
  20685. + if (s == NULL)
  20686. + err(2, "malloc");
  20687. + snprintf(s, size, "%s%s", s1, s2);
  20688. + return (s);
  20689. +}
  20690. +
  20691. +/*
  20692. + * Duplicate a segment of a string, checking for failure.
  20693. + */
  20694. +static const char *
  20695. +xstrdup(const char *start, const char *end)
  20696. +{
  20697. + size_t n;
  20698. + char *s;
  20699. +
  20700. + if (end < start) abort(); /* bug */
  20701. + n = (size_t)(end - start) + 1;
  20702. + s = malloc(n);
  20703. + if (s == NULL)
  20704. + err(2, "malloc");
  20705. + snprintf(s, n, "%s", start);
  20706. + return (s);
  20707. }
  20708. /*
  20709. @@ -1070,5 +1573,6 @@
  20710. else
  20711. warnx("%s: %d: %s (#if line %d depth %d)",
  20712. filename, linenum, msg, stifline[depth], depth);
  20713. + closeio();
  20714. errx(2, "output may be truncated");
  20715. }
  20716. diff -Nur uClibc-0.9.33.2/extra/scripts/unifdef.h uClibc-git/extra/scripts/unifdef.h
  20717. --- uClibc-0.9.33.2/extra/scripts/unifdef.h 1970-01-01 01:00:00.000000000 +0100
  20718. +++ uClibc-git/extra/scripts/unifdef.h 2014-02-03 12:32:56.000000000 +0100
  20719. @@ -0,0 +1,57 @@
  20720. +/*
  20721. + * Copyright (c) 2012 - 2013 Tony Finch <dot@dotat.at>
  20722. + *
  20723. + * Redistribution and use in source and binary forms, with or without
  20724. + * modification, are permitted provided that the following conditions
  20725. + * are met:
  20726. + * 1. Redistributions of source code must retain the above copyright
  20727. + * notice, this list of conditions and the following disclaimer.
  20728. + * 2. Redistributions in binary form must reproduce the above copyright
  20729. + * notice, this list of conditions and the following disclaimer in the
  20730. + * documentation and/or other materials provided with the distribution.
  20731. + *
  20732. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  20733. + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  20734. + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20735. + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  20736. + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  20737. + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  20738. + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  20739. + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  20740. + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  20741. + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  20742. + * SUCH DAMAGE.
  20743. + */
  20744. +
  20745. +#include <sys/stat.h>
  20746. +
  20747. +#include <ctype.h>
  20748. +#include <errno.h>
  20749. +#include <stdarg.h>
  20750. +#include <stdbool.h>
  20751. +#include <stdio.h>
  20752. +#include <stdlib.h>
  20753. +#include <string.h>
  20754. +#include <unistd.h>
  20755. +
  20756. +/* Avoid err.h since this are non-standard BSD extensions */
  20757. +#define vwarnx(fmt, args) ({ fprintf(stderr, "unifdef: "); vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); })
  20758. +#define warnx(fmt, args...) fprintf(stderr, "unifdef: " fmt "\n", ## args)
  20759. +#define warn(fmt, args...) warnx(fmt ": %s", ## args, strerror(errno))
  20760. +#define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
  20761. +#define err(exit_code, fmt, args...) errx(exit_code, fmt ": %s", ## args, strerror(errno))
  20762. +
  20763. +/* portability stubs */
  20764. +
  20765. +#define fbinmode(fp) (fp)
  20766. +
  20767. +#define replace(old,new) rename(old,new)
  20768. +
  20769. +static FILE *
  20770. +mktempmode(char *tmp, int mode)
  20771. +{
  20772. + int fd = mkstemp(tmp);
  20773. + if (fd < 0) return (NULL);
  20774. + fchmod(fd, mode & (S_IRWXU|S_IRWXG|S_IRWXO));
  20775. + return (fdopen(fd, "wb"));
  20776. +}
  20777. diff -Nur uClibc-0.9.33.2/extra/scripts/version.h uClibc-git/extra/scripts/version.h
  20778. --- uClibc-0.9.33.2/extra/scripts/version.h 1970-01-01 01:00:00.000000000 +0100
  20779. +++ uClibc-git/extra/scripts/version.h 2014-02-03 12:32:56.000000000 +0100
  20780. @@ -0,0 +1,2 @@
  20781. +"@(#) $Version: unifdef-2.10.4.1542ea4 $\n"
  20782. +"@(#) $Date: 2014-01-07 22:32:21 +0000 $\n"
  20783. diff -Nur uClibc-0.9.33.2/.gitignore uClibc-git/.gitignore
  20784. --- uClibc-0.9.33.2/.gitignore 2012-05-15 09:20:09.000000000 +0200
  20785. +++ uClibc-git/.gitignore 2014-02-03 12:32:56.000000000 +0100
  20786. @@ -25,6 +25,7 @@
  20787. .gdb_history
  20788. .gdbinit
  20789. core
  20790. +*.c.[0-9][0-9][0-9]t.*
  20791. #
  20792. # Backups / patches
  20793. diff -Nur uClibc-0.9.33.2/include/alloca.h uClibc-git/include/alloca.h
  20794. --- uClibc-0.9.33.2/include/alloca.h 2012-05-15 09:20:09.000000000 +0200
  20795. +++ uClibc-git/include/alloca.h 2014-02-03 12:32:56.000000000 +0100
  20796. @@ -12,9 +12,8 @@
  20797. Lesser General Public License for more details.
  20798. You should have received a copy of the GNU Lesser General Public
  20799. - License along with the GNU C Library; if not, write to the Free
  20800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20801. - 02111-1307 USA. */
  20802. + License along with the GNU C Library; if not, see
  20803. + <http://www.gnu.org/licenses/>. */
  20804. #ifndef _ALLOCA_H
  20805. #define _ALLOCA_H 1
  20806. diff -Nur uClibc-0.9.33.2/include/ar.h uClibc-git/include/ar.h
  20807. --- uClibc-0.9.33.2/include/ar.h 2012-05-15 09:20:09.000000000 +0200
  20808. +++ uClibc-git/include/ar.h 2014-02-03 12:32:56.000000000 +0100
  20809. @@ -13,9 +13,8 @@
  20810. Lesser General Public License for more details.
  20811. You should have received a copy of the GNU Lesser General Public
  20812. - License along with the GNU C Library; if not, write to the Free
  20813. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20814. - 02111-1307 USA. */
  20815. + License along with the GNU C Library; if not, see
  20816. + <http://www.gnu.org/licenses/>. */
  20817. #ifndef _AR_H
  20818. #define _AR_H 1
  20819. diff -Nur uClibc-0.9.33.2/include/arpa/inet.h uClibc-git/include/arpa/inet.h
  20820. --- uClibc-0.9.33.2/include/arpa/inet.h 2012-05-15 09:20:09.000000000 +0200
  20821. +++ uClibc-git/include/arpa/inet.h 2014-02-03 12:32:56.000000000 +0100
  20822. @@ -12,9 +12,8 @@
  20823. Lesser General Public License for more details.
  20824. You should have received a copy of the GNU Lesser General Public
  20825. - License along with the GNU C Library; if not, write to the Free
  20826. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20827. - 02111-1307 USA. */
  20828. + License along with the GNU C Library; if not, see
  20829. + <http://www.gnu.org/licenses/>. */
  20830. #ifndef _ARPA_INET_H
  20831. #define _ARPA_INET_H 1
  20832. @@ -32,7 +31,7 @@
  20833. /* Convert Internet host address from numbers-and-dots notation in CP
  20834. into binary data in network byte order. */
  20835. -extern in_addr_t inet_addr (__const char *__cp) __THROW;
  20836. +extern in_addr_t inet_addr (const char *__cp) __THROW;
  20837. libc_hidden_proto(inet_addr)
  20838. /* Return the local host address part of the Internet address in IN. */
  20839. @@ -50,7 +49,7 @@
  20840. /* Extract the network number in network byte order from the address
  20841. in numbers-and-dots natation starting at CP. */
  20842. -extern in_addr_t inet_network (__const char *__cp) __THROW;
  20843. +extern in_addr_t inet_network (const char *__cp) __THROW;
  20844. libc_hidden_proto(inet_network)
  20845. /* Convert Internet number in IN to ASCII representation. The return value
  20846. @@ -60,20 +59,19 @@
  20847. #ifdef __UCLIBC__
  20848. /* Recursion-safe flavor */
  20849. extern char *inet_ntoa_r (struct in_addr __in, char *__buf) __THROW;
  20850. -libc_hidden_proto(inet_ntoa_r)
  20851. #endif
  20852. /* Convert from presentation format of an Internet number in buffer
  20853. starting at CP to the binary network format and store result for
  20854. interface type AF in buffer starting at BUF. */
  20855. -extern int inet_pton (int __af, __const char *__restrict __cp,
  20856. +extern int inet_pton (int __af, const char *__restrict __cp,
  20857. void *__restrict __buf) __THROW;
  20858. libc_hidden_proto(inet_pton)
  20859. /* Convert a Internet address in binary network format for interface
  20860. type AF in buffer starting at CP to presentation form and place
  20861. result in buffer of length LEN astarting at BUF. */
  20862. -extern __const char *inet_ntop (int __af, __const void *__restrict __cp,
  20863. +extern const char *inet_ntop (int __af, const void *__restrict __cp,
  20864. char *__restrict __buf, socklen_t __len)
  20865. __THROW;
  20866. libc_hidden_proto(inet_ntop)
  20867. @@ -83,7 +81,7 @@
  20868. #ifdef __USE_MISC
  20869. /* Convert Internet host address from numbers-and-dots notation in CP
  20870. into binary data and store the result in the structure INP. */
  20871. -extern int inet_aton (__const char *__cp, struct in_addr *__inp) __THROW;
  20872. +extern int inet_aton (const char *__cp, struct in_addr *__inp) __THROW;
  20873. libc_hidden_proto(inet_aton)
  20874. #if 0
  20875. @@ -94,24 +92,24 @@
  20876. /* Convert network number for interface type AF in buffer starting at
  20877. CP to presentation format. The result will specifiy BITS bits of
  20878. the number. */
  20879. -extern char *inet_net_ntop (int __af, __const void *__cp, int __bits,
  20880. +extern char *inet_net_ntop (int __af, const void *__cp, int __bits,
  20881. char *__buf, size_t __len) __THROW;
  20882. /* Convert network number for interface type AF from presentation in
  20883. buffer starting at CP to network format and store result int
  20884. buffer starting at BUF of size LEN. */
  20885. -extern int inet_net_pton (int __af, __const char *__cp,
  20886. +extern int inet_net_pton (int __af, const char *__cp,
  20887. void *__buf, size_t __len) __THROW;
  20888. /* Convert ASCII representation in hexadecimal form of the Internet
  20889. address to binary form and place result in buffer of length LEN
  20890. starting at BUF. */
  20891. -extern unsigned int inet_nsap_addr (__const char *__cp,
  20892. +extern unsigned int inet_nsap_addr (const char *__cp,
  20893. unsigned char *__buf, int __len) __THROW;
  20894. /* Convert internet address in binary form in LEN bytes starting at CP
  20895. a presentation form and place result in BUF. */
  20896. -extern char *inet_nsap_ntoa (int __len, __const unsigned char *__cp,
  20897. +extern char *inet_nsap_ntoa (int __len, const unsigned char *__cp,
  20898. char *__buf) __THROW;
  20899. #endif
  20900. #endif
  20901. diff -Nur uClibc-0.9.33.2/include/assert.h uClibc-git/include/assert.h
  20902. --- uClibc-0.9.33.2/include/assert.h 2012-05-15 09:20:09.000000000 +0200
  20903. +++ uClibc-git/include/assert.h 2014-02-03 12:32:56.000000000 +0100
  20904. @@ -12,9 +12,8 @@
  20905. Lesser General Public License for more details.
  20906. You should have received a copy of the GNU Lesser General Public
  20907. - License along with the GNU C Library; if not, write to the Free
  20908. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20909. - 02111-1307 USA. */
  20910. + License along with the GNU C Library; if not, see
  20911. + <http://www.gnu.org/licenses/>. */
  20912. /*
  20913. * ISO C99 Standard: 7.2 Diagnostics <assert.h>
  20914. @@ -72,7 +71,7 @@
  20915. # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
  20916. # define __ASSERT_FUNCTION __func__
  20917. # else
  20918. -# define __ASSERT_FUNCTION ((__const char *) 0)
  20919. +# define __ASSERT_FUNCTION ((const char *) 0)
  20920. # endif
  20921. # endif
  20922. diff -Nur uClibc-0.9.33.2/include/atomic.h uClibc-git/include/atomic.h
  20923. --- uClibc-0.9.33.2/include/atomic.h 2012-05-15 09:20:09.000000000 +0200
  20924. +++ uClibc-git/include/atomic.h 2014-02-03 12:32:56.000000000 +0100
  20925. @@ -14,9 +14,8 @@
  20926. Lesser General Public License for more details.
  20927. You should have received a copy of the GNU Lesser General Public
  20928. - License along with the GNU C Library; if not, write to the Free
  20929. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20930. - 02111-1307 USA. */
  20931. + License along with the GNU C Library; if not, see
  20932. + <http://www.gnu.org/licenses/>. */
  20933. #ifndef _ATOMIC_H
  20934. #define _ATOMIC_H 1
  20935. diff -Nur uClibc-0.9.33.2/include/byteswap.h uClibc-git/include/byteswap.h
  20936. --- uClibc-0.9.33.2/include/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  20937. +++ uClibc-git/include/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  20938. @@ -12,9 +12,8 @@
  20939. Lesser General Public License for more details.
  20940. You should have received a copy of the GNU Lesser General Public
  20941. - License along with the GNU C Library; if not, write to the Free
  20942. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20943. - 02111-1307 USA. */
  20944. + License along with the GNU C Library; if not, see
  20945. + <http://www.gnu.org/licenses/>. */
  20946. #ifndef _BYTESWAP_H
  20947. #define _BYTESWAP_H 1
  20948. diff -Nur uClibc-0.9.33.2/include/cancel.h uClibc-git/include/cancel.h
  20949. --- uClibc-0.9.33.2/include/cancel.h 1970-01-01 01:00:00.000000000 +0100
  20950. +++ uClibc-git/include/cancel.h 2014-02-03 12:32:56.000000000 +0100
  20951. @@ -0,0 +1,101 @@
  20952. +/* vi: set sw=4 ts=4: */
  20953. +/*
  20954. + * Copyright (C) 2000-2011 Erik Andersen <andersen@uclibc.org>
  20955. + *
  20956. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  20957. + */
  20958. +
  20959. +#ifndef _CANCEL_H
  20960. +#define _CANCEL_H
  20961. +
  20962. +/*
  20963. + * Usage of this header:
  20964. + * 1. define a static or hidden function __NC(NAME) - expands to __NAME_nocancel
  20965. + * 2. if it is hidden, add the prototype to the appropiate header where NAME has
  20966. + * it's prototype (guarded by _LIBC)
  20967. + * 3. add a CANCELLABLE_SYSCALL(...) line at the end, this will create the function
  20968. + * NAME (as weak) with enabled cancellation for NPTL (and later for new LT), for
  20969. + * LT_OLD it will also create a strong_alias to __libc_NAME to be used in libpthread
  20970. + * 4. if you need libc_hidden_(weak|def) line, use instead lt_libc_hidden, this will
  20971. + * take care of the correct type, weak or strong depending on the THREADS type
  20972. + * 5. If the implementation can't be done using CANCELLABLE_SYSCALL (like for fcntl)
  20973. + * you need to manually add lt_strong_alias() line too, to optionally create the
  20974. + * __libc_NAME alias
  20975. + * 6. if functions are needed to implement __NC(NAME), that themselves are cancellable,
  20976. + * decide how the cancellation should be solved, two variants are possible:
  20977. + * a. use the other function as __NC(FUNC), this way you access the non-cancellable
  20978. + * variant and provide by CANCELLABLE_SYSCALL(...) the dedicated cancellation for NAME.
  20979. + * be aware, that for this case __NC(FUNC) has to be hidden (not static)
  20980. + * b. use the other function with it's name (FUNC) and add LIBC_CANCEL_HANDLED(); at
  20981. + * the end of file with a comment telling us which function took care of the cancellation
  20982. + * Note: LIBC_CANCEL_HANDLED() is noop on uClibc, glibc uses it only for tests, we use
  20983. + * it only for "documentation".
  20984. + *
  20985. + * For now the use of this file is limited to libc, will expand later to support libpthread
  20986. + * and librt as well.
  20987. + */
  20988. +
  20989. +#include <features.h>
  20990. +
  20991. +#ifndef NOT_IN_libc
  20992. +
  20993. +#define __NC(name) _NC(name)
  20994. +#define _NC(name) __##name##_nocancel
  20995. +
  20996. +#define __NC_OLD(name) _NC_OLD(name)
  20997. +#define _NC_OLD(name) __libc_##name
  20998. +
  20999. +#define __NC_PROTO(name) extern __typeof(name) __NC(name) attribute_hidden;
  21000. +#define __NC_OLD_PROTO(name) extern __typeof(name) __NC_OLD(name);
  21001. +
  21002. +#if defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
  21003. +# define __NEW_THREADS 1
  21004. +#else
  21005. +# define SINGLE_THREAD_P 1
  21006. +#endif
  21007. +
  21008. +#ifdef __NEW_THREADS
  21009. +# include <sysdep-cancel.h>
  21010. +
  21011. +# define CANCELLABLE_SYSCALL(res_type, name, param_list, params) \
  21012. +res_type weak_function name param_list \
  21013. +{ \
  21014. + if (SINGLE_THREAD_P) \
  21015. + return __NC(name) params; \
  21016. + int oldtype = LIBC_CANCEL_ASYNC(); \
  21017. + res_type result = __NC(name) params; \
  21018. + LIBC_CANCEL_RESET(oldtype); \
  21019. + return result; \
  21020. +}
  21021. +
  21022. +# define lt_strong_alias(name)
  21023. +# define lt_libc_hidden(name) libc_hidden_def(name)
  21024. +
  21025. +#elif defined __LINUXTHREADS_OLD__
  21026. +
  21027. +# define CANCELLABLE_SYSCALL(res_type, name, param_list, params) \
  21028. +weak_alias(__NC(name),name) \
  21029. +lt_strong_alias(name)
  21030. +
  21031. +# define lt_strong_alias(name) \
  21032. +__NC_OLD_PROTO(name) \
  21033. +strong_alias(name,__NC_OLD(name))
  21034. +# define lt_libc_hidden(name) libc_hidden_weak(name)
  21035. +
  21036. +#else
  21037. +
  21038. +# define CANCELLABLE_SYSCALL(res_type, name, param_list, params) \
  21039. +strong_alias(__NC(name),name)
  21040. +
  21041. +# define lt_strong_alias(name)
  21042. +# define lt_libc_hidden(name) libc_hidden_def(name)
  21043. +
  21044. +#endif
  21045. +
  21046. +/* disable it, useless, glibc uses it only for tests */
  21047. +# undef LIBC_CANCEL_HANDLED
  21048. +# define LIBC_CANCEL_HANDLED()
  21049. +
  21050. +#endif /* NOT_IN_libc */
  21051. +
  21052. +#endif
  21053. diff -Nur uClibc-0.9.33.2/include/complex.h uClibc-git/include/complex.h
  21054. --- uClibc-0.9.33.2/include/complex.h 2012-05-15 09:20:09.000000000 +0200
  21055. +++ uClibc-git/include/complex.h 2014-02-03 12:32:56.000000000 +0100
  21056. @@ -1,4 +1,4 @@
  21057. -/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
  21058. +/* Copyright (C) 1997, 1998, 1999, 2000, 2006 Free Software Foundation, Inc.
  21059. This file is part of the GNU C Library.
  21060. The GNU C Library is free software; you can redistribute it and/or
  21061. @@ -12,9 +12,8 @@
  21062. Lesser General Public License for more details.
  21063. You should have received a copy of the GNU Lesser General Public
  21064. - License along with the GNU C Library; if not, write to the Free
  21065. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21066. - 02111-1307 USA. */
  21067. + License along with the GNU C Library; if not, see
  21068. + <http://www.gnu.org/licenses/>. */
  21069. /*
  21070. * ISO C99: 7.3 Complex arithmetic <complex.h>
  21071. @@ -84,7 +83,8 @@
  21072. /* And the long double versions. It is non-critical to define them
  21073. here unconditionally since `long double' is required in ISO C99. */
  21074. -#if __STDC__ - 0 || __GNUC__ - 0 && defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
  21075. +#if (__STDC__ - 0 || __GNUC__ - 0) \
  21076. + && defined __UCLIBC_HAS_LONG_DOUBLE_MATH__
  21077. # ifndef _Mlong_double_
  21078. # define _Mlong_double_ long double
  21079. # endif
  21080. diff -Nur uClibc-0.9.33.2/include/cpio.h uClibc-git/include/cpio.h
  21081. --- uClibc-0.9.33.2/include/cpio.h 2012-05-15 09:20:09.000000000 +0200
  21082. +++ uClibc-git/include/cpio.h 2014-02-03 12:32:56.000000000 +0100
  21083. @@ -14,9 +14,8 @@
  21084. Lesser General Public License for more details.
  21085. You should have received a copy of the GNU Lesser General Public
  21086. - License along with the GNU C Library; if not, write to the Free
  21087. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21088. - 02111-1307 USA. */
  21089. + License along with the GNU C Library; if not, see
  21090. + <http://www.gnu.org/licenses/>. */
  21091. #ifndef _CPIO_H
  21092. #define _CPIO_H 1
  21093. diff -Nur uClibc-0.9.33.2/include/crypt.h uClibc-git/include/crypt.h
  21094. --- uClibc-0.9.33.2/include/crypt.h 2012-05-15 09:20:09.000000000 +0200
  21095. +++ uClibc-git/include/crypt.h 2014-02-03 12:32:56.000000000 +0100
  21096. @@ -12,10 +12,8 @@
  21097. * Lesser General Public License for more details.
  21098. *
  21099. * You should have received a copy of the GNU Lesser General Public
  21100. - * License along with the GNU C Library; if not, write to the Free
  21101. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21102. - * 02111-1307 USA.
  21103. - *
  21104. + * License along with the GNU C Library; see the file COPYING.LIB. If
  21105. + * not, see <http://www.gnu.org/licenses/>.
  21106. */
  21107. #ifndef _CRYPT_H
  21108. diff -Nur uClibc-0.9.33.2/include/ctype.h uClibc-git/include/ctype.h
  21109. --- uClibc-0.9.33.2/include/ctype.h 2012-05-15 09:20:09.000000000 +0200
  21110. +++ uClibc-git/include/ctype.h 2014-02-03 12:32:56.000000000 +0100
  21111. @@ -13,9 +13,8 @@
  21112. Lesser General Public License for more details.
  21113. You should have received a copy of the GNU Lesser General Public
  21114. - License along with the GNU C Library; if not, write to the Free
  21115. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21116. - 02111-1307 USA. */
  21117. + License along with the GNU C Library; if not, see
  21118. + <http://www.gnu.org/licenses/>. */
  21119. /*
  21120. * ISO C99 Standard 7.4: Character handling <ctype.h>
  21121. diff -Nur uClibc-0.9.33.2/include/dirent.h uClibc-git/include/dirent.h
  21122. --- uClibc-0.9.33.2/include/dirent.h 2012-05-15 09:20:09.000000000 +0200
  21123. +++ uClibc-git/include/dirent.h 2014-02-03 12:32:56.000000000 +0100
  21124. @@ -1,4 +1,4 @@
  21125. -/* Copyright (C) 1991-2000, 2003-2005, 2009 Free Software Foundation, Inc.
  21126. +/* Copyright (C) 1991-2000,2003-2005,2009,2010 Free Software Foundation, Inc.
  21127. This file is part of the GNU C Library.
  21128. The GNU C Library is free software; you can redistribute it and/or
  21129. @@ -12,9 +12,8 @@
  21130. Lesser General Public License for more details.
  21131. You should have received a copy of the GNU Lesser General Public
  21132. - License along with the GNU C Library; if not, write to the Free
  21133. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21134. - 02111-1307 USA. */
  21135. + License along with the GNU C Library; if not, see
  21136. + <http://www.gnu.org/licenses/>. */
  21137. /*
  21138. * POSIX Standard: 5.1.2 Directory Operations <dirent.h>
  21139. @@ -132,7 +131,7 @@
  21140. This function is a possible cancellation point and therefore not
  21141. marked with __THROW. */
  21142. -extern DIR *opendir (__const char *__name) __nonnull ((1));
  21143. +extern DIR *opendir (const char *__name) __nonnull ((1));
  21144. libc_hidden_proto(opendir)
  21145. #ifdef __USE_XOPEN2K8
  21146. @@ -224,7 +223,7 @@
  21147. extern long int telldir (DIR *__dirp) __THROW __nonnull ((1));
  21148. #endif
  21149. -#if defined __USE_BSD || defined __USE_MISC || defined __XOPEN_2K8
  21150. +#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN2K8
  21151. /* Return the file descriptor used by DIRP. */
  21152. extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
  21153. @@ -256,20 +255,20 @@
  21154. sorted using qsort with CMP, and collected in a malloc'd array in
  21155. *NAMELIST. Returns the number of entries selected, or -1 on error. */
  21156. # ifndef __USE_FILE_OFFSET64
  21157. -extern int scandir (__const char *__restrict __dir,
  21158. +extern int scandir (const char *__restrict __dir,
  21159. struct dirent ***__restrict __namelist,
  21160. - int (*__selector) (__const struct dirent *),
  21161. - int (*__cmp) (__const struct dirent **,
  21162. - __const struct dirent **))
  21163. + int (*__selector) (const struct dirent *),
  21164. + int (*__cmp) (const struct dirent **,
  21165. + const struct dirent **))
  21166. __nonnull ((1, 2));
  21167. # else
  21168. # ifdef __REDIRECT
  21169. extern int __REDIRECT (scandir,
  21170. - (__const char *__restrict __dir,
  21171. + (const char *__restrict __dir,
  21172. struct dirent ***__restrict __namelist,
  21173. - int (*__selector) (__const struct dirent *),
  21174. - int (*__cmp) (__const struct dirent **,
  21175. - __const struct dirent **)),
  21176. + int (*__selector) (const struct dirent *),
  21177. + int (*__cmp) (const struct dirent **,
  21178. + const struct dirent **)),
  21179. scandir64) __nonnull ((1, 2));
  21180. # else
  21181. # define scandir scandir64
  21182. @@ -279,24 +278,24 @@
  21183. # if defined __USE_GNU && defined __USE_LARGEFILE64
  21184. /* This function is like `scandir' but it uses the 64bit dirent structure.
  21185. Please note that the CMP function must now work with struct dirent64 **. */
  21186. -extern int scandir64 (__const char *__restrict __dir,
  21187. +extern int scandir64 (const char *__restrict __dir,
  21188. struct dirent64 ***__restrict __namelist,
  21189. - int (*__selector) (__const struct dirent64 *),
  21190. - int (*__cmp) (__const struct dirent64 **,
  21191. - __const struct dirent64 **))
  21192. + int (*__selector) (const struct dirent64 *),
  21193. + int (*__cmp) (const struct dirent64 **,
  21194. + const struct dirent64 **))
  21195. __nonnull ((1, 2));
  21196. # endif
  21197. /* Function to compare two `struct dirent's alphabetically. */
  21198. # ifndef __USE_FILE_OFFSET64
  21199. -extern int alphasort (__const struct dirent **__e1,
  21200. - __const struct dirent **__e2)
  21201. +extern int alphasort (const struct dirent **__e1,
  21202. + const struct dirent **__e2)
  21203. __THROW __attribute_pure__ __nonnull ((1, 2));
  21204. # else
  21205. # ifdef __REDIRECT
  21206. extern int __REDIRECT_NTH (alphasort,
  21207. - (__const struct dirent **__e1,
  21208. - __const struct dirent **__e2),
  21209. + (const struct dirent **__e1,
  21210. + const struct dirent **__e2),
  21211. alphasort64) __attribute_pure__ __nonnull ((1, 2));
  21212. # else
  21213. # define alphasort alphasort64
  21214. @@ -304,14 +303,14 @@
  21215. # endif
  21216. # if defined __USE_GNU && defined __USE_LARGEFILE64
  21217. -extern int alphasort64 (__const struct dirent64 **__e1,
  21218. - __const struct dirent64 **__e2)
  21219. +extern int alphasort64 (const struct dirent64 **__e1,
  21220. + const struct dirent64 **__e2)
  21221. __THROW __attribute_pure__ __nonnull ((1, 2));
  21222. # endif
  21223. #endif /* Use BSD or misc or XPG7. */
  21224. -#if defined __USE_BSD || defined __USE_MISC
  21225. +#if 0 /* defined __USE_BSD || defined __USE_MISC */
  21226. /* Read directory entries from FD into BUF, reading at most NBYTES.
  21227. Reading starts at offset *BASEP, and *BASEP is updated with the new
  21228. position after reading. Returns the number of bytes read; zero when at
  21229. @@ -344,14 +343,14 @@
  21230. #ifdef __USE_GNU
  21231. /* Function to compare two `struct dirent's by name & version. */
  21232. # ifndef __USE_FILE_OFFSET64
  21233. -extern int versionsort (__const struct dirent **__e1,
  21234. - __const struct dirent **__e2)
  21235. +extern int versionsort (const struct dirent **__e1,
  21236. + const struct dirent **__e2)
  21237. __THROW __attribute_pure__ __nonnull ((1, 2));
  21238. # else
  21239. # ifdef __REDIRECT
  21240. extern int __REDIRECT_NTH (versionsort,
  21241. - (__const struct dirent **__e1,
  21242. - __const struct dirent **__e2),
  21243. + (const struct dirent **__e1,
  21244. + const struct dirent **__e2),
  21245. versionsort64)
  21246. __attribute_pure__ __nonnull ((1, 2));
  21247. # else
  21248. @@ -360,12 +359,19 @@
  21249. # endif
  21250. # ifdef __USE_LARGEFILE64
  21251. -extern int versionsort64 (__const struct dirent64 **__e1,
  21252. - __const struct dirent64 **__e2)
  21253. +extern int versionsort64 (const struct dirent64 **__e1,
  21254. + const struct dirent64 **__e2)
  21255. __THROW __attribute_pure__ __nonnull ((1, 2));
  21256. # endif
  21257. #endif /* Use GNU. */
  21258. __END_DECLS
  21259. +#ifdef _LIBC
  21260. +extern __ssize_t __getdents(int fd, char *buf, size_t count) attribute_hidden;
  21261. +# ifdef __UCLIBC_HAS_LFS__
  21262. +extern __ssize_t __getdents64 (int fd, char *buf, size_t count) attribute_hidden;
  21263. +# endif
  21264. +#endif
  21265. +
  21266. #endif /* dirent.h */
  21267. diff -Nur uClibc-0.9.33.2/include/dlfcn.h uClibc-git/include/dlfcn.h
  21268. --- uClibc-0.9.33.2/include/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  21269. +++ uClibc-git/include/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  21270. @@ -1,6 +1,5 @@
  21271. /* User functions for run-time dynamic loading.
  21272. - Copyright (C) 1995-1999,2000,2001,2003,2004,2006
  21273. - Free Software Foundation, Inc.
  21274. + Copyright (C) 1995-2001,2003,2004,2006,2009 Free Software Foundation, Inc.
  21275. This file is part of the GNU C Library.
  21276. The GNU C Library is free software; you can redistribute it and/or
  21277. @@ -14,9 +13,8 @@
  21278. Lesser General Public License for more details.
  21279. You should have received a copy of the GNU Lesser General Public
  21280. - License along with the GNU C Library; if not, write to the Free
  21281. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21282. - 02111-1307 USA. */
  21283. + License along with the GNU C Library; if not, see
  21284. + <http://www.gnu.org/licenses/>. */
  21285. #ifndef _DLFCN_H
  21286. #define _DLFCN_H 1
  21287. @@ -52,11 +50,12 @@
  21288. # endif
  21289. #endif
  21290. +
  21291. __BEGIN_DECLS
  21292. /* Open the shared object FILE and map it in; return a handle that can be
  21293. passed to `dlsym' to get symbol values from it. */
  21294. -extern void *dlopen (__const char *__file, int __mode) __THROW;
  21295. +extern void *dlopen (const char *__file, int __mode) __THROW;
  21296. /* Unmap and close a shared object opened by `dlopen'.
  21297. The handle cannot be used again after calling `dlclose'. */
  21298. @@ -65,17 +64,17 @@
  21299. /* Find the run-time address in the shared object HANDLE refers to
  21300. of the symbol called NAME. */
  21301. extern void *dlsym (void *__restrict __handle,
  21302. - __const char *__restrict __name) __THROW __nonnull ((2));
  21303. + const char *__restrict __name) __THROW __nonnull ((2));
  21304. #if 0 /*def __USE_GNU*/
  21305. /* Like `dlopen', but request object to be allocated in a new namespace. */
  21306. -extern void *dlmopen (Lmid_t __nsid, __const char *__file, int __mode) __THROW;
  21307. +extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) __THROW;
  21308. /* Find the run-time address in the shared object HANDLE refers to
  21309. of the symbol called NAME with VERSION. */
  21310. extern void *dlvsym (void *__restrict __handle,
  21311. - __const char *__restrict __name,
  21312. - __const char *__restrict __version)
  21313. + const char *__restrict __name,
  21314. + const char *__restrict __version)
  21315. __THROW __nonnull ((2, 3));
  21316. #endif
  21317. @@ -90,20 +89,20 @@
  21318. `dladdr'. */
  21319. typedef struct
  21320. {
  21321. - __const char *dli_fname; /* File name of defining object. */
  21322. + const char *dli_fname; /* File name of defining object. */
  21323. void *dli_fbase; /* Load address of that object. */
  21324. - __const char *dli_sname; /* Name of nearest symbol. */
  21325. + const char *dli_sname; /* Name of nearest symbol. */
  21326. void *dli_saddr; /* Exact value of nearest symbol. */
  21327. } Dl_info;
  21328. /* Fill in *INFO with the following information about ADDRESS.
  21329. Returns 0 iff no shared object's segments contain that address. */
  21330. -extern int dladdr (__const void *__address, Dl_info *__info)
  21331. +extern int dladdr (const void *__address, Dl_info *__info)
  21332. __THROW __nonnull ((2));
  21333. #if 0 /* not supported by uClibc */
  21334. /* Same as `dladdr', but additionally sets *EXTRA_INFO according to FLAGS. */
  21335. -extern int dladdr1 (__const void *__address, Dl_info *__info,
  21336. +extern int dladdr1 (const void *__address, Dl_info *__info,
  21337. void **__extra_info, int __flags) __THROW __nonnull ((2));
  21338. /* These are the possible values for the FLAGS argument to `dladdr1'.
  21339. @@ -166,7 +165,7 @@
  21340. segment, or if the calling thread has not allocated a block for it. */
  21341. RTLD_DI_TLS_DATA = 10,
  21342. - RTLD_DI_MAX = 10,
  21343. + RTLD_DI_MAX = 10
  21344. };
  21345. @@ -186,12 +185,6 @@
  21346. unsigned int dls_cnt; /* Number of elements in `dls_serpath'. */
  21347. Dl_serpath dls_serpath[1]; /* Actually longer, dls_cnt elements. */
  21348. } Dl_serinfo;
  21349. -
  21350. -#else
  21351. -
  21352. -/* Get information about the shared objects currently loaded */
  21353. -extern int dlinfo (void);
  21354. -
  21355. #endif
  21356. #endif /* __USE_GNU */
  21357. diff -Nur uClibc-0.9.33.2/include/elf.h uClibc-git/include/elf.h
  21358. --- uClibc-0.9.33.2/include/elf.h 2012-05-15 09:20:09.000000000 +0200
  21359. +++ uClibc-git/include/elf.h 2014-02-03 12:32:56.000000000 +0100
  21360. @@ -13,9 +13,8 @@
  21361. Lesser General Public License for more details.
  21362. You should have received a copy of the GNU Lesser General Public
  21363. - License along with the GNU C Library; if not, write to the Free
  21364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21365. - 02111-1307 USA. */
  21366. + License along with the GNU C Library; if not, see
  21367. + <http://www.gnu.org/licenses/>. */
  21368. #ifndef _ELF_H
  21369. #define _ELF_H 1
  21370. @@ -148,8 +147,8 @@
  21371. #define ELFOSABI_SYSV 0 /* Alias. */
  21372. #define ELFOSABI_HPUX 1 /* HP-UX */
  21373. #define ELFOSABI_NETBSD 2 /* NetBSD. */
  21374. -#define ELFOSABI_LINUX 3 /* Linux. */
  21375. -#define ELFOSABI_HURD 4 /* GNU/Hurd */
  21376. +#define ELFOSABI_GNU 3 /* Object uses GNU ELF extensions. */
  21377. +#define ELFOSABI_LINUX ELFOSABI_GNU /* Compatibility alias. */
  21378. #define ELFOSABI_SOLARIS 6 /* Sun Solaris. */
  21379. #define ELFOSABI_AIX 7 /* IBM AIX. */
  21380. #define ELFOSABI_IRIX 8 /* SGI Irix. */
  21381. @@ -260,6 +259,7 @@
  21382. #define EM_PJ 91 /* picoJava */
  21383. #define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
  21384. #define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */
  21385. +#define EM_ARCOMPACT 93 /* ARCompact ISA based Cores: ARC 700 */
  21386. #define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
  21387. #define EM_IP2K 101 /* Ubicom IP2022 micro controller */
  21388. #define EM_CR 103 /* National Semiconductor CompactRISC */
  21389. @@ -282,6 +282,9 @@
  21390. unofficial e_machine number should eventually ask registry@caldera.com for
  21391. an officially blessed number to be added to the list above. */
  21392. +/* Imagination Technologies Meta */
  21393. +#define EM_METAG 174
  21394. +
  21395. /* picoJava */
  21396. #define EM_PJ_OLD 99
  21397. @@ -3141,6 +3144,110 @@
  21398. #define R_MICROBLAZE_COPY 21 /* runtime copy */
  21399. #define R_MICROBLAZE_NUM 22
  21400. +/* Meta relocations */
  21401. +#define R_METAG_HIADDR16 0
  21402. +#define R_METAG_LOADDR16 1
  21403. +#define R_METAG_ADDR32 2
  21404. +#define R_METAG_NONE 3
  21405. +#define R_METAG_RELBRANCH 4
  21406. +#define R_METAG_GETSETOFF 5
  21407. +
  21408. +/* Backward compatability */
  21409. +#define R_METAG_REG32OP1 6
  21410. +#define R_METAG_REG32OP2 7
  21411. +#define R_METAG_REG32OP3 8
  21412. +#define R_METAG_REG16OP1 9
  21413. +#define R_METAG_REG16OP2 10
  21414. +#define R_METAG_REG16OP3 11
  21415. +#define R_METAG_REG32OP4 12
  21416. +
  21417. +#define R_METAG_HIOG 13
  21418. +#define R_METAG_LOOG 14
  21419. +
  21420. +/* GNU */
  21421. +#define R_METAG_GNU_VTINHERIT 30
  21422. +#define R_METAG_GNU_VTENTRY 31
  21423. +
  21424. +/* PIC relocations */
  21425. +#define R_METAG_HI16_GOTOFF 32
  21426. +#define R_METAG_LO16_GOTOFF 33
  21427. +#define R_METAG_GETSET_GOTOFF 34
  21428. +#define R_METAG_GETSET_GOT 35
  21429. +#define R_METAG_HI16_GOTPC 36
  21430. +#define R_METAG_LO16_GOTPC 37
  21431. +#define R_METAG_HI16_PLT 38
  21432. +#define R_METAG_LO16_PLT 39
  21433. +#define R_METAG_RELBRANCH_PLT 40
  21434. +#define R_METAG_GOTOFF 41
  21435. +#define R_METAG_PLT 42
  21436. +#define R_METAG_COPY 43
  21437. +#define R_METAG_JMP_SLOT 44
  21438. +#define R_METAG_RELATIVE 45
  21439. +#define R_METAG_GLOB_DAT 46
  21440. +
  21441. +/* TLS relocations */
  21442. +#define R_METAG_TLS_TPOFF 56
  21443. +#define R_METAG_TLS_DTPMOD 57
  21444. +#define R_METAG_TLS_DTPOFF 58
  21445. +
  21446. +/* ARCompact specific relocs */
  21447. +#define R_ARC_NONE 0x0
  21448. +#define R_ARC_8 0x1
  21449. +#define R_ARC_16 0x2
  21450. +#define R_ARC_24 0x3
  21451. +#define R_ARC_32 0x4
  21452. +#define R_ARC_B26 0x5
  21453. +#define R_ARC_B22_PCREL 0x6
  21454. +#define R_ARC_H30 0x7
  21455. +#define R_ARC_N8 0x8
  21456. +#define R_ARC_N16 0x9
  21457. +#define R_ARC_N24 0xA
  21458. +#define R_ARC_N32 0xB
  21459. +#define R_ARC_SDA 0xC
  21460. +#define R_ARC_SECTOFF 0xD
  21461. +#define R_ARC_S21H_PCREL 0xE
  21462. +#define R_ARC_S21W_PCREL 0xF
  21463. +#define R_ARC_S25H_PCREL 0x10
  21464. +#define R_ARC_S25W_PCREL 0x11
  21465. +#define R_ARC_SDA32 0x12
  21466. +#define R_ARC_SDA_LDST 0x13
  21467. +#define R_ARC_SDA_LDST1 0x14
  21468. +#define R_ARC_SDA_LDST2 0x15
  21469. +#define R_ARC_SDA16_LD 0x16
  21470. +#define R_ARC_SDA16_LD1 0x17
  21471. +#define R_ARC_SDA16_LD2 0x18
  21472. +#define R_ARC_S13_PCREL 0x19
  21473. +#define R_ARC_W 0x1A
  21474. +#define R_ARC_32_ME 0x1B
  21475. +#define R_ARC_N32_ME 0x1C
  21476. +#define R_ARC_SECTOFF_ME 0x1D
  21477. +#define R_ARC_SDA32_ME 0x1E
  21478. +#define R_ARC_W_ME 0x1F
  21479. +#define R_ARC_H30_ME 0x20
  21480. +#define R_ARC_SECTOFF_U8 0x21
  21481. +#define R_ARC_SECTOFF_S9 0x22
  21482. +#define R_AC_SECTOFF_U8 0x23
  21483. +#define R_AC_SECTOFF_U8_1 0x24
  21484. +#define R_AC_SECTOFF_U8_2 0x25
  21485. +#define R_AC_SECTOFF_S9 0x26
  21486. +#define R_AC_SECTOFF_S9_1 0x27
  21487. +#define R_AC_SECTOFF_S9_2 0x28
  21488. +#define R_ARC_SECTOFF_ME_1 0x29
  21489. +#define R_ARC_SECTOFF_ME_2 0x2A
  21490. +#define R_ARC_SECTOFF_1 0x2B
  21491. +#define R_ARC_SECTOFF_2 0x2C
  21492. +#define R_ARC_PC32 0x32
  21493. +#define R_ARC_GOTPC32 0x33
  21494. +#define R_ARC_PLT32 0x34
  21495. +#define R_ARC_COPY 0x35
  21496. +#define R_ARC_GLOB_DAT 0x36
  21497. +#define R_ARC_JMP_SLOT 0x37
  21498. +#define R_ARC_RELATIVE 0x38
  21499. +#define R_ARC_GOTOFF 0x39
  21500. +#define R_ARC_GOTPC 0x3A
  21501. +#define R_ARC_GOT32 0x3B
  21502. +#define R_ARC_NUM 0x3C
  21503. +
  21504. #ifdef __cplusplus
  21505. }
  21506. #endif
  21507. diff -Nur uClibc-0.9.33.2/include/endian.h uClibc-git/include/endian.h
  21508. --- uClibc-0.9.33.2/include/endian.h 2012-05-15 09:20:09.000000000 +0200
  21509. +++ uClibc-git/include/endian.h 2014-02-03 12:32:56.000000000 +0100
  21510. @@ -12,9 +12,8 @@
  21511. Lesser General Public License for more details.
  21512. You should have received a copy of the GNU Lesser General Public
  21513. - License along with the GNU C Library; if not, write to the Free
  21514. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21515. - 02111-1307 USA. */
  21516. + License along with the GNU C Library; if not, see
  21517. + <http://www.gnu.org/licenses/>. */
  21518. #ifndef _ENDIAN_H
  21519. #define _ENDIAN_H 1
  21520. @@ -55,6 +54,17 @@
  21521. # define __LONG_LONG_PAIR(HI, LO) HI, LO
  21522. #endif
  21523. +#ifdef _LIBC
  21524. +# ifndef __ASSEMBLER__
  21525. +# include <stdint.h>
  21526. +# define OFF_HI(offset) (offset >> 31)
  21527. +# define OFF_LO(offset) (offset)
  21528. +# define OFF64_HI(offset) (uint32_t)(offset >> 32)
  21529. +# define OFF64_LO(offset) (uint32_t)(offset & 0xffffffff)
  21530. +# define OFF_HI_LO(offset) __LONG_LONG_PAIR(OFF_HI(offset), OFF_LO(offset))
  21531. +# define OFF64_HI_LO(offset) __LONG_LONG_PAIR(OFF64_HI(offset), OFF64_LO(offset))
  21532. +# endif
  21533. +#endif
  21534. #ifdef __USE_BSD
  21535. /* Conversion interfaces. */
  21536. diff -Nur uClibc-0.9.33.2/include/err.h uClibc-git/include/err.h
  21537. --- uClibc-0.9.33.2/include/err.h 2012-05-15 09:20:09.000000000 +0200
  21538. +++ uClibc-git/include/err.h 2014-02-03 12:32:56.000000000 +0100
  21539. @@ -13,9 +13,8 @@
  21540. Lesser General Public License for more details.
  21541. You should have received a copy of the GNU Lesser General Public
  21542. - License along with the GNU C Library; if not, write to the Free
  21543. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21544. - 02111-1307 USA. */
  21545. + License along with the GNU C Library; if not, see
  21546. + <http://www.gnu.org/licenses/>. */
  21547. #ifndef _ERR_H
  21548. #define _ERR_H 1
  21549. @@ -32,30 +31,26 @@
  21550. /* Print "program: ", FORMAT, ": ", the standard error string for errno,
  21551. and a newline, on stderr. */
  21552. -extern void warn (__const char *__format, ...)
  21553. +extern void warn (const char *__format, ...)
  21554. __attribute__ ((__format__ (__printf__, 1, 2)));
  21555. -extern void vwarn (__const char *__format, __gnuc_va_list)
  21556. +extern void vwarn (const char *__format, __gnuc_va_list)
  21557. __attribute__ ((__format__ (__printf__, 1, 0)));
  21558. -libc_hidden_proto(vwarn)
  21559. /* Likewise, but without ": " and the standard error string. */
  21560. -extern void warnx (__const char *__format, ...)
  21561. +extern void warnx (const char *__format, ...)
  21562. __attribute__ ((__format__ (__printf__, 1, 2)));
  21563. -extern void vwarnx (__const char *__format, __gnuc_va_list)
  21564. +extern void vwarnx (const char *__format, __gnuc_va_list)
  21565. __attribute__ ((__format__ (__printf__, 1, 0)));
  21566. -libc_hidden_proto(vwarnx)
  21567. /* Likewise, and then exit with STATUS. */
  21568. -extern void err (int __status, __const char *__format, ...)
  21569. +extern void err (int __status, const char *__format, ...)
  21570. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
  21571. -extern void verr (int __status, __const char *__format, __gnuc_va_list)
  21572. +extern void verr (int __status, const char *__format, __gnuc_va_list)
  21573. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
  21574. -libc_hidden_proto(verr)
  21575. -extern void errx (int __status, __const char *__format, ...)
  21576. +extern void errx (int __status, const char *__format, ...)
  21577. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
  21578. -extern void verrx (int __status, __const char *, __gnuc_va_list)
  21579. +extern void verrx (int __status, const char *, __gnuc_va_list)
  21580. __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
  21581. -libc_hidden_proto(verrx)
  21582. __END_DECLS
  21583. diff -Nur uClibc-0.9.33.2/include/errno.h uClibc-git/include/errno.h
  21584. --- uClibc-0.9.33.2/include/errno.h 2012-05-15 09:20:09.000000000 +0200
  21585. +++ uClibc-git/include/errno.h 2014-02-03 12:32:56.000000000 +0100
  21586. @@ -12,9 +12,8 @@
  21587. Lesser General Public License for more details.
  21588. You should have received a copy of the GNU Lesser General Public
  21589. - License along with the GNU C Library; if not, write to the Free
  21590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21591. - 02111-1307 USA. */
  21592. + License along with the GNU C Library; if not, see
  21593. + <http://www.gnu.org/licenses/>. */
  21594. /*
  21595. * ISO C99 Standard: 7.5 Errors <errno.h>
  21596. @@ -47,6 +46,9 @@
  21597. extern int errno;
  21598. #endif
  21599. +#ifdef _LIBC
  21600. +extern const char *__progname, *__progname_full;
  21601. +#endif
  21602. #if defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  21603. /* The full and simple forms of the name with which the program was
  21604. diff -Nur uClibc-0.9.33.2/include/error.h uClibc-git/include/error.h
  21605. --- uClibc-0.9.33.2/include/error.h 2012-05-15 09:20:09.000000000 +0200
  21606. +++ uClibc-git/include/error.h 2014-02-03 12:32:56.000000000 +0100
  21607. @@ -13,9 +13,8 @@
  21608. Lesser General Public License for more details.
  21609. You should have received a copy of the GNU Lesser General Public
  21610. - License along with the GNU C Library; if not, write to the Free
  21611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21612. - 02111-1307 USA. */
  21613. + License along with the GNU C Library; if not, see
  21614. + <http://www.gnu.org/licenses/>. */
  21615. #ifndef _ERROR_H
  21616. #define _ERROR_H 1
  21617. diff -Nur uClibc-0.9.33.2/include/execinfo.h uClibc-git/include/execinfo.h
  21618. --- uClibc-0.9.33.2/include/execinfo.h 2012-05-15 09:20:09.000000000 +0200
  21619. +++ uClibc-git/include/execinfo.h 2014-02-03 12:32:56.000000000 +0100
  21620. @@ -12,9 +12,8 @@
  21621. Lesser General Public License for more details.
  21622. You should have received a copy of the GNU Lesser General Public
  21623. - License along with the GNU C Library; if not, write to the Free
  21624. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21625. - 02111-1307 USA. */
  21626. + License along with the GNU C Library; if not, see
  21627. + <http://www.gnu.org/licenses/>. */
  21628. #ifndef _EXECINFO_H
  21629. #define _EXECINFO_H 1
  21630. @@ -30,13 +29,13 @@
  21631. /* Return names of functions from the backtrace list in ARRAY in a newly
  21632. malloc()ed memory block. */
  21633. -extern char **backtrace_symbols (void *__const *__array, int __size)
  21634. +extern char **backtrace_symbols (void *const *__array, int __size)
  21635. __THROW __nonnull ((1));
  21636. /* This function is similar to backtrace_symbols() but it writes the result
  21637. immediately to a file. */
  21638. -extern void backtrace_symbols_fd (void *__const *__array, int __size, int __fd)
  21639. +extern void backtrace_symbols_fd (void *const *__array, int __size, int __fd)
  21640. __THROW __nonnull ((1));
  21641. __END_DECLS
  21642. diff -Nur uClibc-0.9.33.2/include/fcntl.h uClibc-git/include/fcntl.h
  21643. --- uClibc-0.9.33.2/include/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  21644. +++ uClibc-git/include/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  21645. @@ -13,9 +13,8 @@
  21646. Lesser General Public License for more details.
  21647. You should have received a copy of the GNU Lesser General Public
  21648. - License along with the GNU C Library; if not, write to the Free
  21649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21650. - 02111-1307 USA. */
  21651. + License along with the GNU C Library; if not, see
  21652. + <http://www.gnu.org/licenses/>. */
  21653. /*
  21654. * POSIX Standard: 6.5 File Control Operations <fcntl.h>
  21655. @@ -75,7 +74,10 @@
  21656. __THROW. */
  21657. #if !defined(__USE_FILE_OFFSET64) || defined(__LP64__)
  21658. extern int fcntl (int __fd, int __cmd, ...);
  21659. +# ifdef _LIBC
  21660. +extern int __fcntl_nocancel(int, int, long) attribute_hidden;
  21661. libc_hidden_proto(fcntl)
  21662. +# endif
  21663. #else
  21664. # ifdef __REDIRECT
  21665. extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
  21666. @@ -85,7 +87,10 @@
  21667. #endif
  21668. #if defined(__USE_LARGEFILE64) && !defined(__LP64__)
  21669. extern int fcntl64 (int __fd, int __cmd, ...);
  21670. +# ifdef _LIBC
  21671. +extern int __fcntl64_nocancel(int, int, long) attribute_hidden;
  21672. libc_hidden_proto(fcntl64)
  21673. +# endif
  21674. #endif
  21675. /* Open FILE and return a new file descriptor for it, or -1 on error.
  21676. @@ -95,18 +100,22 @@
  21677. This function is a cancellation point and therefore not marked with
  21678. __THROW. */
  21679. #ifndef __USE_FILE_OFFSET64
  21680. -extern int open (__const char *__file, int __oflag, ...) __nonnull ((1));
  21681. +extern int open (const char *__file, int __oflag, ...) __nonnull ((1));
  21682. libc_hidden_proto(open)
  21683. +# ifdef _LIBC
  21684. +extern int __open2_nocancel(const char *, int) __nonnull ((1)) attribute_hidden;
  21685. +extern int __open_nocancel(const char *, int, mode_t) __nonnull ((1)) attribute_hidden;
  21686. +# endif
  21687. #else
  21688. # ifdef __REDIRECT
  21689. -extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64)
  21690. +extern int __REDIRECT (open, (const char *__file, int __oflag, ...), open64)
  21691. __nonnull ((1));
  21692. # else
  21693. # define open open64
  21694. # endif
  21695. #endif
  21696. #ifdef __USE_LARGEFILE64
  21697. -extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
  21698. +extern int open64 (const char *__file, int __oflag, ...) __nonnull ((1));
  21699. libc_hidden_proto(open64)
  21700. #endif
  21701. @@ -121,21 +130,20 @@
  21702. This function is a cancellation point and therefore not marked with
  21703. __THROW. */
  21704. # ifndef __USE_FILE_OFFSET64
  21705. -extern int openat (int __fd, __const char *__file, int __oflag, ...)
  21706. +extern int openat (int __fd, const char *__file, int __oflag, ...)
  21707. __nonnull ((2));
  21708. libc_hidden_proto(openat)
  21709. # else
  21710. # ifdef __REDIRECT
  21711. -extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag,
  21712. +extern int __REDIRECT (openat, (int __fd, const char *__file, int __oflag,
  21713. ...), openat64) __nonnull ((2));
  21714. # else
  21715. # define openat openat64
  21716. # endif
  21717. # endif
  21718. -extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
  21719. +extern int openat64 (int __fd, const char *__file, int __oflag, ...)
  21720. __nonnull ((2));
  21721. -libc_hidden_proto(openat64)
  21722. #endif
  21723. /* Create and open FILE, with mode MODE. This takes an `int' MODE
  21724. @@ -144,17 +152,17 @@
  21725. This function is a cancellation point and therefore not marked with
  21726. __THROW. */
  21727. #ifndef __USE_FILE_OFFSET64
  21728. -extern int creat (__const char *__file, __mode_t __mode) __nonnull ((1));
  21729. +extern int creat (const char *__file, __mode_t __mode) __nonnull ((1));
  21730. #else
  21731. # ifdef __REDIRECT
  21732. -extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode),
  21733. +extern int __REDIRECT (creat, (const char *__file, __mode_t __mode),
  21734. creat64) __nonnull ((1));
  21735. # else
  21736. # define creat creat64
  21737. # endif
  21738. #endif
  21739. #ifdef __USE_LARGEFILE64
  21740. -extern int creat64 (__const char *__file, __mode_t __mode) __nonnull ((1));
  21741. +extern int creat64 (const char *__file, __mode_t __mode) __nonnull ((1));
  21742. #endif
  21743. #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
  21744. @@ -184,7 +192,6 @@
  21745. # endif
  21746. # ifdef __USE_LARGEFILE64
  21747. extern int lockf64 (int __fd, int __cmd, __off64_t __len);
  21748. -libc_hidden_proto(lockf64)
  21749. # endif
  21750. #endif
  21751. @@ -210,9 +217,7 @@
  21752. #endif
  21753. -#if 0 /* && defined __UCLIBC_HAS_ADVANCED_REALTIME__ */
  21754. -
  21755. -/* FIXME -- uClibc should probably implement these... */
  21756. +#if defined __UCLIBC_HAS_ADVANCED_REALTIME__
  21757. /* Reserve storage for the data of the file associated with FD.
  21758. @@ -234,11 +239,6 @@
  21759. # endif
  21760. #endif
  21761. -#ifdef _LIBC
  21762. -extern int __fcntl_nocancel (int fd, int cmd, ...);
  21763. -libc_hidden_proto(__fcntl_nocancel)
  21764. -#endif
  21765. -
  21766. __END_DECLS
  21767. #endif /* fcntl.h */
  21768. diff -Nur uClibc-0.9.33.2/include/features.h uClibc-git/include/features.h
  21769. --- uClibc-0.9.33.2/include/features.h 2012-05-15 09:20:09.000000000 +0200
  21770. +++ uClibc-git/include/features.h 2014-02-03 12:32:56.000000000 +0100
  21771. @@ -12,9 +12,8 @@
  21772. Lesser General Public License for more details.
  21773. You should have received a copy of the GNU Lesser General Public
  21774. - License along with the GNU C Library; if not, write to the Free
  21775. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21776. - 02111-1307 USA. */
  21777. + License along with the GNU C Library; if not, see
  21778. + <http://www.gnu.org/licenses/>. */
  21779. #ifndef _FEATURES_H
  21780. #define _FEATURES_H 1
  21781. diff -Nur uClibc-0.9.33.2/include/fenv.h uClibc-git/include/fenv.h
  21782. --- uClibc-0.9.33.2/include/fenv.h 2012-05-15 09:20:09.000000000 +0200
  21783. +++ uClibc-git/include/fenv.h 2014-02-03 12:32:56.000000000 +0100
  21784. @@ -12,9 +12,8 @@
  21785. Lesser General Public License for more details.
  21786. You should have received a copy of the GNU Lesser General Public
  21787. - License along with the GNU C Library; if not, write to the Free
  21788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21789. - 02111-1307 USA. */
  21790. + License along with the GNU C Library; if not, see
  21791. + <http://www.gnu.org/licenses/>. */
  21792. /*
  21793. * ISO C99 7.6: Floating-point environment <fenv.h>
  21794. @@ -73,7 +72,7 @@
  21795. /* Set complete status for exceptions indicated by EXCEPTS according to
  21796. the representation in the object pointed to by FLAGP. */
  21797. -extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
  21798. +extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __THROW;
  21799. /* Determine which of subset of the exceptions specified by EXCEPTS are
  21800. currently set. */
  21801. @@ -102,12 +101,12 @@
  21802. /* Establish the floating-point environment represented by the object
  21803. pointed to by ENVP. */
  21804. -extern int fesetenv (__const fenv_t *__envp) __THROW;
  21805. +extern int fesetenv (const fenv_t *__envp) __THROW;
  21806. /* Save current exceptions in temporary storage, install environment
  21807. represented by object pointed to by ENVP and raise exceptions
  21808. according to saved exceptions. */
  21809. -extern int feupdateenv (__const fenv_t *__envp) __THROW;
  21810. +extern int feupdateenv (const fenv_t *__envp) __THROW;
  21811. /* Include optimization. */
  21812. diff -Nur uClibc-0.9.33.2/include/fnmatch.h uClibc-git/include/fnmatch.h
  21813. --- uClibc-0.9.33.2/include/fnmatch.h 2012-05-15 09:20:09.000000000 +0200
  21814. +++ uClibc-git/include/fnmatch.h 2014-02-03 12:32:56.000000000 +0100
  21815. @@ -12,9 +12,8 @@
  21816. Lesser General Public License for more details.
  21817. You should have received a copy of the GNU Lesser General Public
  21818. - License along with the GNU C Library; if not, write to the Free
  21819. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21820. - 02111-1307 USA. */
  21821. + License along with the GNU C Library; if not, see
  21822. + <http://www.gnu.org/licenses/>. */
  21823. #ifndef _FNMATCH_H
  21824. #define _FNMATCH_H 1
  21825. @@ -23,14 +22,6 @@
  21826. extern "C" {
  21827. #endif
  21828. -#ifndef const
  21829. -# if (defined __STDC__ && __STDC__) || defined __cplusplus
  21830. -# define __const const
  21831. -# else
  21832. -# define __const
  21833. -# endif
  21834. -#endif
  21835. -
  21836. /* We #undef these before defining them because some losing systems
  21837. (HP-UX A.08.07 for example) define these in <unistd.h>. */
  21838. #undef FNM_PATHNAME
  21839. @@ -62,7 +53,7 @@
  21840. /* Match NAME against the filename pattern PATTERN,
  21841. returning zero if it matches, FNM_NOMATCH if not. */
  21842. -extern int fnmatch (__const char *__pattern, __const char *__name,
  21843. +extern int fnmatch (const char *__pattern, const char *__name,
  21844. int __flags);
  21845. libc_hidden_proto(fnmatch)
  21846. diff -Nur uClibc-0.9.33.2/include/ftw.h uClibc-git/include/ftw.h
  21847. --- uClibc-0.9.33.2/include/ftw.h 2012-05-15 09:20:09.000000000 +0200
  21848. +++ uClibc-git/include/ftw.h 2014-02-03 12:32:56.000000000 +0100
  21849. @@ -12,9 +12,8 @@
  21850. Lesser General Public License for more details.
  21851. You should have received a copy of the GNU Lesser General Public
  21852. - License along with the GNU C Library; if not, write to the Free
  21853. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21854. - 02111-1307 USA. */
  21855. + License along with the GNU C Library; if not, see
  21856. + <http://www.gnu.org/licenses/>. */
  21857. /*
  21858. * X/Open Portability Guide 4.2: ftw.h
  21859. @@ -112,19 +111,19 @@
  21860. /* Convenient types for callback functions. */
  21861. -typedef int (*__ftw_func_t) (__const char *__filename,
  21862. - __const struct stat *__status, int __flag);
  21863. +typedef int (*__ftw_func_t) (const char *__filename,
  21864. + const struct stat *__status, int __flag);
  21865. #ifdef __USE_LARGEFILE64
  21866. -typedef int (*__ftw64_func_t) (__const char *__filename,
  21867. - __const struct stat64 *__status, int __flag);
  21868. +typedef int (*__ftw64_func_t) (const char *__filename,
  21869. + const struct stat64 *__status, int __flag);
  21870. #endif
  21871. #ifdef __USE_XOPEN_EXTENDED
  21872. -typedef int (*__nftw_func_t) (__const char *__filename,
  21873. - __const struct stat *__status, int __flag,
  21874. +typedef int (*__nftw_func_t) (const char *__filename,
  21875. + const struct stat *__status, int __flag,
  21876. struct FTW *__info);
  21877. # ifdef __USE_LARGEFILE64
  21878. -typedef int (*__nftw64_func_t) (__const char *__filename,
  21879. - __const struct stat64 *__status,
  21880. +typedef int (*__nftw64_func_t) (const char *__filename,
  21881. + const struct stat64 *__status,
  21882. int __flag, struct FTW *__info);
  21883. # endif
  21884. #endif
  21885. @@ -135,18 +134,18 @@
  21886. This function is a possible cancellation point and therefore not
  21887. marked with __THROW. */
  21888. # ifndef __USE_FILE_OFFSET64
  21889. -extern int ftw (__const char *__dir, __ftw_func_t __func, int __descriptors)
  21890. +extern int ftw (const char *__dir, __ftw_func_t __func, int __descriptors)
  21891. __nonnull ((1, 2));
  21892. # else
  21893. # ifdef __REDIRECT
  21894. -extern int __REDIRECT (ftw, (__const char *__dir, __ftw_func_t __func,
  21895. +extern int __REDIRECT (ftw, (const char *__dir, __ftw_func_t __func,
  21896. int __descriptors), ftw64) __nonnull ((1, 2));
  21897. # else
  21898. # define ftw ftw64
  21899. # endif
  21900. # endif
  21901. # ifdef __USE_LARGEFILE64
  21902. -extern int ftw64 (__const char *__dir, __ftw64_func_t __func,
  21903. +extern int ftw64 (const char *__dir, __ftw64_func_t __func,
  21904. int __descriptors) __nonnull ((1, 2));
  21905. # endif
  21906. #endif
  21907. @@ -158,11 +157,11 @@
  21908. This function is a possible cancellation point and therefore not
  21909. marked with __THROW. */
  21910. # ifndef __USE_FILE_OFFSET64
  21911. -extern int nftw (__const char *__dir, __nftw_func_t __func, int __descriptors,
  21912. +extern int nftw (const char *__dir, __nftw_func_t __func, int __descriptors,
  21913. int __flag) __nonnull ((1, 2));
  21914. # else
  21915. # ifdef __REDIRECT
  21916. -extern int __REDIRECT (nftw, (__const char *__dir, __nftw_func_t __func,
  21917. +extern int __REDIRECT (nftw, (const char *__dir, __nftw_func_t __func,
  21918. int __descriptors, int __flag), nftw64)
  21919. __nonnull ((1, 2));
  21920. # else
  21921. @@ -170,7 +169,7 @@
  21922. # endif
  21923. # endif
  21924. # ifdef __USE_LARGEFILE64
  21925. -extern int nftw64 (__const char *__dir, __nftw64_func_t __func,
  21926. +extern int nftw64 (const char *__dir, __nftw64_func_t __func,
  21927. int __descriptors, int __flag) __nonnull ((1, 2));
  21928. # endif
  21929. #endif
  21930. diff -Nur uClibc-0.9.33.2/include/.gitignore uClibc-git/include/.gitignore
  21931. --- uClibc-0.9.33.2/include/.gitignore 2012-05-15 09:20:09.000000000 +0200
  21932. +++ uClibc-git/include/.gitignore 2014-02-03 12:32:56.000000000 +0100
  21933. @@ -8,6 +8,7 @@
  21934. #
  21935. /bits/
  21936. /config/
  21937. +/generated/
  21938. /bfin_fixed_code.h
  21939. /bfin_l1layout.h
  21940. @@ -15,6 +16,9 @@
  21941. /dl-osinfo.h
  21942. /fpu_control.h
  21943. /hp-timing.h
  21944. +/jmpbuf-offsets.h
  21945. +/jmpbuf-unwind.h
  21946. +/not-cancel.h
  21947. /pthread.h
  21948. /semaphore.h
  21949. /thread_db.h
  21950. diff -Nur uClibc-0.9.33.2/include/glob.h uClibc-git/include/glob.h
  21951. --- uClibc-0.9.33.2/include/glob.h 2012-05-15 09:20:09.000000000 +0200
  21952. +++ uClibc-git/include/glob.h 2014-02-03 12:32:56.000000000 +0100
  21953. @@ -12,9 +12,8 @@
  21954. Lesser General Public License for more details.
  21955. You should have received a copy of the GNU Lesser General Public
  21956. - License along with the GNU C Library; if not, write to the Free
  21957. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21958. - 02111-1307 USA. */
  21959. + License along with the GNU C Library; if not, see
  21960. + <http://www.gnu.org/licenses/>. */
  21961. #ifndef _GLOB_H
  21962. #define _GLOB_H 1
  21963. @@ -110,13 +109,13 @@
  21964. #else
  21965. void *(*gl_readdir) (void *);
  21966. #endif
  21967. - void *(*gl_opendir) (__const char *);
  21968. + void *(*gl_opendir) (const char *);
  21969. #ifdef __USE_GNU
  21970. - int (*gl_lstat) (__const char *__restrict, struct stat *__restrict);
  21971. - int (*gl_stat) (__const char *__restrict, struct stat *__restrict);
  21972. + int (*gl_lstat) (const char *__restrict, struct stat *__restrict);
  21973. + int (*gl_stat) (const char *__restrict, struct stat *__restrict);
  21974. #else
  21975. - int (*gl_lstat) (__const char *__restrict, void *__restrict);
  21976. - int (*gl_stat) (__const char *__restrict, void *__restrict);
  21977. + int (*gl_lstat) (const char *__restrict, void *__restrict);
  21978. + int (*gl_stat) (const char *__restrict, void *__restrict);
  21979. #endif
  21980. #endif
  21981. #endif /* __UCLIBC_HAS_GNU_GLOB__ */
  21982. @@ -143,13 +142,13 @@
  21983. # else
  21984. void *(*gl_readdir) (void *);
  21985. # endif
  21986. - void *(*gl_opendir) (__const char *);
  21987. + void *(*gl_opendir) (const char *);
  21988. # ifdef __USE_GNU
  21989. - int (*gl_lstat) (__const char *__restrict, struct stat64 *__restrict);
  21990. - int (*gl_stat) (__const char *__restrict, struct stat64 *__restrict);
  21991. + int (*gl_lstat) (const char *__restrict, struct stat64 *__restrict);
  21992. + int (*gl_stat) (const char *__restrict, struct stat64 *__restrict);
  21993. # else
  21994. - int (*gl_lstat) (__const char *__restrict, void *__restrict);
  21995. - int (*gl_stat) (__const char *__restrict, void *__restrict);
  21996. + int (*gl_lstat) (const char *__restrict, void *__restrict);
  21997. + int (*gl_stat) (const char *__restrict, void *__restrict);
  21998. # endif
  21999. #endif
  22000. #endif /* __UCLIBC_HAS_GNU_GLOB__ */
  22001. @@ -170,8 +169,8 @@
  22002. If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
  22003. Otherwise, `glob' returns zero. */
  22004. #if !defined __USE_FILE_OFFSET64 || __GNUC__ < 2
  22005. -extern int glob (__const char *__restrict __pattern, int __flags,
  22006. - int (*__errfunc) (__const char *, int),
  22007. +extern int glob (const char *__restrict __pattern, int __flags,
  22008. + int (*__errfunc) (const char *, int),
  22009. glob_t *__restrict __pglob) __THROW;
  22010. libc_hidden_proto(glob)
  22011. @@ -179,17 +178,17 @@
  22012. extern void globfree (glob_t *__pglob) __THROW;
  22013. libc_hidden_proto(globfree)
  22014. #else
  22015. -extern int __REDIRECT_NTH (glob, (__const char *__restrict __pattern,
  22016. +extern int __REDIRECT_NTH (glob, (const char *__restrict __pattern,
  22017. int __flags,
  22018. - int (*__errfunc) (__const char *, int),
  22019. + int (*__errfunc) (const char *, int),
  22020. glob_t *__restrict __pglob), glob64);
  22021. extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
  22022. #endif
  22023. #ifdef __USE_LARGEFILE64
  22024. -extern int glob64 (__const char *__restrict __pattern, int __flags,
  22025. - int (*__errfunc) (__const char *, int),
  22026. +extern int glob64 (const char *__restrict __pattern, int __flags,
  22027. + int (*__errfunc) (const char *, int),
  22028. glob64_t *__restrict __pglob) __THROW;
  22029. libc_hidden_proto(glob64)
  22030. @@ -204,7 +203,7 @@
  22031. This function is not part of the interface specified by POSIX.2
  22032. but several programs want to use it. */
  22033. -extern int glob_pattern_p (__const char *__pattern, int __quote) __THROW;
  22034. +extern int glob_pattern_p (const char *__pattern, int __quote) __THROW;
  22035. libc_hidden_proto(glob_pattern_p)
  22036. #endif
  22037. diff -Nur uClibc-0.9.33.2/include/gnu-versions.h uClibc-git/include/gnu-versions.h
  22038. --- uClibc-0.9.33.2/include/gnu-versions.h 2012-05-15 09:20:09.000000000 +0200
  22039. +++ uClibc-git/include/gnu-versions.h 2014-02-03 12:32:56.000000000 +0100
  22040. @@ -13,9 +13,8 @@
  22041. Lesser General Public License for more details.
  22042. You should have received a copy of the GNU Lesser General Public
  22043. - License along with the GNU C Library; if not, write to the Free
  22044. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22045. - 02111-1307 USA. */
  22046. + License along with the GNU C Library; if not, see
  22047. + <http://www.gnu.org/licenses/>. */
  22048. #ifndef _GNU_VERSIONS_H
  22049. #define _GNU_VERSIONS_H 1
  22050. diff -Nur uClibc-0.9.33.2/include/grp.h uClibc-git/include/grp.h
  22051. --- uClibc-0.9.33.2/include/grp.h 2012-05-15 09:20:09.000000000 +0200
  22052. +++ uClibc-git/include/grp.h 2014-02-03 12:32:56.000000000 +0100
  22053. @@ -12,9 +12,8 @@
  22054. Lesser General Public License for more details.
  22055. You should have received a copy of the GNU Lesser General Public
  22056. - License along with the GNU C Library; if not, write to the Free
  22057. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22058. - 02111-1307 USA. */
  22059. + License along with the GNU C Library; if not, see
  22060. + <http://www.gnu.org/licenses/>. */
  22061. /*
  22062. * POSIX Standard: 9.2.1 Group Database Access <grp.h>
  22063. @@ -92,7 +91,7 @@
  22064. cancellation point. But due to similarity with an POSIX interface
  22065. or due to the implementation it is a cancellation point and
  22066. therefore not marked with __THROW. */
  22067. -extern int putgrent (__const struct group *__restrict __p,
  22068. +extern int putgrent (const struct group *__restrict __p,
  22069. FILE *__restrict __f);
  22070. #endif
  22071. @@ -106,7 +105,7 @@
  22072. This function is a possible cancellation point and therefore not
  22073. marked with __THROW. */
  22074. -extern struct group *getgrnam (__const char *__name);
  22075. +extern struct group *getgrnam (const char *__name);
  22076. #if defined __USE_POSIX || defined __USE_MISC
  22077. @@ -149,7 +148,7 @@
  22078. This function is a possible cancellation point and therefore not
  22079. marked with __THROW. */
  22080. -extern int getgrnam_r (__const char *__restrict __name,
  22081. +extern int getgrnam_r (const char *__restrict __name,
  22082. struct group *__restrict __resultbuf,
  22083. char *__restrict __buffer, size_t __buflen,
  22084. struct group **__restrict __result);
  22085. @@ -187,7 +186,7 @@
  22086. cancellation point. But due to similarity with an POSIX interface
  22087. or due to the implementation it is a cancellation point and
  22088. therefore not marked with __THROW. */
  22089. -extern int getgrouplist (__const char *__user, __gid_t __group,
  22090. +extern int getgrouplist (const char *__user, __gid_t __group,
  22091. __gid_t *__groups, int *__ngroups);
  22092. #endif
  22093. @@ -195,7 +194,7 @@
  22094. #if defined __USE_BSD
  22095. /* Set the group set for the current user to GROUPS (N of them). */
  22096. -extern int setgroups (size_t __n, __const __gid_t *__groups) __THROW;
  22097. +extern int setgroups (size_t __n, const __gid_t *__groups) __THROW;
  22098. libc_hidden_proto(setgroups)
  22099. /* Initialize the group set for the current user
  22100. @@ -206,7 +205,7 @@
  22101. cancellation point. But due to similarity with an POSIX interface
  22102. or due to the implementation it is a cancellation point and
  22103. therefore not marked with __THROW. */
  22104. -extern int initgroups (__const char *__user, __gid_t __group);
  22105. +extern int initgroups (const char *__user, __gid_t __group);
  22106. #endif /* Use BSD. */
  22107. diff -Nur uClibc-0.9.33.2/include/iconv.h uClibc-git/include/iconv.h
  22108. --- uClibc-0.9.33.2/include/iconv.h 2012-05-15 09:20:09.000000000 +0200
  22109. +++ uClibc-git/include/iconv.h 2014-02-03 12:32:56.000000000 +0100
  22110. @@ -12,9 +12,8 @@
  22111. Lesser General Public License for more details.
  22112. You should have received a copy of the GNU Lesser General Public
  22113. - License along with the GNU C Library; if not, write to the Free
  22114. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22115. - 02111-1307 USA. */
  22116. + License along with the GNU C Library; if not, see
  22117. + <http://www.gnu.org/licenses/>. */
  22118. #ifndef _ICONV_H
  22119. #define _ICONV_H 1
  22120. @@ -39,7 +38,7 @@
  22121. This function is a possible cancellation points and therefore not
  22122. marked with __THROW. */
  22123. -extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
  22124. +extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);
  22125. /* Convert at most *INBYTESLEFT bytes from *INBUF according to the
  22126. code conversion algorithm specified by CD and place up to
  22127. diff -Nur uClibc-0.9.33.2/include/ieee754.h uClibc-git/include/ieee754.h
  22128. --- uClibc-0.9.33.2/include/ieee754.h 2012-05-15 09:20:09.000000000 +0200
  22129. +++ uClibc-git/include/ieee754.h 2014-02-03 12:32:56.000000000 +0100
  22130. @@ -12,9 +12,8 @@
  22131. Lesser General Public License for more details.
  22132. You should have received a copy of the GNU Lesser General Public
  22133. - License along with the GNU C Library; if not, write to the Free
  22134. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22135. - 02111-1307 USA. */
  22136. + License along with the GNU C Library; if not, see
  22137. + <http://www.gnu.org/licenses/>. */
  22138. #ifndef _IEEE754_H
  22139. diff -Nur uClibc-0.9.33.2/include/ifaddrs.h uClibc-git/include/ifaddrs.h
  22140. --- uClibc-0.9.33.2/include/ifaddrs.h 2012-05-15 09:20:09.000000000 +0200
  22141. +++ uClibc-git/include/ifaddrs.h 2014-02-03 12:32:56.000000000 +0100
  22142. @@ -13,9 +13,8 @@
  22143. Lesser General Public License for more details.
  22144. You should have received a copy of the GNU Lesser General Public
  22145. - License along with the GNU C Library; if not, write to the Free
  22146. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22147. - 02111-1307 USA. */
  22148. + License along with the GNU C Library; if not, see
  22149. + <http://www.gnu.org/licenses/>. */
  22150. #ifndef _IFADDRS_H
  22151. #define _IFADDRS_H 1
  22152. diff -Nur uClibc-0.9.33.2/include/inttypes.h uClibc-git/include/inttypes.h
  22153. --- uClibc-0.9.33.2/include/inttypes.h 2012-05-15 09:20:09.000000000 +0200
  22154. +++ uClibc-git/include/inttypes.h 2014-02-03 12:32:56.000000000 +0100
  22155. @@ -12,9 +12,8 @@
  22156. Lesser General Public License for more details.
  22157. You should have received a copy of the GNU Lesser General Public
  22158. - License along with the GNU C Library; if not, write to the Free
  22159. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22160. - 02111-1307 USA. */
  22161. + License along with the GNU C Library; if not, see
  22162. + <http://www.gnu.org/licenses/>. */
  22163. /*
  22164. * ISO C99: 7.8 Format conversion of integer types <inttypes.h>
  22165. @@ -304,21 +303,21 @@
  22166. __THROW __attribute__ ((__const__));
  22167. /* Like `strtol' but convert to `intmax_t'. */
  22168. -extern intmax_t strtoimax (__const char *__restrict __nptr,
  22169. +extern intmax_t strtoimax (const char *__restrict __nptr,
  22170. char **__restrict __endptr, int __base) __THROW;
  22171. /* Like `strtoul' but convert to `uintmax_t'. */
  22172. -extern uintmax_t strtoumax (__const char *__restrict __nptr,
  22173. +extern uintmax_t strtoumax (const char *__restrict __nptr,
  22174. char ** __restrict __endptr, int __base) __THROW;
  22175. #ifdef __UCLIBC_HAS_WCHAR__
  22176. /* Like `wcstol' but convert to `intmax_t'. */
  22177. -extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
  22178. +extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr,
  22179. __gwchar_t **__restrict __endptr, int __base)
  22180. __THROW;
  22181. /* Like `wcstoul' but convert to `uintmax_t'. */
  22182. -extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
  22183. +extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr,
  22184. __gwchar_t ** __restrict __endptr, int __base)
  22185. __THROW;
  22186. #endif
  22187. @@ -327,44 +326,44 @@
  22188. # if __WORDSIZE == 64
  22189. -extern long int __strtol_internal (__const char *__restrict __nptr,
  22190. +extern long int __strtol_internal (const char *__restrict __nptr,
  22191. char **__restrict __endptr,
  22192. int __base, int __group)
  22193. __THROW __nonnull ((1)) __wur;
  22194. /* Like `strtol' but convert to `intmax_t'. */
  22195. __extern_inline intmax_t
  22196. -__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
  22197. +__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
  22198. int base))
  22199. {
  22200. return __strtol_internal (nptr, endptr, base, 0);
  22201. }
  22202. -extern unsigned long int __strtoul_internal (__const char *
  22203. +extern unsigned long int __strtoul_internal (const char *
  22204. __restrict __nptr,
  22205. char ** __restrict __endptr,
  22206. int __base, int __group)
  22207. __THROW __nonnull ((1)) __wur;
  22208. /* Like `strtoul' but convert to `uintmax_t'. */
  22209. __extern_inline uintmax_t
  22210. -__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
  22211. +__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
  22212. int base))
  22213. {
  22214. return __strtoul_internal (nptr, endptr, base, 0);
  22215. }
  22216. -extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
  22217. +extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
  22218. __gwchar_t **__restrict __endptr,
  22219. int __base, int __group)
  22220. __THROW __nonnull ((1)) __wur;
  22221. /* Like `wcstol' but convert to `intmax_t'. */
  22222. __extern_inline intmax_t
  22223. -__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
  22224. +__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
  22225. __gwchar_t **__restrict endptr, int base))
  22226. {
  22227. return __wcstol_internal (nptr, endptr, base, 0);
  22228. }
  22229. -extern unsigned long int __wcstoul_internal (__const __gwchar_t *
  22230. +extern unsigned long int __wcstoul_internal (const __gwchar_t *
  22231. __restrict __nptr,
  22232. __gwchar_t **
  22233. __restrict __endptr,
  22234. @@ -372,7 +371,7 @@
  22235. __THROW __nonnull ((1)) __wur;
  22236. /* Like `wcstoul' but convert to `uintmax_t'. */
  22237. __extern_inline uintmax_t
  22238. -__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
  22239. +__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
  22240. __gwchar_t **__restrict endptr, int base))
  22241. {
  22242. return __wcstoul_internal (nptr, endptr, base, 0);
  22243. @@ -381,20 +380,20 @@
  22244. # else /* __WORDSIZE == 32 */
  22245. __extension__
  22246. -extern long long int __strtoll_internal (__const char *__restrict __nptr,
  22247. +extern long long int __strtoll_internal (const char *__restrict __nptr,
  22248. char **__restrict __endptr,
  22249. int __base, int __group)
  22250. __THROW __nonnull ((1)) __wur;
  22251. /* Like `strtol' but convert to `intmax_t'. */
  22252. __extern_inline intmax_t
  22253. -__NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr,
  22254. +__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
  22255. int base))
  22256. {
  22257. return __strtoll_internal (nptr, endptr, base, 0);
  22258. }
  22259. __extension__
  22260. -extern unsigned long long int __strtoull_internal (__const char *
  22261. +extern unsigned long long int __strtoull_internal (const char *
  22262. __restrict __nptr,
  22263. char **
  22264. __restrict __endptr,
  22265. @@ -403,21 +402,21 @@
  22266. __THROW __nonnull ((1)) __wur;
  22267. /* Like `strtoul' but convert to `uintmax_t'. */
  22268. __extern_inline uintmax_t
  22269. -__NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr,
  22270. +__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
  22271. int base))
  22272. {
  22273. return __strtoull_internal (nptr, endptr, base, 0);
  22274. }
  22275. __extension__
  22276. -extern long long int __wcstoll_internal (__const __gwchar_t *
  22277. +extern long long int __wcstoll_internal (const __gwchar_t *
  22278. __restrict __nptr,
  22279. __gwchar_t **__restrict __endptr,
  22280. int __base, int __group)
  22281. __THROW __nonnull ((1)) __wur;
  22282. /* Like `wcstol' but convert to `intmax_t'. */
  22283. __extern_inline intmax_t
  22284. -__NTH (wcstoimax (__const __gwchar_t *__restrict nptr,
  22285. +__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
  22286. __gwchar_t **__restrict endptr, int base))
  22287. {
  22288. return __wcstoll_internal (nptr, endptr, base, 0);
  22289. @@ -425,7 +424,7 @@
  22290. __extension__
  22291. -extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
  22292. +extern unsigned long long int __wcstoull_internal (const __gwchar_t *
  22293. __restrict __nptr,
  22294. __gwchar_t **
  22295. __restrict __endptr,
  22296. @@ -434,7 +433,7 @@
  22297. __THROW __nonnull ((1)) __wur;
  22298. /* Like `wcstoul' but convert to `uintmax_t'. */
  22299. __extern_inline uintmax_t
  22300. -__NTH (wcstoumax (__const __gwchar_t *__restrict nptr,
  22301. +__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
  22302. __gwchar_t **__restrict endptr, int base))
  22303. {
  22304. return __wcstoull_internal (nptr, endptr, base, 0);
  22305. diff -Nur uClibc-0.9.33.2/include/langinfo.h uClibc-git/include/langinfo.h
  22306. --- uClibc-0.9.33.2/include/langinfo.h 2012-05-15 09:20:09.000000000 +0200
  22307. +++ uClibc-git/include/langinfo.h 2014-02-03 12:32:56.000000000 +0100
  22308. @@ -13,9 +13,8 @@
  22309. Lesser General Public License for more details.
  22310. You should have received a copy of the GNU Lesser General Public
  22311. - License along with the GNU C Library; if not, write to the Free
  22312. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22313. - 02111-1307 USA. */
  22314. + License along with the GNU C Library; if not, see
  22315. + <http://www.gnu.org/licenses/>. */
  22316. #ifndef _LANGINFO_H
  22317. #define _LANGINFO_H 1
  22318. diff -Nur uClibc-0.9.33.2/include/libc-internal.h uClibc-git/include/libc-internal.h
  22319. --- uClibc-0.9.33.2/include/libc-internal.h 2012-05-15 09:20:09.000000000 +0200
  22320. +++ uClibc-git/include/libc-internal.h 2014-02-03 12:32:56.000000000 +0100
  22321. @@ -12,9 +12,8 @@
  22322. Lesser General Public License for more details.
  22323. You should have received a copy of the GNU Lesser General Public
  22324. - License along with the GNU C Library; if not, write to the Free
  22325. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22326. - 02111-1307 USA. */
  22327. + License along with the GNU C Library; if not, see
  22328. + <http://www.gnu.org/licenses/>. */
  22329. #ifndef _LIBC_INTERNAL_H
  22330. #define _LIBC_INTERNAL_H 1
  22331. @@ -29,6 +28,9 @@
  22332. #ifdef __UCLIBC_HAS_TLS__
  22333. # define attribute_tls_model_ie __attribute__ ((tls_model ("initial-exec")))
  22334. +#else
  22335. +# define attribute_tls_model_ie
  22336. +# define __thread
  22337. #endif
  22338. /* Pull in things like __attribute_used__ */
  22339. @@ -44,12 +46,12 @@
  22340. # include <stddef.h>
  22341. /* sources are built w/ _GNU_SOURCE, this gets undefined */
  22342. -#ifdef __USE_GNU
  22343. -extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
  22344. -libc_hidden_proto(__xpg_strerror_r)
  22345. -#else
  22346. +#if defined __USE_XOPEN2K && !defined __USE_GNU
  22347. extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen);
  22348. libc_hidden_proto(__glibc_strerror_r)
  22349. +#else
  22350. +extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
  22351. +libc_hidden_proto(__xpg_strerror_r)
  22352. #endif
  22353. /* #include <pthread.h> */
  22354. @@ -70,6 +72,10 @@
  22355. libc_hidden_proto(__chk_fail)
  22356. # endif
  22357. +# ifdef __UCLIBC_HAS_SSP__
  22358. +extern void __stack_chk_fail(void) attribute_noreturn __cold;
  22359. +# endif
  22360. +
  22361. # endif /* IS_IN_libc */
  22362. #endif /* __ASSEMBLER__ */
  22363. diff -Nur uClibc-0.9.33.2/include/libc-symbols.h uClibc-git/include/libc-symbols.h
  22364. --- uClibc-0.9.33.2/include/libc-symbols.h 2012-05-15 09:20:09.000000000 +0200
  22365. +++ uClibc-git/include/libc-symbols.h 2014-02-03 12:32:56.000000000 +0100
  22366. @@ -15,9 +15,8 @@
  22367. Lesser General Public License for more details.
  22368. You should have received a copy of the GNU Lesser General Public
  22369. - License along with the GNU C Library; if not, write to the Free
  22370. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22371. - 02111-1307 USA. */
  22372. + License along with the GNU C Library; if not, see
  22373. + <http://www.gnu.org/licenses/>. */
  22374. #ifndef _LIBC_SYMBOLS_H
  22375. #define _LIBC_SYMBOLS_H 1
  22376. @@ -196,12 +195,12 @@
  22377. # define _strong_alias_untyped(name, aliasname) \
  22378. extern __typeof (aliasname) aliasname __attribute__ ((alias (#name)));
  22379. +# ifdef HAVE_WEAK_SYMBOLS
  22380. +
  22381. /* This comes between the return type and function name in
  22382. a function definition to make that definition weak. */
  22383. -# define weak_function __attribute__ ((weak))
  22384. -# define weak_const_function __attribute__ ((weak, __const__))
  22385. -
  22386. -# ifdef HAVE_WEAK_SYMBOLS
  22387. +# define weak_function __attribute__ ((weak))
  22388. +# define weak_const_function __attribute__ ((weak, __const__))
  22389. /* Define ALIASNAME as a weak alias for NAME.
  22390. If weak aliases are not available, this defines a strong alias. */
  22391. @@ -215,6 +214,9 @@
  22392. # else
  22393. +# define weak_function /* empty */
  22394. +# define weak_const_function __attribute__ ((__const__))
  22395. +
  22396. # define weak_alias(name, aliasname) strong_alias(name, aliasname)
  22397. # define weak_extern(symbol) /* Nothing. */
  22398. diff -Nur uClibc-0.9.33.2/include/libgen.h uClibc-git/include/libgen.h
  22399. --- uClibc-0.9.33.2/include/libgen.h 2012-05-15 09:20:09.000000000 +0200
  22400. +++ uClibc-git/include/libgen.h 2014-02-03 12:32:56.000000000 +0100
  22401. @@ -12,9 +12,8 @@
  22402. Lesser General Public License for more details.
  22403. You should have received a copy of the GNU Lesser General Public
  22404. - License along with the GNU C Library; if not, write to the Free
  22405. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22406. - 02111-1307 USA. */
  22407. + License along with the GNU C Library; if not, see
  22408. + <http://www.gnu.org/licenses/>. */
  22409. #ifndef _LIBGEN_H
  22410. #define _LIBGEN_H 1
  22411. diff -Nur uClibc-0.9.33.2/include/libintl.h uClibc-git/include/libintl.h
  22412. --- uClibc-0.9.33.2/include/libintl.h 2012-05-15 09:20:09.000000000 +0200
  22413. +++ uClibc-git/include/libintl.h 2014-02-03 12:32:56.000000000 +0100
  22414. @@ -14,15 +14,16 @@
  22415. Lesser General Public License for more details.
  22416. You should have received a copy of the GNU Lesser General Public
  22417. - License along with the GNU C Library; if not, write to the Free
  22418. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22419. - 02111-1307 USA. */
  22420. + License along with the GNU C Library; if not, see
  22421. + <http://www.gnu.org/licenses/>. */
  22422. #ifndef _LIBINTL_H
  22423. #define _LIBINTL_H 1
  22424. #include <features.h>
  22425. +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
  22426. +
  22427. /* We define an additional symbol to signal that we use the GNU
  22428. implementation of gettext. */
  22429. #define __USE_GNU_GETTEXT 1
  22430. @@ -37,46 +38,46 @@
  22431. /* Look up MSGID in the current default message catalog for the current
  22432. LC_MESSAGES locale. If not found, returns MSGID itself (the default
  22433. text). */
  22434. -extern char *gettext (__const char *__msgid)
  22435. +extern char *gettext (const char *__msgid)
  22436. __THROW __attribute_format_arg__ (1);
  22437. /* Look up MSGID in the DOMAINNAME message catalog for the current
  22438. LC_MESSAGES locale. */
  22439. -extern char *dgettext (__const char *__domainname, __const char *__msgid)
  22440. +extern char *dgettext (const char *__domainname, const char *__msgid)
  22441. __THROW __attribute_format_arg__ (2);
  22442. #if 0 /* uClibc: disabled */
  22443. -extern char *__dgettext (__const char *__domainname, __const char *__msgid)
  22444. +extern char *__dgettext (const char *__domainname, const char *__msgid)
  22445. __THROW __attribute_format_arg__ (2);
  22446. #endif
  22447. /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
  22448. locale. */
  22449. -extern char *dcgettext (__const char *__domainname,
  22450. - __const char *__msgid, int __category)
  22451. +extern char *dcgettext (const char *__domainname,
  22452. + const char *__msgid, int __category)
  22453. __THROW __attribute_format_arg__ (2);
  22454. #if 0 /* uClibc: disabled */
  22455. -extern char *__dcgettext (__const char *__domainname,
  22456. - __const char *__msgid, int __category)
  22457. +extern char *__dcgettext (const char *__domainname,
  22458. + const char *__msgid, int __category)
  22459. __THROW __attribute_format_arg__ (2);
  22460. #endif
  22461. /* Similar to `gettext' but select the plural form corresponding to the
  22462. number N. */
  22463. -extern char *ngettext (__const char *__msgid1, __const char *__msgid2,
  22464. +extern char *ngettext (const char *__msgid1, const char *__msgid2,
  22465. unsigned long int __n)
  22466. __THROW __attribute_format_arg__ (1) __attribute_format_arg__ (2);
  22467. /* Similar to `dgettext' but select the plural form corresponding to the
  22468. number N. */
  22469. -extern char *dngettext (__const char *__domainname, __const char *__msgid1,
  22470. - __const char *__msgid2, unsigned long int __n)
  22471. +extern char *dngettext (const char *__domainname, const char *__msgid1,
  22472. + const char *__msgid2, unsigned long int __n)
  22473. __THROW __attribute_format_arg__ (2) __attribute_format_arg__ (3);
  22474. /* Similar to `dcgettext' but select the plural form corresponding to the
  22475. number N. */
  22476. -extern char *dcngettext (__const char *__domainname, __const char *__msgid1,
  22477. - __const char *__msgid2, unsigned long int __n,
  22478. +extern char *dcngettext (const char *__domainname, const char *__msgid1,
  22479. + const char *__msgid2, unsigned long int __n,
  22480. int __category)
  22481. __THROW __attribute_format_arg__ (2) __attribute_format_arg__ (3);
  22482. @@ -84,17 +85,17 @@
  22483. /* Set the current default message catalog to DOMAINNAME.
  22484. If DOMAINNAME is null, return the current default.
  22485. If DOMAINNAME is "", reset to the default of "messages". */
  22486. -extern char *textdomain (__const char *__domainname) __THROW;
  22487. +extern char *textdomain (const char *__domainname) __THROW;
  22488. /* Specify that the DOMAINNAME message catalog will be found
  22489. in DIRNAME rather than in the system locale data base. */
  22490. -extern char *bindtextdomain (__const char *__domainname,
  22491. - __const char *__dirname) __THROW;
  22492. +extern char *bindtextdomain (const char *__domainname,
  22493. + const char *__dirname) __THROW;
  22494. /* Specify the character encoding in which the messages from the
  22495. DOMAINNAME message catalog will be returned. */
  22496. -extern char *bind_textdomain_codeset (__const char *__domainname,
  22497. - __const char *__codeset) __THROW;
  22498. +extern char *bind_textdomain_codeset (const char *__domainname,
  22499. + const char *__codeset) __THROW;
  22500. /* Optimized version of the function above. */
  22501. @@ -125,4 +126,15 @@
  22502. __END_DECLS
  22503. +#else
  22504. +
  22505. +#define gettext(msgid) ((const char *) (msgid))
  22506. +
  22507. +#endif /* __UCLIBC_HAS_GETTEXT_AWARENESS__ */
  22508. +
  22509. +#ifdef _LIBC
  22510. +# define _(x) gettext(x)
  22511. +# define N_(x) x
  22512. +#endif
  22513. +
  22514. #endif /* libintl.h */
  22515. diff -Nur uClibc-0.9.33.2/include/limits.h uClibc-git/include/limits.h
  22516. --- uClibc-0.9.33.2/include/limits.h 2012-05-15 09:20:09.000000000 +0200
  22517. +++ uClibc-git/include/limits.h 2014-02-03 12:32:56.000000000 +0100
  22518. @@ -13,9 +13,8 @@
  22519. Lesser General Public License for more details.
  22520. You should have received a copy of the GNU Lesser General Public
  22521. - License along with the GNU C Library; if not, write to the Free
  22522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22523. - 02111-1307 USA. */
  22524. + License along with the GNU C Library; if not, see
  22525. + <http://www.gnu.org/licenses/>. */
  22526. /*
  22527. * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h>
  22528. diff -Nur uClibc-0.9.33.2/include/link.h uClibc-git/include/link.h
  22529. --- uClibc-0.9.33.2/include/link.h 2012-05-15 09:20:09.000000000 +0200
  22530. +++ uClibc-git/include/link.h 2014-02-03 12:32:56.000000000 +0100
  22531. @@ -14,9 +14,8 @@
  22532. Lesser General Public License for more details.
  22533. You should have received a copy of the GNU Lesser General Public
  22534. - License along with the GNU C Library; if not, write to the Free
  22535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22536. - 02111-1307 USA. */
  22537. + License along with the GNU C Library; if not, see
  22538. + <http://www.gnu.org/licenses/>. */
  22539. #ifndef _LINK_H
  22540. #define _LINK_H 1
  22541. @@ -110,7 +109,7 @@
  22542. char *l_name; /* Absolute file name object was found in. */
  22543. ElfW(Dyn) *l_ld; /* Dynamic section of the shared object. */
  22544. struct link_map *l_next, *l_prev; /* Chain of loaded objects. */
  22545. -
  22546. +#ifdef _LIBC
  22547. #if defined(USE_TLS) && USE_TLS
  22548. /* Thread-local storage related info. */
  22549. @@ -134,6 +133,7 @@
  22550. /* Nonzero if _dl_init_static_tls should be called for this module */
  22551. unsigned int l_need_tls_init:1;
  22552. #endif
  22553. +#endif
  22554. };
  22555. #ifdef __USE_GNU
  22556. diff -Nur uClibc-0.9.33.2/include/locale.h uClibc-git/include/locale.h
  22557. --- uClibc-0.9.33.2/include/locale.h 2012-05-15 09:20:09.000000000 +0200
  22558. +++ uClibc-git/include/locale.h 2014-02-03 12:32:56.000000000 +0100
  22559. @@ -12,9 +12,8 @@
  22560. Lesser General Public License for more details.
  22561. You should have received a copy of the GNU Lesser General Public
  22562. - License along with the GNU C Library; if not, write to the Free
  22563. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22564. - 02111-1307 USA. */
  22565. + License along with the GNU C Library; if not, see
  22566. + <http://www.gnu.org/licenses/>. */
  22567. /*
  22568. * ISO C99 Standard: 7.11 Localization <locale.h>
  22569. @@ -124,7 +123,7 @@
  22570. /* Set and/or return the current locale. */
  22571. -extern char *setlocale (int __category, __const char *__locale) __THROW;
  22572. +extern char *setlocale (int __category, const char *__locale) __THROW;
  22573. /* Return the numeric/monetary information for the current locale. */
  22574. extern struct lconv *localeconv (void) __THROW;
  22575. @@ -133,7 +132,7 @@
  22576. __END_NAMESPACE_STD
  22577. -#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_LOCALE__
  22578. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  22579. /* The concept of one static locale per category is not very well
  22580. thought out. Many applications will need to process its data using
  22581. information from several different locales. Another application is
  22582. @@ -145,19 +144,14 @@
  22583. Attention: all these functions are *not* standardized in any form.
  22584. This is a proof-of-concept implementation. */
  22585. -#ifdef __UCLIBC_HAS_XLOCALE__
  22586. /* Get locale datatype definition. */
  22587. # include <xlocale.h>
  22588. -#endif
  22589. -
  22590. -/* POSIX 2008 makes locale_t official. */
  22591. -typedef __locale_t locale_t;
  22592. /* Return a reference to a data structure representing a set of locale
  22593. datasets. Unlike for the CATEGORY parameter for `setlocale' the
  22594. CATEGORY_MASK parameter here uses a single bit for each category,
  22595. made by OR'ing together LC_*_MASK bits above. */
  22596. -extern __locale_t newlocale (int __category_mask, __const char *__locale,
  22597. +extern __locale_t newlocale (int __category_mask, const char *__locale,
  22598. __locale_t __base) __THROW;
  22599. libc_hidden_proto(newlocale)
  22600. diff -Nur uClibc-0.9.33.2/include/malloc.h uClibc-git/include/malloc.h
  22601. --- uClibc-0.9.33.2/include/malloc.h 2012-05-15 09:20:09.000000000 +0200
  22602. +++ uClibc-git/include/malloc.h 2014-02-03 12:32:56.000000000 +0100
  22603. @@ -13,9 +13,8 @@
  22604. Lesser General Public License for more details.
  22605. You should have received a copy of the GNU Lesser General Public
  22606. - License along with the GNU C Library; if not, write to the Free
  22607. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22608. - 02111-1307 USA. */
  22609. + License along with the GNU C Library; if not, see
  22610. + <http://www.gnu.org/licenses/>. */
  22611. #ifndef _MALLOC_H
  22612. #define _MALLOC_H 1
  22613. @@ -124,9 +123,12 @@
  22614. /* Allocate SIZE bytes allocated to ALIGNMENT bytes. */
  22615. extern __malloc_ptr_t memalign __MALLOC_P ((size_t __alignment, size_t __size));
  22616. +libc_hidden_proto(memalign)
  22617. +#ifdef __UCLIBC_SUSV2_LEGACY__
  22618. /* Allocate SIZE bytes on a page boundary. */
  22619. extern __malloc_ptr_t valloc __MALLOC_P ((size_t __size)) __attribute_malloc__;
  22620. +#endif
  22621. #ifdef __MALLOC_STANDARD__
  22622. diff -Nur uClibc-0.9.33.2/include/math.h uClibc-git/include/math.h
  22623. --- uClibc-0.9.33.2/include/math.h 2012-05-15 09:20:09.000000000 +0200
  22624. +++ uClibc-git/include/math.h 2014-02-03 12:32:56.000000000 +0100
  22625. @@ -14,9 +14,8 @@
  22626. Lesser General Public License for more details.
  22627. You should have received a copy of the GNU Lesser General Public
  22628. - License along with the GNU C Library; if not, write to the Free
  22629. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22630. - 02111-1307 USA. */
  22631. + License along with the GNU C Library; if not, see
  22632. + <http://www.gnu.org/licenses/>. */
  22633. /*
  22634. * ISO C99 Standard: 7.12 Mathematics <math.h>
  22635. diff -Nur uClibc-0.9.33.2/include/memory.h uClibc-git/include/memory.h
  22636. --- uClibc-0.9.33.2/include/memory.h 2012-05-15 09:20:09.000000000 +0200
  22637. +++ uClibc-git/include/memory.h 2014-02-03 12:32:56.000000000 +0100
  22638. @@ -12,9 +12,8 @@
  22639. Lesser General Public License for more details.
  22640. You should have received a copy of the GNU Lesser General Public
  22641. - License along with the GNU C Library; if not, write to the Free
  22642. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22643. - 02111-1307 USA. */
  22644. + License along with the GNU C Library; if not, see
  22645. + <http://www.gnu.org/licenses/>. */
  22646. /*
  22647. * SVID
  22648. diff -Nur uClibc-0.9.33.2/include/mntent.h uClibc-git/include/mntent.h
  22649. --- uClibc-0.9.33.2/include/mntent.h 2012-05-15 09:20:09.000000000 +0200
  22650. +++ uClibc-git/include/mntent.h 2014-02-03 12:32:56.000000000 +0100
  22651. @@ -13,9 +13,8 @@
  22652. Lesser General Public License for more details.
  22653. You should have received a copy of the GNU Lesser General Public
  22654. - License along with the GNU C Library; if not, write to the Free
  22655. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22656. - 02111-1307 USA. */
  22657. + License along with the GNU C Library; if not, see
  22658. + <http://www.gnu.org/licenses/>. */
  22659. #ifndef _MNTENT_H
  22660. #define _MNTENT_H 1
  22661. @@ -64,7 +63,7 @@
  22662. /* Prepare to begin reading and/or writing mount table entries from the
  22663. beginning of FILE. MODE is as for `fopen'. */
  22664. -extern FILE *setmntent (__const char *__file, __const char *__mode) __THROW;
  22665. +extern FILE *setmntent (const char *__file, const char *__mode) __THROW;
  22666. libc_hidden_proto(setmntent)
  22667. /* Read one mount table entry from STREAM. Returns a pointer to storage
  22668. @@ -84,7 +83,7 @@
  22669. /* Write the mount table entry described by MNT to STREAM.
  22670. Return zero on success, nonzero on failure. */
  22671. extern int addmntent (FILE *__restrict __stream,
  22672. - __const struct mntent *__restrict __mnt) __THROW;
  22673. + const struct mntent *__restrict __mnt) __THROW;
  22674. /* Close a stream opened with `setmntent'. */
  22675. extern int endmntent (FILE *__stream) __THROW;
  22676. @@ -92,8 +91,8 @@
  22677. /* Search MNT->mnt_opts for an option matching OPT.
  22678. Returns the address of the substring, or null if none found. */
  22679. -extern char *hasmntopt (__const struct mntent *__mnt,
  22680. - __const char *__opt) __THROW;
  22681. +extern char *hasmntopt (const struct mntent *__mnt,
  22682. + const char *__opt) __THROW;
  22683. __END_DECLS
  22684. diff -Nur uClibc-0.9.33.2/include/mqueue.h uClibc-git/include/mqueue.h
  22685. --- uClibc-0.9.33.2/include/mqueue.h 2012-05-15 09:20:09.000000000 +0200
  22686. +++ uClibc-git/include/mqueue.h 2014-02-03 12:32:56.000000000 +0100
  22687. @@ -12,9 +12,8 @@
  22688. Lesser General Public License for more details.
  22689. You should have received a copy of the GNU Lesser General Public
  22690. - License along with the GNU C Library; if not, write to the Free
  22691. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22692. - 02111-1307 USA. */
  22693. + License along with the GNU C Library; if not, see
  22694. + <http://www.gnu.org/licenses/>. */
  22695. #ifndef _MQUEUE_H
  22696. #define _MQUEUE_H 1
  22697. diff -Nur uClibc-0.9.33.2/include/net/ethernet.h uClibc-git/include/net/ethernet.h
  22698. --- uClibc-0.9.33.2/include/net/ethernet.h 2012-05-15 09:20:09.000000000 +0200
  22699. +++ uClibc-git/include/net/ethernet.h 2014-02-03 12:32:56.000000000 +0100
  22700. @@ -12,9 +12,8 @@
  22701. Lesser General Public License for more details.
  22702. You should have received a copy of the GNU Lesser General Public
  22703. - License along with the GNU C Library; if not, write to the Free
  22704. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22705. - 02111-1307 USA. */
  22706. + License along with the GNU C Library; if not, see
  22707. + <http://www.gnu.org/licenses/>. */
  22708. /* Based on the FreeBSD version of this file. Curiously, that file
  22709. lacks a copyright in the header. */
  22710. diff -Nur uClibc-0.9.33.2/include/net/if_arp.h uClibc-git/include/net/if_arp.h
  22711. --- uClibc-0.9.33.2/include/net/if_arp.h 2012-05-15 09:20:09.000000000 +0200
  22712. +++ uClibc-git/include/net/if_arp.h 2014-02-03 12:32:56.000000000 +0100
  22713. @@ -14,9 +14,8 @@
  22714. Lesser General Public License for more details.
  22715. You should have received a copy of the GNU Lesser General Public
  22716. - License along with the GNU C Library; if not, write to the Free
  22717. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22718. - 02111-1307 USA. */
  22719. + License along with the GNU C Library; if not, see
  22720. + <http://www.gnu.org/licenses/>. */
  22721. /* Based on the 4.4BSD and Linux version of this file. */
  22722. diff -Nur uClibc-0.9.33.2/include/net/if.h uClibc-git/include/net/if.h
  22723. --- uClibc-0.9.33.2/include/net/if.h 2012-05-15 09:20:09.000000000 +0200
  22724. +++ uClibc-git/include/net/if.h 2014-02-03 12:32:56.000000000 +0100
  22725. @@ -13,9 +13,8 @@
  22726. Lesser General Public License for more details.
  22727. You should have received a copy of the GNU Lesser General Public
  22728. - License along with the GNU C Library; if not, write to the Free
  22729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22730. - 02111-1307 USA. */
  22731. + License along with the GNU C Library; if not, see
  22732. + <http://www.gnu.org/licenses/>. */
  22733. #ifndef _NET_IF_H
  22734. #define _NET_IF_H 1
  22735. @@ -191,7 +190,7 @@
  22736. __BEGIN_DECLS
  22737. /* Convert an interface name to an index, and vice versa. */
  22738. -extern unsigned int if_nametoindex (__const char *__ifname) __THROW;
  22739. +extern unsigned int if_nametoindex (const char *__ifname) __THROW;
  22740. libc_hidden_proto(if_nametoindex)
  22741. extern char *if_indextoname (unsigned int __ifindex, char *__ifname) __THROW;
  22742. diff -Nur uClibc-0.9.33.2/include/net/if_packet.h uClibc-git/include/net/if_packet.h
  22743. --- uClibc-0.9.33.2/include/net/if_packet.h 2012-05-15 09:20:09.000000000 +0200
  22744. +++ uClibc-git/include/net/if_packet.h 2014-02-03 12:32:56.000000000 +0100
  22745. @@ -13,9 +13,8 @@
  22746. Lesser General Public License for more details.
  22747. You should have received a copy of the GNU Lesser General Public
  22748. - License along with the GNU C Library; if not, write to the Free
  22749. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22750. - 02111-1307 USA. */
  22751. + License along with the GNU C Library; if not, see
  22752. + <http://www.gnu.org/licenses/>. */
  22753. #ifndef __IF_PACKET_H
  22754. #define __IF_PACKET_H
  22755. diff -Nur uClibc-0.9.33.2/include/net/if_shaper.h uClibc-git/include/net/if_shaper.h
  22756. --- uClibc-0.9.33.2/include/net/if_shaper.h 2012-05-15 09:20:09.000000000 +0200
  22757. +++ uClibc-git/include/net/if_shaper.h 2014-02-03 12:32:56.000000000 +0100
  22758. @@ -12,9 +12,8 @@
  22759. Lesser General Public License for more details.
  22760. You should have received a copy of the GNU Lesser General Public
  22761. - License along with the GNU C Library; if not, write to the Free
  22762. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22763. - 02111-1307 USA. */
  22764. + License along with the GNU C Library; if not, see
  22765. + <http://www.gnu.org/licenses/>. */
  22766. #ifndef _NET_IF_SHAPER_H
  22767. #define _NET_IF_SHAPER_H 1
  22768. diff -Nur uClibc-0.9.33.2/include/net/if_slip.h uClibc-git/include/net/if_slip.h
  22769. --- uClibc-0.9.33.2/include/net/if_slip.h 2012-05-15 09:20:09.000000000 +0200
  22770. +++ uClibc-git/include/net/if_slip.h 2014-02-03 12:32:56.000000000 +0100
  22771. @@ -12,9 +12,8 @@
  22772. Lesser General Public License for more details.
  22773. You should have received a copy of the GNU Lesser General Public
  22774. - License along with the GNU C Library; if not, write to the Free
  22775. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22776. - 02111-1307 USA. */
  22777. + License along with the GNU C Library; if not, see
  22778. + <http://www.gnu.org/licenses/>. */
  22779. #ifndef _NET_IF_SLIP_H
  22780. #define _NET_IF_SLIP_H 1
  22781. diff -Nur uClibc-0.9.33.2/include/net/route.h uClibc-git/include/net/route.h
  22782. --- uClibc-0.9.33.2/include/net/route.h 2012-05-15 09:20:09.000000000 +0200
  22783. +++ uClibc-git/include/net/route.h 2014-02-03 12:32:56.000000000 +0100
  22784. @@ -12,9 +12,8 @@
  22785. Lesser General Public License for more details.
  22786. You should have received a copy of the GNU Lesser General Public
  22787. - License along with the GNU C Library; if not, write to the Free
  22788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22789. - 02111-1307 USA. */
  22790. + License along with the GNU C Library; if not, see
  22791. + <http://www.gnu.org/licenses/>. */
  22792. /* Based on the 4.4BSD and Linux version of this file. */
  22793. diff -Nur uClibc-0.9.33.2/include/netax25/ax25.h uClibc-git/include/netax25/ax25.h
  22794. --- uClibc-0.9.33.2/include/netax25/ax25.h 2012-05-15 09:20:09.000000000 +0200
  22795. +++ uClibc-git/include/netax25/ax25.h 2014-02-03 12:32:56.000000000 +0100
  22796. @@ -12,9 +12,8 @@
  22797. Lesser General Public License for more details.
  22798. You should have received a copy of the GNU Lesser General Public
  22799. - License along with the GNU C Library; if not, write to the Free
  22800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22801. - 02111-1307 USA. */
  22802. + License along with the GNU C Library; if not, see
  22803. + <http://www.gnu.org/licenses/>. */
  22804. #ifndef _NETAX25_AX25_H
  22805. #define _NETAX25_AX25_H 1
  22806. diff -Nur uClibc-0.9.33.2/include/netdb.h uClibc-git/include/netdb.h
  22807. --- uClibc-0.9.33.2/include/netdb.h 2012-05-15 09:20:09.000000000 +0200
  22808. +++ uClibc-git/include/netdb.h 2014-02-03 12:32:56.000000000 +0100
  22809. @@ -1,4 +1,4 @@
  22810. -/* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc.
  22811. +/* Copyright (C) 1996-2002, 2003, 2004, 2009 Free Software Foundation, Inc.
  22812. This file is part of the GNU C Library.
  22813. The GNU C Library is free software; you can redistribute it and/or
  22814. @@ -12,9 +12,8 @@
  22815. Lesser General Public License for more details.
  22816. You should have received a copy of the GNU Lesser General Public
  22817. - License along with the GNU C Library; if not, write to the Free
  22818. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  22819. - 02111-1307 USA. */
  22820. + License along with the GNU C Library; if not, see
  22821. + <http://www.gnu.org/licenses/>. */
  22822. /* All data returned by the network data base library are supplied in
  22823. host order and returned in network order (suitable for use in
  22824. @@ -59,6 +58,11 @@
  22825. /* Function to get address of global `h_errno' variable. */
  22826. extern int *__h_errno_location (void) __THROW __attribute__ ((__const__));
  22827. +#ifdef _LIBC
  22828. +# if !defined(__UCLIBC_HAS_TLS__) && !defined(__UCLIBC_HAS_THREADS__)
  22829. +extern int weak_const_function *__h_errno_location(void);
  22830. +# endif
  22831. +#endif
  22832. libc_hidden_proto(__h_errno_location)
  22833. /* Macros for accessing h_errno from inside libc. */
  22834. @@ -88,8 +92,6 @@
  22835. #endif /* _LIBC */
  22836. /* Possible values left in `h_errno'. */
  22837. -#define NETDB_INTERNAL -1 /* See errno. */
  22838. -#define NETDB_SUCCESS 0 /* No problem. */
  22839. #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */
  22840. #define TRY_AGAIN 2 /* Non-Authoritative Host not found,
  22841. or SERVERFAIL. */
  22842. @@ -97,7 +99,11 @@
  22843. NOTIMP. */
  22844. #define NO_DATA 4 /* Valid name, no data record of requested
  22845. type. */
  22846. -#define NO_ADDRESS NO_DATA /* No address, look for MX record. */
  22847. +#if defined __USE_MISC || defined __USE_GNU
  22848. +# define NETDB_INTERNAL -1 /* See errno. */
  22849. +# define NETDB_SUCCESS 0 /* No problem. */
  22850. +# define NO_ADDRESS NO_DATA /* No address, look for MX record. */
  22851. +#endif
  22852. #ifdef __USE_XOPEN2K
  22853. /* Highest reserved Internet port number. */
  22854. @@ -109,13 +115,15 @@
  22855. # define SCOPE_DELIMITER '%'
  22856. #endif
  22857. +#if defined __USE_MISC || defined __USE_GNU
  22858. /* Print error indicated by `h_errno' variable on standard error. STR
  22859. if non-null is printed before the error string. */
  22860. -extern void herror (__const char *__str) __THROW;
  22861. +extern void herror (const char *__str) __THROW;
  22862. libc_hidden_proto(herror)
  22863. /* Return string associated with error ERR_NUM. */
  22864. -extern __const char *hstrerror (int __err_num) __THROW;
  22865. +extern const char *hstrerror (int __err_num) __THROW;
  22866. +#endif
  22867. /* Description of data base entry for a single host. */
  22868. @@ -126,7 +134,9 @@
  22869. int h_addrtype; /* Host address type. */
  22870. int h_length; /* Length of address. */
  22871. char **h_addr_list; /* List of addresses from name server. */
  22872. -#define h_addr h_addr_list[0] /* Address, for backward compatibility. */
  22873. +#if defined __USE_MISC || defined __USE_GNU
  22874. +# define h_addr h_addr_list[0] /* Address, for backward compatibility.*/
  22875. +#endif
  22876. };
  22877. /* Open host data base files and mark them as staying open even after
  22878. @@ -154,7 +164,7 @@
  22879. This function is a possible cancellation point and therefore not
  22880. marked with __THROW. */
  22881. -extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len,
  22882. +extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
  22883. int __type);
  22884. libc_hidden_proto(gethostbyaddr)
  22885. @@ -162,7 +172,7 @@
  22886. This function is a possible cancellation point and therefore not
  22887. marked with __THROW. */
  22888. -extern struct hostent *gethostbyname (__const char *__name);
  22889. +extern struct hostent *gethostbyname (const char *__name);
  22890. libc_hidden_proto(gethostbyname)
  22891. #ifdef __USE_MISC
  22892. @@ -174,7 +184,7 @@
  22893. cancellation point. But due to similarity with an POSIX interface
  22894. or due to the implementation it is a cancellation point and
  22895. therefore not marked with __THROW. */
  22896. -extern struct hostent *gethostbyname2 (__const char *__name, int __af);
  22897. +extern struct hostent *gethostbyname2 (const char *__name, int __af);
  22898. libc_hidden_proto(gethostbyname2)
  22899. /* Reentrant versions of the functions above. The additional
  22900. @@ -193,7 +203,7 @@
  22901. int *__restrict __h_errnop);
  22902. libc_hidden_proto(gethostent_r)
  22903. -extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len,
  22904. +extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len,
  22905. int __type,
  22906. struct hostent *__restrict __result_buf,
  22907. char *__restrict __buf, size_t __buflen,
  22908. @@ -201,14 +211,14 @@
  22909. int *__restrict __h_errnop);
  22910. libc_hidden_proto(gethostbyaddr_r)
  22911. -extern int gethostbyname_r (__const char *__restrict __name,
  22912. +extern int gethostbyname_r (const char *__restrict __name,
  22913. struct hostent *__restrict __result_buf,
  22914. char *__restrict __buf, size_t __buflen,
  22915. struct hostent **__restrict __result,
  22916. int *__restrict __h_errnop);
  22917. libc_hidden_proto(gethostbyname_r)
  22918. -extern int gethostbyname2_r (__const char *__restrict __name, int __af,
  22919. +extern int gethostbyname2_r (const char *__restrict __name, int __af,
  22920. struct hostent *__restrict __result_buf,
  22921. char *__restrict __buf, size_t __buflen,
  22922. struct hostent **__restrict __result,
  22923. @@ -250,7 +260,7 @@
  22924. This function is a possible cancellation point and therefore not
  22925. marked with __THROW. */
  22926. -extern struct netent *getnetbyname (__const char *__name);
  22927. +extern struct netent *getnetbyname (const char *__name);
  22928. #ifdef __USE_MISC
  22929. /* Reentrant versions of the functions above. The additional
  22930. @@ -268,13 +278,15 @@
  22931. struct netent **__restrict __result,
  22932. int *__restrict __h_errnop);
  22933. libc_hidden_proto(getnetent_r)
  22934. +
  22935. extern int getnetbyaddr_r (uint32_t __net, int __type,
  22936. struct netent *__restrict __result_buf,
  22937. char *__restrict __buf, size_t __buflen,
  22938. struct netent **__restrict __result,
  22939. int *__restrict __h_errnop);
  22940. libc_hidden_proto(getnetbyaddr_r)
  22941. -extern int getnetbyname_r (__const char *__restrict __name,
  22942. +
  22943. +extern int getnetbyname_r (const char *__restrict __name,
  22944. struct netent *__restrict __result_buf,
  22945. char *__restrict __buf, size_t __buflen,
  22946. struct netent **__restrict __result,
  22947. @@ -319,15 +331,15 @@
  22948. This function is a possible cancellation point and therefore not
  22949. marked with __THROW. */
  22950. -extern struct servent *getservbyname (__const char *__name,
  22951. - __const char *__proto);
  22952. +extern struct servent *getservbyname (const char *__name,
  22953. + const char *__proto);
  22954. /* Return entry from service data base which matches port PORT and
  22955. protocol PROTO.
  22956. This function is a possible cancellation point and therefore not
  22957. marked with __THROW. */
  22958. -extern struct servent *getservbyport (int __port, __const char *__proto);
  22959. +extern struct servent *getservbyport (int __port, const char *__proto);
  22960. libc_hidden_proto(getservbyport)
  22961. @@ -344,14 +356,14 @@
  22962. struct servent **__restrict __result);
  22963. libc_hidden_proto(getservent_r)
  22964. -extern int getservbyname_r (__const char *__restrict __name,
  22965. - __const char *__restrict __proto,
  22966. +extern int getservbyname_r (const char *__restrict __name,
  22967. + const char *__restrict __proto,
  22968. struct servent *__restrict __result_buf,
  22969. char *__restrict __buf, size_t __buflen,
  22970. struct servent **__restrict __result);
  22971. libc_hidden_proto(getservbyname_r)
  22972. -extern int getservbyport_r (int __port, __const char *__restrict __proto,
  22973. +extern int getservbyport_r (int __port, const char *__restrict __proto,
  22974. struct servent *__restrict __result_buf,
  22975. char *__restrict __buf, size_t __buflen,
  22976. struct servent **__restrict __result);
  22977. @@ -393,7 +405,7 @@
  22978. This function is a possible cancellation point and therefore not
  22979. marked with __THROW. */
  22980. -extern struct protoent *getprotobyname (__const char *__name);
  22981. +extern struct protoent *getprotobyname (const char *__name);
  22982. /* Return entry from protocol data base which number is PROTO.
  22983. @@ -415,7 +427,7 @@
  22984. struct protoent **__restrict __result);
  22985. libc_hidden_proto(getprotoent_r)
  22986. -extern int getprotobyname_r (__const char *__restrict __name,
  22987. +extern int getprotobyname_r (const char *__restrict __name,
  22988. struct protoent *__restrict __result_buf,
  22989. char *__restrict __buf, size_t __buflen,
  22990. struct protoent **__restrict __result);
  22991. @@ -435,7 +447,7 @@
  22992. cancellation point. But due to similarity with an POSIX interface
  22993. or due to the implementation it is a cancellation point and
  22994. therefore not marked with __THROW. */
  22995. -extern int setnetgrent (__const char *__netgroup);
  22996. +extern int setnetgrent (const char *__netgroup);
  22997. /* Free all space allocated by previous `setnetgrent' call.
  22998. @@ -463,8 +475,8 @@
  22999. cancellation point. But due to similarity with an POSIX interface
  23000. or due to the implementation it is a cancellation point and
  23001. therefore not marked with __THROW. */
  23002. -extern int innetgr (__const char *__netgroup, __const char *__host,
  23003. - __const char *__user, __const char *domain);
  23004. +extern int innetgr (const char *__netgroup, const char *__host,
  23005. + const char *__user, const char *__domain);
  23006. /* Reentrant version of `getnetgrent' where result is placed in BUFFER.
  23007. @@ -479,12 +491,12 @@
  23008. #endif /* UCLIBC_HAS_NETGROUP */
  23009. #endif /* misc */
  23010. -
  23011. +#ifdef __UCLIBC__
  23012. /* ruserpass - remote password check.
  23013. This function also exists in glibc but is undocumented */
  23014. extern int ruserpass(const char *host, const char **aname, const char **apass);
  23015. libc_hidden_proto(ruserpass)
  23016. -
  23017. +#endif
  23018. #ifdef __USE_BSD
  23019. /* Call `rshd' at port RPORT on remote machine *AHOST to execute CMD.
  23020. @@ -499,9 +511,9 @@
  23021. or due to the implementation it is a cancellation point and
  23022. therefore not marked with __THROW. */
  23023. extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
  23024. - __const char *__restrict __locuser,
  23025. - __const char *__restrict __remuser,
  23026. - __const char *__restrict __cmd, int *__restrict __fd2p);
  23027. + const char *__restrict __locuser,
  23028. + const char *__restrict __remuser,
  23029. + const char *__restrict __cmd, int *__restrict __fd2p);
  23030. #if 0
  23031. /* FIXME */
  23032. @@ -513,9 +525,9 @@
  23033. or due to the implementation it is a cancellation point and
  23034. therefore not marked with __THROW. */
  23035. extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
  23036. - __const char *__restrict __locuser,
  23037. - __const char *__restrict __remuser,
  23038. - __const char *__restrict __cmd, int *__restrict __fd2p,
  23039. + const char *__restrict __locuser,
  23040. + const char *__restrict __remuser,
  23041. + const char *__restrict __cmd, int *__restrict __fd2p,
  23042. sa_family_t __af);
  23043. #endif
  23044. @@ -530,9 +542,9 @@
  23045. or due to the implementation it is a cancellation point and
  23046. therefore not marked with __THROW. */
  23047. extern int rexec (char **__restrict __ahost, int __rport,
  23048. - __const char *__restrict __name,
  23049. - __const char *__restrict __pass,
  23050. - __const char *__restrict __cmd, int *__restrict __fd2p);
  23051. + const char *__restrict __name,
  23052. + const char *__restrict __pass,
  23053. + const char *__restrict __cmd, int *__restrict __fd2p);
  23054. /* This is the equivalent function where the protocol can be selected
  23055. and which therefore can be used for IPv6.
  23056. @@ -542,9 +554,9 @@
  23057. or due to the implementation it is a cancellation point and
  23058. therefore not marked with __THROW. */
  23059. extern int rexec_af (char **__restrict __ahost, int __rport,
  23060. - __const char *__restrict __name,
  23061. - __const char *__restrict __pass,
  23062. - __const char *__restrict __cmd, int *__restrict __fd2p,
  23063. + const char *__restrict __name,
  23064. + const char *__restrict __pass,
  23065. + const char *__restrict __cmd, int *__restrict __fd2p,
  23066. sa_family_t __af);
  23067. libc_hidden_proto(rexec_af)
  23068. @@ -556,8 +568,8 @@
  23069. cancellation point. But due to similarity with an POSIX interface
  23070. or due to the implementation it is a cancellation point and
  23071. therefore not marked with __THROW. */
  23072. -extern int ruserok (__const char *__rhost, int __suser,
  23073. - __const char *__remuser, __const char *__locuser);
  23074. +extern int ruserok (const char *__rhost, int __suser,
  23075. + const char *__remuser, const char *__locuser);
  23076. #if 0
  23077. /* FIXME */
  23078. @@ -568,8 +580,8 @@
  23079. cancellation point. But due to similarity with an POSIX interface
  23080. or due to the implementation it is a cancellation point and
  23081. therefore not marked with __THROW. */
  23082. -extern int ruserok_af (__const char *__rhost, int __suser,
  23083. - __const char *__remuser, __const char *__locuser,
  23084. +extern int ruserok_af (const char *__rhost, int __suser,
  23085. + const char *__remuser, const char *__locuser,
  23086. sa_family_t __af);
  23087. #endif
  23088. @@ -638,15 +650,15 @@
  23089. # define EAI_NONAME -2 /* NAME or SERVICE is unknown. */
  23090. # define EAI_AGAIN -3 /* Temporary failure in name resolution. */
  23091. # define EAI_FAIL -4 /* Non-recoverable failure in name res. */
  23092. -# define EAI_NODATA -5 /* No address associated with NAME. */
  23093. # define EAI_FAMILY -6 /* `ai_family' not supported. */
  23094. # define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */
  23095. # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */
  23096. -# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
  23097. # define EAI_MEMORY -10 /* Memory allocation failure. */
  23098. # define EAI_SYSTEM -11 /* System error returned in `errno'. */
  23099. # define EAI_OVERFLOW -12 /* Argument buffer overflow. */
  23100. # ifdef __USE_GNU
  23101. +# define EAI_NODATA -5 /* No address associated with NAME. */
  23102. +# define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */
  23103. # define EAI_INPROGRESS -100 /* Processing request in progress. */
  23104. # define EAI_CANCELED -101 /* Request canceled. */
  23105. # define EAI_NOTCANCELED -102 /* Request not canceled. */
  23106. @@ -655,8 +667,10 @@
  23107. # define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
  23108. # endif
  23109. -# define NI_MAXHOST 1025
  23110. -# define NI_MAXSERV 32
  23111. +# ifdef __USE_MISC
  23112. +# define NI_MAXHOST 1025
  23113. +# define NI_MAXSERV 32
  23114. +# endif
  23115. # define NI_NUMERICHOST 1 /* Don't try to look up hostname. */
  23116. # define NI_NUMERICSERV 2 /* Don't convert port number to name. */
  23117. @@ -676,9 +690,9 @@
  23118. This function is a possible cancellation point and therefore not
  23119. marked with __THROW. */
  23120. -extern int getaddrinfo (__const char *__restrict __name,
  23121. - __const char *__restrict __service,
  23122. - __const struct addrinfo *__restrict __req,
  23123. +extern int getaddrinfo (const char *__restrict __name,
  23124. + const char *__restrict __service,
  23125. + const struct addrinfo *__restrict __req,
  23126. struct addrinfo **__restrict __pai);
  23127. libc_hidden_proto(getaddrinfo)
  23128. @@ -687,13 +701,13 @@
  23129. libc_hidden_proto(freeaddrinfo)
  23130. /* Convert error return from getaddrinfo() to a string. */
  23131. -extern __const char *gai_strerror (int __ecode) __THROW;
  23132. +extern const char *gai_strerror (int __ecode) __THROW;
  23133. /* Translate a socket address to a location and service name.
  23134. This function is a possible cancellation point and therefore not
  23135. marked with __THROW. */
  23136. -extern int getnameinfo (__const struct sockaddr *__restrict __sa,
  23137. +extern int getnameinfo (const struct sockaddr *__restrict __sa,
  23138. socklen_t __salen, char *__restrict __host,
  23139. socklen_t __hostlen, char *__restrict __serv,
  23140. socklen_t __servlen, unsigned int __flags);
  23141. diff -Nur uClibc-0.9.33.2/include/neteconet/ec.h uClibc-git/include/neteconet/ec.h
  23142. --- uClibc-0.9.33.2/include/neteconet/ec.h 2012-05-15 09:20:09.000000000 +0200
  23143. +++ uClibc-git/include/neteconet/ec.h 2014-02-03 12:32:56.000000000 +0100
  23144. @@ -13,9 +13,8 @@
  23145. Lesser General Public License for more details.
  23146. You should have received a copy of the GNU Lesser General Public
  23147. - License along with the GNU C Library; if not, write to the Free
  23148. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23149. - 02111-1307 USA. */
  23150. + License along with the GNU C Library; if not, see
  23151. + <http://www.gnu.org/licenses/>. */
  23152. #ifndef _NETECONET_EC_H
  23153. #define _NETECONET_EC_H 1
  23154. diff -Nur uClibc-0.9.33.2/include/netinet/ether.h uClibc-git/include/netinet/ether.h
  23155. --- uClibc-0.9.33.2/include/netinet/ether.h 2012-05-15 09:20:09.000000000 +0200
  23156. +++ uClibc-git/include/netinet/ether.h 2014-02-03 12:32:56.000000000 +0100
  23157. @@ -13,9 +13,8 @@
  23158. Lesser General Public License for more details.
  23159. You should have received a copy of the GNU Lesser General Public
  23160. - License along with the GNU C Library; if not, write to the Free
  23161. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23162. - 02111-1307 USA. */
  23163. + License along with the GNU C Library; if not, see
  23164. + <http://www.gnu.org/licenses/>. */
  23165. #ifndef _NETINET_ETHER_H
  23166. #define _NETINET_ETHER_H 1
  23167. @@ -34,27 +33,27 @@
  23168. #if defined __UCLIBC_HAS_SOCKET__ || defined __UCLIBC_HAS_IPV4__ || \
  23169. defined __UCLIBC_HAS_IPV6__
  23170. /* Convert 48 bit Ethernet ADDRess to ASCII. */
  23171. -extern char *ether_ntoa (__const struct ether_addr *__addr) __THROW;
  23172. -extern char *ether_ntoa_r (__const struct ether_addr *__addr, char *__buf)
  23173. +extern char *ether_ntoa (const struct ether_addr *__addr) __THROW;
  23174. +extern char *ether_ntoa_r (const struct ether_addr *__addr, char *__buf)
  23175. __THROW;
  23176. libc_hidden_proto(ether_ntoa_r)
  23177. /* Convert ASCII string S to 48 bit Ethernet address. */
  23178. -extern struct ether_addr *ether_aton (__const char *__asc) __THROW;
  23179. -extern struct ether_addr *ether_aton_r (__const char *__asc,
  23180. +extern struct ether_addr *ether_aton (const char *__asc) __THROW;
  23181. +extern struct ether_addr *ether_aton_r (const char *__asc,
  23182. struct ether_addr *__addr) __THROW;
  23183. libc_hidden_proto(ether_aton_r)
  23184. /* Map 48 bit Ethernet number ADDR to HOSTNAME. */
  23185. -extern int ether_ntohost (char *__hostname, __const struct ether_addr *__addr)
  23186. +extern int ether_ntohost (char *__hostname, const struct ether_addr *__addr)
  23187. __THROW;
  23188. /* Map HOSTNAME to 48 bit Ethernet address. */
  23189. -extern int ether_hostton (__const char *__hostname, struct ether_addr *__addr)
  23190. +extern int ether_hostton (const char *__hostname, struct ether_addr *__addr)
  23191. __THROW;
  23192. /* Scan LINE and set ADDR and HOSTNAME. */
  23193. -extern int ether_line (__const char *__line, struct ether_addr *__addr,
  23194. +extern int ether_line (const char *__line, struct ether_addr *__addr,
  23195. char *__hostname) __THROW;
  23196. #endif
  23197. diff -Nur uClibc-0.9.33.2/include/netinet/icmp6.h uClibc-git/include/netinet/icmp6.h
  23198. --- uClibc-0.9.33.2/include/netinet/icmp6.h 2012-05-15 09:20:09.000000000 +0200
  23199. +++ uClibc-git/include/netinet/icmp6.h 2014-02-03 12:32:56.000000000 +0100
  23200. @@ -12,9 +12,8 @@
  23201. Lesser General Public License for more details.
  23202. You should have received a copy of the GNU Lesser General Public
  23203. - License along with the GNU C Library; if not, write to the Free
  23204. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23205. - 02111-1307 USA. */
  23206. + License along with the GNU C Library; if not, see
  23207. + <http://www.gnu.org/licenses/>. */
  23208. #ifndef _NETINET_ICMP6_H
  23209. #define _NETINET_ICMP6_H 1
  23210. diff -Nur uClibc-0.9.33.2/include/netinet/if_ether.h uClibc-git/include/netinet/if_ether.h
  23211. --- uClibc-0.9.33.2/include/netinet/if_ether.h 2012-05-15 09:20:09.000000000 +0200
  23212. +++ uClibc-git/include/netinet/if_ether.h 2014-02-03 12:32:56.000000000 +0100
  23213. @@ -12,9 +12,8 @@
  23214. Lesser General Public License for more details.
  23215. You should have received a copy of the GNU Lesser General Public
  23216. - License along with the GNU C Library; if not, write to the Free
  23217. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23218. - 02111-1307 USA. */
  23219. + License along with the GNU C Library; if not, see
  23220. + <http://www.gnu.org/licenses/>. */
  23221. #ifndef __NETINET_IF_ETHER_H
  23222. diff -Nur uClibc-0.9.33.2/include/netinet/if_fddi.h uClibc-git/include/netinet/if_fddi.h
  23223. --- uClibc-0.9.33.2/include/netinet/if_fddi.h 2012-05-15 09:20:09.000000000 +0200
  23224. +++ uClibc-git/include/netinet/if_fddi.h 2014-02-03 12:32:56.000000000 +0100
  23225. @@ -12,9 +12,8 @@
  23226. Lesser General Public License for more details.
  23227. You should have received a copy of the GNU Lesser General Public
  23228. - License along with the GNU C Library; if not, write to the Free
  23229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23230. - 02111-1307 USA. */
  23231. + License along with the GNU C Library; if not, see
  23232. + <http://www.gnu.org/licenses/>. */
  23233. #ifndef _NETINET_IF_FDDI_H
  23234. #define _NETINET_IF_FDDI_H 1
  23235. diff -Nur uClibc-0.9.33.2/include/netinet/if_tr.h uClibc-git/include/netinet/if_tr.h
  23236. --- uClibc-0.9.33.2/include/netinet/if_tr.h 2012-05-15 09:20:09.000000000 +0200
  23237. +++ uClibc-git/include/netinet/if_tr.h 2014-02-03 12:32:56.000000000 +0100
  23238. @@ -12,9 +12,8 @@
  23239. Lesser General Public License for more details.
  23240. You should have received a copy of the GNU Lesser General Public
  23241. - License along with the GNU C Library; if not, write to the Free
  23242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23243. - 02111-1307 USA. */
  23244. + License along with the GNU C Library; if not, see
  23245. + <http://www.gnu.org/licenses/>. */
  23246. #ifndef _NETINET_IF_TR_H
  23247. #define _NETINET_IF_TR_H 1
  23248. diff -Nur uClibc-0.9.33.2/include/netinet/igmp.h uClibc-git/include/netinet/igmp.h
  23249. --- uClibc-0.9.33.2/include/netinet/igmp.h 2012-05-15 09:20:09.000000000 +0200
  23250. +++ uClibc-git/include/netinet/igmp.h 2014-02-03 12:32:56.000000000 +0100
  23251. @@ -12,9 +12,8 @@
  23252. Lesser General Public License for more details.
  23253. You should have received a copy of the GNU Lesser General Public
  23254. - License along with the GNU C Library; if not, write to the Free
  23255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23256. - 02111-1307 USA. */
  23257. + License along with the GNU C Library; if not, see
  23258. + <http://www.gnu.org/licenses/>. */
  23259. #ifndef _NETINET_IGMP_H
  23260. #define _NETINET_IGMP_H 1
  23261. diff -Nur uClibc-0.9.33.2/include/netinet/in.h uClibc-git/include/netinet/in.h
  23262. --- uClibc-0.9.33.2/include/netinet/in.h 2012-05-15 09:20:09.000000000 +0200
  23263. +++ uClibc-git/include/netinet/in.h 2014-02-03 12:32:56.000000000 +0100
  23264. @@ -13,9 +13,8 @@
  23265. Lesser General Public License for more details.
  23266. You should have received a copy of the GNU Lesser General Public
  23267. - License along with the GNU C Library; if not, write to the Free
  23268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23269. - 02111-1307 USA. */
  23270. + License along with the GNU C Library; if not, see
  23271. + <http://www.gnu.org/licenses/>. */
  23272. #ifndef _NETINET_IN_H
  23273. #define _NETINET_IN_H 1
  23274. @@ -415,43 +414,43 @@
  23275. #if defined __UCLIBC_HAS_IPV6__ || !defined __UCLIBC_STRICT_HEADERS__
  23276. #define IN6_IS_ADDR_UNSPECIFIED(a) \
  23277. - (((__const uint32_t *) (a))[0] == 0 \
  23278. - && ((__const uint32_t *) (a))[1] == 0 \
  23279. - && ((__const uint32_t *) (a))[2] == 0 \
  23280. - && ((__const uint32_t *) (a))[3] == 0)
  23281. + (((const uint32_t *) (a))[0] == 0 \
  23282. + && ((const uint32_t *) (a))[1] == 0 \
  23283. + && ((const uint32_t *) (a))[2] == 0 \
  23284. + && ((const uint32_t *) (a))[3] == 0)
  23285. #define IN6_IS_ADDR_LOOPBACK(a) \
  23286. - (((__const uint32_t *) (a))[0] == 0 \
  23287. - && ((__const uint32_t *) (a))[1] == 0 \
  23288. - && ((__const uint32_t *) (a))[2] == 0 \
  23289. - && ((__const uint32_t *) (a))[3] == htonl (1))
  23290. + (((const uint32_t *) (a))[0] == 0 \
  23291. + && ((const uint32_t *) (a))[1] == 0 \
  23292. + && ((const uint32_t *) (a))[2] == 0 \
  23293. + && ((const uint32_t *) (a))[3] == htonl (1))
  23294. -#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
  23295. +#define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff)
  23296. #define IN6_IS_ADDR_LINKLOCAL(a) \
  23297. - ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  23298. + ((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  23299. == htonl (0xfe800000))
  23300. #define IN6_IS_ADDR_SITELOCAL(a) \
  23301. - ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  23302. + ((((const uint32_t *) (a))[0] & htonl (0xffc00000)) \
  23303. == htonl (0xfec00000))
  23304. #define IN6_IS_ADDR_V4MAPPED(a) \
  23305. - ((((__const uint32_t *) (a))[0] == 0) \
  23306. - && (((__const uint32_t *) (a))[1] == 0) \
  23307. - && (((__const uint32_t *) (a))[2] == htonl (0xffff)))
  23308. + ((((const uint32_t *) (a))[0] == 0) \
  23309. + && (((const uint32_t *) (a))[1] == 0) \
  23310. + && (((const uint32_t *) (a))[2] == htonl (0xffff)))
  23311. #define IN6_IS_ADDR_V4COMPAT(a) \
  23312. - ((((__const uint32_t *) (a))[0] == 0) \
  23313. - && (((__const uint32_t *) (a))[1] == 0) \
  23314. - && (((__const uint32_t *) (a))[2] == 0) \
  23315. - && (ntohl (((__const uint32_t *) (a))[3]) > 1))
  23316. + ((((const uint32_t *) (a))[0] == 0) \
  23317. + && (((const uint32_t *) (a))[1] == 0) \
  23318. + && (((const uint32_t *) (a))[2] == 0) \
  23319. + && (ntohl (((const uint32_t *) (a))[3]) > 1))
  23320. #define IN6_ARE_ADDR_EQUAL(a,b) \
  23321. - ((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \
  23322. - && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \
  23323. - && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
  23324. - && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
  23325. + ((((const uint32_t *) (a))[0] == ((const uint32_t *) (b))[0]) \
  23326. + && (((const uint32_t *) (a))[1] == ((const uint32_t *) (b))[1]) \
  23327. + && (((const uint32_t *) (a))[2] == ((const uint32_t *) (b))[2]) \
  23328. + && (((const uint32_t *) (a))[3] == ((const uint32_t *) (b))[3]))
  23329. #endif
  23330. #if defined __USE_MISC || defined __USE_GNU
  23331. @@ -470,23 +469,23 @@
  23332. #if defined __UCLIBC_HAS_IPV6__ || !defined __UCLIBC_STRICT_HEADERS__
  23333. #define IN6_IS_ADDR_MC_NODELOCAL(a) \
  23334. (IN6_IS_ADDR_MULTICAST(a) \
  23335. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
  23336. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x1))
  23337. #define IN6_IS_ADDR_MC_LINKLOCAL(a) \
  23338. (IN6_IS_ADDR_MULTICAST(a) \
  23339. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2))
  23340. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x2))
  23341. #define IN6_IS_ADDR_MC_SITELOCAL(a) \
  23342. (IN6_IS_ADDR_MULTICAST(a) \
  23343. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5))
  23344. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x5))
  23345. #define IN6_IS_ADDR_MC_ORGLOCAL(a) \
  23346. (IN6_IS_ADDR_MULTICAST(a) \
  23347. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8))
  23348. + && ((((const uint8_t *) (a))[1] & 0xf) == 0x8))
  23349. #define IN6_IS_ADDR_MC_GLOBAL(a) \
  23350. (IN6_IS_ADDR_MULTICAST(a) \
  23351. - && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
  23352. + && ((((const uint8_t *) (a))[1] & 0xf) == 0xe))
  23353. #endif
  23354. @@ -514,15 +513,15 @@
  23355. extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
  23356. int __type) __THROW __attribute_deprecated__;
  23357. extern int inet6_option_append (struct cmsghdr *__cmsg,
  23358. - __const uint8_t *__typep, int __multx,
  23359. + const uint8_t *__typep, int __multx,
  23360. int __plusy) __THROW __attribute_deprecated__;
  23361. extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
  23362. int __multx, int __plusy)
  23363. __THROW __attribute_deprecated__;
  23364. -extern int inet6_option_next (__const struct cmsghdr *__cmsg,
  23365. +extern int inet6_option_next (const struct cmsghdr *__cmsg,
  23366. uint8_t **__tptrp)
  23367. __THROW __attribute_deprecated__;
  23368. -extern int inet6_option_find (__const struct cmsghdr *__cmsg,
  23369. +extern int inet6_option_find (const struct cmsghdr *__cmsg,
  23370. uint8_t **__tptrp, int __type)
  23371. __THROW __attribute_deprecated__;
  23372. @@ -550,10 +549,10 @@
  23373. extern socklen_t inet6_rth_space (int __type, int __segments) __THROW;
  23374. extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type,
  23375. int __segments) __THROW;
  23376. -extern int inet6_rth_add (void *__bp, __const struct in6_addr *__addr) __THROW;
  23377. -extern int inet6_rth_reverse (__const void *__in, void *__out) __THROW;
  23378. -extern int inet6_rth_segments (__const void *__bp) __THROW;
  23379. -extern struct in6_addr *inet6_rth_getaddr (__const void *__bp, int __index)
  23380. +extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __THROW;
  23381. +extern int inet6_rth_reverse (const void *__in, void *__out) __THROW;
  23382. +extern int inet6_rth_segments (const void *__bp) __THROW;
  23383. +extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index)
  23384. __THROW;
  23385. # endif
  23386. # endif
  23387. @@ -572,23 +571,23 @@
  23388. extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
  23389. struct in_addr __group, uint32_t __fmode,
  23390. uint32_t __numsrc,
  23391. - __const struct in_addr *__slist)
  23392. + const struct in_addr *__slist)
  23393. __THROW;
  23394. /* Get source filter. */
  23395. extern int getsourcefilter (int __s, uint32_t __interface_addr,
  23396. - __const struct sockaddr *__group,
  23397. + const struct sockaddr *__group,
  23398. socklen_t __grouplen, uint32_t *__fmode,
  23399. uint32_t *__numsrc,
  23400. struct sockaddr_storage *__slist) __THROW;
  23401. /* Set source filter. */
  23402. extern int setsourcefilter (int __s, uint32_t __interface_addr,
  23403. - __const struct sockaddr *__group,
  23404. + const struct sockaddr *__group,
  23405. socklen_t __grouplen, uint32_t __fmode,
  23406. uint32_t __numsrc,
  23407. - __const struct sockaddr_storage *__slist) __THROW;
  23408. + const struct sockaddr_storage *__slist) __THROW;
  23409. # endif
  23410. #endif /* use GNU */
  23411. diff -Nur uClibc-0.9.33.2/include/netinet/in_systm.h uClibc-git/include/netinet/in_systm.h
  23412. --- uClibc-0.9.33.2/include/netinet/in_systm.h 2012-05-15 09:20:09.000000000 +0200
  23413. +++ uClibc-git/include/netinet/in_systm.h 2014-02-03 12:32:56.000000000 +0100
  23414. @@ -13,9 +13,8 @@
  23415. Lesser General Public License for more details.
  23416. You should have received a copy of the GNU Lesser General Public
  23417. - License along with the GNU C Library; if not, write to the Free
  23418. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23419. - 02111-1307 USA. */
  23420. + License along with the GNU C Library; if not, see
  23421. + <http://www.gnu.org/licenses/>. */
  23422. #ifndef _NETINET_IN_SYSTM_H
  23423. #define _NETINET_IN_SYSTM_H 1
  23424. diff -Nur uClibc-0.9.33.2/include/netinet/ip6.h uClibc-git/include/netinet/ip6.h
  23425. --- uClibc-0.9.33.2/include/netinet/ip6.h 2012-05-15 09:20:09.000000000 +0200
  23426. +++ uClibc-git/include/netinet/ip6.h 2014-02-03 12:32:56.000000000 +0100
  23427. @@ -12,9 +12,8 @@
  23428. Lesser General Public License for more details.
  23429. You should have received a copy of the GNU Lesser General Public
  23430. - License along with the GNU C Library; if not, write to the Free
  23431. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23432. - 02111-1307 USA. */
  23433. + License along with the GNU C Library; if not, see
  23434. + <http://www.gnu.org/licenses/>. */
  23435. #ifndef _NETINET_IP6_H
  23436. #define _NETINET_IP6_H 1
  23437. diff -Nur uClibc-0.9.33.2/include/netinet/ip.h uClibc-git/include/netinet/ip.h
  23438. --- uClibc-0.9.33.2/include/netinet/ip.h 2012-05-15 09:20:09.000000000 +0200
  23439. +++ uClibc-git/include/netinet/ip.h 2014-02-03 12:32:56.000000000 +0100
  23440. @@ -13,9 +13,8 @@
  23441. Lesser General Public License for more details.
  23442. You should have received a copy of the GNU Lesser General Public
  23443. - License along with the GNU C Library; if not, write to the Free
  23444. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23445. - 02111-1307 USA. */
  23446. + License along with the GNU C Library; if not, see
  23447. + <http://www.gnu.org/licenses/>. */
  23448. #ifndef __NETINET_IP_H
  23449. #define __NETINET_IP_H 1
  23450. diff -Nur uClibc-0.9.33.2/include/netinet/ip_icmp.h uClibc-git/include/netinet/ip_icmp.h
  23451. --- uClibc-0.9.33.2/include/netinet/ip_icmp.h 2012-05-15 09:20:09.000000000 +0200
  23452. +++ uClibc-git/include/netinet/ip_icmp.h 2014-02-03 12:32:56.000000000 +0100
  23453. @@ -12,9 +12,8 @@
  23454. Lesser General Public License for more details.
  23455. You should have received a copy of the GNU Lesser General Public
  23456. - License along with the GNU C Library; if not, write to the Free
  23457. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23458. - 02111-1307 USA. */
  23459. + License along with the GNU C Library; if not, see
  23460. + <http://www.gnu.org/licenses/>. */
  23461. #ifndef __NETINET_IP_ICMP_H
  23462. #define __NETINET_IP_ICMP_H 1
  23463. diff -Nur uClibc-0.9.33.2/include/netinet/udp.h uClibc-git/include/netinet/udp.h
  23464. --- uClibc-0.9.33.2/include/netinet/udp.h 2012-05-15 09:20:09.000000000 +0200
  23465. +++ uClibc-git/include/netinet/udp.h 2014-02-03 12:32:56.000000000 +0100
  23466. @@ -12,9 +12,8 @@
  23467. Lesser General Public License for more details.
  23468. You should have received a copy of the GNU Lesser General Public
  23469. - License along with the GNU C Library; if not, write to the Free
  23470. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23471. - 02111-1307 USA. */
  23472. + License along with the GNU C Library; if not, see
  23473. + <http://www.gnu.org/licenses/>. */
  23474. /*
  23475. * Copyright (C) 1982, 1986 Regents of the University of California.
  23476. diff -Nur uClibc-0.9.33.2/include/netipx/ipx.h uClibc-git/include/netipx/ipx.h
  23477. --- uClibc-0.9.33.2/include/netipx/ipx.h 2012-05-15 09:20:09.000000000 +0200
  23478. +++ uClibc-git/include/netipx/ipx.h 2014-02-03 12:32:56.000000000 +0100
  23479. @@ -12,9 +12,8 @@
  23480. Lesser General Public License for more details.
  23481. You should have received a copy of the GNU Lesser General Public
  23482. - License along with the GNU C Library; if not, write to the Free
  23483. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23484. - 02111-1307 USA. */
  23485. + License along with the GNU C Library; if not, see
  23486. + <http://www.gnu.org/licenses/>. */
  23487. #ifndef __NETIPX_IPX_H
  23488. #define __NETIPX_IPX_H 1
  23489. diff -Nur uClibc-0.9.33.2/include/netpacket/packet.h uClibc-git/include/netpacket/packet.h
  23490. --- uClibc-0.9.33.2/include/netpacket/packet.h 2012-05-15 09:20:09.000000000 +0200
  23491. +++ uClibc-git/include/netpacket/packet.h 2014-02-03 12:32:56.000000000 +0100
  23492. @@ -13,9 +13,8 @@
  23493. Lesser General Public License for more details.
  23494. You should have received a copy of the GNU Lesser General Public
  23495. - License along with the GNU C Library; if not, write to the Free
  23496. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23497. - 02111-1307 USA. */
  23498. + License along with the GNU C Library; if not, see
  23499. + <http://www.gnu.org/licenses/>. */
  23500. #ifndef __NETPACKET_PACKET_H
  23501. #define __NETPACKET_PACKET_H 1
  23502. diff -Nur uClibc-0.9.33.2/include/nl_types.h uClibc-git/include/nl_types.h
  23503. --- uClibc-0.9.33.2/include/nl_types.h 2012-05-15 09:20:09.000000000 +0200
  23504. +++ uClibc-git/include/nl_types.h 2014-02-03 12:32:56.000000000 +0100
  23505. @@ -12,9 +12,8 @@
  23506. Lesser General Public License for more details.
  23507. You should have received a copy of the GNU Lesser General Public
  23508. - License along with the GNU C Library; if not, write to the Free
  23509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23510. - 02111-1307 USA. */
  23511. + License along with the GNU C Library; if not, see
  23512. + <http://www.gnu.org/licenses/>. */
  23513. #ifndef _NL_TYPES_H
  23514. #define _NL_TYPES_H 1
  23515. @@ -49,12 +48,12 @@
  23516. This function is a possible cancellation point and therefore not
  23517. marked with __THROW. */
  23518. -extern nl_catd catopen (__const char *__cat_name, int __flag) __nonnull ((1));
  23519. +extern nl_catd catopen (const char *__cat_name, int __flag) __nonnull ((1));
  23520. /* Return translation with NUMBER in SET of CATALOG; if not found
  23521. return STRING. */
  23522. extern char *catgets (nl_catd __catalog, int __set, int __number,
  23523. - __const char *__string) __THROW __nonnull ((1));
  23524. + const char *__string) __THROW __nonnull ((1));
  23525. /* Close message CATALOG. */
  23526. extern int catclose (nl_catd __catalog) __THROW __nonnull ((1));
  23527. diff -Nur uClibc-0.9.33.2/include/obstack.h uClibc-git/include/obstack.h
  23528. --- uClibc-0.9.33.2/include/obstack.h 2012-05-15 09:20:09.000000000 +0200
  23529. +++ uClibc-git/include/obstack.h 2014-02-03 12:32:56.000000000 +0100
  23530. @@ -14,9 +14,8 @@
  23531. Lesser General Public License for more details.
  23532. You should have received a copy of the GNU Lesser General Public
  23533. - License along with the GNU C Library; if not, write to the Free
  23534. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  23535. - Boston, MA 02110-1301, USA. */
  23536. + License along with the GNU C Library; if not, see
  23537. + <http://www.gnu.org/licenses/>. */
  23538. /* Summary:
  23539. @@ -180,6 +179,7 @@
  23540. /* Declare the external functions we use; they are in obstack.c. */
  23541. extern void _obstack_newchunk (struct obstack *, int);
  23542. +libc_hidden_proto(_obstack_newchunk)
  23543. extern int _obstack_begin (struct obstack *, int, int,
  23544. void *(*) (long), void (*) (void *));
  23545. extern int _obstack_begin_1 (struct obstack *, int, int,
  23546. diff -Nur uClibc-0.9.33.2/include/printf.h uClibc-git/include/printf.h
  23547. --- uClibc-0.9.33.2/include/printf.h 2012-05-15 09:20:09.000000000 +0200
  23548. +++ uClibc-git/include/printf.h 2014-02-03 12:32:56.000000000 +0100
  23549. @@ -12,9 +12,8 @@
  23550. Lesser General Public License for more details.
  23551. You should have received a copy of the GNU Lesser General Public
  23552. - License along with the GNU C Library; if not, write to the Free
  23553. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23554. - 02111-1307 USA. */
  23555. + License along with the GNU C Library; if not, see
  23556. + <http://www.gnu.org/licenses/>. */
  23557. /* March 11, 2001 Manuel Novoa III
  23558. *
  23559. @@ -143,14 +142,14 @@
  23560. #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
  23561. typedef int (*printf_function) (FILE *__stream,
  23562. - __const struct printf_info *__info,
  23563. - __const void *__const *__args);
  23564. + const struct printf_info *__info,
  23565. + const void *const *__args);
  23566. /* Type of a printf specifier-arginfo function.
  23567. INFO gives information about the format specification.
  23568. N, ARGTYPES, and return value are as for parse_printf_format. */
  23569. -typedef int printf_arginfo_function (__const struct printf_info *__info,
  23570. +typedef int printf_arginfo_function (const struct printf_info *__info,
  23571. size_t __n, int *__argtypes);
  23572. @@ -174,7 +173,7 @@
  23573. array it is passed with the types of the arguments it wants, and return
  23574. the number of arguments it wants. */
  23575. -extern size_t parse_printf_format (__const char *__restrict __fmt, size_t __n,
  23576. +extern size_t parse_printf_format (const char *__restrict __fmt, size_t __n,
  23577. int *__restrict __argtypes) __THROW;
  23578. @@ -222,11 +221,11 @@
  23579. the format specifier is a uppercase character powers of 1000 are
  23580. used. Otherwise powers of 1024. */
  23581. extern int printf_size (FILE *__restrict __fp,
  23582. - __const struct printf_info *__info,
  23583. - __const void *__const *__restrict __args) __THROW;
  23584. + const struct printf_info *__info,
  23585. + const void *const *__restrict __args) __THROW;
  23586. /* This is the appropriate argument information function for `printf_size'. */
  23587. -extern int printf_size_info (__const struct printf_info *__restrict
  23588. +extern int printf_size_info (const struct printf_info *__restrict
  23589. __info, size_t __n, int *__restrict __argtypes)
  23590. __THROW;
  23591. diff -Nur uClibc-0.9.33.2/include/pty.h uClibc-git/include/pty.h
  23592. --- uClibc-0.9.33.2/include/pty.h 2012-05-15 09:20:09.000000000 +0200
  23593. +++ uClibc-git/include/pty.h 2014-02-03 12:32:56.000000000 +0100
  23594. @@ -13,9 +13,8 @@
  23595. Lesser General Public License for more details.
  23596. You should have received a copy of the GNU Lesser General Public
  23597. - License along with the GNU C Library; if not, write to the Free
  23598. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23599. - 02111-1307 USA. */
  23600. + License along with the GNU C Library; if not, see
  23601. + <http://www.gnu.org/licenses/>. */
  23602. #ifndef _PTY_H
  23603. #define _PTY_H 1
  23604. diff -Nur uClibc-0.9.33.2/include/pwd.h uClibc-git/include/pwd.h
  23605. --- uClibc-0.9.33.2/include/pwd.h 2012-05-15 09:20:09.000000000 +0200
  23606. +++ uClibc-git/include/pwd.h 2014-02-03 12:32:56.000000000 +0100
  23607. @@ -12,9 +12,8 @@
  23608. Lesser General Public License for more details.
  23609. You should have received a copy of the GNU Lesser General Public
  23610. - License along with the GNU C Library; if not, write to the Free
  23611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23612. - 02111-1307 USA. */
  23613. + License along with the GNU C Library; if not, see
  23614. + <http://www.gnu.org/licenses/>. */
  23615. /*
  23616. * POSIX Standard: 9.2.2 User Database Access <pwd.h>
  23617. @@ -100,7 +99,7 @@
  23618. cancellation point. But due to similarity with an POSIX interface
  23619. or due to the implementation it is a cancellation point and
  23620. therefore not marked with __THROW. */
  23621. -extern int putpwent (__const struct passwd *__restrict __p,
  23622. +extern int putpwent (const struct passwd *__restrict __p,
  23623. FILE *__restrict __f);
  23624. #endif
  23625. @@ -114,7 +113,8 @@
  23626. This function is a possible cancellation point and therefore not
  23627. marked with __THROW. */
  23628. -extern struct passwd *getpwnam (__const char *__name);
  23629. +extern struct passwd *getpwnam (const char *__name);
  23630. +libc_hidden_proto(getpwnam)
  23631. #if defined __USE_POSIX || defined __USE_MISC
  23632. @@ -149,7 +149,7 @@
  23633. struct passwd **__restrict __result);
  23634. libc_hidden_proto(getpwuid_r)
  23635. -extern int getpwnam_r (__const char *__restrict __name,
  23636. +extern int getpwnam_r (const char *__restrict __name,
  23637. struct passwd *__restrict __resultbuf,
  23638. char *__restrict __buffer, size_t __buflen,
  23639. struct passwd **__restrict __result);
  23640. diff -Nur uClibc-0.9.33.2/include/regex.h uClibc-git/include/regex.h
  23641. --- uClibc-0.9.33.2/include/regex.h 2012-05-15 09:20:09.000000000 +0200
  23642. +++ uClibc-git/include/regex.h 2014-02-03 12:32:56.000000000 +0100
  23643. @@ -1,6 +1,6 @@
  23644. /* Definitions for data structures and routines for the regular
  23645. expression library.
  23646. - Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005
  23647. + Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006,2008
  23648. Free Software Foundation, Inc.
  23649. This file is part of the GNU C Library.
  23650. @@ -15,28 +15,16 @@
  23651. Lesser General Public License for more details.
  23652. You should have received a copy of the GNU Lesser General Public
  23653. - License along with the GNU C Library; if not, write to the Free
  23654. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23655. - 02111-1307 USA. */
  23656. + License along with the GNU C Library; if not, see
  23657. + <http://www.gnu.org/licenses/>. */
  23658. #ifndef _REGEX_H
  23659. #define _REGEX_H 1
  23660. -#include <features.h>
  23661. -
  23662. #include <sys/types.h>
  23663. __BEGIN_DECLS
  23664. -/* POSIX says that <sys/types.h> must be included (by the caller) before
  23665. - <regex.h>. */
  23666. -
  23667. -#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS
  23668. -/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
  23669. - should be there. */
  23670. -# include <stddef.h>
  23671. -#endif
  23672. -
  23673. /* The following two types have to be signed and unsigned integer type
  23674. wide enough to hold a value of a pointer. For most ANSI compilers
  23675. ptrdiff_t and size_t should be likely OK. Still size of these two
  23676. @@ -51,20 +39,21 @@
  23677. add or remove a bit, only one other definition need change. */
  23678. typedef unsigned long int reg_syntax_t;
  23679. +#ifdef __USE_GNU
  23680. /* If this bit is not set, then \ inside a bracket expression is literal.
  23681. If set, then such a \ quotes the following character. */
  23682. -#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
  23683. +# define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
  23684. /* If this bit is not set, then + and ? are operators, and \+ and \? are
  23685. literals.
  23686. If set, then \+ and \? are operators and + and ? are literals. */
  23687. -#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
  23688. +# define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
  23689. /* If this bit is set, then character classes are supported. They are:
  23690. [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
  23691. [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
  23692. If not set, then character classes are not supported. */
  23693. -#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
  23694. +# define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
  23695. /* If this bit is set, then ^ and $ are always anchors (outside bracket
  23696. expressions, of course).
  23697. @@ -78,7 +67,7 @@
  23698. POSIX draft 11.2 says that * etc. in leading positions is undefined.
  23699. We already implemented a previous draft which made those constructs
  23700. invalid, though, so we haven't changed the code back. */
  23701. -#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
  23702. +# define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
  23703. /* If this bit is set, then special characters are always special
  23704. regardless of where they are in the pattern.
  23705. @@ -86,71 +75,71 @@
  23706. some contexts; otherwise they are ordinary. Specifically,
  23707. * + ? and intervals are only special when not after the beginning,
  23708. open-group, or alternation operator. */
  23709. -#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
  23710. +# define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
  23711. /* If this bit is set, then *, +, ?, and { cannot be first in an re or
  23712. immediately after an alternation or begin-group operator. */
  23713. -#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
  23714. +# define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
  23715. /* If this bit is set, then . matches newline.
  23716. If not set, then it doesn't. */
  23717. -#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
  23718. +# define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
  23719. /* If this bit is set, then . doesn't match NUL.
  23720. If not set, then it does. */
  23721. -#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
  23722. +# define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
  23723. /* If this bit is set, nonmatching lists [^...] do not match newline.
  23724. If not set, they do. */
  23725. -#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
  23726. +# define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
  23727. /* If this bit is set, either \{...\} or {...} defines an
  23728. interval, depending on RE_NO_BK_BRACES.
  23729. If not set, \{, \}, {, and } are literals. */
  23730. -#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
  23731. +# define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
  23732. /* If this bit is set, +, ? and | aren't recognized as operators.
  23733. If not set, they are. */
  23734. -#define RE_LIMITED_OPS (RE_INTERVALS << 1)
  23735. +# define RE_LIMITED_OPS (RE_INTERVALS << 1)
  23736. /* If this bit is set, newline is an alternation operator.
  23737. If not set, newline is literal. */
  23738. -#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
  23739. +# define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
  23740. /* If this bit is set, then `{...}' defines an interval, and \{ and \}
  23741. are literals.
  23742. If not set, then `\{...\}' defines an interval. */
  23743. -#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
  23744. +# define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
  23745. /* If this bit is set, (...) defines a group, and \( and \) are literals.
  23746. If not set, \(...\) defines a group, and ( and ) are literals. */
  23747. -#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
  23748. +# define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
  23749. /* If this bit is set, then \<digit> matches <digit>.
  23750. If not set, then \<digit> is a back-reference. */
  23751. -#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
  23752. +# define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
  23753. /* If this bit is set, then | is an alternation operator, and \| is literal.
  23754. If not set, then \| is an alternation operator, and | is literal. */
  23755. -#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
  23756. +# define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
  23757. /* If this bit is set, then an ending range point collating higher
  23758. than the starting range point, as in [z-a], is invalid.
  23759. If not set, then when ending range point collates higher than the
  23760. starting range point, the range is ignored. */
  23761. -#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
  23762. +# define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
  23763. /* If this bit is set, then an unmatched ) is ordinary.
  23764. If not set, then an unmatched ) is invalid. */
  23765. -#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
  23766. +# define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
  23767. /* If this bit is set, succeed as soon as we match the whole pattern,
  23768. without further backtracking. */
  23769. -#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
  23770. +# define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
  23771. /* If this bit is set, do not process the GNU regex operators.
  23772. If not set, then the GNU regex operators are recognized. */
  23773. -#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
  23774. +# define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
  23775. /* If this bit is set, turn on internal regex debugging.
  23776. If not set, and debugging was on, turn it off.
  23777. @@ -158,29 +147,30 @@
  23778. We define this bit always, so that all that's needed to turn on
  23779. debugging is to recompile regex.c; the calling code can always have
  23780. this bit set, and it won't affect anything in the normal case. */
  23781. -#define RE_DEBUG (RE_NO_GNU_OPS << 1)
  23782. +# define RE_DEBUG (RE_NO_GNU_OPS << 1)
  23783. /* If this bit is set, a syntactically invalid interval is treated as
  23784. a string of ordinary characters. For example, the ERE 'a{1' is
  23785. treated as 'a\{1'. */
  23786. -#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
  23787. +# define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
  23788. /* If this bit is set, then ignore case when matching.
  23789. If not set, then case is significant. */
  23790. -#define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
  23791. +# define RE_ICASE (RE_INVALID_INTERVAL_ORD << 1)
  23792. /* This bit is used internally like RE_CONTEXT_INDEP_ANCHORS but only
  23793. for ^, because it is difficult to scan the regex backwards to find
  23794. whether ^ should be special. */
  23795. -#define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
  23796. +# define RE_CARET_ANCHORS_HERE (RE_ICASE << 1)
  23797. /* If this bit is set, then \{ cannot be first in an bre or
  23798. immediately after an alternation or begin-group operator. */
  23799. -#define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
  23800. +# define RE_CONTEXT_INVALID_DUP (RE_CARET_ANCHORS_HERE << 1)
  23801. /* If this bit is set, then no_sub will be set to 1 during
  23802. re_compile_pattern. */
  23803. -#define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
  23804. +# define RE_NO_SUB (RE_CONTEXT_INVALID_DUP << 1)
  23805. +#endif
  23806. /* This global variable defines the particular regexp syntax to use (for
  23807. some interfaces). When a regexp is compiled, the syntax used is
  23808. @@ -188,6 +178,7 @@
  23809. already-compiled regexps. */
  23810. extern reg_syntax_t re_syntax_options;
  23811. +#ifdef __USE_GNU
  23812. /* Define combinations of the above bits for the standard possibilities.
  23813. (The [[[ comments delimit what gets put into the Texinfo file, so
  23814. don't delete them!) */
  23815. @@ -262,11 +253,12 @@
  23816. /* Maximum number of duplicates an interval can allow. Some systems
  23817. (erroneously) define this in other header files, but we want our
  23818. value, so remove any previous define. */
  23819. -#ifdef RE_DUP_MAX
  23820. -# undef RE_DUP_MAX
  23821. -#endif
  23822. +# ifdef RE_DUP_MAX
  23823. +# undef RE_DUP_MAX
  23824. +# endif
  23825. /* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
  23826. -#define RE_DUP_MAX (0x7fff)
  23827. +# define RE_DUP_MAX (0x7fff)
  23828. +#endif
  23829. /* POSIX `cflags' bits (i.e., information for `regcomp'). */
  23830. @@ -310,7 +302,7 @@
  23831. `re_error_msg' table in regex.c. */
  23832. typedef enum
  23833. {
  23834. -#ifdef _XOPEN_SOURCE
  23835. +#if defined _XOPEN_SOURCE || defined __USE_XOPEN2K
  23836. REG_ENOSYS = -1, /* This will never happen for this implementation. */
  23837. #endif
  23838. @@ -345,7 +337,16 @@
  23839. private to the regex routines. */
  23840. #ifndef RE_TRANSLATE_TYPE
  23841. -# define RE_TRANSLATE_TYPE unsigned char *
  23842. +# define __RE_TRANSLATE_TYPE unsigned char *
  23843. +# ifdef __USE_GNU
  23844. +# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE
  23845. +# endif
  23846. +#endif
  23847. +
  23848. +#ifdef __USE_GNU
  23849. +# define __REPB_PREFIX(name) name
  23850. +#else
  23851. +# define __REPB_PREFIX(name) __##name
  23852. #endif
  23853. struct re_pattern_buffer
  23854. @@ -353,27 +354,27 @@
  23855. /* Space that holds the compiled pattern. It is declared as
  23856. `unsigned char *' because its elements are sometimes used as
  23857. array indexes. */
  23858. - unsigned char *buffer;
  23859. + unsigned char *__REPB_PREFIX(buffer);
  23860. /* Number of bytes to which `buffer' points. */
  23861. - unsigned long int allocated;
  23862. + unsigned long int __REPB_PREFIX(allocated);
  23863. /* Number of bytes actually used in `buffer'. */
  23864. - unsigned long int used;
  23865. + unsigned long int __REPB_PREFIX(used);
  23866. /* Syntax setting with which the pattern was compiled. */
  23867. - reg_syntax_t syntax;
  23868. + reg_syntax_t __REPB_PREFIX(syntax);
  23869. /* Pointer to a fastmap, if any, otherwise zero. re_search uses the
  23870. fastmap, if there is one, to skip over impossible starting points
  23871. for matches. */
  23872. - char *fastmap;
  23873. + char *__REPB_PREFIX(fastmap);
  23874. /* Either a translate table to apply to all characters before
  23875. comparing them, or zero for no translation. The translation is
  23876. applied to a pattern when it is compiled and to a string when it
  23877. is matched. */
  23878. - RE_TRANSLATE_TYPE translate;
  23879. + __RE_TRANSLATE_TYPE __REPB_PREFIX(translate);
  23880. /* Number of subexpressions found by the compiler. */
  23881. size_t re_nsub;
  23882. @@ -382,34 +383,36 @@
  23883. Well, in truth it's used only in `re_search_2', to see whether or
  23884. not we should use the fastmap, so we don't set this absolutely
  23885. perfectly; see `re_compile_fastmap' (the `duplicate' case). */
  23886. - unsigned can_be_null : 1;
  23887. + unsigned __REPB_PREFIX(can_be_null) : 1;
  23888. /* If REGS_UNALLOCATED, allocate space in the `regs' structure
  23889. for `max (RE_NREGS, re_nsub + 1)' groups.
  23890. If REGS_REALLOCATE, reallocate space if necessary.
  23891. If REGS_FIXED, use what's there. */
  23892. -#define REGS_UNALLOCATED 0
  23893. -#define REGS_REALLOCATE 1
  23894. -#define REGS_FIXED 2
  23895. - unsigned regs_allocated : 2;
  23896. +#ifdef __USE_GNU
  23897. +# define REGS_UNALLOCATED 0
  23898. +# define REGS_REALLOCATE 1
  23899. +# define REGS_FIXED 2
  23900. +#endif
  23901. + unsigned __REPB_PREFIX(regs_allocated) : 2;
  23902. /* Set to zero when `regex_compile' compiles a pattern; set to one
  23903. by `re_compile_fastmap' if it updates the fastmap. */
  23904. - unsigned fastmap_accurate : 1;
  23905. + unsigned __REPB_PREFIX(fastmap_accurate) : 1;
  23906. /* If set, `re_match_2' does not return information about
  23907. subexpressions. */
  23908. - unsigned no_sub : 1;
  23909. + unsigned __REPB_PREFIX(no_sub) : 1;
  23910. /* If set, a beginning-of-line anchor doesn't match at the beginning
  23911. of the string. */
  23912. - unsigned not_bol : 1;
  23913. + unsigned __REPB_PREFIX(not_bol) : 1;
  23914. /* Similarly for an end-of-line anchor. */
  23915. - unsigned not_eol : 1;
  23916. + unsigned __REPB_PREFIX(not_eol) : 1;
  23917. /* If true, an anchor at a newline matches. */
  23918. - unsigned newline_anchor : 1;
  23919. + unsigned __REPB_PREFIX(newline_anchor) : 1;
  23920. };
  23921. typedef struct re_pattern_buffer regex_t;
  23922. @@ -418,6 +421,7 @@
  23923. typedef int regoff_t;
  23924. +#ifdef __USE_GNU
  23925. /* This is the structure we store register match data in. See
  23926. regex.texinfo for a full description of what registers match. */
  23927. struct re_registers
  23928. @@ -431,8 +435,9 @@
  23929. /* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
  23930. `re_match_2' returns information about at least this many registers
  23931. the first time a `regs' structure is passed. */
  23932. -#ifndef RE_NREGS
  23933. -# define RE_NREGS 30
  23934. +# ifndef RE_NREGS
  23935. +# define RE_NREGS 30
  23936. +# endif
  23937. #endif
  23938. @@ -447,7 +452,7 @@
  23939. /* Declarations for routines. */
  23940. -
  23941. +#ifdef __USE_GNU
  23942. /* Sets the current default syntax to SYNTAX, and return the old syntax.
  23943. You can also simply assign to the `re_syntax_options' variable. */
  23944. extern reg_syntax_t re_set_syntax (reg_syntax_t __syntax);
  23945. @@ -515,8 +520,9 @@
  23946. struct re_registers *__regs,
  23947. unsigned int __num_regs,
  23948. regoff_t *__starts, regoff_t *__ends);
  23949. +#endif /* Use GNU */
  23950. -#if defined _REGEX_RE_COMP || defined _LIBC
  23951. +#if defined _REGEX_RE_COMP || (defined _LIBC && defined __USE_BSD)
  23952. # ifndef _CRAY
  23953. /* 4.2 bsd compatibility. */
  23954. extern char *re_comp (const char *);
  23955. @@ -537,7 +543,8 @@
  23956. #endif
  23957. /* gcc 3.1 and up support the [restrict] syntax. */
  23958. #ifndef __restrict_arr
  23959. -# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
  23960. +# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) \
  23961. + && !defined __GNUG__
  23962. # define __restrict_arr __restrict
  23963. # else
  23964. # define __restrict_arr
  23965. diff -Nur uClibc-0.9.33.2/include/regexp.h uClibc-git/include/regexp.h
  23966. --- uClibc-0.9.33.2/include/regexp.h 2012-05-15 09:20:09.000000000 +0200
  23967. +++ uClibc-git/include/regexp.h 2014-02-03 12:32:56.000000000 +0100
  23968. @@ -14,9 +14,8 @@
  23969. Lesser General Public License for more details.
  23970. You should have received a copy of the GNU Lesser General Public
  23971. - License along with the GNU C Library; if not, write to the Free
  23972. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  23973. - 02111-1307 USA. */
  23974. + License along with the GNU C Library; if not, see
  23975. + <http://www.gnu.org/licenses/>. */
  23976. #ifndef _REGEXP_H
  23977. #define _REGEXP_H 1
  23978. @@ -103,7 +102,7 @@
  23979. on the macros. */
  23980. char *
  23981. compile (char *__restrict instring, char *__restrict expbuf,
  23982. - __const char *__restrict endbuf, int eof)
  23983. + const char *__restrict endbuf, int eof)
  23984. {
  23985. char *__input_buffer = NULL;
  23986. size_t __input_size = 0;
  23987. @@ -216,14 +215,14 @@
  23988. found in the buffer starting at EXPBUF. `loc1' will return the
  23989. first character matched and `loc2' points to the next unmatched
  23990. character. */
  23991. -extern int step (__const char *__restrict __string,
  23992. - __const char *__restrict __expbuf) __THROW;
  23993. +extern int step (const char *__restrict __string,
  23994. + const char *__restrict __expbuf) __THROW;
  23995. /* Match the beginning of STRING with the compiled regular expression
  23996. in EXPBUF. If the match is successful `loc2' will contain the
  23997. position of the first unmatched character. */
  23998. -extern int advance (__const char *__restrict __string,
  23999. - __const char *__restrict __expbuf) __THROW;
  24000. +extern int advance (const char *__restrict __string,
  24001. + const char *__restrict __expbuf) __THROW;
  24002. #endif
  24003. diff -Nur uClibc-0.9.33.2/include/rpc/auth_des.h uClibc-git/include/rpc/auth_des.h
  24004. --- uClibc-0.9.33.2/include/rpc/auth_des.h 2012-05-15 09:20:09.000000000 +0200
  24005. +++ uClibc-git/include/rpc/auth_des.h 2014-02-03 12:32:56.000000000 +0100
  24006. @@ -12,9 +12,8 @@
  24007. Lesser General Public License for more details.
  24008. You should have received a copy of the GNU Lesser General Public
  24009. - License along with the GNU C Library; if not, write to the Free
  24010. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24011. - 02111-1307 USA. */
  24012. + License along with the GNU C Library; if not, see
  24013. + <http://www.gnu.org/licenses/>. */
  24014. #ifndef _RPC_AUTH_DES_H
  24015. #define _RPC_AUTH_DES_H 1
  24016. @@ -89,27 +88,26 @@
  24017. #define adv_nickname adv_int_u
  24018. /* Map a des credential into a unix cred. */
  24019. -extern int authdes_getucred (__const struct authdes_cred * __adc,
  24020. +extern int authdes_getucred (const struct authdes_cred * __adc,
  24021. uid_t * __uid, gid_t * __gid,
  24022. short *__grouplen, gid_t * __groups) __THROW;
  24023. /* Get the public key for NAME and place it in KEY. NAME can only be
  24024. up to MAXNETNAMELEN bytes long and the destination buffer KEY should
  24025. have HEXKEYBYTES + 1 bytes long to fit all characters from the key. */
  24026. -extern int getpublickey (__const char *__name, char *__key) __THROW;
  24027. +extern int getpublickey (const char *__name, char *__key) __THROW;
  24028. /* Get the secret key for NAME and place it in KEY. PASSWD is used to
  24029. decrypt the encrypted key stored in the database. NAME can only be
  24030. up to MAXNETNAMELEN bytes long and the destination buffer KEY
  24031. should have HEXKEYBYTES + 1 bytes long to fit all characters from
  24032. the key. */
  24033. -extern int getsecretkey (__const char *__name, char *__key,
  24034. - __const char *__passwd) __THROW;
  24035. +extern int getsecretkey (const char *__name, char *__key,
  24036. + const char *__passwd) __THROW;
  24037. #endif
  24038. extern int rtime (struct sockaddr_in *__addrp, struct rpc_timeval *__timep,
  24039. struct rpc_timeval *__timeout) __THROW;
  24040. -libc_hidden_proto(rtime)
  24041. __END_DECLS
  24042. diff -Nur uClibc-0.9.33.2/include/rpc/auth.h uClibc-git/include/rpc/auth.h
  24043. --- uClibc-0.9.33.2/include/rpc/auth.h 2012-05-15 09:20:09.000000000 +0200
  24044. +++ uClibc-git/include/rpc/auth.h 2014-02-03 12:32:56.000000000 +0100
  24045. @@ -41,17 +41,6 @@
  24046. #ifndef _RPC_AUTH_H
  24047. #define _RPC_AUTH_H 1
  24048. -#ifdef _LIBC
  24049. -/* Some adjustments to make the libc source from glibc
  24050. - * compile more easily with uClibc... */
  24051. -#ifndef __FORCE_GLIBC
  24052. -#define __FORCE_GLIBC
  24053. -#endif
  24054. -#ifndef _GNU_SOURCE
  24055. -#define _GNU_SOURCE
  24056. -#endif
  24057. -#define _(X) X
  24058. -#endif
  24059. #include <features.h>
  24060. #include <rpc/xdr.h>
  24061. @@ -107,6 +96,10 @@
  24062. struct opaque_auth ah_cred;
  24063. struct opaque_auth ah_verf;
  24064. union des_block ah_key;
  24065. + /* not sure whether non-const-ness is a part of the spec... if it is,
  24066. + * enclose "const" in #ifdef _LIBC / #endif
  24067. + * to make it effective only for libc compile */
  24068. + const
  24069. struct auth_ops {
  24070. void (*ah_nextverf) (AUTH *);
  24071. int (*ah_marshal) (AUTH *, XDR *); /* nextverf & serialize */
  24072. @@ -200,11 +193,11 @@
  24073. *
  24074. */
  24075. extern int getnetname (char *) __THROW;
  24076. -extern int host2netname (char *, __const char *, __const char *) __THROW;
  24077. -extern int user2netname (char *, __const uid_t, __const char *) __THROW;
  24078. -extern int netname2user (__const char *, uid_t *, gid_t *, int *, gid_t *)
  24079. +extern int host2netname (char *, const char *, const char *) __THROW;
  24080. +extern int user2netname (char *, const uid_t, const char *) __THROW;
  24081. +extern int netname2user (const char *, uid_t *, gid_t *, int *, gid_t *)
  24082. __THROW;
  24083. -extern int netname2host (__const char *, char *, __const int) __THROW;
  24084. +extern int netname2host (const char *, char *, const int) __THROW;
  24085. /*
  24086. *
  24087. diff -Nur uClibc-0.9.33.2/include/rpc/clnt.h uClibc-git/include/rpc/clnt.h
  24088. --- uClibc-0.9.33.2/include/rpc/clnt.h 2012-05-15 09:20:09.000000000 +0200
  24089. +++ uClibc-git/include/rpc/clnt.h 2014-02-03 12:32:56.000000000 +0100
  24090. @@ -281,7 +281,7 @@
  24091. * u_long prog;
  24092. * u_long vers;
  24093. */
  24094. -extern CLIENT *clntraw_create (__const u_long __prog, __const u_long __vers)
  24095. +extern CLIENT *clntraw_create (const u_long __prog, const u_long __vers)
  24096. __THROW;
  24097. @@ -295,8 +295,8 @@
  24098. * u_ong vers; -- version number
  24099. * char *prot; -- protocol
  24100. */
  24101. -extern CLIENT *clnt_create (__const char *__host, __const u_long __prog,
  24102. - __const u_long __vers, __const char *__prot)
  24103. +extern CLIENT *clnt_create (const char *__host, const u_long __prog,
  24104. + const u_long __vers, const char *__prot)
  24105. __THROW;
  24106. @@ -365,18 +365,18 @@
  24107. libc_hidden_proto(clntunix_create)
  24108. -extern int callrpc (__const char *__host, __const u_long __prognum,
  24109. - __const u_long __versnum, __const u_long __procnum,
  24110. - __const xdrproc_t __inproc, __const char *__in,
  24111. - __const xdrproc_t __outproc, char *__out) __THROW;
  24112. +extern int callrpc (const char *__host, const u_long __prognum,
  24113. + const u_long __versnum, const u_long __procnum,
  24114. + const xdrproc_t __inproc, const char *__in,
  24115. + const xdrproc_t __outproc, char *__out) __THROW;
  24116. extern int _rpc_dtablesize (void) __THROW;
  24117. libc_hidden_proto(_rpc_dtablesize)
  24118. /*
  24119. * Print why creation failed
  24120. */
  24121. -extern void clnt_pcreateerror (__const char *__msg); /* stderr */
  24122. -extern char *clnt_spcreateerror(__const char *__msg) __THROW; /* string */
  24123. +extern void clnt_pcreateerror (const char *__msg); /* stderr */
  24124. +extern char *clnt_spcreateerror(const char *__msg) __THROW; /* string */
  24125. libc_hidden_proto(clnt_spcreateerror)
  24126. /*
  24127. @@ -387,10 +387,10 @@
  24128. /*
  24129. * Print an English error message, given the client error code
  24130. */
  24131. -extern void clnt_perror (CLIENT *__clnt, __const char *__msg);
  24132. +extern void clnt_perror (CLIENT *__clnt, const char *__msg);
  24133. /* stderr */
  24134. libc_hidden_proto(clnt_perror)
  24135. -extern char *clnt_sperror (CLIENT *__clnt, __const char *__msg) __THROW;
  24136. +extern char *clnt_sperror (CLIENT *__clnt, const char *__msg) __THROW;
  24137. /* string */
  24138. libc_hidden_proto(clnt_sperror)
  24139. @@ -416,7 +416,7 @@
  24140. /*
  24141. * get the port number on the host for the rpc program,version and proto
  24142. */
  24143. -extern int getrpcport (__const char * __host, u_long __prognum,
  24144. +extern int getrpcport (const char * __host, u_long __prognum,
  24145. u_long __versnum, u_int proto) __THROW;
  24146. /*
  24147. diff -Nur uClibc-0.9.33.2/include/rpc/netdb.h uClibc-git/include/rpc/netdb.h
  24148. --- uClibc-0.9.33.2/include/rpc/netdb.h 2012-05-15 09:20:09.000000000 +0200
  24149. +++ uClibc-git/include/rpc/netdb.h 2014-02-03 12:32:56.000000000 +0100
  24150. @@ -54,7 +54,7 @@
  24151. libc_hidden_proto(setrpcent)
  24152. extern void endrpcent (void) __THROW;
  24153. libc_hidden_proto(endrpcent)
  24154. -extern struct rpcent *getrpcbyname (__const char *__name) __THROW;
  24155. +extern struct rpcent *getrpcbyname (const char *__name) __THROW;
  24156. libc_hidden_proto(getrpcbyname)
  24157. extern struct rpcent *getrpcbynumber (int __number) __THROW;
  24158. libc_hidden_proto(getrpcbynumber)
  24159. @@ -62,7 +62,7 @@
  24160. libc_hidden_proto(getrpcent)
  24161. #if defined __USE_MISC && defined __UCLIBC_HAS_REENTRANT_RPC__
  24162. -extern int getrpcbyname_r (__const char *__name, struct rpcent *__result_buf,
  24163. +extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf,
  24164. char *__buffer, size_t __buflen,
  24165. struct rpcent **__result) __THROW;
  24166. diff -Nur uClibc-0.9.33.2/include/rpc/pmap_clnt.h uClibc-git/include/rpc/pmap_clnt.h
  24167. --- uClibc-0.9.33.2/include/rpc/pmap_clnt.h 2012-05-15 09:20:09.000000000 +0200
  24168. +++ uClibc-git/include/rpc/pmap_clnt.h 2014-02-03 12:32:56.000000000 +0100
  24169. @@ -69,30 +69,30 @@
  24170. * address if the responder to the broadcast.
  24171. */
  24172. -extern bool_t pmap_set (__const u_long __program, __const u_long __vers,
  24173. +extern bool_t pmap_set (const u_long __program, const u_long __vers,
  24174. int __protocol, u_short __port) __THROW;
  24175. libc_hidden_proto(pmap_set)
  24176. -extern bool_t pmap_unset (__const u_long __program, __const u_long __vers)
  24177. +extern bool_t pmap_unset (const u_long __program, const u_long __vers)
  24178. __THROW;
  24179. libc_hidden_proto(pmap_unset)
  24180. extern struct pmaplist *pmap_getmaps (struct sockaddr_in *__address) __THROW;
  24181. extern enum clnt_stat pmap_rmtcall (struct sockaddr_in *__addr,
  24182. - __const u_long __prog,
  24183. - __const u_long __vers,
  24184. - __const u_long __proc,
  24185. + const u_long __prog,
  24186. + const u_long __vers,
  24187. + const u_long __proc,
  24188. xdrproc_t __xdrargs,
  24189. caddr_t __argsp, xdrproc_t __xdrres,
  24190. caddr_t __resp, struct timeval __tout,
  24191. u_long *__port_ptr) __THROW;
  24192. -extern enum clnt_stat clnt_broadcast (__const u_long __prog,
  24193. - __const u_long __vers,
  24194. - __const u_long __proc, xdrproc_t __xargs,
  24195. +extern enum clnt_stat clnt_broadcast (const u_long __prog,
  24196. + const u_long __vers,
  24197. + const u_long __proc, xdrproc_t __xargs,
  24198. caddr_t __argsp, xdrproc_t __xresults,
  24199. caddr_t __resultsp,
  24200. resultproc_t __eachresult) __THROW;
  24201. extern u_short pmap_getport (struct sockaddr_in *__address,
  24202. - __const u_long __program,
  24203. - __const u_long __version, u_int __protocol)
  24204. + const u_long __program,
  24205. + const u_long __version, u_int __protocol)
  24206. __THROW;
  24207. libc_hidden_proto(pmap_getport)
  24208. diff -Nur uClibc-0.9.33.2/include/rpc/rpc.h uClibc-git/include/rpc/rpc.h
  24209. --- uClibc-0.9.33.2/include/rpc/rpc.h 2012-05-15 09:20:09.000000000 +0200
  24210. +++ uClibc-git/include/rpc/rpc.h 2014-02-03 12:32:56.000000000 +0100
  24211. @@ -38,19 +38,6 @@
  24212. #ifndef _RPC_RPC_H
  24213. #define _RPC_RPC_H 1
  24214. -#ifdef _LIBC
  24215. -/* Some adjustments to make the libc source from glibc
  24216. - * compile more easily with uClibc... */
  24217. -#ifndef __FORCE_GLIBC
  24218. -#define __FORCE_GLIBC
  24219. -#endif
  24220. -#ifndef _GNU_SOURCE
  24221. -#define _GNU_SOURCE
  24222. -#endif
  24223. -#define _(X) X
  24224. -#include <features.h>
  24225. -#endif
  24226. -
  24227. #include <rpc/types.h> /* some typedefs */
  24228. #include <netinet/in.h>
  24229. @@ -109,11 +96,6 @@
  24230. libc_hidden_proto(__rpc_thread_svc_max_pollfd)
  24231. #define svc_max_pollfd (*__rpc_thread_svc_max_pollfd ())
  24232. -extern bool_t xdr_accepted_reply (XDR *xdrs, struct accepted_reply *ar);
  24233. -libc_hidden_proto(xdr_accepted_reply)
  24234. -extern bool_t xdr_rejected_reply (XDR *xdrs, struct rejected_reply *rr);
  24235. -libc_hidden_proto(xdr_rejected_reply)
  24236. -
  24237. __END_DECLS
  24238. #endif /* rpc/rpc.h */
  24239. diff -Nur uClibc-0.9.33.2/include/rpc/rpc_msg.h uClibc-git/include/rpc/rpc_msg.h
  24240. --- uClibc-0.9.33.2/include/rpc/rpc_msg.h 2012-05-15 09:20:09.000000000 +0200
  24241. +++ uClibc-git/include/rpc/rpc_msg.h 2014-02-03 12:32:56.000000000 +0100
  24242. @@ -201,6 +201,26 @@
  24243. __THROW;
  24244. libc_hidden_proto(_seterr_reply)
  24245. +#ifdef __UCLIBC__
  24246. +/*
  24247. + * XDR routine to handle an accepted rpc reply.
  24248. + * xdr_accepted_reply(xdrs, rej)
  24249. + * XDR *xdrs;
  24250. + * struct accepted_reply *rej;
  24251. + */
  24252. +extern bool_t xdr_accepted_reply(XDR *__xdrs, struct accepted_reply *__ar);
  24253. +libc_hidden_proto(xdr_accepted_reply)
  24254. +
  24255. +/*
  24256. + * XDR routine to handle a rejected rpc reply.
  24257. + * xdr_rejected_reply(xdrs, rej)
  24258. + * XDR *xdrs;
  24259. + * struct rejected_reply *rej;
  24260. + */
  24261. +extern bool_t xdr_rejected_reply(XDR *__xdrs, struct rejected_reply *__rr);
  24262. +libc_hidden_proto(xdr_rejected_reply)
  24263. +#endif
  24264. +
  24265. __END_DECLS
  24266. #endif /* rpc/rpc_msg.h */
  24267. diff -Nur uClibc-0.9.33.2/include/rpc/types.h uClibc-git/include/rpc/types.h
  24268. --- uClibc-0.9.33.2/include/rpc/types.h 2012-05-15 09:20:09.000000000 +0200
  24269. +++ uClibc-git/include/rpc/types.h 2014-02-03 12:32:56.000000000 +0100
  24270. @@ -33,19 +33,6 @@
  24271. #ifndef _RPC_TYPES_H
  24272. #define _RPC_TYPES_H 1
  24273. -#ifdef _LIBC
  24274. -/* Some adjustments to make the libc source from glibc
  24275. - * compile more easily with uClibc... */
  24276. -#ifndef __FORCE_GLIBC
  24277. -#define __FORCE_GLIBC
  24278. -#endif
  24279. -#ifndef _GNU_SOURCE
  24280. -#define _GNU_SOURCE
  24281. -#endif
  24282. -#define _(X) X
  24283. -#endif
  24284. -#include <features.h>
  24285. -
  24286. typedef int bool_t;
  24287. typedef int enum_t;
  24288. /* This needs to be changed to uint32_t in the future */
  24289. diff -Nur uClibc-0.9.33.2/include/rpc/xdr.h uClibc-git/include/rpc/xdr.h
  24290. --- uClibc-0.9.33.2/include/rpc/xdr.h 2012-05-15 09:20:09.000000000 +0200
  24291. +++ uClibc-git/include/rpc/xdr.h 2014-02-03 12:32:56.000000000 +0100
  24292. @@ -36,14 +36,6 @@
  24293. #ifndef _RPC_XDR_H
  24294. #define _RPC_XDR_H 1
  24295. -#ifdef _LIBC
  24296. -/* Some adjustments to make the libc source from glibc
  24297. - * compile more easily with uClibc... */
  24298. -# ifndef __FORCE_GLIBC
  24299. -# define __FORCE_GLIBC
  24300. -# endif
  24301. -# define _(X) X
  24302. -#endif
  24303. #include <features.h>
  24304. #include <sys/types.h>
  24305. #include <rpc/types.h>
  24306. @@ -120,17 +112,21 @@
  24307. struct XDR
  24308. {
  24309. enum xdr_op x_op; /* operation; fast additional param */
  24310. + /* not sure whether non-const-ness is a part of the spec... if it is,
  24311. + * enclose "const" in #ifdef _LIBC / #endif
  24312. + * to make it effective only for libc compile */
  24313. + const
  24314. struct xdr_ops
  24315. {
  24316. bool_t (*x_getlong) (XDR *__xdrs, long *__lp);
  24317. /* get a long from underlying stream */
  24318. - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp);
  24319. + bool_t (*x_putlong) (XDR *__xdrs, const long *__lp);
  24320. /* put a long to " */
  24321. bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len);
  24322. /* get some bytes from " */
  24323. - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len);
  24324. + bool_t (*x_putbytes) (XDR *__xdrs, const char *__addr, u_int __len);
  24325. /* put some bytes to " */
  24326. - u_int (*x_getpostn) (__const XDR *__xdrs);
  24327. + u_int (*x_getpostn) (const XDR *__xdrs);
  24328. /* returns bytes off from beginning */
  24329. bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos);
  24330. /* lets you reposition the stream */
  24331. @@ -140,7 +136,7 @@
  24332. /* free privates of this xdr_stream */
  24333. bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip);
  24334. /* get a int from underlying stream */
  24335. - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip);
  24336. + bool_t (*x_putint32) (XDR *__xdrs, const int32_t *__ip);
  24337. /* put a int to " */
  24338. }
  24339. *x_ops;
  24340. @@ -320,6 +316,8 @@
  24341. extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW;
  24342. extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW;
  24343. extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW;
  24344. +extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW;
  24345. +extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW;
  24346. extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW;
  24347. libc_hidden_proto(xdr_bool)
  24348. extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW;
  24349. @@ -336,7 +334,7 @@
  24350. extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW;
  24351. libc_hidden_proto(xdr_string)
  24352. extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp,
  24353. - __const struct xdr_discrim *__choices,
  24354. + const struct xdr_discrim *__choices,
  24355. xdrproc_t dfault) __THROW;
  24356. libc_hidden_proto(xdr_union)
  24357. extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW;
  24358. @@ -372,7 +370,7 @@
  24359. */
  24360. /* XDR using memory buffers */
  24361. -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr,
  24362. +extern void xdrmem_create (XDR *__xdrs, const caddr_t __addr,
  24363. u_int __size, enum xdr_op __xop) __THROW;
  24364. libc_hidden_proto(xdrmem_create)
  24365. diff -Nur uClibc-0.9.33.2/include/sched.h uClibc-git/include/sched.h
  24366. --- uClibc-0.9.33.2/include/sched.h 2012-05-15 09:20:09.000000000 +0200
  24367. +++ uClibc-git/include/sched.h 2014-02-03 12:32:56.000000000 +0100
  24368. @@ -13,9 +13,8 @@
  24369. Lesser General Public License for more details.
  24370. You should have received a copy of the GNU Lesser General Public
  24371. - License along with the GNU C Library; if not, write to the Free
  24372. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24373. - 02111-1307 USA. */
  24374. + License along with the GNU C Library; if not, see
  24375. + <http://www.gnu.org/licenses/>. */
  24376. #ifndef _SCHED_H
  24377. #define _SCHED_H 1
  24378. @@ -40,7 +39,7 @@
  24379. __BEGIN_DECLS
  24380. /* Set scheduling parameters for a process. */
  24381. -extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
  24382. +extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
  24383. __THROW;
  24384. /* Retrieve scheduling parameters for a particular process. */
  24385. @@ -48,7 +47,7 @@
  24386. /* Set scheduling algorithm and/or parameters for a process. */
  24387. extern int sched_setscheduler (__pid_t __pid, int __policy,
  24388. - __const struct sched_param *__param) __THROW;
  24389. + const struct sched_param *__param) __THROW;
  24390. /* Retrieve scheduling algorithm for a particular purpose. */
  24391. extern int sched_getscheduler (__pid_t __pid) __THROW;
  24392. @@ -108,11 +107,19 @@
  24393. /* Set the CPU affinity for a task */
  24394. extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
  24395. - __const cpu_set_t *__cpuset) __THROW;
  24396. + const cpu_set_t *__cpuset) __THROW;
  24397. /* Get the CPU affinity for a task */
  24398. extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
  24399. cpu_set_t *__cpuset) __THROW;
  24400. +
  24401. +# ifdef _LIBC
  24402. +extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
  24403. + int __flags, void *__arg, ...);
  24404. +extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
  24405. + size_t __child_stack_size, int __flags, void *__arg, ...);
  24406. +# endif
  24407. +
  24408. #endif
  24409. __END_DECLS
  24410. diff -Nur uClibc-0.9.33.2/include/scsi/scsi.h uClibc-git/include/scsi/scsi.h
  24411. --- uClibc-0.9.33.2/include/scsi/scsi.h 2012-05-15 09:20:09.000000000 +0200
  24412. +++ uClibc-git/include/scsi/scsi.h 2014-02-03 12:32:56.000000000 +0100
  24413. @@ -12,9 +12,8 @@
  24414. Lesser General Public License for more details.
  24415. You should have received a copy of the GNU Lesser General Public
  24416. - License along with the GNU C Library; if not, write to the Free
  24417. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24418. - 02111-1307 USA. */
  24419. + License along with the GNU C Library; if not, see
  24420. + <http://www.gnu.org/licenses/>. */
  24421. /*
  24422. * This header file contains public constants and structures used by
  24423. diff -Nur uClibc-0.9.33.2/include/scsi/scsi_ioctl.h uClibc-git/include/scsi/scsi_ioctl.h
  24424. --- uClibc-0.9.33.2/include/scsi/scsi_ioctl.h 2012-05-15 09:20:09.000000000 +0200
  24425. +++ uClibc-git/include/scsi/scsi_ioctl.h 2014-02-03 12:32:56.000000000 +0100
  24426. @@ -12,9 +12,8 @@
  24427. Lesser General Public License for more details.
  24428. You should have received a copy of the GNU Lesser General Public
  24429. - License along with the GNU C Library; if not, write to the Free
  24430. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24431. - 02111-1307 USA. */
  24432. + License along with the GNU C Library; if not, see
  24433. + <http://www.gnu.org/licenses/>. */
  24434. #ifndef _SCSI_IOCTL_H
  24435. #define _SCSI_IOCTL_H
  24436. diff -Nur uClibc-0.9.33.2/include/scsi/sg.h uClibc-git/include/scsi/sg.h
  24437. --- uClibc-0.9.33.2/include/scsi/sg.h 2012-05-15 09:20:09.000000000 +0200
  24438. +++ uClibc-git/include/scsi/sg.h 2014-02-03 12:32:56.000000000 +0100
  24439. @@ -12,9 +12,8 @@
  24440. Lesser General Public License for more details.
  24441. You should have received a copy of the GNU Lesser General Public
  24442. - License along with the GNU C Library; if not, write to the Free
  24443. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24444. - 02111-1307 USA. */
  24445. + License along with the GNU C Library; if not, see
  24446. + <http://www.gnu.org/licenses/>. */
  24447. /*
  24448. History:
  24449. diff -Nur uClibc-0.9.33.2/include/search.h uClibc-git/include/search.h
  24450. --- uClibc-0.9.33.2/include/search.h 2012-05-15 09:20:09.000000000 +0200
  24451. +++ uClibc-git/include/search.h 2014-02-03 12:32:56.000000000 +0100
  24452. @@ -13,9 +13,8 @@
  24453. Lesser General Public License for more details.
  24454. You should have received a copy of the GNU Lesser General Public
  24455. - License along with the GNU C Library; if not, write to the Free
  24456. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24457. - 02111-1307 USA. */
  24458. + License along with the GNU C Library; if not, see
  24459. + <http://www.gnu.org/licenses/>. */
  24460. #ifndef _SEARCH_H
  24461. #define _SEARCH_H 1
  24462. @@ -52,7 +51,7 @@
  24463. /* For use with hsearch(3). */
  24464. #ifndef __COMPAR_FN_T
  24465. # define __COMPAR_FN_T
  24466. -typedef int (*__compar_fn_t) (__const void *, __const void *);
  24467. +typedef int (*__compar_fn_t) (const void *, const void *);
  24468. # ifdef __USE_GNU
  24469. typedef __compar_fn_t comparison_fn_t;
  24470. @@ -130,30 +129,30 @@
  24471. /* Search for an entry matching the given KEY in the tree pointed to
  24472. by *ROOTP and insert a new element if not found. */
  24473. -extern void *tsearch (__const void *__key, void **__rootp,
  24474. +extern void *tsearch (const void *__key, void **__rootp,
  24475. __compar_fn_t __compar);
  24476. libc_hidden_proto(tsearch)
  24477. /* Search for an entry matching the given KEY in the tree pointed to
  24478. by *ROOTP. If no matching entry is available return NULL. */
  24479. -extern void *tfind (__const void *__key, void *__const *__rootp,
  24480. +extern void *tfind (const void *__key, void *const *__rootp,
  24481. __compar_fn_t __compar);
  24482. libc_hidden_proto(tfind)
  24483. /* Remove the element matching KEY from the tree pointed to by *ROOTP. */
  24484. -extern void *tdelete (__const void *__restrict __key,
  24485. +extern void *tdelete (const void *__restrict __key,
  24486. void **__restrict __rootp,
  24487. __compar_fn_t __compar);
  24488. #ifndef __ACTION_FN_T
  24489. # define __ACTION_FN_T
  24490. -typedef void (*__action_fn_t) (__const void *__nodep, VISIT __value,
  24491. +typedef void (*__action_fn_t) (const void *__nodep, VISIT __value,
  24492. int __level);
  24493. #endif
  24494. /* Walk through the whole tree and call the ACTION callback for every node
  24495. or leaf. */
  24496. -extern void twalk (__const void *__root, __action_fn_t __action);
  24497. +extern void twalk (const void *__root, __action_fn_t __action);
  24498. #ifdef __USE_GNU
  24499. /* Callback type for function to free a tree node. If the keys are atomic
  24500. @@ -168,13 +167,13 @@
  24501. /* Perform linear search for KEY by comparing by COMPAR in an array
  24502. [BASE,BASE+NMEMB*SIZE). */
  24503. -extern void *lfind (__const void *__key, __const void *__base,
  24504. +extern void *lfind (const void *__key, const void *__base,
  24505. size_t *__nmemb, size_t __size, __compar_fn_t __compar);
  24506. libc_hidden_proto(lfind)
  24507. /* Perform linear search for KEY by comparing by COMPAR function in
  24508. array [BASE,BASE+NMEMB*SIZE) and insert entry if not found. */
  24509. -extern void *lsearch (__const void *__key, void *__base,
  24510. +extern void *lsearch (const void *__key, void *__base,
  24511. size_t *__nmemb, size_t __size, __compar_fn_t __compar);
  24512. __END_DECLS
  24513. diff -Nur uClibc-0.9.33.2/include/setjmp.h uClibc-git/include/setjmp.h
  24514. --- uClibc-0.9.33.2/include/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  24515. +++ uClibc-git/include/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  24516. @@ -1,4 +1,4 @@
  24517. -/* Copyright (C) 1991-1999, 2001 Free Software Foundation, Inc.
  24518. +/* Copyright (C) 1991-1999,2001,2002,2007,2009 Free Software Foundation, Inc.
  24519. This file is part of the GNU C Library.
  24520. The GNU C Library is free software; you can redistribute it and/or
  24521. @@ -12,9 +12,8 @@
  24522. Lesser General Public License for more details.
  24523. You should have received a copy of the GNU Lesser General Public
  24524. - License along with the GNU C Library; if not, write to the Free
  24525. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24526. - 02111-1307 USA. */
  24527. + License along with the GNU C Library; if not, see
  24528. + <http://www.gnu.org/licenses/>. */
  24529. /*
  24530. * ISO C99 Standard: 7.13 Nonlocal jumps <setjmp.h>
  24531. @@ -30,8 +29,9 @@
  24532. #include <bits/setjmp.h> /* Get `__jmp_buf'. */
  24533. #include <bits/sigset.h> /* Get `__sigset_t'. */
  24534. +
  24535. /* Calling environment, plus possibly a saved signal mask. */
  24536. -typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */
  24537. +struct __jmp_buf_tag
  24538. {
  24539. /* NOTE: The machine-dependent definitions of `__sigsetjmp'
  24540. assume that a `jmp_buf' begins with a `__jmp_buf' and that
  24541. @@ -40,23 +40,29 @@
  24542. __jmp_buf __jmpbuf; /* Calling environment. */
  24543. int __mask_was_saved; /* Saved the signal mask? */
  24544. __sigset_t __saved_mask; /* Saved signal mask. */
  24545. - } jmp_buf[1];
  24546. + };
  24547. +
  24548. +__BEGIN_NAMESPACE_STD
  24549. +
  24550. +typedef struct __jmp_buf_tag jmp_buf[1];
  24551. /* Store the calling environment in ENV, also saving the signal mask.
  24552. Return 0. */
  24553. extern int setjmp (jmp_buf __env) __THROW;
  24554. -/* Store the calling environment in ENV, not saving the signal mask.
  24555. - Return 0. */
  24556. -extern int _setjmp (jmp_buf __env) __THROW;
  24557. +__END_NAMESPACE_STD
  24558. /* Store the calling environment in ENV, also saving the
  24559. signal mask if SAVEMASK is nonzero. Return 0.
  24560. This is the internal name for `sigsetjmp'. */
  24561. -extern int __sigsetjmp (jmp_buf __env, int __savemask) __THROW;
  24562. +extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW;
  24563. #ifndef __FAVOR_BSD
  24564. +/* Store the calling environment in ENV, not saving the signal mask.
  24565. + Return 0. */
  24566. +extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROW;
  24567. +
  24568. /* Do not save the signal mask. This is equivalent to the `_setjmp'
  24569. BSD function. */
  24570. # define setjmp(env) _setjmp (env)
  24571. @@ -68,15 +74,20 @@
  24572. #endif /* Favor BSD. */
  24573. +__BEGIN_NAMESPACE_STD
  24574. +
  24575. /* Jump to the environment saved in ENV, making the
  24576. `setjmp' call there return VAL, or 1 if VAL is 0. */
  24577. -extern void longjmp (jmp_buf __env, int __val)
  24578. +extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
  24579. __THROW __attribute__ ((__noreturn__));
  24580. +
  24581. +__END_NAMESPACE_STD
  24582. +
  24583. #if defined __USE_BSD || defined __USE_XOPEN
  24584. /* Same. Usually `_longjmp' is used with `_setjmp', which does not save
  24585. the signal mask. But it is how ENV was saved that determines whether
  24586. `longjmp' restores the mask; `_longjmp' is just an alias. */
  24587. -extern void _longjmp (jmp_buf __env, int __val)
  24588. +extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
  24589. __THROW __attribute__ ((__noreturn__));
  24590. #endif
  24591. @@ -85,7 +96,7 @@
  24592. /* Use the same type for `jmp_buf' and `sigjmp_buf'.
  24593. The `__mask_was_saved' flag determines whether
  24594. or not `longjmp' will restore the signal mask. */
  24595. -typedef jmp_buf sigjmp_buf;
  24596. +typedef struct __jmp_buf_tag sigjmp_buf[1];
  24597. /* Store the calling environment in ENV, also saving the
  24598. signal mask if SAVEMASK is nonzero. Return 0. */
  24599. @@ -101,4 +112,16 @@
  24600. __END_DECLS
  24601. +#ifdef _LIBC
  24602. +extern void __longjmp(__jmp_buf __env, int __val) attribute_noreturn;
  24603. +libc_hidden_proto(__longjmp)
  24604. +extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  24605. +extern __typeof(siglongjmp) __libc_siglongjmp attribute_noreturn;
  24606. +extern void _longjmp_unwind(jmp_buf __env, int __val);
  24607. +libc_hidden_proto(_longjmp_unwind)
  24608. +extern int __sigjmp_save(sigjmp_buf __env, int __savemask) attribute_hidden;
  24609. +/* We use the normal longjmp for unwinding */
  24610. +# define __libc_unwind_longjmp(buf, val) __libc_longjmp(buf, val)
  24611. +#endif
  24612. +
  24613. #endif /* setjmp.h */
  24614. diff -Nur uClibc-0.9.33.2/include/sgtty.h uClibc-git/include/sgtty.h
  24615. --- uClibc-0.9.33.2/include/sgtty.h 2012-05-15 09:20:09.000000000 +0200
  24616. +++ uClibc-git/include/sgtty.h 2014-02-03 12:32:56.000000000 +0100
  24617. @@ -12,9 +12,8 @@
  24618. Lesser General Public License for more details.
  24619. You should have received a copy of the GNU Lesser General Public
  24620. - License along with the GNU C Library; if not, write to the Free
  24621. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24622. - 02111-1307 USA. */
  24623. + License along with the GNU C Library; if not, see
  24624. + <http://www.gnu.org/licenses/>. */
  24625. #ifndef _SGTTY_H
  24626. #define _SGTTY_H 1
  24627. @@ -38,7 +37,7 @@
  24628. extern int gtty (int __fd, struct sgttyb *__params) __THROW;
  24629. /* Set the terminal parameters associated with FD to *PARAMS. */
  24630. -extern int stty (int __fd, __const struct sgttyb *__params) __THROW;
  24631. +extern int stty (int __fd, const struct sgttyb *__params) __THROW;
  24632. #endif
  24633. diff -Nur uClibc-0.9.33.2/include/shadow.h uClibc-git/include/shadow.h
  24634. --- uClibc-0.9.33.2/include/shadow.h 2012-05-15 09:20:09.000000000 +0200
  24635. +++ uClibc-git/include/shadow.h 2014-02-03 12:32:56.000000000 +0100
  24636. @@ -12,9 +12,8 @@
  24637. Lesser General Public License for more details.
  24638. You should have received a copy of the GNU Lesser General Public
  24639. - License along with the GNU C Library; if not, write to the Free
  24640. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24641. - 02111-1307 USA. */
  24642. + License along with the GNU C Library; if not, see
  24643. + <http://www.gnu.org/licenses/>. */
  24644. /* Declaration of types and functions for shadow password suite. */
  24645. @@ -84,7 +83,7 @@
  24646. cancellation point. But due to similarity with an POSIX interface
  24647. or due to the implementation it is a cancellation point and
  24648. therefore not marked with __THROW. */
  24649. -extern struct spwd *getspnam (__const char *__name);
  24650. +extern struct spwd *getspnam (const char *__name);
  24651. /* Read shadow entry from STRING.
  24652. @@ -92,7 +91,7 @@
  24653. cancellation point. But due to similarity with an POSIX interface
  24654. or due to the implementation it is a cancellation point and
  24655. therefore not marked with __THROW. */
  24656. -extern struct spwd *sgetspent (__const char *__string);
  24657. +extern struct spwd *sgetspent (const char *__string);
  24658. /* Read next shadow entry from STREAM.
  24659. @@ -108,7 +107,7 @@
  24660. cancellation point. But due to similarity with an POSIX interface
  24661. or due to the implementation it is a cancellation point and
  24662. therefore not marked with __THROW. */
  24663. -extern int putspent (__const struct spwd *__p, FILE *__stream);
  24664. +extern int putspent (const struct spwd *__p, FILE *__stream);
  24665. #ifdef __USE_MISC
  24666. @@ -122,12 +121,12 @@
  24667. size_t __buflen, struct spwd **__result);
  24668. libc_hidden_proto(getspent_r)
  24669. -extern int getspnam_r (__const char *__name, struct spwd *__result_buf,
  24670. +extern int getspnam_r (const char *__name, struct spwd *__result_buf,
  24671. char *__buffer, size_t __buflen,
  24672. struct spwd **__result);
  24673. libc_hidden_proto(getspnam_r)
  24674. -extern int sgetspent_r (__const char *__string, struct spwd *__result_buf,
  24675. +extern int sgetspent_r (const char *__string, struct spwd *__result_buf,
  24676. char *__buffer, size_t __buflen,
  24677. struct spwd **__result);
  24678. libc_hidden_proto(sgetspent_r)
  24679. diff -Nur uClibc-0.9.33.2/include/signal.h uClibc-git/include/signal.h
  24680. --- uClibc-0.9.33.2/include/signal.h 2012-05-15 09:20:09.000000000 +0200
  24681. +++ uClibc-git/include/signal.h 2014-02-03 12:32:56.000000000 +0100
  24682. @@ -1,4 +1,4 @@
  24683. -/* Copyright (C) 1991-2003, 2004 Free Software Foundation, Inc.
  24684. +/* Copyright (C) 1991-2003, 2004, 2007, 2009 Free Software Foundation, Inc.
  24685. This file is part of the GNU C Library.
  24686. The GNU C Library is free software; you can redistribute it and/or
  24687. @@ -12,9 +12,8 @@
  24688. Lesser General Public License for more details.
  24689. You should have received a copy of the GNU Lesser General Public
  24690. - License along with the GNU C Library; if not, write to the Free
  24691. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  24692. - 02111-1307 USA. */
  24693. + License along with the GNU C Library; if not, see
  24694. + <http://www.gnu.org/licenses/>. */
  24695. /*
  24696. * ISO C99 Standard: 7.14 Signal handling <signal.h>
  24697. @@ -87,15 +86,27 @@
  24698. typedef __pid_t pid_t;
  24699. # define __pid_t_defined
  24700. # endif
  24701. +#endif
  24702. +#ifdef __USE_XOPEN
  24703. # ifndef __uid_t_defined
  24704. typedef __uid_t uid_t;
  24705. # define __uid_t_defined
  24706. # endif
  24707. #endif /* Unix98 */
  24708. +#if defined __USE_POSIX199309 && defined __UCLIBC_HAS_REALTIME__
  24709. +/* We need `struct timespec' later on. */
  24710. +# define __need_timespec
  24711. +# include <time.h>
  24712. +
  24713. +/* Get the `siginfo_t' type plus the needed symbols. */
  24714. +# include <bits/siginfo.h>
  24715. +#endif
  24716. +
  24717. /* Type of a signal handler. */
  24718. typedef void (*__sighandler_t) (int);
  24719. +
  24720. #if defined __UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL__
  24721. /* The X/Open definition of `signal' specifies the SVID semantic. Use
  24722. the additional function `sysv_signal' when X/Open compatibility is
  24723. @@ -156,17 +167,23 @@
  24724. libc_hidden_proto(raise)
  24725. __END_NAMESPACE_STD
  24726. -#ifdef __USE_SVID
  24727. +#if 0 /*def __USE_SVID*/
  24728. /* SVID names for the same things. */
  24729. extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
  24730. __THROW;
  24731. extern int gsignal (int __sig) __THROW;
  24732. #endif /* Use SVID. */
  24733. -#ifdef __USE_MISC
  24734. +/* glibc guards the next two wrong with __USE_XOPEN2K */
  24735. +#if defined __USE_MISC || defined __USE_XOPEN2K8
  24736. /* Print a message describing the meaning of the given signal number. */
  24737. -extern void psignal (int __sig, __const char *__s);
  24738. -#endif /* Use misc. */
  24739. +extern void psignal (int __sig, const char *__s);
  24740. +#endif /* Use misc or POSIX 2008. */
  24741. +
  24742. +#if 0 /*def __USE_XOPEN2K8*/
  24743. +/* Print a message describing the meaning of the given signal information. */
  24744. +extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
  24745. +#endif /* POSIX 2008. */
  24746. #ifdef __UCLIBC_SUSV4_LEGACY__
  24747. /* The `sigpause' function has two different interfaces. The original
  24748. @@ -177,23 +194,25 @@
  24749. This function is a cancellation point and therefore not marked with
  24750. __THROW. */
  24751. -extern int __sigpause (int __sig_or_mask, int __is_sig);
  24752. -libc_hidden_proto(__sigpause)
  24753. +/*extern int __sigpause (int __sig_or_mask, int __is_sig);*/
  24754. #ifdef __FAVOR_BSD
  24755. /* Set the mask of blocked signals to MASK,
  24756. wait for a signal to arrive, and then restore the mask. */
  24757. -extern int sigpause (int __mask) __THROW __attribute_deprecated__;
  24758. -# define sigpause(mask) __sigpause ((mask), 0)
  24759. +/*extern int sigpause (int __mask) __THROW __attribute_deprecated__;
  24760. +# define sigpause(mask) __sigpause ((mask), 0)*/
  24761. +/* uClibc note: BSD sigpause is available as __bsd_sigpause.
  24762. + * It is intentionally not prototyped */
  24763. #else
  24764. # ifdef __USE_XOPEN
  24765. /* Remove a signal from the signal mask and suspend the process. */
  24766. -# define sigpause(sig) __sigpause ((sig), 1)
  24767. +extern int sigpause(int __sig);
  24768. +/*# define sigpause(sig) __sigpause ((sig), 1)*/
  24769. # endif
  24770. #endif
  24771. #endif /* __UCLIBC_SUSV4_LEGACY__ */
  24772. -#ifdef __USE_BSD
  24773. +#if 0 /*def __USE_BSD*/
  24774. /* None of the following functions should be used anymore. They are here
  24775. only for compatibility. A single word (`int') is not guaranteed to be
  24776. enough to hold a complete signal mask and therefore these functions
  24777. @@ -203,14 +222,10 @@
  24778. # define sigmask(sig) __sigmask(sig)
  24779. /* Block signals in MASK, returning the old mask. */
  24780. -extern int sigblock (int __mask) __THROW;
  24781. -/* collides with libc_hidden_proto: __attribute_deprecated__; */
  24782. -libc_hidden_proto(sigblock)
  24783. +extern int sigblock (int __mask) __THROW __attribute_deprecated__;
  24784. /* Set the mask of blocked signals to MASK, returning the old mask. */
  24785. -extern int sigsetmask (int __mask) __THROW;
  24786. -/* collides with libc_hidden_proto: __attribute_deprecated__; */
  24787. -libc_hidden_proto(sigsetmask)
  24788. +extern int sigsetmask (int __mask) __THROW __attribute_deprecated__;
  24789. /* Return currently selected signal mask. */
  24790. extern int siggetmask (void) __THROW __attribute_deprecated__;
  24791. @@ -228,22 +243,11 @@
  24792. #ifdef __USE_POSIX
  24793. -# ifdef __USE_POSIX199309
  24794. -/* We need `struct timespec' later on. */
  24795. -# define __need_timespec
  24796. -# include <time.h>
  24797. -
  24798. -/* Get the `siginfo_t' type plus the needed symbols. */
  24799. -# include <bits/siginfo.h>
  24800. -# endif
  24801. -
  24802. /* Clear all signals from SET. */
  24803. extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1));
  24804. -libc_hidden_proto(sigemptyset)
  24805. /* Set all signals in SET. */
  24806. extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1));
  24807. -libc_hidden_proto(sigfillset)
  24808. /* Add SIGNO to SET. */
  24809. extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1));
  24810. @@ -254,20 +258,20 @@
  24811. libc_hidden_proto(sigdelset)
  24812. /* Return 1 if SIGNO is in SET, 0 if not. */
  24813. -extern int sigismember (__const sigset_t *__set, int __signo)
  24814. +extern int sigismember (const sigset_t *__set, int __signo)
  24815. __THROW __nonnull ((1));
  24816. # ifdef __USE_GNU
  24817. /* Return non-empty value is SET is not empty. */
  24818. -extern int sigisemptyset (__const sigset_t *__set) __THROW __nonnull ((1));
  24819. +extern int sigisemptyset (const sigset_t *__set) __THROW __nonnull ((1));
  24820. /* Build new signal set by combining the two inputs set using logical AND. */
  24821. -extern int sigandset (sigset_t *__set, __const sigset_t *__left,
  24822. - __const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  24823. +extern int sigandset (sigset_t *__set, const sigset_t *__left,
  24824. + const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  24825. /* Build new signal set by combining the two inputs set using logical OR. */
  24826. -extern int sigorset (sigset_t *__set, __const sigset_t *__left,
  24827. - __const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  24828. +extern int sigorset (sigset_t *__set, const sigset_t *__left,
  24829. + const sigset_t *__right) __THROW __nonnull ((1, 2, 3));
  24830. # endif /* GNU */
  24831. /* Get the system-specific definitions of `struct sigaction'
  24832. @@ -275,7 +279,7 @@
  24833. # include <bits/sigaction.h>
  24834. /* Get and/or change the set of blocked signals. */
  24835. -extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
  24836. +extern int sigprocmask (int __how, const sigset_t *__restrict __set,
  24837. sigset_t *__restrict __oset) __THROW;
  24838. libc_hidden_proto(sigprocmask)
  24839. @@ -284,14 +288,50 @@
  24840. This function is a cancellation point and therefore not marked with
  24841. __THROW. */
  24842. -extern int sigsuspend (__const sigset_t *__set) __nonnull ((1));
  24843. +extern int sigsuspend (const sigset_t *__set) __nonnull ((1));
  24844. +#ifdef _LIBC
  24845. +extern __typeof(sigsuspend) __sigsuspend_nocancel attribute_hidden;
  24846. libc_hidden_proto(sigsuspend)
  24847. +#endif
  24848. /* Get and/or set the action for signal SIG. */
  24849. -extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
  24850. +extern int sigaction (int __sig, const struct sigaction *__restrict __act,
  24851. struct sigaction *__restrict __oact) __THROW;
  24852. +#ifdef _LIBC
  24853. +# if 0 /* this is in headers */
  24854. +/* In uclibc, userspace struct sigaction is identical to
  24855. + * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  24856. + * See sigaction.h
  24857. + */
  24858. +struct old_kernel_sigaction;
  24859. +extern int __syscall_sigaction(int, const struct old_kernel_sigaction *,
  24860. + struct old_kernel_sigaction *) attribute_hidden;
  24861. +# else /* this is how the function is built */
  24862. +extern __typeof(sigaction) __syscall_sigaction attribute_hidden;
  24863. +# endif
  24864. +# define __need_size_t
  24865. +# include <stddef.h>
  24866. +/* candidate for attribute_hidden, if NPTL would behave */
  24867. +extern int __syscall_rt_sigaction(int, const struct sigaction *,
  24868. + struct sigaction *, size_t)
  24869. +# ifndef __UCLIBC_HAS_THREADS_NATIVE__
  24870. + attribute_hidden
  24871. +# endif
  24872. + ;
  24873. +extern __typeof(sigaction) __libc_sigaction;
  24874. libc_hidden_proto(sigaction)
  24875. +# ifdef __mips__
  24876. +# define _KERNEL_NSIG_WORDS (_NSIG / _MIPS_SZLONG)
  24877. +typedef struct {
  24878. + unsigned long sig[_KERNEL_NSIG_WORDS];
  24879. +} kernel_sigset_t;
  24880. +# define __SYSCALL_SIGSET_T_SIZE (sizeof(kernel_sigset_t))
  24881. +# else
  24882. +# define __SYSCALL_SIGSET_T_SIZE (_NSIG / 8)
  24883. +# endif
  24884. +#endif
  24885. +
  24886. /* Put in SET all signals that are blocked and waiting to be delivered. */
  24887. extern int sigpending (sigset_t *__set) __THROW __nonnull ((1));
  24888. @@ -300,7 +340,7 @@
  24889. This function is a cancellation point and therefore not marked with
  24890. __THROW. */
  24891. -extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
  24892. +extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
  24893. __nonnull ((1, 2));
  24894. # if defined __USE_POSIX199309 && defined __UCLIBC_HAS_REALTIME__
  24895. @@ -308,30 +348,29 @@
  24896. This function is a cancellation point and therefore not marked with
  24897. __THROW. */
  24898. -extern int sigwaitinfo (__const sigset_t *__restrict __set,
  24899. +extern int sigwaitinfo (const sigset_t *__restrict __set,
  24900. siginfo_t *__restrict __info) __nonnull ((1));
  24901. #ifdef _LIBC
  24902. extern __typeof(sigwaitinfo) __sigwaitinfo attribute_hidden;
  24903. #endif
  24904. -libc_hidden_proto(sigwaitinfo)
  24905. /* Select any of pending signals from SET and place information in INFO.
  24906. Wait the time specified by TIMEOUT if no signal is pending.
  24907. This function is a cancellation point and therefore not marked with
  24908. __THROW. */
  24909. -extern int sigtimedwait (__const sigset_t *__restrict __set,
  24910. +extern int sigtimedwait (const sigset_t *__restrict __set,
  24911. siginfo_t *__restrict __info,
  24912. - __const struct timespec *__restrict __timeout)
  24913. + const struct timespec *__restrict __timeout)
  24914. __nonnull ((1));
  24915. #ifdef _LIBC
  24916. -extern __typeof(sigtimedwait) __sigtimedwait attribute_hidden;
  24917. -#endif
  24918. +extern __typeof(sigtimedwait) __sigtimedwait_nocancel attribute_hidden;
  24919. libc_hidden_proto(sigtimedwait)
  24920. +#endif
  24921. /* Send signal SIG to the process PID. Associate data in VAL with the
  24922. signal. */
  24923. -extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
  24924. +extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
  24925. __THROW;
  24926. # endif /* Use POSIX 199306. */
  24927. @@ -343,9 +382,10 @@
  24928. /* Names of the signals. This variable exists only for compatibility.
  24929. Use `strsignal' instead (see <string.h>). */
  24930. # define _sys_siglist sys_siglist
  24931. -extern __const char *__const sys_siglist[_NSIG];
  24932. +extern const char *const sys_siglist[_NSIG];
  24933. # endif
  24934. +#ifndef __UCLIBC_STRICT_HEADERS__
  24935. /* Structure passed to `sigvec'. */
  24936. struct sigvec
  24937. {
  24938. @@ -360,27 +400,34 @@
  24939. # define SV_ONSTACK (1 << 0)/* Take the signal on the signal stack. */
  24940. # define SV_INTERRUPT (1 << 1)/* Do not restart system calls. */
  24941. # define SV_RESETHAND (1 << 2)/* Reset handler to SIG_DFL on receipt. */
  24942. +#endif
  24943. +#if 0
  24944. /* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member
  24945. of VEC. The signals in `sv_mask' will be blocked while the handler runs.
  24946. If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be
  24947. reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL,
  24948. it is filled in with the old information for SIG. */
  24949. -extern int sigvec (int __sig, __const struct sigvec *__vec,
  24950. +extern int sigvec (int __sig, const struct sigvec *__vec,
  24951. struct sigvec *__ovec) __THROW;
  24952. +#endif
  24953. /* Get machine-dependent `struct sigcontext' and signal subcodes. */
  24954. # include <bits/sigcontext.h>
  24955. +#if 0
  24956. /* Restore the state saved in SCP. */
  24957. extern int sigreturn (struct sigcontext *__scp) __THROW;
  24958. +#endif
  24959. #endif /* use BSD. */
  24960. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  24961. +# define __need_size_t
  24962. +# include <stddef.h>
  24963. # ifdef __UCLIBC_SUSV4_LEGACY__
  24964. /* If INTERRUPT is nonzero, make signal SIG interrupt system calls
  24965. @@ -406,7 +453,7 @@
  24966. /* Alternate signal handler stack interface.
  24967. This interface should always be preferred over `sigstack'. */
  24968. -extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
  24969. +extern int sigaltstack (const struct sigaltstack *__restrict __ss,
  24970. struct sigaltstack *__restrict __oss) __THROW;
  24971. #endif /* use BSD or X/Open Unix. */
  24972. @@ -442,6 +489,13 @@
  24973. /* Return number of available real-time signal with lowest priority. */
  24974. extern int __libc_current_sigrtmax (void) __THROW;
  24975. +#ifdef _LIBC
  24976. +extern sigset_t _sigintr attribute_hidden;
  24977. +/* simplified version without parameter checking */
  24978. +# include <string.h>
  24979. +# undef __sigemptyset
  24980. +# define __sigemptyset(ss) (memset(ss, '\0', sizeof(sigset_t)), 0)
  24981. +#endif
  24982. #endif /* signal.h */
  24983. __END_DECLS
  24984. diff -Nur uClibc-0.9.33.2/include/spawn.h uClibc-git/include/spawn.h
  24985. --- uClibc-0.9.33.2/include/spawn.h 1970-01-01 01:00:00.000000000 +0100
  24986. +++ uClibc-git/include/spawn.h 2014-02-03 12:32:56.000000000 +0100
  24987. @@ -0,0 +1,289 @@
  24988. +/* Definitions for POSIX spawn interface.
  24989. + Copyright (C) 2000,2003,2004,2009,2011,2012 Free Software Foundation, Inc.
  24990. + This file is part of the GNU C Library.
  24991. +
  24992. + The GNU C Library is free software; you can redistribute it and/or
  24993. + modify it under the terms of the GNU Lesser General Public
  24994. + License as published by the Free Software Foundation; either
  24995. + version 2.1 of the License, or (at your option) any later version.
  24996. +
  24997. + The GNU C Library is distributed in the hope that it will be useful,
  24998. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  24999. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  25000. + Lesser General Public License for more details.
  25001. +
  25002. + You should have received a copy of the GNU Lesser General Public
  25003. + License along with the GNU C Library; if not, see
  25004. + <http://www.gnu.org/licenses/>. */
  25005. +
  25006. +#ifndef _SPAWN_H
  25007. +#define _SPAWN_H 1
  25008. +
  25009. +#include <features.h>
  25010. +#include <sched.h>
  25011. +#define __need_sigset_t
  25012. +#include <signal.h>
  25013. +#include <sys/types.h>
  25014. +
  25015. +/* For the tiny inlines (errno/free/memset). */
  25016. +#include <errno.h>
  25017. +#include <string.h>
  25018. +#include <stdlib.h>
  25019. +
  25020. +
  25021. +/* Data structure to contain attributes for thread creation. */
  25022. +typedef struct
  25023. +{
  25024. + short int __flags;
  25025. + pid_t __pgrp;
  25026. + sigset_t __sd;
  25027. + sigset_t __ss;
  25028. + struct sched_param __sp;
  25029. + int __policy;
  25030. + int __pad[16];
  25031. +} posix_spawnattr_t;
  25032. +
  25033. +
  25034. +/* Data structure to contain information about the actions to be
  25035. + performed in the new process with respect to file descriptors. */
  25036. +typedef struct
  25037. +{
  25038. + int __allocated;
  25039. + int __used;
  25040. + struct __spawn_action *__actions;
  25041. + int __pad[16];
  25042. +} posix_spawn_file_actions_t;
  25043. +
  25044. +
  25045. +/* Flags to be set in the `posix_spawnattr_t'. */
  25046. +#define POSIX_SPAWN_RESETIDS 0x01
  25047. +#define POSIX_SPAWN_SETPGROUP 0x02
  25048. +#define POSIX_SPAWN_SETSIGDEF 0x04
  25049. +#define POSIX_SPAWN_SETSIGMASK 0x08
  25050. +#define POSIX_SPAWN_SETSCHEDPARAM 0x10
  25051. +#define POSIX_SPAWN_SETSCHEDULER 0x20
  25052. +#ifdef __USE_GNU
  25053. +# define POSIX_SPAWN_USEVFORK 0x40
  25054. +#endif
  25055. +
  25056. +
  25057. +#define __POSIX_SPAWN_MASK (POSIX_SPAWN_RESETIDS \
  25058. + | POSIX_SPAWN_SETPGROUP \
  25059. + | POSIX_SPAWN_SETSIGDEF \
  25060. + | POSIX_SPAWN_SETSIGMASK \
  25061. + | POSIX_SPAWN_SETSCHEDPARAM \
  25062. + | POSIX_SPAWN_SETSCHEDULER \
  25063. + | POSIX_SPAWN_USEVFORK)
  25064. +
  25065. +__BEGIN_DECLS
  25066. +
  25067. +/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
  25068. + Before running the process perform the actions described in FILE-ACTIONS.
  25069. +
  25070. + This function is a possible cancellation point and therefore not
  25071. + marked with __THROW. */
  25072. +extern int posix_spawn (pid_t *__restrict __pid,
  25073. + const char *__restrict __path,
  25074. + const posix_spawn_file_actions_t *__restrict
  25075. + __file_actions,
  25076. + const posix_spawnattr_t *__restrict __attrp,
  25077. + char *const __argv[__restrict_arr],
  25078. + char *const __envp[__restrict_arr]);
  25079. +
  25080. +/* Similar to `posix_spawn' but search for FILE in the PATH.
  25081. +
  25082. + This function is a possible cancellation point and therefore not
  25083. + marked with __THROW. */
  25084. +extern int posix_spawnp (pid_t *__pid, const char *__file,
  25085. + const posix_spawn_file_actions_t *__file_actions,
  25086. + const posix_spawnattr_t *__attrp,
  25087. + char *const __argv[], char *const __envp[]);
  25088. +
  25089. +
  25090. +/* Initialize data structure with attributes for `spawn' to default values. */
  25091. +static inline
  25092. +int posix_spawnattr_init (posix_spawnattr_t *__attr)
  25093. +{
  25094. + memset (__attr, 0, sizeof (*__attr));
  25095. + return 0;
  25096. +}
  25097. +
  25098. +/* Free resources associated with ATTR. */
  25099. +static inline
  25100. +int posix_spawnattr_destroy (posix_spawnattr_t *__attr)
  25101. +{
  25102. + return 0;
  25103. +}
  25104. +
  25105. +/* Store signal mask for signals with default handling from ATTR in
  25106. + SIGDEFAULT. */
  25107. +static inline
  25108. +int posix_spawnattr_getsigdefault (const posix_spawnattr_t *
  25109. + __restrict __attr,
  25110. + sigset_t *__restrict __sigdefault)
  25111. +{
  25112. + memcpy (__sigdefault, &__attr->__sd, sizeof (sigset_t));
  25113. + return 0;
  25114. +}
  25115. +
  25116. +/* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */
  25117. +static inline
  25118. +int posix_spawnattr_setsigdefault (posix_spawnattr_t *__restrict __attr,
  25119. + const sigset_t *__restrict
  25120. + __sigdefault)
  25121. +{
  25122. + memcpy (&__attr->__sd, __sigdefault, sizeof (sigset_t));
  25123. + return 0;
  25124. +}
  25125. +
  25126. +/* Store signal mask for the new process from ATTR in SIGMASK. */
  25127. +static inline
  25128. +int posix_spawnattr_getsigmask (const posix_spawnattr_t *__restrict
  25129. + __attr,
  25130. + sigset_t *__restrict __sigmask)
  25131. +{
  25132. + memcpy (__sigmask, &__attr->__ss, sizeof (sigset_t));
  25133. + return 0;
  25134. +}
  25135. +
  25136. +/* Set signal mask for the new process in ATTR to SIGMASK. */
  25137. +static inline
  25138. +int posix_spawnattr_setsigmask (posix_spawnattr_t *__restrict __attr,
  25139. + const sigset_t *__restrict __sigmask)
  25140. +{
  25141. + memcpy (&__attr->__ss, __sigmask, sizeof (sigset_t));
  25142. + return 0;
  25143. +}
  25144. +
  25145. +/* Get flag word from the attribute structure. */
  25146. +static inline
  25147. +int posix_spawnattr_getflags (const posix_spawnattr_t *__restrict
  25148. + __attr,
  25149. + short int *__restrict __flags)
  25150. +{
  25151. + *__flags = __attr->__flags;
  25152. + return 0;
  25153. +}
  25154. +
  25155. +/* Store flags in the attribute structure. */
  25156. +static inline
  25157. +int posix_spawnattr_setflags (posix_spawnattr_t *_attr,
  25158. + short int __flags)
  25159. +{
  25160. + /* Check no invalid bits are set. */
  25161. + if (__flags & ~__POSIX_SPAWN_MASK)
  25162. + return EINVAL;
  25163. +
  25164. + _attr->__flags = __flags;
  25165. + return 0;
  25166. +}
  25167. +
  25168. +/* Get process group ID from the attribute structure. */
  25169. +static inline
  25170. +int posix_spawnattr_getpgroup (const posix_spawnattr_t *__restrict
  25171. + __attr, pid_t *__restrict __pgroup)
  25172. +{
  25173. + *__pgroup = __attr->__pgrp;
  25174. + return 0;
  25175. +}
  25176. +
  25177. +/* Store process group ID in the attribute structure. */
  25178. +static inline
  25179. +int posix_spawnattr_setpgroup (posix_spawnattr_t *__attr,
  25180. + pid_t __pgroup)
  25181. +{
  25182. + __attr->__pgrp = __pgroup;
  25183. + return 0;
  25184. +}
  25185. +
  25186. +/* Get scheduling policy from the attribute structure. */
  25187. +static inline
  25188. +int posix_spawnattr_getschedpolicy (const posix_spawnattr_t *
  25189. + __restrict __attr,
  25190. + int *__restrict __schedpolicy)
  25191. +{
  25192. + *__schedpolicy = __attr->__policy;
  25193. + return 0;
  25194. +}
  25195. +
  25196. +/* Store scheduling policy in the attribute structure. */
  25197. +static inline
  25198. +int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr,
  25199. + int __schedpolicy)
  25200. +{
  25201. + switch (__schedpolicy) {
  25202. + case SCHED_OTHER:
  25203. + case SCHED_FIFO:
  25204. + case SCHED_RR:
  25205. + break;
  25206. + default:
  25207. + return EINVAL;
  25208. + }
  25209. +
  25210. + __attr->__policy = __schedpolicy;
  25211. + return 0;
  25212. +}
  25213. +
  25214. +/* Get scheduling parameters from the attribute structure. */
  25215. +static inline
  25216. +int posix_spawnattr_getschedparam (const posix_spawnattr_t *
  25217. + __restrict __attr,
  25218. + struct sched_param *__restrict
  25219. + __schedparam)
  25220. +{
  25221. + memcpy (__schedparam, &__attr->__sp, sizeof (__attr->__sp));
  25222. + return 0;
  25223. +}
  25224. +
  25225. +/* Store scheduling parameters in the attribute structure. */
  25226. +static inline
  25227. +int posix_spawnattr_setschedparam (posix_spawnattr_t *__restrict __attr,
  25228. + const struct sched_param *
  25229. + __restrict __schedparam)
  25230. +{
  25231. + __attr->__sp = *__schedparam;
  25232. + return 0;
  25233. +}
  25234. +
  25235. +/* Initialize data structure for file attribute for `spawn' call. */
  25236. +static inline
  25237. +int posix_spawn_file_actions_init (posix_spawn_file_actions_t *
  25238. + __file_actions)
  25239. +{
  25240. + memset (__file_actions, 0, sizeof (*__file_actions));
  25241. + return 0;
  25242. +}
  25243. +
  25244. +/* Free resources associated with FILE-ACTIONS. */
  25245. +static inline
  25246. +int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *
  25247. + __file_actions)
  25248. +{
  25249. + free (__file_actions->__actions);
  25250. + return 0;
  25251. +}
  25252. +
  25253. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  25254. + `open' for the given file during the `spawn' call. */
  25255. +extern int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t *
  25256. + __restrict __file_actions,
  25257. + int __fd,
  25258. + const char *__restrict __path,
  25259. + int __oflag, mode_t __mode)
  25260. + __THROW;
  25261. +
  25262. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  25263. + `close' for the given file descriptor during the `spawn' call. */
  25264. +extern int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t *
  25265. + __file_actions, int __fd)
  25266. + __THROW;
  25267. +
  25268. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  25269. + `dup2' for the given file descriptors during the `spawn' call. */
  25270. +extern int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t *
  25271. + __file_actions,
  25272. + int __fd, int __newfd) __THROW;
  25273. +
  25274. +__END_DECLS
  25275. +
  25276. +#endif /* spawn.h */
  25277. diff -Nur uClibc-0.9.33.2/include/stdint.h uClibc-git/include/stdint.h
  25278. --- uClibc-0.9.33.2/include/stdint.h 2012-05-15 09:20:09.000000000 +0200
  25279. +++ uClibc-git/include/stdint.h 2014-02-03 12:32:56.000000000 +0100
  25280. @@ -12,9 +12,8 @@
  25281. Lesser General Public License for more details.
  25282. You should have received a copy of the GNU Lesser General Public
  25283. - License along with the GNU C Library; if not, write to the Free
  25284. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25285. - 02111-1307 USA. */
  25286. + License along with the GNU C Library; if not, see
  25287. + <http://www.gnu.org/licenses/>. */
  25288. /*
  25289. * ISO C99: 7.18 Integer types <stdint.h>
  25290. diff -Nur uClibc-0.9.33.2/include/stdio_ext.h uClibc-git/include/stdio_ext.h
  25291. --- uClibc-0.9.33.2/include/stdio_ext.h 2012-05-15 09:20:09.000000000 +0200
  25292. +++ uClibc-git/include/stdio_ext.h 2014-02-03 12:32:56.000000000 +0100
  25293. @@ -13,9 +13,8 @@
  25294. Lesser General Public License for more details.
  25295. You should have received a copy of the GNU Lesser General Public
  25296. - License along with the GNU C Library; if not, write to the Free
  25297. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25298. - 02111-1307 USA. */
  25299. + License along with the GNU C Library; if not, see
  25300. + <http://www.gnu.org/licenses/>. */
  25301. /* This header contains the same definitions as the header of the same name
  25302. on Sun's Solaris OS. */
  25303. diff -Nur uClibc-0.9.33.2/include/stdio.h uClibc-git/include/stdio.h
  25304. --- uClibc-0.9.33.2/include/stdio.h 2012-05-15 09:20:09.000000000 +0200
  25305. +++ uClibc-git/include/stdio.h 2014-02-03 12:32:56.000000000 +0100
  25306. @@ -13,9 +13,8 @@
  25307. Lesser General Public License for more details.
  25308. You should have received a copy of the GNU Lesser General Public
  25309. - License along with the GNU C Library; if not, write to the Free
  25310. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25311. - 02111-1307 USA. */
  25312. + License along with the GNU C Library; if not, see
  25313. + <http://www.gnu.org/licenses/>. */
  25314. /*
  25315. * ISO C99 Standard: 7.19 Input/output <stdio.h>
  25316. @@ -142,16 +141,17 @@
  25317. __BEGIN_NAMESPACE_STD
  25318. /* Remove file FILENAME. */
  25319. -extern int remove (__const char *__filename) __THROW;
  25320. +extern int remove (const char *__filename) __THROW;
  25321. libc_hidden_proto(remove)
  25322. /* Rename file OLD to NEW. */
  25323. -extern int rename (__const char *__old, __const char *__new) __THROW;
  25324. +extern int rename (const char *__old, const char *__new) __THROW;
  25325. __END_NAMESPACE_STD
  25326. #ifdef __USE_ATFILE
  25327. /* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */
  25328. -extern int renameat (int __oldfd, __const char *__old, int __newfd,
  25329. - __const char *__new) __THROW;
  25330. +extern int renameat (int __oldfd, const char *__old, int __newfd,
  25331. + const char *__new) __THROW;
  25332. +libc_hidden_proto(renameat)
  25333. #endif
  25334. __BEGIN_NAMESPACE_STD
  25335. @@ -194,7 +194,7 @@
  25336. If not and if DIR is not NULL, that value is checked. If that fails,
  25337. P_tmpdir is tried and finally "/tmp". The storage for the filename
  25338. is allocated by `malloc'. */
  25339. -extern char *tempnam (__const char *__dir, __const char *__pfx)
  25340. +extern char *tempnam (const char *__dir, const char *__pfx)
  25341. __THROW __attribute_malloc__ __wur;
  25342. #endif
  25343. @@ -242,23 +242,23 @@
  25344. This function is a possible cancellation point and therefore not
  25345. marked with __THROW. */
  25346. -extern FILE *fopen (__const char *__restrict __filename,
  25347. - __const char *__restrict __modes) __wur;
  25348. +extern FILE *fopen (const char *__restrict __filename,
  25349. + const char *__restrict __modes) __wur;
  25350. libc_hidden_proto(fopen)
  25351. /* Open a file, replacing an existing stream with it.
  25352. This function is a possible cancellation point and therefore not
  25353. marked with __THROW. */
  25354. -extern FILE *freopen (__const char *__restrict __filename,
  25355. - __const char *__restrict __modes,
  25356. +extern FILE *freopen (const char *__restrict __filename,
  25357. + const char *__restrict __modes,
  25358. FILE *__restrict __stream) __wur;
  25359. #else
  25360. # ifdef __REDIRECT
  25361. -extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
  25362. - __const char *__restrict __modes), fopen64)
  25363. +extern FILE *__REDIRECT (fopen, (const char *__restrict __filename,
  25364. + const char *__restrict __modes), fopen64)
  25365. __wur;
  25366. -extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
  25367. - __const char *__restrict __modes,
  25368. +extern FILE *__REDIRECT (freopen, (const char *__restrict __filename,
  25369. + const char *__restrict __modes,
  25370. FILE *__restrict __stream), freopen64)
  25371. __wur;
  25372. # else
  25373. @@ -268,38 +268,39 @@
  25374. #endif
  25375. __END_NAMESPACE_STD
  25376. #ifdef __USE_LARGEFILE64
  25377. -extern FILE *fopen64 (__const char *__restrict __filename,
  25378. - __const char *__restrict __modes) __wur;
  25379. +extern FILE *fopen64 (const char *__restrict __filename,
  25380. + const char *__restrict __modes) __wur;
  25381. libc_hidden_proto(fopen64)
  25382. -extern FILE *freopen64 (__const char *__restrict __filename,
  25383. - __const char *__restrict __modes,
  25384. +extern FILE *freopen64 (const char *__restrict __filename,
  25385. + const char *__restrict __modes,
  25386. FILE *__restrict __stream) __wur;
  25387. #endif
  25388. #ifdef __USE_POSIX
  25389. /* Create a new stream that refers to an existing system file descriptor. */
  25390. -extern FILE *fdopen (int __fd, __const char *__modes) __THROW __wur;
  25391. +extern FILE *fdopen (int __fd, const char *__modes) __THROW __wur;
  25392. libc_hidden_proto(fdopen)
  25393. #endif
  25394. -#ifdef __USE_GNU
  25395. #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
  25396. +#ifdef __USE_GNU
  25397. /* Create a new stream that refers to the given magic cookie,
  25398. and uses the given functions for input and output. */
  25399. extern FILE *fopencookie (void *__restrict __magic_cookie,
  25400. - __const char *__restrict __modes,
  25401. + const char *__restrict __modes,
  25402. _IO_cookie_io_functions_t __io_funcs) __THROW __wur;
  25403. libc_hidden_proto(fopencookie)
  25404. +#endif
  25405. +#ifdef __USE_XOPEN2K8
  25406. /* Create a new stream that refers to a memory buffer. */
  25407. -extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
  25408. +extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
  25409. __THROW __wur;
  25410. /* Open a stream that writes into a malloc'd buffer that is expanded as
  25411. necessary. *BUFLOC and *SIZELOC are updated with the buffer's location
  25412. and the number of characters written on fflush or fclose. */
  25413. -extern FILE *open_memstream (char **__restrict __bufloc,
  25414. - size_t *__restrict __sizeloc) __THROW __wur;
  25415. +extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __THROW __wur;
  25416. libc_hidden_proto(open_memstream)
  25417. #endif
  25418. #endif
  25419. @@ -334,17 +335,17 @@
  25420. This function is a possible cancellation point and therefore not
  25421. marked with __THROW. */
  25422. extern int fprintf (FILE *__restrict __stream,
  25423. - __const char *__restrict __format, ...);
  25424. + const char *__restrict __format, ...);
  25425. libc_hidden_proto(fprintf)
  25426. /* Write formatted output to stdout.
  25427. This function is a possible cancellation point and therefore not
  25428. marked with __THROW. */
  25429. -extern int printf (__const char *__restrict __format, ...);
  25430. +extern int printf (const char *__restrict __format, ...);
  25431. libc_hidden_proto(printf)
  25432. /* Write formatted output to S. */
  25433. extern int sprintf (char *__restrict __s,
  25434. - __const char *__restrict __format, ...)
  25435. + const char *__restrict __format, ...)
  25436. __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
  25437. libc_hidden_proto(sprintf)
  25438. @@ -352,16 +353,16 @@
  25439. This function is a possible cancellation point and therefore not
  25440. marked with __THROW. */
  25441. -extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
  25442. +extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
  25443. __gnuc_va_list __arg);
  25444. libc_hidden_proto(vfprintf)
  25445. /* Write formatted output to stdout from argument list ARG.
  25446. This function is a possible cancellation point and therefore not
  25447. marked with __THROW. */
  25448. -extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
  25449. +extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
  25450. /* Write formatted output to S from argument list ARG. */
  25451. -extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
  25452. +extern int vsprintf (char *__restrict __s, const char *__restrict __format,
  25453. __gnuc_va_list __arg)
  25454. __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
  25455. __END_NAMESPACE_STD
  25456. @@ -370,12 +371,12 @@
  25457. __BEGIN_NAMESPACE_C99
  25458. /* Maximum chars of output to write in MAXLEN. */
  25459. extern int snprintf (char *__restrict __s, size_t __maxlen,
  25460. - __const char *__restrict __format, ...)
  25461. + const char *__restrict __format, ...)
  25462. __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
  25463. libc_hidden_proto(snprintf)
  25464. extern int vsnprintf (char *__restrict __s, size_t __maxlen,
  25465. - __const char *__restrict __format, __gnuc_va_list __arg)
  25466. + const char *__restrict __format, __gnuc_va_list __arg)
  25467. __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
  25468. libc_hidden_proto(vsnprintf)
  25469. __END_NAMESPACE_C99
  25470. @@ -384,31 +385,33 @@
  25471. #ifdef __USE_GNU
  25472. /* Write formatted output to a string dynamically allocated with `malloc'.
  25473. Store the address of the string in *PTR. */
  25474. -extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
  25475. +extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
  25476. __gnuc_va_list __arg)
  25477. __THROW __attribute__ ((__format__ (__printf__, 2, 0))) __wur;
  25478. libc_hidden_proto(vasprintf)
  25479. #if 0 /* uClibc: disabled */
  25480. extern int __asprintf (char **__restrict __ptr,
  25481. - __const char *__restrict __fmt, ...)
  25482. + const char *__restrict __fmt, ...)
  25483. __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
  25484. #endif
  25485. extern int asprintf (char **__restrict __ptr,
  25486. - __const char *__restrict __fmt, ...)
  25487. + const char *__restrict __fmt, ...)
  25488. __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
  25489. libc_hidden_proto(asprintf)
  25490. +#endif
  25491. +#ifdef __USE_XOPEN2K8
  25492. /* Write formatted output to a file descriptor.
  25493. These functions are not part of POSIX and therefore no official
  25494. cancellation point. But due to similarity with an POSIX interface
  25495. or due to the implementation they are cancellation points and
  25496. therefore not marked with __THROW. */
  25497. -extern int vdprintf (int __fd, __const char *__restrict __fmt,
  25498. +extern int vdprintf (int __fd, const char *__restrict __fmt,
  25499. __gnuc_va_list __arg)
  25500. __attribute__ ((__format__ (__printf__, 2, 0)));
  25501. libc_hidden_proto(vdprintf)
  25502. -extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
  25503. +extern int dprintf (int __fd, const char *__restrict __fmt, ...)
  25504. __attribute__ ((__format__ (__printf__, 2, 3)));
  25505. #endif
  25506. @@ -419,18 +422,18 @@
  25507. This function is a possible cancellation point and therefore not
  25508. marked with __THROW. */
  25509. extern int fscanf (FILE *__restrict __stream,
  25510. - __const char *__restrict __format, ...)
  25511. + const char *__restrict __format, ...)
  25512. __attribute__ ((__format__ (__scanf__, 2, 3))) __wur;
  25513. libc_hidden_proto(fscanf)
  25514. /* Read formatted input from stdin.
  25515. This function is a possible cancellation point and therefore not
  25516. marked with __THROW. */
  25517. -extern int scanf (__const char *__restrict __format, ...)
  25518. +extern int scanf (const char *__restrict __format, ...)
  25519. __attribute__ ((__format__ (__scanf__, 1, 2))) __wur;
  25520. /* Read formatted input from S. */
  25521. -extern int sscanf (__const char *__restrict __s,
  25522. - __const char *__restrict __format, ...)
  25523. +extern int sscanf (const char *__restrict __s,
  25524. + const char *__restrict __format, ...)
  25525. __THROW __attribute__ ((__format__ (__scanf__, 2, 3)));
  25526. libc_hidden_proto(sscanf)
  25527. __END_NAMESPACE_STD
  25528. @@ -441,7 +444,7 @@
  25529. This function is a possible cancellation point and therefore not
  25530. marked with __THROW. */
  25531. -extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
  25532. +extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
  25533. __gnuc_va_list __arg)
  25534. __attribute__ ((__format__ (__scanf__, 2, 0))) __wur;
  25535. libc_hidden_proto(vfscanf)
  25536. @@ -450,12 +453,12 @@
  25537. This function is a possible cancellation point and therefore not
  25538. marked with __THROW. */
  25539. -extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
  25540. +extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
  25541. __attribute__ ((__format__ (__scanf__, 1, 0))) __wur;
  25542. /* Read formatted input from S into argument list ARG. */
  25543. -extern int vsscanf (__const char *__restrict __s,
  25544. - __const char *__restrict __format, __gnuc_va_list __arg)
  25545. +extern int vsscanf (const char *__restrict __s,
  25546. + const char *__restrict __format, __gnuc_va_list __arg)
  25547. __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
  25548. libc_hidden_proto(vsscanf)
  25549. __END_NAMESPACE_C99
  25550. @@ -491,9 +494,6 @@
  25551. libc_hidden_proto(getc_unlocked)
  25552. extern int getchar_unlocked (void);
  25553. libc_hidden_proto(getchar_unlocked)
  25554. -
  25555. -/* SUSv3 allows getc_unlocked to be a macro */
  25556. -#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
  25557. #endif /* Use POSIX or MISC. */
  25558. #ifdef __USE_MISC
  25559. @@ -519,7 +519,6 @@
  25560. extern int fputc (int __c, FILE *__stream);
  25561. libc_hidden_proto(fputc)
  25562. extern int putc (int __c, FILE *__stream);
  25563. -libc_hidden_proto(putc)
  25564. /* Write a character to stdout.
  25565. @@ -540,7 +539,6 @@
  25566. or due to the implementation it is a cancellation point and
  25567. therefore not marked with __THROW. */
  25568. extern int fputc_unlocked (int __c, FILE *__stream);
  25569. -libc_hidden_proto(fputc_unlocked)
  25570. #endif /* Use MISC. */
  25571. #if defined __USE_POSIX || defined __USE_MISC
  25572. @@ -549,11 +547,7 @@
  25573. These functions are possible cancellation points and therefore not
  25574. marked with __THROW. */
  25575. extern int putc_unlocked (int __c, FILE *__stream);
  25576. -libc_hidden_proto(putc_unlocked)
  25577. extern int putchar_unlocked (int __c);
  25578. -
  25579. -/* SUSv3 allows putc_unlocked to be a macro */
  25580. -#define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
  25581. #endif /* Use POSIX or MISC. */
  25582. @@ -597,7 +591,7 @@
  25583. #endif
  25584. -#ifdef __USE_GNU
  25585. +#ifdef __USE_XOPEN2K8
  25586. /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
  25587. (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
  25588. NULL), pointing to *N characters of space. It is realloc'd as
  25589. @@ -636,14 +630,14 @@
  25590. This function is a possible cancellation points and therefore not
  25591. marked with __THROW. */
  25592. -extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
  25593. +extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
  25594. libc_hidden_proto(fputs)
  25595. /* Write a string, followed by a newline, to stdout.
  25596. This function is a possible cancellation points and therefore not
  25597. marked with __THROW. */
  25598. -extern int puts (__const char *__s);
  25599. +extern int puts (const char *__s);
  25600. /* Push a character back onto the input buffer of STREAM.
  25601. @@ -665,7 +659,7 @@
  25602. This function is a possible cancellation points and therefore not
  25603. marked with __THROW. */
  25604. -extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
  25605. +extern size_t fwrite (const void *__restrict __ptr, size_t __size,
  25606. size_t __n, FILE *__restrict __s) __wur;
  25607. libc_hidden_proto(fwrite)
  25608. __END_NAMESPACE_STD
  25609. @@ -677,7 +671,7 @@
  25610. cancellation point. But due to similarity with an POSIX interface
  25611. or due to the implementation it is a cancellation point and
  25612. therefore not marked with __THROW. */
  25613. -extern int fputs_unlocked (__const char *__restrict __s,
  25614. +extern int fputs_unlocked (const char *__restrict __s,
  25615. FILE *__restrict __stream);
  25616. libc_hidden_proto(fputs_unlocked)
  25617. #endif
  25618. @@ -692,7 +686,7 @@
  25619. extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
  25620. size_t __n, FILE *__restrict __stream) __wur;
  25621. libc_hidden_proto(fread_unlocked)
  25622. -extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
  25623. +extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
  25624. size_t __n, FILE *__restrict __stream) __wur;
  25625. libc_hidden_proto(fwrite_unlocked)
  25626. #endif
  25627. @@ -760,13 +754,13 @@
  25628. This function is a possible cancellation point and therefore not
  25629. marked with __THROW. */
  25630. -extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
  25631. +extern int fsetpos (FILE *__stream, const fpos_t *__pos);
  25632. #else
  25633. # ifdef __REDIRECT
  25634. extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
  25635. fpos_t *__restrict __pos), fgetpos64);
  25636. extern int __REDIRECT (fsetpos,
  25637. - (FILE *__stream, __const fpos_t *__pos), fsetpos64);
  25638. + (FILE *__stream, const fpos_t *__pos), fsetpos64);
  25639. # else
  25640. # define fgetpos fgetpos64
  25641. # define fsetpos fsetpos64
  25642. @@ -780,7 +774,7 @@
  25643. extern __off64_t ftello64 (FILE *__stream) __wur;
  25644. libc_hidden_proto(ftello64)
  25645. extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
  25646. -extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
  25647. +extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);
  25648. #endif
  25649. __BEGIN_NAMESPACE_STD
  25650. @@ -805,7 +799,7 @@
  25651. This function is a possible cancellation point and therefore not
  25652. marked with __THROW. */
  25653. -extern void perror (__const char *__s);
  25654. +extern void perror (const char *__s);
  25655. libc_hidden_proto(perror)
  25656. __END_NAMESPACE_STD
  25657. @@ -814,7 +808,7 @@
  25658. function provides all the needed functionality. */
  25659. #ifdef __USE_BSD
  25660. extern int sys_nerr;
  25661. -extern __const char *__const sys_errlist[];
  25662. +extern const char *const sys_errlist[];
  25663. #endif
  25664. #endif /* __UCLIBC_HAS_SYS_ERRLIST__ */
  25665. @@ -838,7 +832,7 @@
  25666. This function is a possible cancellation point and therefore not
  25667. marked with __THROW. */
  25668. -extern FILE *popen (__const char *__command, __const char *__modes) __wur;
  25669. +extern FILE *popen (const char *__command, const char *__modes) __wur;
  25670. /* Close a stream opened by popen and return the status of its child.
  25671. @@ -860,18 +854,19 @@
  25672. #endif /* Use X/Open, but not issue 6. */
  25673. -#if 0 /* def __USE_GNU uClibc note: not supported */
  25674. +#if defined __USE_GNU && defined __UCLIBC_HAS_OBSTACK__
  25675. struct obstack; /* See <obstack.h>. */
  25676. /* Write formatted output to an obstack. */
  25677. extern int obstack_printf (struct obstack *__restrict __obstack,
  25678. - __const char *__restrict __format, ...)
  25679. + const char *__restrict __format, ...)
  25680. __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
  25681. extern int obstack_vprintf (struct obstack *__restrict __obstack,
  25682. - __const char *__restrict __format,
  25683. + const char *__restrict __format,
  25684. __gnuc_va_list __args)
  25685. __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
  25686. -#endif /* Use GNU. */
  25687. +libc_hidden_proto(obstack_vprintf)
  25688. +#endif /* USE_GNU && UCLIBC_HAS_OBSTACK. */
  25689. #if defined __USE_POSIX || defined __USE_MISC
  25690. @@ -893,27 +888,31 @@
  25691. declared here which do not belong into this header. But we have to
  25692. follow. In GNU mode we don't do this nonsense. */
  25693. # define __need_getopt
  25694. +/* keep this on uClibc in bits/, we need it when GNU_GETOPT is disabled */
  25695. # include <bits/getopt.h>
  25696. #endif /* X/Open, but not issue 6 and not for GNU. */
  25697. /* If we are compiling with optimizing read this file. It contains
  25698. several optimizing inline functions and macros. */
  25699. +
  25700. +#ifdef __UCLIBC__
  25701. +
  25702. #define fgetc(_fp) __FGETC(_fp)
  25703. #define fputc(_ch, _fp) __FPUTC(_ch, _fp)
  25704. +#if defined __USE_POSIX || defined __USE_MISC
  25705. +/* SUSv3 allows getc_unlocked to be a macro */
  25706. +#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
  25707. +/* SUSv3 allows putc_unlocked to be a macro */
  25708. +#define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
  25709. +#endif
  25710. +
  25711. #ifdef __USE_MISC
  25712. #define fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp)
  25713. #define fputc_unlocked(_ch, _fp) __FPUTC_UNLOCKED(_ch, _fp)
  25714. #endif
  25715. -#ifndef __STDIO_GETC_MACRO
  25716. -#define __stdin stdin
  25717. -#endif
  25718. #define getchar() __GETC(__stdin)
  25719. -
  25720. -#ifndef __STDIO_PUTC_MACRO
  25721. -#define __stdout stdout
  25722. -#endif
  25723. #define putchar(_ch) __PUTC((_ch), __stdout)
  25724. #if defined __USE_POSIX || defined __USE_MISC
  25725. @@ -932,6 +931,8 @@
  25726. #define ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)
  25727. #endif
  25728. +#endif
  25729. +
  25730. __END_DECLS
  25731. #endif /* <stdio.h> included. */
  25732. diff -Nur uClibc-0.9.33.2/include/stdlib.h uClibc-git/include/stdlib.h
  25733. --- uClibc-0.9.33.2/include/stdlib.h 2012-05-15 09:20:09.000000000 +0200
  25734. +++ uClibc-git/include/stdlib.h 2014-02-03 12:32:56.000000000 +0100
  25735. @@ -12,9 +12,8 @@
  25736. Lesser General Public License for more details.
  25737. You should have received a copy of the GNU Lesser General Public
  25738. - License along with the GNU C Library; if not, write to the Free
  25739. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  25740. - 02111-1307 USA. */
  25741. + License along with the GNU C Library; if not, see
  25742. + <http://www.gnu.org/licenses/>. */
  25743. /*
  25744. * ISO C99 Standard: 7.20 General utilities <stdlib.h>
  25745. @@ -155,22 +154,22 @@
  25746. __BEGIN_NAMESPACE_STD
  25747. #ifdef __UCLIBC_HAS_FLOATS__
  25748. /* Convert a string to a floating-point number. */
  25749. -extern double atof (__const char *__nptr)
  25750. +extern double atof (const char *__nptr)
  25751. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  25752. #endif /* __UCLIBC_HAS_FLOATS__ */
  25753. /* Convert a string to an integer. */
  25754. -extern int atoi (__const char *__nptr)
  25755. +extern int atoi (const char *__nptr)
  25756. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  25757. libc_hidden_proto(atoi)
  25758. /* Convert a string to a long integer. */
  25759. -extern long int atol (__const char *__nptr)
  25760. +extern long int atol (const char *__nptr)
  25761. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  25762. __END_NAMESPACE_STD
  25763. #if defined __USE_ISOC99 || defined __USE_MISC
  25764. __BEGIN_NAMESPACE_C99
  25765. /* Convert a string to a long long integer. */
  25766. -__extension__ extern long long int atoll (__const char *__nptr)
  25767. +__extension__ extern long long int atoll (const char *__nptr)
  25768. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  25769. __END_NAMESPACE_C99
  25770. #endif
  25771. @@ -178,7 +177,7 @@
  25772. #ifdef __UCLIBC_HAS_FLOATS__
  25773. __BEGIN_NAMESPACE_STD
  25774. /* Convert a string to a floating-point number. */
  25775. -extern double strtod (__const char *__restrict __nptr,
  25776. +extern double strtod (const char *__restrict __nptr,
  25777. char **__restrict __endptr)
  25778. __THROW __nonnull ((1)) __wur;
  25779. libc_hidden_proto(strtod)
  25780. @@ -187,10 +186,10 @@
  25781. #ifdef __USE_ISOC99
  25782. __BEGIN_NAMESPACE_C99
  25783. /* Likewise for `float' and `long double' sizes of floating-point numbers. */
  25784. -extern float strtof (__const char *__restrict __nptr,
  25785. +extern float strtof (const char *__restrict __nptr,
  25786. char **__restrict __endptr) __THROW __nonnull ((1)) __wur;
  25787. -extern long double strtold (__const char *__restrict __nptr,
  25788. +extern long double strtold (const char *__restrict __nptr,
  25789. char **__restrict __endptr)
  25790. __THROW __nonnull ((1)) __wur;
  25791. __END_NAMESPACE_C99
  25792. @@ -199,12 +198,12 @@
  25793. __BEGIN_NAMESPACE_STD
  25794. /* Convert a string to a long integer. */
  25795. -extern long int strtol (__const char *__restrict __nptr,
  25796. +extern long int strtol (const char *__restrict __nptr,
  25797. char **__restrict __endptr, int __base)
  25798. __THROW __nonnull ((1)) __wur;
  25799. libc_hidden_proto(strtol)
  25800. /* Convert a string to an unsigned long integer. */
  25801. -extern unsigned long int strtoul (__const char *__restrict __nptr,
  25802. +extern unsigned long int strtoul (const char *__restrict __nptr,
  25803. char **__restrict __endptr, int __base)
  25804. __THROW __nonnull ((1)) __wur;
  25805. libc_hidden_proto(strtoul)
  25806. @@ -215,12 +214,12 @@
  25807. /* Convert a string to a quadword integer. */
  25808. __extension__
  25809. -extern quad_t strtoq (__const char *__restrict __nptr,
  25810. +extern quad_t strtoq (const char *__restrict __nptr,
  25811. char **__restrict __endptr, int __base)
  25812. __THROW __nonnull ((1)) __wur;
  25813. /* Convert a string to an unsigned quadword integer. */
  25814. __extension__
  25815. -extern u_quad_t strtouq (__const char *__restrict __nptr,
  25816. +extern u_quad_t strtouq (const char *__restrict __nptr,
  25817. char **__restrict __endptr, int __base)
  25818. __THROW __nonnull ((1)) __wur;
  25819. #endif /* GCC and use BSD. */
  25820. @@ -229,13 +228,13 @@
  25821. __BEGIN_NAMESPACE_C99
  25822. /* Convert a string to a quadword integer. */
  25823. __extension__
  25824. -extern long long int strtoll (__const char *__restrict __nptr,
  25825. +extern long long int strtoll (const char *__restrict __nptr,
  25826. char **__restrict __endptr, int __base)
  25827. __THROW __nonnull ((1)) __wur;
  25828. libc_hidden_proto(strtoll)
  25829. /* Convert a string to an unsigned quadword integer. */
  25830. __extension__
  25831. -extern unsigned long long int strtoull (__const char *__restrict __nptr,
  25832. +extern unsigned long long int strtoull (const char *__restrict __nptr,
  25833. char **__restrict __endptr, int __base)
  25834. __THROW __nonnull ((1)) __wur;
  25835. __END_NAMESPACE_C99
  25836. @@ -260,39 +259,39 @@
  25837. /* Special versions of the functions above which take the locale to
  25838. use as an additional parameter. */
  25839. -extern long int strtol_l (__const char *__restrict __nptr,
  25840. +extern long int strtol_l (const char *__restrict __nptr,
  25841. char **__restrict __endptr, int __base,
  25842. __locale_t __loc) __THROW __nonnull ((1, 4)) __wur;
  25843. libc_hidden_proto(strtol_l)
  25844. -extern unsigned long int strtoul_l (__const char *__restrict __nptr,
  25845. +extern unsigned long int strtoul_l (const char *__restrict __nptr,
  25846. char **__restrict __endptr,
  25847. int __base, __locale_t __loc)
  25848. __THROW __nonnull ((1, 4)) __wur;
  25849. libc_hidden_proto(strtoul_l)
  25850. __extension__
  25851. -extern long long int strtoll_l (__const char *__restrict __nptr,
  25852. +extern long long int strtoll_l (const char *__restrict __nptr,
  25853. char **__restrict __endptr, int __base,
  25854. __locale_t __loc)
  25855. __THROW __nonnull ((1, 4)) __wur;
  25856. __extension__
  25857. -extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
  25858. +extern unsigned long long int strtoull_l (const char *__restrict __nptr,
  25859. char **__restrict __endptr,
  25860. int __base, __locale_t __loc)
  25861. __THROW __nonnull ((1, 4)) __wur;
  25862. #ifdef __UCLIBC_HAS_FLOATS__
  25863. -extern double strtod_l (__const char *__restrict __nptr,
  25864. +extern double strtod_l (const char *__restrict __nptr,
  25865. char **__restrict __endptr, __locale_t __loc)
  25866. __THROW __nonnull ((1, 3)) __wur;
  25867. -extern float strtof_l (__const char *__restrict __nptr,
  25868. +extern float strtof_l (const char *__restrict __nptr,
  25869. char **__restrict __endptr, __locale_t __loc)
  25870. __THROW __nonnull ((1, 3)) __wur;
  25871. -extern long double strtold_l (__const char *__restrict __nptr,
  25872. +extern long double strtold_l (const char *__restrict __nptr,
  25873. char **__restrict __endptr,
  25874. __locale_t __loc)
  25875. __THROW __nonnull ((1, 3)) __wur;
  25876. @@ -307,7 +306,7 @@
  25877. extern char *l64a (long int __n) __THROW __wur;
  25878. /* Read a number from a string S in base 64 as above. */
  25879. -extern long int a64l (__const char *__s)
  25880. +extern long int a64l (const char *__s)
  25881. __THROW __attribute_pure__ __nonnull ((1)) __wur;
  25882. #endif /* Use SVID || extended X/Open. */
  25883. @@ -564,14 +563,14 @@
  25884. __BEGIN_NAMESPACE_STD
  25885. /* Return the value of envariable NAME, or NULL if it doesn't exist. */
  25886. -extern char *getenv (__const char *__name) __THROW __nonnull ((1)) __wur;
  25887. +extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;
  25888. libc_hidden_proto(getenv)
  25889. __END_NAMESPACE_STD
  25890. #if 0
  25891. /* This function is similar to the above but returns NULL if the
  25892. programs is running with SUID or SGID enabled. */
  25893. -extern char *__secure_getenv (__const char *__name)
  25894. +extern char *__secure_getenv (const char *__name)
  25895. __THROW __nonnull ((1)) __wur;
  25896. #endif
  25897. @@ -585,12 +584,12 @@
  25898. #if defined __USE_BSD || defined __USE_XOPEN2K
  25899. /* Set NAME to VALUE in the environment.
  25900. If REPLACE is nonzero, overwrite an existing value. */
  25901. -extern int setenv (__const char *__name, __const char *__value, int __replace)
  25902. +extern int setenv (const char *__name, const char *__value, int __replace)
  25903. __THROW __nonnull ((2));
  25904. libc_hidden_proto(setenv)
  25905. /* Remove the variable NAME from the environment. */
  25906. -extern int unsetenv (__const char *__name) __THROW;
  25907. +extern int unsetenv (const char *__name) __THROW;
  25908. libc_hidden_proto(unsetenv)
  25909. #endif
  25910. @@ -652,20 +651,43 @@
  25911. extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur;
  25912. #endif
  25913. +#ifdef __USE_GNU
  25914. +/* Generate a unique temporary file name from TEMPLATE similar to
  25915. + mkstemp. But allow the caller to pass additional flags which are
  25916. + used in the open call to create the file..
  25917. +
  25918. + This function is a possible cancellation point and therefore not
  25919. + marked with __THROW. */
  25920. +# ifndef __USE_FILE_OFFSET64
  25921. +extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur;
  25922. +# else
  25923. +# ifdef __REDIRECT
  25924. +extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64)
  25925. + __nonnull ((1)) __wur;
  25926. +# else
  25927. +# define mkostemp mkostemp64
  25928. +# endif
  25929. +# endif
  25930. +# ifdef __USE_LARGEFILE64
  25931. +extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur;
  25932. +# endif
  25933. +
  25934. +#endif
  25935. +
  25936. __BEGIN_NAMESPACE_STD
  25937. /* Execute the given line as a shell command.
  25938. This function is a cancellation point and therefore not marked with
  25939. __THROW. */
  25940. -extern int system (__const char *__command) __wur;
  25941. +extern int system (const char *__command) __wur;
  25942. __END_NAMESPACE_STD
  25943. #ifdef __USE_GNU
  25944. /* Return a malloc'd string containing the canonical absolute name of the
  25945. existing named file. */
  25946. -extern char *canonicalize_file_name (__const char *__name)
  25947. +extern char *canonicalize_file_name (const char *__name)
  25948. __THROW __nonnull ((1)) __wur;
  25949. #endif
  25950. @@ -675,7 +697,7 @@
  25951. PATH_MAX chars or more, returns null with `errno' set to
  25952. ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars,
  25953. returns the name in RESOLVED. */
  25954. -extern char *realpath (__const char *__restrict __name,
  25955. +extern char *realpath (const char *__restrict __name,
  25956. char *__restrict __resolved) __THROW __wur;
  25957. libc_hidden_proto(realpath)
  25958. #endif
  25959. @@ -684,20 +706,20 @@
  25960. /* Shorthand for type of comparison functions. */
  25961. #ifndef __COMPAR_FN_T
  25962. # define __COMPAR_FN_T
  25963. -typedef int (*__compar_fn_t) (__const void *, __const void *);
  25964. +typedef int (*__compar_fn_t) (const void *, const void *);
  25965. # ifdef __USE_GNU
  25966. typedef __compar_fn_t comparison_fn_t;
  25967. # endif
  25968. #endif
  25969. #ifdef __USE_GNU
  25970. -typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
  25971. +typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
  25972. #endif
  25973. __BEGIN_NAMESPACE_STD
  25974. /* Do a binary search for KEY in BASE, which consists of NMEMB elements
  25975. of SIZE bytes each, using COMPAR to perform the comparisons. */
  25976. -extern void *bsearch (__const void *__key, __const void *__base,
  25977. +extern void *bsearch (const void *__key, const void *__base,
  25978. size_t __nmemb, size_t __size, __compar_fn_t __compar)
  25979. __nonnull ((1, 2, 5)) __wur;
  25980. @@ -807,11 +829,11 @@
  25981. __BEGIN_NAMESPACE_STD
  25982. /* Return the length of the multibyte character
  25983. in S, which is no longer than N. */
  25984. -extern int mblen (__const char *__s, size_t __n) __THROW __wur;
  25985. +extern int mblen (const char *__s, size_t __n) __THROW __wur;
  25986. /* Return the length of the given multibyte character,
  25987. putting its `wchar_t' representation in *PWC. */
  25988. extern int mbtowc (wchar_t *__restrict __pwc,
  25989. - __const char *__restrict __s, size_t __n) __THROW __wur;
  25990. + const char *__restrict __s, size_t __n) __THROW __wur;
  25991. /* Put the multibyte character represented
  25992. by WCHAR in S, returning its length. */
  25993. extern int wctomb (char *__s, wchar_t __wchar) __THROW __wur;
  25994. @@ -819,21 +841,21 @@
  25995. /* Convert a multibyte string to a wide char string. */
  25996. extern size_t mbstowcs (wchar_t *__restrict __pwcs,
  25997. - __const char *__restrict __s, size_t __n) __THROW;
  25998. + const char *__restrict __s, size_t __n) __THROW;
  25999. /* Convert a wide char string to multibyte string. */
  26000. extern size_t wcstombs (char *__restrict __s,
  26001. - __const wchar_t *__restrict __pwcs, size_t __n)
  26002. + const wchar_t *__restrict __pwcs, size_t __n)
  26003. __THROW;
  26004. __END_NAMESPACE_STD
  26005. #endif /* __UCLIBC_HAS_WCHAR__ */
  26006. -#if 0 /*def __USE_SVID*/
  26007. +#ifdef __USE_SVID
  26008. /* Determine whether the string value of RESPONSE matches the affirmation
  26009. or negative response expression as specified by the LC_MESSAGES category
  26010. in the program's current locale. Returns 1 if affirmative, 0 if
  26011. negative, and -1 if not matching. */
  26012. -extern int rpmatch (__const char *__response) __THROW __nonnull ((1)) __wur;
  26013. +extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur;
  26014. #endif
  26015. @@ -845,7 +867,7 @@
  26016. suboption. On exit *OPTIONP is set to the beginning of the next
  26017. token or at the terminating NUL character. */
  26018. extern int getsubopt (char **__restrict __optionp,
  26019. - char *__const *__restrict __tokens,
  26020. + char *const *__restrict __tokens,
  26021. char **__restrict __valuep)
  26022. __THROW __nonnull ((1, 2, 3)) __wur;
  26023. #endif
  26024. @@ -854,7 +876,7 @@
  26025. #ifdef __USE_XOPEN
  26026. # if defined __UCLIBC_HAS_CRYPT__
  26027. /* Setup DES tables according KEY. */
  26028. -extern void setkey (__const char *__key) __THROW __nonnull ((1));
  26029. +extern void setkey (const char *__key) __THROW __nonnull ((1));
  26030. # endif /* __UCLIBC_HAS_CRYPT__ */
  26031. #endif
  26032. @@ -864,7 +886,6 @@
  26033. #ifdef __USE_XOPEN2K
  26034. /* Return a master pseudo-terminal handle. */
  26035. extern int posix_openpt (int __oflag) __wur;
  26036. -libc_hidden_proto(posix_openpt)
  26037. #endif
  26038. #ifdef __USE_XOPEN
  26039. @@ -910,8 +931,8 @@
  26040. #endif
  26041. #ifdef __UCLIBC_HAS_ARC4RANDOM__
  26042. -#include <stdint.h>
  26043. -extern uint32_t arc4random(void);
  26044. +# include <sys/types.h>
  26045. +extern u_int32_t arc4random(void);
  26046. extern void arc4random_stir(void);
  26047. extern void arc4random_addrandom(unsigned char *, int);
  26048. #endif
  26049. diff -Nur uClibc-0.9.33.2/include/string.h uClibc-git/include/string.h
  26050. --- uClibc-0.9.33.2/include/string.h 2012-05-15 09:20:09.000000000 +0200
  26051. +++ uClibc-git/include/string.h 2014-02-03 12:32:56.000000000 +0100
  26052. @@ -1,4 +1,4 @@
  26053. -/* Copyright (C) 1991-1993, 1995-2003, 2004 Free Software Foundation, Inc.
  26054. +/* Copyright (C) 1991-1993,1995-2004,2007,2009 Free Software Foundation, Inc.
  26055. This file is part of the GNU C Library.
  26056. The GNU C Library is free software; you can redistribute it and/or
  26057. @@ -12,9 +12,8 @@
  26058. Lesser General Public License for more details.
  26059. You should have received a copy of the GNU Lesser General Public
  26060. - License along with the GNU C Library; if not, write to the Free
  26061. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26062. - 02111-1307 USA. */
  26063. + License along with the GNU C Library; if not, see
  26064. + <http://www.gnu.org/licenses/>. */
  26065. /*
  26066. * ISO C99 Standard: 7.21 String handling <string.h>
  26067. @@ -36,12 +35,12 @@
  26068. __BEGIN_NAMESPACE_STD
  26069. /* Copy N bytes of SRC to DEST. */
  26070. extern void *memcpy (void *__restrict __dest,
  26071. - __const void *__restrict __src, size_t __n)
  26072. + const void *__restrict __src, size_t __n)
  26073. __THROW __nonnull ((1, 2));
  26074. libc_hidden_proto(memcpy)
  26075. /* Copy N bytes of SRC to DEST, guaranteeing
  26076. correct behavior for overlapping strings. */
  26077. -extern void *memmove (void *__dest, __const void *__src, size_t __n)
  26078. +extern void *memmove (void *__dest, const void *__src, size_t __n)
  26079. __THROW __nonnull ((1, 2));
  26080. libc_hidden_proto(memmove)
  26081. __END_NAMESPACE_STD
  26082. @@ -50,7 +49,7 @@
  26083. Return the position in DEST one byte past where C was copied,
  26084. or NULL if C was not found in the first N bytes of SRC. */
  26085. #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN
  26086. -extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
  26087. +extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
  26088. int __c, size_t __n)
  26089. __THROW __nonnull ((1, 2));
  26090. libc_hidden_proto(memccpy)
  26091. @@ -63,12 +62,12 @@
  26092. libc_hidden_proto(memset)
  26093. /* Compare N bytes of S1 and S2. */
  26094. -extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
  26095. +extern int memcmp (const void *__s1, const void *__s2, size_t __n)
  26096. __THROW __attribute_pure__ __nonnull ((1, 2));
  26097. libc_hidden_proto(memcmp)
  26098. /* Search N bytes of S for C. */
  26099. -extern void *memchr (__const void *__s, int __c, size_t __n)
  26100. +extern void *memchr (const void *__s, int __c, size_t __n)
  26101. __THROW __attribute_pure__ __nonnull ((1));
  26102. libc_hidden_proto(memchr)
  26103. __END_NAMESPACE_STD
  26104. @@ -76,12 +75,12 @@
  26105. #ifdef __USE_GNU
  26106. /* Search in S for C. This is similar to `memchr' but there is no
  26107. length limit. */
  26108. -extern void *rawmemchr (__const void *__s, int __c)
  26109. +extern void *rawmemchr (const void *__s, int __c)
  26110. __THROW __attribute_pure__ __nonnull ((1));
  26111. libc_hidden_proto(rawmemchr)
  26112. /* Search N bytes of S for the final occurrence of C. */
  26113. -extern void *memrchr (__const void *__s, int __c, size_t __n)
  26114. +extern void *memrchr (const void *__s, int __c, size_t __n)
  26115. __THROW __attribute_pure__ __nonnull ((1));
  26116. libc_hidden_proto(memrchr)
  26117. #endif
  26118. @@ -89,62 +88,62 @@
  26119. __BEGIN_NAMESPACE_STD
  26120. /* Copy SRC to DEST. */
  26121. -extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
  26122. +extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
  26123. __THROW __nonnull ((1, 2));
  26124. libc_hidden_proto(strcpy)
  26125. /* Copy no more than N characters of SRC to DEST. */
  26126. extern char *strncpy (char *__restrict __dest,
  26127. - __const char *__restrict __src, size_t __n)
  26128. + const char *__restrict __src, size_t __n)
  26129. __THROW __nonnull ((1, 2));
  26130. libc_hidden_proto(strncpy)
  26131. /* Append SRC onto DEST. */
  26132. -extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
  26133. +extern char *strcat (char *__restrict __dest, const char *__restrict __src)
  26134. __THROW __nonnull ((1, 2));
  26135. libc_hidden_proto(strcat)
  26136. /* Append no more than N characters from SRC onto DEST. */
  26137. -extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
  26138. +extern char *strncat (char *__restrict __dest, const char *__restrict __src,
  26139. size_t __n) __THROW __nonnull ((1, 2));
  26140. libc_hidden_proto(strncat)
  26141. /* Compare S1 and S2. */
  26142. -extern int strcmp (__const char *__s1, __const char *__s2)
  26143. +extern int strcmp (const char *__s1, const char *__s2)
  26144. __THROW __attribute_pure__ __nonnull ((1, 2));
  26145. libc_hidden_proto(strcmp)
  26146. /* Compare N characters of S1 and S2. */
  26147. -extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
  26148. +extern int strncmp (const char *__s1, const char *__s2, size_t __n)
  26149. __THROW __attribute_pure__ __nonnull ((1, 2));
  26150. libc_hidden_proto(strncmp)
  26151. /* Compare the collated forms of S1 and S2. */
  26152. -extern int strcoll (__const char *__s1, __const char *__s2)
  26153. +extern int strcoll (const char *__s1, const char *__s2)
  26154. __THROW __attribute_pure__ __nonnull ((1, 2));
  26155. libc_hidden_proto(strcoll)
  26156. /* Put a transformation of SRC into no more than N bytes of DEST. */
  26157. extern size_t strxfrm (char *__restrict __dest,
  26158. - __const char *__restrict __src, size_t __n)
  26159. + const char *__restrict __src, size_t __n)
  26160. __THROW __nonnull ((2));
  26161. __END_NAMESPACE_STD
  26162. -#if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
  26163. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  26164. /* The following functions are equivalent to the both above but they
  26165. take the locale they use for the collation as an extra argument.
  26166. This is not standardsized but something like will come. */
  26167. # include <xlocale.h>
  26168. /* Compare the collated forms of S1 and S2 using rules from L. */
  26169. -extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
  26170. +extern int strcoll_l (const char *__s1, const char *__s2, __locale_t __l)
  26171. __THROW __attribute_pure__ __nonnull ((1, 2, 3));
  26172. libc_hidden_proto(strcoll_l)
  26173. /* Put a transformation of SRC into no more than N bytes of DEST. */
  26174. -extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
  26175. +extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
  26176. __locale_t __l) __THROW __nonnull ((2, 4));
  26177. libc_hidden_proto(strxfrm_l)
  26178. #endif
  26179. #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  26180. /* Duplicate S, returning an identical malloc'd string. */
  26181. -extern char *strdup (__const char *__s)
  26182. +extern char *strdup (const char *__s)
  26183. __THROW __attribute_malloc__ __nonnull ((1));
  26184. libc_hidden_proto(strdup)
  26185. #endif
  26186. @@ -152,8 +151,8 @@
  26187. /* Return a malloc'd copy of at most N bytes of STRING. The
  26188. resultant string is terminated even if no null terminator
  26189. appears before STRING[N]. */
  26190. -#if defined __USE_GNU
  26191. -extern char *strndup (__const char *__string, size_t __n)
  26192. +#if defined __USE_XOPEN2K8
  26193. +extern char *strndup (const char *__string, size_t __n)
  26194. __THROW __attribute_malloc__ __nonnull ((1));
  26195. libc_hidden_proto(strndup)
  26196. #endif
  26197. @@ -163,7 +162,7 @@
  26198. # define strdupa(s) \
  26199. (__extension__ \
  26200. ({ \
  26201. - __const char *__old = (s); \
  26202. + const char *__old = (s); \
  26203. size_t __len = strlen (__old) + 1; \
  26204. char *__new = (char *) __builtin_alloca (__len); \
  26205. (char *) memcpy (__new, __old, __len); \
  26206. @@ -173,7 +172,7 @@
  26207. # define strndupa(s, n) \
  26208. (__extension__ \
  26209. ({ \
  26210. - __const char *__old = (s); \
  26211. + const char *__old = (s); \
  26212. size_t __len = strnlen (__old, (n)); \
  26213. char *__new = (char *) __builtin_alloca (__len + 1); \
  26214. __new[__len] = '\0'; \
  26215. @@ -183,11 +182,11 @@
  26216. __BEGIN_NAMESPACE_STD
  26217. /* Find the first occurrence of C in S. */
  26218. -extern char *strchr (__const char *__s, int __c)
  26219. +extern char *strchr (const char *__s, int __c)
  26220. __THROW __attribute_pure__ __nonnull ((1));
  26221. libc_hidden_proto(strchr)
  26222. /* Find the last occurrence of C in S. */
  26223. -extern char *strrchr (__const char *__s, int __c)
  26224. +extern char *strrchr (const char *__s, int __c)
  26225. __THROW __attribute_pure__ __nonnull ((1));
  26226. libc_hidden_proto(strrchr)
  26227. __END_NAMESPACE_STD
  26228. @@ -195,7 +194,7 @@
  26229. #ifdef __USE_GNU
  26230. /* This function is similar to `strchr'. But it returns a pointer to
  26231. the closing NUL byte in case C is not found in S. */
  26232. -extern char *strchrnul (__const char *__s, int __c)
  26233. +extern char *strchrnul (const char *__s, int __c)
  26234. __THROW __attribute_pure__ __nonnull ((1));
  26235. libc_hidden_proto(strchrnul)
  26236. #endif
  26237. @@ -203,26 +202,26 @@
  26238. __BEGIN_NAMESPACE_STD
  26239. /* Return the length of the initial segment of S which
  26240. consists entirely of characters not in REJECT. */
  26241. -extern size_t strcspn (__const char *__s, __const char *__reject)
  26242. +extern size_t strcspn (const char *__s, const char *__reject)
  26243. __THROW __attribute_pure__ __nonnull ((1, 2));
  26244. libc_hidden_proto(strcspn)
  26245. /* Return the length of the initial segment of S which
  26246. consists entirely of characters in ACCEPT. */
  26247. -extern size_t strspn (__const char *__s, __const char *__accept)
  26248. +extern size_t strspn (const char *__s, const char *__accept)
  26249. __THROW __attribute_pure__ __nonnull ((1, 2));
  26250. libc_hidden_proto(strspn)
  26251. /* Find the first occurrence in S of any character in ACCEPT. */
  26252. -extern char *strpbrk (__const char *__s, __const char *__accept)
  26253. +extern char *strpbrk (const char *__s, const char *__accept)
  26254. __THROW __attribute_pure__ __nonnull ((1, 2));
  26255. libc_hidden_proto(strpbrk)
  26256. /* Find the first occurrence of NEEDLE in HAYSTACK. */
  26257. -extern char *strstr (__const char *__haystack, __const char *__needle)
  26258. +extern char *strstr (const char *__haystack, const char *__needle)
  26259. __THROW __attribute_pure__ __nonnull ((1, 2));
  26260. libc_hidden_proto(strstr)
  26261. /* Divide S into tokens separated by characters in DELIM. */
  26262. -extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
  26263. +extern char *strtok (char *__restrict __s, const char *__restrict __delim)
  26264. __THROW __nonnull ((2));
  26265. libc_hidden_proto(strtok)
  26266. __END_NAMESPACE_STD
  26267. @@ -231,12 +230,12 @@
  26268. passed between calls are stored in SAVE_PTR. */
  26269. #if 0 /* uClibc: disabled */
  26270. extern char *__strtok_r (char *__restrict __s,
  26271. - __const char *__restrict __delim,
  26272. + const char *__restrict __delim,
  26273. char **__restrict __save_ptr)
  26274. __THROW __nonnull ((2, 3));
  26275. #endif
  26276. #if defined __USE_POSIX || defined __USE_MISC
  26277. -extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
  26278. +extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
  26279. char **__restrict __save_ptr)
  26280. __THROW __nonnull ((2, 3));
  26281. libc_hidden_proto(strtok_r)
  26282. @@ -244,7 +243,7 @@
  26283. #ifdef __USE_GNU
  26284. /* Similar to `strstr' but this function ignores the case of both strings. */
  26285. -extern char *strcasestr (__const char *__haystack, __const char *__needle)
  26286. +extern char *strcasestr (const char *__haystack, const char *__needle)
  26287. __THROW __attribute_pure__ __nonnull ((1, 2));
  26288. libc_hidden_proto(strcasestr)
  26289. #endif
  26290. @@ -253,19 +252,19 @@
  26291. /* Find the first occurrence of NEEDLE in HAYSTACK.
  26292. NEEDLE is NEEDLELEN bytes long;
  26293. HAYSTACK is HAYSTACKLEN bytes long. */
  26294. -extern void *memmem (__const void *__haystack, size_t __haystacklen,
  26295. - __const void *__needle, size_t __needlelen)
  26296. +extern void *memmem (const void *__haystack, size_t __haystacklen,
  26297. + const void *__needle, size_t __needlelen)
  26298. __THROW __attribute_pure__ __nonnull ((1, 3));
  26299. /* Copy N bytes of SRC to DEST, return pointer to bytes after the
  26300. last written byte. */
  26301. #if 0 /* uClibc: disabled */
  26302. extern void *__mempcpy (void *__restrict __dest,
  26303. - __const void *__restrict __src, size_t __n)
  26304. + const void *__restrict __src, size_t __n)
  26305. __THROW __nonnull ((1, 2));
  26306. #endif
  26307. extern void *mempcpy (void *__restrict __dest,
  26308. - __const void *__restrict __src, size_t __n)
  26309. + const void *__restrict __src, size_t __n)
  26310. __THROW __nonnull ((1, 2));
  26311. libc_hidden_proto(mempcpy)
  26312. #endif
  26313. @@ -273,15 +272,15 @@
  26314. __BEGIN_NAMESPACE_STD
  26315. /* Return the length of S. */
  26316. -extern size_t strlen (__const char *__s)
  26317. +extern size_t strlen (const char *__s)
  26318. __THROW __attribute_pure__ __nonnull ((1));
  26319. libc_hidden_proto(strlen)
  26320. __END_NAMESPACE_STD
  26321. -#ifdef __USE_GNU
  26322. +#ifdef __USE_XOPEN2K8
  26323. /* Find the length of STRING, but scan at most MAXLEN characters.
  26324. If no '\0' terminator is found in that many characters, return MAXLEN. */
  26325. -extern size_t strnlen (__const char *__string, size_t __maxlen)
  26326. +extern size_t strnlen (const char *__string, size_t __maxlen)
  26327. __THROW __attribute_pure__ __nonnull ((1));
  26328. libc_hidden_proto(strnlen)
  26329. #endif
  26330. @@ -329,6 +328,12 @@
  26331. # endif
  26332. #endif
  26333. +#if 0 /*defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__*/
  26334. +/* Translate error number to string according to the locale L. */
  26335. +extern char *strerror_l (int __errnum, __locale_t __l) __THROW;
  26336. +#endif
  26337. +
  26338. +
  26339. /* We define this function always since `bzero' is sometimes needed when
  26340. the namespace rules does not allow this. */
  26341. #if 0 /* uClibc: disabled */
  26342. @@ -338,22 +343,22 @@
  26343. #ifdef __USE_BSD
  26344. # ifdef __UCLIBC_SUSV3_LEGACY__
  26345. /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
  26346. -extern void bcopy (__const void *__src, void *__dest, size_t __n)
  26347. +extern void bcopy (const void *__src, void *__dest, size_t __n)
  26348. __THROW __nonnull ((1, 2));
  26349. /* Set N bytes of S to 0. */
  26350. extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1));
  26351. /* Compare N bytes of S1 and S2 (same as memcmp). */
  26352. -extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
  26353. +extern int bcmp (const void *__s1, const void *__s2, size_t __n)
  26354. __THROW __attribute_pure__ __nonnull ((1, 2));
  26355. /* Find the first occurrence of C in S (same as strchr). */
  26356. -extern char *index (__const char *__s, int __c)
  26357. +extern char *index (const char *__s, int __c)
  26358. __THROW __attribute_pure__ __nonnull ((1));
  26359. /* Find the last occurrence of C in S (same as strrchr). */
  26360. -extern char *rindex (__const char *__s, int __c)
  26361. +extern char *rindex (const char *__s, int __c)
  26362. __THROW __attribute_pure__ __nonnull ((1));
  26363. # else
  26364. # ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
  26365. @@ -385,25 +390,25 @@
  26366. # endif
  26367. /* Compare S1 and S2, ignoring case. */
  26368. -extern int strcasecmp (__const char *__s1, __const char *__s2)
  26369. +extern int strcasecmp (const char *__s1, const char *__s2)
  26370. __THROW __attribute_pure__ __nonnull ((1, 2));
  26371. libc_hidden_proto(strcasecmp)
  26372. /* Compare no more than N chars of S1 and S2, ignoring case. */
  26373. -extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
  26374. +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
  26375. __THROW __attribute_pure__ __nonnull ((1, 2));
  26376. libc_hidden_proto(strncasecmp)
  26377. #endif /* Use BSD. */
  26378. -#if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
  26379. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  26380. /* Again versions of a few functions which use the given locale instead
  26381. of the global one. */
  26382. -extern int strcasecmp_l (__const char *__s1, __const char *__s2,
  26383. +extern int strcasecmp_l (const char *__s1, const char *__s2,
  26384. __locale_t __loc)
  26385. __THROW __attribute_pure__ __nonnull ((1, 2, 3));
  26386. libc_hidden_proto(strcasecmp_l)
  26387. -extern int strncasecmp_l (__const char *__s1, __const char *__s2,
  26388. +extern int strncasecmp_l (const char *__s1, const char *__s2,
  26389. size_t __n, __locale_t __loc)
  26390. __THROW __attribute_pure__ __nonnull ((1, 2, 4));
  26391. libc_hidden_proto(strncasecmp_l)
  26392. @@ -413,27 +418,22 @@
  26393. /* Return the next DELIM-delimited token from *STRINGP,
  26394. terminating it with a '\0', and update *STRINGP to point past it. */
  26395. extern char *strsep (char **__restrict __stringp,
  26396. - __const char *__restrict __delim)
  26397. + const char *__restrict __delim)
  26398. __THROW __nonnull ((1, 2));
  26399. libc_hidden_proto(strsep)
  26400. #endif
  26401. -#ifdef __USE_GNU
  26402. -/* Compare S1 and S2 as strings holding name & indices/version numbers. */
  26403. -extern int strverscmp (__const char *__s1, __const char *__s2)
  26404. - __THROW __attribute_pure__ __nonnull ((1, 2));
  26405. -libc_hidden_proto(strverscmp)
  26406. -
  26407. +#ifdef __USE_XOPEN2K8
  26408. /* Return a string describing the meaning of the signal number in SIG. */
  26409. extern char *strsignal (int __sig) __THROW;
  26410. libc_hidden_proto(strsignal)
  26411. /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
  26412. # if 0 /* uClibc: disabled */
  26413. -extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
  26414. +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
  26415. __THROW __nonnull ((1, 2));
  26416. # endif
  26417. -extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
  26418. +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src)
  26419. __THROW __nonnull ((1, 2));
  26420. libc_hidden_proto(stpcpy)
  26421. @@ -441,12 +441,19 @@
  26422. the last character written into DEST. */
  26423. # if 0 /* uClibc: disabled */
  26424. extern char *__stpncpy (char *__restrict __dest,
  26425. - __const char *__restrict __src, size_t __n)
  26426. + const char *__restrict __src, size_t __n)
  26427. __THROW __nonnull ((1, 2));
  26428. # endif
  26429. extern char *stpncpy (char *__restrict __dest,
  26430. - __const char *__restrict __src, size_t __n)
  26431. + const char *__restrict __src, size_t __n)
  26432. __THROW __nonnull ((1, 2));
  26433. +#endif
  26434. +
  26435. +#ifdef __USE_GNU
  26436. +/* Compare S1 and S2 as strings holding name & indices/version numbers. */
  26437. +extern int strverscmp (const char *__s1, const char *__s2)
  26438. + __THROW __attribute_pure__ __nonnull ((1, 2));
  26439. +libc_hidden_proto(strverscmp)
  26440. # if 0 /* uClibc does not support strfry or memfrob. */
  26441. /* Sautee STRING briskly. */
  26442. @@ -461,8 +468,7 @@
  26443. declare the function if the `basename' macro is available (defined
  26444. in <libgen.h>) which makes the XPG version of this function
  26445. available. */
  26446. -extern char *basename (__const char *__filename) __THROW __nonnull ((1));
  26447. -libc_hidden_proto(basename)
  26448. +extern char *basename (const char *__filename) __THROW __nonnull ((1));
  26449. # endif
  26450. #endif /* __USE_GNU */
  26451. diff -Nur uClibc-0.9.33.2/include/strings.h uClibc-git/include/strings.h
  26452. --- uClibc-0.9.33.2/include/strings.h 2012-05-15 09:20:09.000000000 +0200
  26453. +++ uClibc-git/include/strings.h 2014-02-03 12:32:56.000000000 +0100
  26454. @@ -1,4 +1,4 @@
  26455. -/* Copyright (C) 1991,92,96,97,99,2000,2001 Free Software Foundation, Inc.
  26456. +/* Copyright (C) 1991,92,96,97,99,2000,2001,2009 Free Software Foundation, Inc.
  26457. This file is part of the GNU C Library.
  26458. The GNU C Library is free software; you can redistribute it and/or
  26459. @@ -12,9 +12,8 @@
  26460. Lesser General Public License for more details.
  26461. You should have received a copy of the GNU Lesser General Public
  26462. - License along with the GNU C Library; if not, write to the Free
  26463. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26464. - 02111-1307 USA. */
  26465. + License along with the GNU C Library; if not, see
  26466. + <http://www.gnu.org/licenses/>. */
  26467. #ifndef _STRINGS_H
  26468. #define _STRINGS_H 1
  26469. @@ -35,22 +34,22 @@
  26470. # ifdef __UCLIBC_SUSV3_LEGACY__
  26471. /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
  26472. -extern void bcopy (__const void *__src, void *__dest, size_t __n)
  26473. +extern void bcopy (const void *__src, void *__dest, size_t __n)
  26474. __THROW __nonnull ((1, 2));
  26475. /* Set N bytes of S to 0. */
  26476. extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1));
  26477. /* Compare N bytes of S1 and S2 (same as memcmp). */
  26478. -extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
  26479. +extern int bcmp (const void *__s1, const void *__s2, size_t __n)
  26480. __THROW __attribute_pure__ __nonnull ((1, 2));
  26481. /* Find the first occurrence of C in S (same as strchr). */
  26482. -extern char *index (__const char *__s, int __c)
  26483. +extern char *index (const char *__s, int __c)
  26484. __THROW __attribute_pure__ __nonnull ((1));
  26485. /* Find the last occurrence of C in S (same as strrchr). */
  26486. -extern char *rindex (__const char *__s, int __c)
  26487. +extern char *rindex (const char *__s, int __c)
  26488. __THROW __attribute_pure__ __nonnull ((1));
  26489. # else
  26490. # ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
  26491. @@ -69,10 +68,11 @@
  26492. /* Return the position of the first bit set in I, or 0 if none are set.
  26493. The least-significant bit is position 1, the most-significant 32. */
  26494. extern int ffs (int __i) __THROW __attribute__ ((__const__));
  26495. +libc_hidden_proto(ffs)
  26496. /* The following two functions are non-standard but necessary for non-32 bit
  26497. platforms. */
  26498. -#if 0 /*def __USE_GNU*/
  26499. +# ifdef __USE_GNU
  26500. extern int ffsl (long int __l) __THROW __attribute__ ((__const__));
  26501. # ifdef __GNUC__
  26502. __extension__ extern int ffsll (long long int __ll)
  26503. @@ -81,17 +81,39 @@
  26504. # endif
  26505. /* Compare S1 and S2, ignoring case. */
  26506. -extern int strcasecmp (__const char *__s1, __const char *__s2)
  26507. +extern int strcasecmp (const char *__s1, const char *__s2)
  26508. __THROW __attribute_pure__ __nonnull ((1, 2));
  26509. +libc_hidden_proto(strcasecmp)
  26510. /* Compare no more than N chars of S1 and S2, ignoring case. */
  26511. -extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
  26512. +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
  26513. __THROW __attribute_pure__ __nonnull ((1, 2));
  26514. +libc_hidden_proto(strncasecmp)
  26515. +#if defined __USE_XOPEN2K8 && defined __UCLIBC_HAS_XLOCALE__
  26516. +/* The following functions are equivalent to the both above but they
  26517. + take the locale they use for the collation as an extra argument.
  26518. + This is not standardsized but something like will come. */
  26519. +# include <xlocale.h>
  26520. +
  26521. +/* Again versions of a few functions which use the given locale instead
  26522. + of the global one. */
  26523. +extern int strcasecmp_l (const char *__s1, const char *__s2,
  26524. + __locale_t __loc)
  26525. + __THROW __attribute_pure__ __nonnull ((1, 2, 3));
  26526. +libc_hidden_proto(strcasecmp_l)
  26527. +
  26528. +extern int strncasecmp_l (const char *__s1, const char *__s2,
  26529. + size_t __n, __locale_t __loc)
  26530. + __THROW __attribute_pure__ __nonnull ((1, 2, 4));
  26531. +libc_hidden_proto(strncasecmp_l)
  26532. +#endif
  26533. __END_DECLS
  26534. #ifdef _LIBC
  26535. +/* comment is wrong and will face this, when HAS_GNU option will be added
  26536. + * header is SuSv standard */
  26537. #error "<strings.h> should not be included from libc."
  26538. #endif
  26539. diff -Nur uClibc-0.9.33.2/include/sys/cdefs.h uClibc-git/include/sys/cdefs.h
  26540. --- uClibc-0.9.33.2/include/sys/cdefs.h 2012-05-15 09:20:09.000000000 +0200
  26541. +++ uClibc-git/include/sys/cdefs.h 2014-02-03 12:32:56.000000000 +0100
  26542. @@ -13,9 +13,8 @@
  26543. Lesser General Public License for more details.
  26544. You should have received a copy of the GNU Lesser General Public
  26545. - License along with the GNU C Library; if not, write to the Free
  26546. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26547. - 02111-1307 USA. */
  26548. + License along with the GNU C Library; if not, see
  26549. + <http://www.gnu.org/licenses/>. */
  26550. #ifndef _SYS_CDEFS_H
  26551. #define _SYS_CDEFS_H 1
  26552. @@ -63,10 +62,6 @@
  26553. # define __THROW
  26554. # define __NTH(fct) fct
  26555. -# define __const const
  26556. -# define __signed signed
  26557. -# define __volatile volatile
  26558. -
  26559. #endif /* GCC. */
  26560. /* These two macros are not used in glibc anymore. They are kept here
  26561. diff -Nur uClibc-0.9.33.2/include/sys/dir.h uClibc-git/include/sys/dir.h
  26562. --- uClibc-0.9.33.2/include/sys/dir.h 2012-05-15 09:20:09.000000000 +0200
  26563. +++ uClibc-git/include/sys/dir.h 2014-02-03 12:32:56.000000000 +0100
  26564. @@ -12,9 +12,8 @@
  26565. Lesser General Public License for more details.
  26566. You should have received a copy of the GNU Lesser General Public
  26567. - License along with the GNU C Library; if not, write to the Free
  26568. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26569. - 02111-1307 USA. */
  26570. + License along with the GNU C Library; if not, see
  26571. + <http://www.gnu.org/licenses/>. */
  26572. #ifndef _SYS_DIR_H
  26573. #define _SYS_DIR_H 1
  26574. diff -Nur uClibc-0.9.33.2/include/sys/file.h uClibc-git/include/sys/file.h
  26575. --- uClibc-0.9.33.2/include/sys/file.h 2012-05-15 09:20:09.000000000 +0200
  26576. +++ uClibc-git/include/sys/file.h 2014-02-03 12:32:56.000000000 +0100
  26577. @@ -12,9 +12,8 @@
  26578. Lesser General Public License for more details.
  26579. You should have received a copy of the GNU Lesser General Public
  26580. - License along with the GNU C Library; if not, write to the Free
  26581. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26582. - 02111-1307 USA. */
  26583. + License along with the GNU C Library; if not, see
  26584. + <http://www.gnu.org/licenses/>. */
  26585. #ifndef _SYS_FILE_H
  26586. #define _SYS_FILE_H 1
  26587. diff -Nur uClibc-0.9.33.2/include/sys/fsuid.h uClibc-git/include/sys/fsuid.h
  26588. --- uClibc-0.9.33.2/include/sys/fsuid.h 2012-05-15 09:20:09.000000000 +0200
  26589. +++ uClibc-git/include/sys/fsuid.h 2014-02-03 12:32:56.000000000 +0100
  26590. @@ -12,9 +12,8 @@
  26591. Lesser General Public License for more details.
  26592. You should have received a copy of the GNU Lesser General Public
  26593. - License along with the GNU C Library; if not, write to the Free
  26594. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26595. - 02111-1307 USA. */
  26596. + License along with the GNU C Library; if not, see
  26597. + <http://www.gnu.org/licenses/>. */
  26598. #ifndef _SYS_FSUID_H
  26599. #define _SYS_FSUID_H 1
  26600. diff -Nur uClibc-0.9.33.2/include/sys/ioctl.h uClibc-git/include/sys/ioctl.h
  26601. --- uClibc-0.9.33.2/include/sys/ioctl.h 2012-05-15 09:20:09.000000000 +0200
  26602. +++ uClibc-git/include/sys/ioctl.h 2014-02-03 12:32:56.000000000 +0100
  26603. @@ -12,9 +12,8 @@
  26604. Lesser General Public License for more details.
  26605. You should have received a copy of the GNU Lesser General Public
  26606. - License along with the GNU C Library; if not, write to the Free
  26607. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26608. - 02111-1307 USA. */
  26609. + License along with the GNU C Library; if not, see
  26610. + <http://www.gnu.org/licenses/>. */
  26611. #ifndef _SYS_IOCTL_H
  26612. #define _SYS_IOCTL_H 1
  26613. diff -Nur uClibc-0.9.33.2/include/sys/ipc.h uClibc-git/include/sys/ipc.h
  26614. --- uClibc-0.9.33.2/include/sys/ipc.h 2012-05-15 09:20:09.000000000 +0200
  26615. +++ uClibc-git/include/sys/ipc.h 2014-02-03 12:32:56.000000000 +0100
  26616. @@ -12,9 +12,8 @@
  26617. Lesser General Public License for more details.
  26618. You should have received a copy of the GNU Lesser General Public
  26619. - License along with the GNU C Library; if not, write to the Free
  26620. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26621. - 02111-1307 USA. */
  26622. + License along with the GNU C Library; if not, see
  26623. + <http://www.gnu.org/licenses/>. */
  26624. #ifndef _SYS_IPC_H
  26625. #define _SYS_IPC_H 1
  26626. @@ -51,7 +50,7 @@
  26627. __BEGIN_DECLS
  26628. /* Generates key for System V style IPC. */
  26629. -extern key_t ftok (__const char *__pathname, int __proj_id) __THROW;
  26630. +extern key_t ftok (const char *__pathname, int __proj_id) __THROW;
  26631. __END_DECLS
  26632. diff -Nur uClibc-0.9.33.2/include/sys/kdaemon.h uClibc-git/include/sys/kdaemon.h
  26633. --- uClibc-0.9.33.2/include/sys/kdaemon.h 2012-05-15 09:20:09.000000000 +0200
  26634. +++ uClibc-git/include/sys/kdaemon.h 2014-02-03 12:32:56.000000000 +0100
  26635. @@ -12,9 +12,8 @@
  26636. Lesser General Public License for more details.
  26637. You should have received a copy of the GNU Lesser General Public
  26638. - License along with the GNU C Library; if not, write to the Free
  26639. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26640. - 02111-1307 USA. */
  26641. + License along with the GNU C Library; if not, see
  26642. + <http://www.gnu.org/licenses/>. */
  26643. /* Interfaces to control the various kernel daemons. */
  26644. diff -Nur uClibc-0.9.33.2/include/sys/kd.h uClibc-git/include/sys/kd.h
  26645. --- uClibc-0.9.33.2/include/sys/kd.h 2012-05-15 09:20:09.000000000 +0200
  26646. +++ uClibc-git/include/sys/kd.h 2014-02-03 12:32:56.000000000 +0100
  26647. @@ -12,9 +12,8 @@
  26648. Lesser General Public License for more details.
  26649. You should have received a copy of the GNU Lesser General Public
  26650. - License along with the GNU C Library; if not, write to the Free
  26651. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26652. - 02111-1307 USA. */
  26653. + License along with the GNU C Library; if not, see
  26654. + <http://www.gnu.org/licenses/>. */
  26655. #ifndef _SYS_KD_H
  26656. #define _SYS_KD_H 1
  26657. diff -Nur uClibc-0.9.33.2/include/sys/klog.h uClibc-git/include/sys/klog.h
  26658. --- uClibc-0.9.33.2/include/sys/klog.h 2012-05-15 09:20:09.000000000 +0200
  26659. +++ uClibc-git/include/sys/klog.h 2014-02-03 12:32:56.000000000 +0100
  26660. @@ -12,9 +12,8 @@
  26661. Lesser General Public License for more details.
  26662. You should have received a copy of the GNU Lesser General Public
  26663. - License along with the GNU C Library; if not, write to the Free
  26664. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26665. - 02111-1307 USA. */
  26666. + License along with the GNU C Library; if not, see
  26667. + <http://www.gnu.org/licenses/>. */
  26668. #ifndef _SYS_KLOG_H
  26669. diff -Nur uClibc-0.9.33.2/include/sys/mman.h uClibc-git/include/sys/mman.h
  26670. --- uClibc-0.9.33.2/include/sys/mman.h 2012-05-15 09:20:09.000000000 +0200
  26671. +++ uClibc-git/include/sys/mman.h 2014-02-03 12:32:56.000000000 +0100
  26672. @@ -13,9 +13,8 @@
  26673. Lesser General Public License for more details.
  26674. You should have received a copy of the GNU Lesser General Public
  26675. - License along with the GNU C Library; if not, write to the Free
  26676. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26677. - 02111-1307 USA. */
  26678. + License along with the GNU C Library; if not, see
  26679. + <http://www.gnu.org/licenses/>. */
  26680. #ifndef _SYS_MMAN_H
  26681. #define _SYS_MMAN_H 1
  26682. @@ -115,10 +114,10 @@
  26683. /* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to
  26684. be memory resident. */
  26685. -extern int mlock (__const void *__addr, size_t __len) __THROW;
  26686. +extern int mlock (const void *__addr, size_t __len) __THROW;
  26687. /* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN). */
  26688. -extern int munlock (__const void *__addr, size_t __len) __THROW;
  26689. +extern int munlock (const void *__addr, size_t __len) __THROW;
  26690. /* Cause all currently mapped pages of the process to be memory resident
  26691. until unlocked by a call to the `munlockall', until the process exits,
  26692. @@ -133,8 +132,8 @@
  26693. /* On no-mmu systems, memory cannot be swapped out, so
  26694. * these functions will always succeed. */
  26695. -static __inline__ int mlock (__const void *__addr, size_t __len) { return 0; }
  26696. -static __inline__ int munlock (__const void *__addr, size_t __len) { return 0; }
  26697. +static __inline__ int mlock (const void *__addr, size_t __len) { return 0; }
  26698. +static __inline__ int munlock (const void *__addr, size_t __len) { return 0; }
  26699. static __inline__ int mlockall (int __flags) { return 0; }
  26700. static __inline__ int munlockall (void) { return 0; }
  26701. #endif
  26702. @@ -170,10 +169,10 @@
  26703. /* Open shared memory segment. */
  26704. -extern int shm_open (__const char *__name, int __oflag, mode_t __mode);
  26705. +extern int shm_open (const char *__name, int __oflag, mode_t __mode);
  26706. /* Remove shared memory segment. */
  26707. -extern int shm_unlink (__const char *__name);
  26708. +extern int shm_unlink (const char *__name);
  26709. __END_DECLS
  26710. diff -Nur uClibc-0.9.33.2/include/sys/mount.h uClibc-git/include/sys/mount.h
  26711. --- uClibc-0.9.33.2/include/sys/mount.h 2012-05-15 09:20:09.000000000 +0200
  26712. +++ uClibc-git/include/sys/mount.h 2014-02-03 12:32:56.000000000 +0100
  26713. @@ -1,5 +1,5 @@
  26714. /* Header file for mounting/unmount Linux filesystems.
  26715. - Copyright (C) 1996,1997,1998,1999,2000,2004 Free Software Foundation, Inc.
  26716. + Copyright (C) 1996-2000, 2004, 2010, 2012 Free Software Foundation, Inc.
  26717. This file is part of the GNU C Library.
  26718. The GNU C Library is free software; you can redistribute it and/or
  26719. @@ -13,9 +13,8 @@
  26720. Lesser General Public License for more details.
  26721. You should have received a copy of the GNU Lesser General Public
  26722. - License along with the GNU C Library; if not, write to the Free
  26723. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26724. - 02111-1307 USA. */
  26725. + License along with the GNU C Library; if not, see
  26726. + <http://www.gnu.org/licenses/>. */
  26727. /* This is taken from /usr/include/linux/fs.h. */
  26728. @@ -47,23 +46,46 @@
  26729. #define MS_REMOUNT MS_REMOUNT
  26730. MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */
  26731. #define MS_MANDLOCK MS_MANDLOCK
  26732. - S_WRITE = 128, /* Write on file/directory/symlink. */
  26733. -#define S_WRITE S_WRITE
  26734. - S_APPEND = 256, /* Append-only file. */
  26735. -#define S_APPEND S_APPEND
  26736. - S_IMMUTABLE = 512, /* Immutable file. */
  26737. -#define S_IMMUTABLE S_IMMUTABLE
  26738. + MS_DIRSYNC = 128, /* Directory modifications are synchronous. */
  26739. +#define MS_DIRSYNC MS_DIRSYNC
  26740. MS_NOATIME = 1024, /* Do not update access times. */
  26741. #define MS_NOATIME MS_NOATIME
  26742. MS_NODIRATIME = 2048, /* Do not update directory access times. */
  26743. #define MS_NODIRATIME MS_NODIRATIME
  26744. MS_BIND = 4096, /* Bind directory at different place. */
  26745. #define MS_BIND MS_BIND
  26746. + MS_MOVE = 8192,
  26747. +#define MS_MOVE MS_MOVE
  26748. + MS_REC = 16384,
  26749. +#define MS_REC MS_REC
  26750. + MS_SILENT = 32768,
  26751. +#define MS_SILENT MS_SILENT
  26752. + MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */
  26753. +#define MS_POSIXACL MS_POSIXACL
  26754. + MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */
  26755. +#define MS_UNBINDABLE MS_UNBINDABLE
  26756. + MS_PRIVATE = 1 << 18, /* Change to private. */
  26757. +#define MS_PRIVATE MS_PRIVATE
  26758. + MS_SLAVE = 1 << 19, /* Change to slave. */
  26759. +#define MS_SLAVE MS_SLAVE
  26760. + MS_SHARED = 1 << 20, /* Change to shared. */
  26761. +#define MS_SHARED MS_SHARED
  26762. + MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */
  26763. +#define MS_RELATIME MS_RELATIME
  26764. + MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */
  26765. +#define MS_KERNMOUNT MS_KERNMOUNT
  26766. + MS_I_VERSION = 1 << 23, /* Update inode I_version field. */
  26767. +#define MS_I_VERSION MS_I_VERSION
  26768. + MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */
  26769. +#define MS_STRICTATIME MS_STRICTATIME
  26770. + MS_ACTIVE = 1 << 30,
  26771. +#define MS_ACTIVE MS_ACTIVE
  26772. + MS_NOUSER = 1 << 31
  26773. +#define MS_NOUSER MS_NOUSER
  26774. };
  26775. /* Flags that can be altered by MS_REMOUNT */
  26776. -#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME \
  26777. - |MS_NODIRATIME)
  26778. +#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION)
  26779. /* Magic mount flag number. Has to be or-ed to the flag values. */
  26780. @@ -100,23 +122,28 @@
  26781. #define MNT_FORCE MNT_FORCE
  26782. MNT_DETACH = 2, /* Just detach from the tree. */
  26783. #define MNT_DETACH MNT_DETACH
  26784. - MNT_EXPIRE = 4 /* Mark for expiry. */
  26785. + MNT_EXPIRE = 4, /* Mark for expiry. */
  26786. #define MNT_EXPIRE MNT_EXPIRE
  26787. + UMOUNT_NOFOLLOW = 8 /* Don't follow symlink on umount. */
  26788. +#define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW
  26789. };
  26790. __BEGIN_DECLS
  26791. /* Mount a filesystem. */
  26792. -extern int mount (__const char *__special_file, __const char *__dir,
  26793. - __const char *__fstype, unsigned long int __rwflag,
  26794. - __const void *__data) __THROW;
  26795. +extern int mount (const char *__special_file, const char *__dir,
  26796. + const char *__fstype, unsigned long int __rwflag,
  26797. + const void *__data) __THROW;
  26798. /* Unmount a filesystem. */
  26799. -extern int umount (__const char *__special_file) __THROW;
  26800. +extern int umount (const char *__special_file) __THROW;
  26801. +#ifdef __UCLIBC_LINUX_SPECIFIC__
  26802. /* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */
  26803. -extern int umount2 (__const char *__special_file, int __flags) __THROW;
  26804. +extern int umount2 (const char *__special_file, int __flags) __THROW;
  26805. +libc_hidden_proto(umount2)
  26806. +#endif
  26807. __END_DECLS
  26808. diff -Nur uClibc-0.9.33.2/include/sys/msg.h uClibc-git/include/sys/msg.h
  26809. --- uClibc-0.9.33.2/include/sys/msg.h 2012-05-15 09:20:09.000000000 +0200
  26810. +++ uClibc-git/include/sys/msg.h 2014-02-03 12:32:56.000000000 +0100
  26811. @@ -13,9 +13,8 @@
  26812. Lesser General Public License for more details.
  26813. You should have received a copy of the GNU Lesser General Public
  26814. - License along with the GNU C Library; if not, write to the Free
  26815. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26816. - 02111-1307 USA. */
  26817. + License along with the GNU C Library; if not, see
  26818. + <http://www.gnu.org/licenses/>. */
  26819. #ifndef _SYS_MSG_H
  26820. #define _SYS_MSG_H
  26821. @@ -77,7 +76,7 @@
  26822. This function is a cancellation point and therefore not marked with
  26823. __THROW. */
  26824. -extern int msgsnd (int __msqid, __const void *__msgp, size_t __msgsz,
  26825. +extern int msgsnd (int __msqid, const void *__msgp, size_t __msgsz,
  26826. int __msgflg);
  26827. __END_DECLS
  26828. diff -Nur uClibc-0.9.33.2/include/sys/mtio.h uClibc-git/include/sys/mtio.h
  26829. --- uClibc-0.9.33.2/include/sys/mtio.h 2012-05-15 09:20:09.000000000 +0200
  26830. +++ uClibc-git/include/sys/mtio.h 2014-02-03 12:32:56.000000000 +0100
  26831. @@ -13,9 +13,8 @@
  26832. Lesser General Public License for more details.
  26833. You should have received a copy of the GNU Lesser General Public
  26834. - License along with the GNU C Library; if not, write to the Free
  26835. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26836. - 02111-1307 USA. */
  26837. + License along with the GNU C Library; if not, see
  26838. + <http://www.gnu.org/licenses/>. */
  26839. /* Written by H. Bergman <hennus@cybercomm.nl>. */
  26840. diff -Nur uClibc-0.9.33.2/include/sys/param.h uClibc-git/include/sys/param.h
  26841. --- uClibc-0.9.33.2/include/sys/param.h 2012-05-15 09:20:09.000000000 +0200
  26842. +++ uClibc-git/include/sys/param.h 2014-02-03 12:32:56.000000000 +0100
  26843. @@ -12,9 +12,8 @@
  26844. Lesser General Public License for more details.
  26845. You should have received a copy of the GNU Lesser General Public
  26846. - License along with the GNU C Library; if not, write to the Free
  26847. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26848. - 02111-1307 USA. */
  26849. + License along with the GNU C Library; if not, see
  26850. + <http://www.gnu.org/licenses/>. */
  26851. #ifndef _SYS_PARAM_H
  26852. #define _SYS_PARAM_H 1
  26853. diff -Nur uClibc-0.9.33.2/include/sys/personality.h uClibc-git/include/sys/personality.h
  26854. --- uClibc-0.9.33.2/include/sys/personality.h 2012-05-15 09:20:09.000000000 +0200
  26855. +++ uClibc-git/include/sys/personality.h 2014-02-03 12:32:56.000000000 +0100
  26856. @@ -12,9 +12,8 @@
  26857. Lesser General Public License for more details.
  26858. You should have received a copy of the GNU Lesser General Public
  26859. - License along with the GNU C Library; if not, write to the Free
  26860. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26861. - 02111-1307 USA. */
  26862. + License along with the GNU C Library; if not, see
  26863. + <http://www.gnu.org/licenses/>. */
  26864. /* Taken verbatim from Linux 2.4 (include/linux/personality.h). */
  26865. diff -Nur uClibc-0.9.33.2/include/sys/poll.h uClibc-git/include/sys/poll.h
  26866. --- uClibc-0.9.33.2/include/sys/poll.h 2012-05-15 09:20:09.000000000 +0200
  26867. +++ uClibc-git/include/sys/poll.h 2014-02-03 12:32:56.000000000 +0100
  26868. @@ -13,9 +13,8 @@
  26869. Lesser General Public License for more details.
  26870. You should have received a copy of the GNU Lesser General Public
  26871. - License along with the GNU C Library; if not, write to the Free
  26872. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  26873. - 02111-1307 USA. */
  26874. + License along with the GNU C Library; if not, see
  26875. + <http://www.gnu.org/licenses/>. */
  26876. #ifndef _SYS_POLL_H
  26877. #define _SYS_POLL_H 1
  26878. @@ -66,9 +65,8 @@
  26879. This function is a cancellation point and therefore not marked with
  26880. __THROW. */
  26881. extern int ppoll (struct pollfd *__fds, nfds_t __nfds,
  26882. - __const struct timespec *__timeout,
  26883. - __const __sigset_t *__ss);
  26884. -libc_hidden_proto(ppoll)
  26885. + const struct timespec *__timeout,
  26886. + const __sigset_t *__ss);
  26887. #endif
  26888. __END_DECLS
  26889. diff -Nur uClibc-0.9.33.2/include/sys/quota.h uClibc-git/include/sys/quota.h
  26890. --- uClibc-0.9.33.2/include/sys/quota.h 2012-05-15 09:20:09.000000000 +0200
  26891. +++ uClibc-git/include/sys/quota.h 2014-02-03 12:32:56.000000000 +0100
  26892. @@ -30,8 +30,6 @@
  26893. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26894. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  26895. * SUCH DAMAGE.
  26896. - *
  26897. - * Version: $Id: quota.h,v 1.1 2002/01/03 04:00:09 andersen Exp $
  26898. */
  26899. #ifndef _SYS_QUOTA_H
  26900. @@ -40,6 +38,19 @@
  26901. #include <features.h>
  26902. #include <sys/types.h>
  26903. +#ifdef __UCLIBC__
  26904. +# undef _LINUX_QUOTA_VERSION
  26905. +# define _LINUX_QUOTA_VERSION 1
  26906. +#endif
  26907. +
  26908. +/*
  26909. + * Select between different incompatible quota versions.
  26910. + * Default to the version used by Linux kernel version 2.4.22
  26911. + * or later. */
  26912. +#ifndef _LINUX_QUOTA_VERSION
  26913. +# define _LINUX_QUOTA_VERSION 2
  26914. +#endif
  26915. +
  26916. /*
  26917. * Convert diskblocks to blocks and the other way around.
  26918. * currently only to fool the BSD source. :-)
  26919. @@ -94,21 +105,33 @@
  26920. #define SUBCMDSHIFT 8
  26921. #define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
  26922. -#define Q_QUOTAON 0x0100 /* enable quotas */
  26923. -#define Q_QUOTAOFF 0x0200 /* disable quotas */
  26924. -#define Q_GETQUOTA 0x0300 /* get limits and usage */
  26925. -#define Q_SETQUOTA 0x0400 /* set limits and usage */
  26926. -#define Q_SETUSE 0x0500 /* set usage */
  26927. -#define Q_SYNC 0x0600 /* sync disk copy of a filesystems quotas */
  26928. -#define Q_SETQLIM 0x0700 /* set limits */
  26929. -#define Q_GETSTATS 0x0800 /* get collected stats */
  26930. -#define Q_RSQUASH 0x1000 /* set root_squash option */
  26931. +#if _LINUX_QUOTA_VERSION < 2
  26932. +# define Q_QUOTAON 0x0100 /* enable quotas */
  26933. +# define Q_QUOTAOFF 0x0200 /* disable quotas */
  26934. +# define Q_GETQUOTA 0x0300 /* get limits and usage */
  26935. +# define Q_SETQUOTA 0x0400 /* set limits and usage */
  26936. +# define Q_SETUSE 0x0500 /* set usage */
  26937. +# define Q_SYNC 0x0600 /* sync disk copy of a filesystems quotas */
  26938. +# define Q_SETQLIM 0x0700 /* set limits */
  26939. +# define Q_GETSTATS 0x0800 /* get collected stats */
  26940. +# define Q_RSQUASH 0x1000 /* set root_squash option */
  26941. +#else
  26942. +# define Q_SYNC 0x800001 /* sync disk copy of a filesystems quotas */
  26943. +# define Q_QUOTAON 0x800002 /* turn quotas on */
  26944. +# define Q_QUOTAOFF 0x800003 /* turn quotas off */
  26945. +# define Q_GETFMT 0x800004 /* get quota format used on given filesystem */
  26946. +# define Q_GETINFO 0x800005 /* get information about quota files */
  26947. +# define Q_SETINFO 0x800006 /* set information about quota files */
  26948. +# define Q_GETQUOTA 0x800007 /* get user quota structure */
  26949. +# define Q_SETQUOTA 0x800008 /* set user quota structure */
  26950. +#endif
  26951. /*
  26952. * The following structure defines the format of the disk quota file
  26953. * (as it appears on disk) - the file is an array of these structures
  26954. * indexed by user or group number.
  26955. */
  26956. +#if _LINUX_QUOTA_VERSION < 2
  26957. struct dqblk
  26958. {
  26959. u_int32_t dqb_bhardlimit; /* absolute limit on disk blks alloc */
  26960. @@ -120,13 +143,45 @@
  26961. time_t dqb_btime; /* time limit for excessive disk use */
  26962. time_t dqb_itime; /* time limit for excessive files */
  26963. };
  26964. +#else
  26965. +
  26966. +/* Flags that indicate which fields in dqblk structure are valid. */
  26967. +#define QIF_BLIMITS 1
  26968. +#define QIF_SPACE 2
  26969. +#define QIF_ILIMITS 4
  26970. +#define QIF_INODES 8
  26971. +#define QIF_BTIME 16
  26972. +#define QIF_ITIME 32
  26973. +#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
  26974. +#define QIF_USAGE (QIF_SPACE | QIF_INODES)
  26975. +#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
  26976. +#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
  26977. +
  26978. +struct dqblk
  26979. + {
  26980. + u_int64_t dqb_bhardlimit; /* absolute limit on disk quota blocks alloc */
  26981. + u_int64_t dqb_bsoftlimit; /* preferred limit on disk quota blocks */
  26982. + u_int64_t dqb_curspace; /* current quota block count */
  26983. + u_int64_t dqb_ihardlimit; /* maximum # allocated inodes */
  26984. + u_int64_t dqb_isoftlimit; /* preferred inode limit */
  26985. + u_int64_t dqb_curinodes; /* current # allocated inodes */
  26986. + u_int64_t dqb_btime; /* time limit for excessive disk use */
  26987. + u_int64_t dqb_itime; /* time limit for excessive files */
  26988. + u_int32_t dqb_valid; /* bitmask of QIF_* constants */
  26989. + };
  26990. +#endif
  26991. /*
  26992. * Shorthand notation.
  26993. */
  26994. #define dq_bhardlimit dq_dqb.dqb_bhardlimit
  26995. #define dq_bsoftlimit dq_dqb.dqb_bsoftlimit
  26996. -#define dq_curblocks dq_dqb.dqb_curblocks
  26997. +#if _LINUX_QUOTA_VERSION < 2
  26998. +# define dq_curblocks dq_dqb.dqb_curblocks
  26999. +#else
  27000. +# define dq_curspace dq_dqb.dqb_curspace
  27001. +# define dq_valid dq_dqb.dqb_valid
  27002. +#endif
  27003. #define dq_ihardlimit dq_dqb.dqb_ihardlimit
  27004. #define dq_isoftlimit dq_dqb.dqb_isoftlimit
  27005. #define dq_curinodes dq_dqb.dqb_curinodes
  27006. @@ -135,6 +190,7 @@
  27007. #define dqoff(UID) ((loff_t)((UID) * sizeof (struct dqblk)))
  27008. +#if _LINUX_QUOTA_VERSION < 2
  27009. struct dqstats
  27010. {
  27011. u_int32_t lookups;
  27012. @@ -147,6 +203,22 @@
  27013. u_int32_t free_dquots;
  27014. u_int32_t syncs;
  27015. };
  27016. +#else
  27017. +
  27018. +/* Flags that indicate which fields in dqinfo structure are valid. */
  27019. +# define IIF_BGRACE 1
  27020. +# define IIF_IGRACE 2
  27021. +# define IIF_FLAGS 4
  27022. +# define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
  27023. +
  27024. +struct dqinfo
  27025. + {
  27026. + u_int64_t dqi_bgrace;
  27027. + u_int64_t dqi_igrace;
  27028. + u_int32_t dqi_flags;
  27029. + u_int32_t dqi_valid;
  27030. + };
  27031. +#endif
  27032. __BEGIN_DECLS
  27033. diff -Nur uClibc-0.9.33.2/include/sys/reboot.h uClibc-git/include/sys/reboot.h
  27034. --- uClibc-0.9.33.2/include/sys/reboot.h 2012-05-15 09:20:09.000000000 +0200
  27035. +++ uClibc-git/include/sys/reboot.h 2014-02-03 12:32:56.000000000 +0100
  27036. @@ -12,9 +12,8 @@
  27037. Lesser General Public License for more details.
  27038. You should have received a copy of the GNU Lesser General Public
  27039. - License along with the GNU C Library; if not, write to the Free
  27040. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27041. - 02111-1307 USA. */
  27042. + License along with the GNU C Library; if not, see
  27043. + <http://www.gnu.org/licenses/>. */
  27044. /* This file should define RB_* macros to be used as flag
  27045. bits in the argument to the `reboot' system call. */
  27046. diff -Nur uClibc-0.9.33.2/include/sys/resource.h uClibc-git/include/sys/resource.h
  27047. --- uClibc-0.9.33.2/include/sys/resource.h 2012-05-15 09:20:09.000000000 +0200
  27048. +++ uClibc-git/include/sys/resource.h 2014-02-03 12:32:56.000000000 +0100
  27049. @@ -12,9 +12,8 @@
  27050. Lesser General Public License for more details.
  27051. You should have received a copy of the GNU Lesser General Public
  27052. - License along with the GNU C Library; if not, write to the Free
  27053. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27054. - 02111-1307 USA. */
  27055. + License along with the GNU C Library; if not, see
  27056. + <http://www.gnu.org/licenses/>. */
  27057. #ifndef _SYS_RESOURCE_H
  27058. #define _SYS_RESOURCE_H 1
  27059. @@ -69,12 +68,12 @@
  27060. Return 0 if successful, -1 if not (and sets errno). */
  27061. #ifndef __USE_FILE_OFFSET64
  27062. extern int setrlimit (__rlimit_resource_t __resource,
  27063. - __const struct rlimit *__rlimits) __THROW;
  27064. + const struct rlimit *__rlimits) __THROW;
  27065. libc_hidden_proto(setrlimit)
  27066. #else
  27067. # ifdef __REDIRECT_NTH
  27068. extern int __REDIRECT_NTH (setrlimit, (__rlimit_resource_t __resource,
  27069. - __const struct rlimit *__rlimits),
  27070. + const struct rlimit *__rlimits),
  27071. setrlimit64);
  27072. # else
  27073. # define setrlimit setrlimit64
  27074. @@ -82,7 +81,7 @@
  27075. #endif
  27076. #ifdef __USE_LARGEFILE64
  27077. extern int setrlimit64 (__rlimit_resource_t __resource,
  27078. - __const struct rlimit64 *__rlimits) __THROW;
  27079. + const struct rlimit64 *__rlimits) __THROW;
  27080. #endif
  27081. /* Return resource usage information on process indicated by WHO
  27082. diff -Nur uClibc-0.9.33.2/include/sys/select.h uClibc-git/include/sys/select.h
  27083. --- uClibc-0.9.33.2/include/sys/select.h 2012-05-15 09:20:09.000000000 +0200
  27084. +++ uClibc-git/include/sys/select.h 2014-02-03 12:32:56.000000000 +0100
  27085. @@ -13,9 +13,8 @@
  27086. Lesser General Public License for more details.
  27087. You should have received a copy of the GNU Lesser General Public
  27088. - License along with the GNU C Library; if not, write to the Free
  27089. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27090. - 02111-1307 USA. */
  27091. + License along with the GNU C Library; if not, see
  27092. + <http://www.gnu.org/licenses/>. */
  27093. /* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */
  27094. @@ -110,7 +109,10 @@
  27095. fd_set *__restrict __writefds,
  27096. fd_set *__restrict __exceptfds,
  27097. struct timeval *__restrict __timeout);
  27098. +#ifdef _LIBC
  27099. +extern __typeof(select) __select_nocancel attribute_hidden;
  27100. libc_hidden_proto(select)
  27101. +#endif
  27102. #ifdef __USE_XOPEN2K
  27103. /* Same as above only that the TIMEOUT value is given with higher
  27104. diff -Nur uClibc-0.9.33.2/include/sys/sem.h uClibc-git/include/sys/sem.h
  27105. --- uClibc-0.9.33.2/include/sys/sem.h 2012-05-15 09:20:09.000000000 +0200
  27106. +++ uClibc-git/include/sys/sem.h 2014-02-03 12:32:56.000000000 +0100
  27107. @@ -12,9 +12,8 @@
  27108. Lesser General Public License for more details.
  27109. You should have received a copy of the GNU Lesser General Public
  27110. - License along with the GNU C Library; if not, write to the Free
  27111. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27112. - 02111-1307 USA. */
  27113. + License along with the GNU C Library; if not, see
  27114. + <http://www.gnu.org/licenses/>. */
  27115. #ifndef _SYS_SEM_H
  27116. #define _SYS_SEM_H 1
  27117. @@ -61,7 +60,7 @@
  27118. #ifdef __USE_GNU
  27119. /* Operate on semaphore with timeout. */
  27120. extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops,
  27121. - __const struct timespec *__timeout) __THROW;
  27122. + const struct timespec *__timeout) __THROW;
  27123. #endif
  27124. __END_DECLS
  27125. diff -Nur uClibc-0.9.33.2/include/sys/sendfile.h uClibc-git/include/sys/sendfile.h
  27126. --- uClibc-0.9.33.2/include/sys/sendfile.h 2012-05-15 09:20:09.000000000 +0200
  27127. +++ uClibc-git/include/sys/sendfile.h 2014-02-03 12:32:56.000000000 +0100
  27128. @@ -13,9 +13,8 @@
  27129. Lesser General Public License for more details.
  27130. You should have received a copy of the GNU Lesser General Public
  27131. - License along with the GNU C Library; if not, write to the Free
  27132. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27133. - 02111-1307 USA. */
  27134. + License along with the GNU C Library; if not, see
  27135. + <http://www.gnu.org/licenses/>. */
  27136. #ifndef _SYS_SENDFILE_H
  27137. #define _SYS_SENDFILE_H 1
  27138. @@ -45,6 +44,7 @@
  27139. #ifdef __USE_LARGEFILE64
  27140. extern ssize_t sendfile64 (int __out_fd, int __in_fd, __off64_t *__offset,
  27141. size_t __count) __THROW;
  27142. +libc_hidden_proto(sendfile64)
  27143. #endif
  27144. __END_DECLS
  27145. diff -Nur uClibc-0.9.33.2/include/sys/shm.h uClibc-git/include/sys/shm.h
  27146. --- uClibc-0.9.33.2/include/sys/shm.h 2012-05-15 09:20:09.000000000 +0200
  27147. +++ uClibc-git/include/sys/shm.h 2014-02-03 12:32:56.000000000 +0100
  27148. @@ -12,9 +12,8 @@
  27149. Lesser General Public License for more details.
  27150. You should have received a copy of the GNU Lesser General Public
  27151. - License along with the GNU C Library; if not, write to the Free
  27152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27153. - 02111-1307 USA. */
  27154. + License along with the GNU C Library; if not, see
  27155. + <http://www.gnu.org/licenses/>. */
  27156. #ifndef _SYS_SHM_H
  27157. #define _SYS_SHM_H 1
  27158. @@ -54,11 +53,11 @@
  27159. extern int shmget (key_t __key, size_t __size, int __shmflg) __THROW;
  27160. /* Attach shared memory segment. */
  27161. -extern void *shmat (int __shmid, __const void *__shmaddr, int __shmflg)
  27162. +extern void *shmat (int __shmid, const void *__shmaddr, int __shmflg)
  27163. __THROW;
  27164. /* Detach shared memory segment. */
  27165. -extern int shmdt (__const void *__shmaddr) __THROW;
  27166. +extern int shmdt (const void *__shmaddr) __THROW;
  27167. __END_DECLS
  27168. diff -Nur uClibc-0.9.33.2/include/sys/socket.h uClibc-git/include/sys/socket.h
  27169. --- uClibc-0.9.33.2/include/sys/socket.h 2012-05-15 09:20:09.000000000 +0200
  27170. +++ uClibc-git/include/sys/socket.h 2014-02-03 12:32:56.000000000 +0100
  27171. @@ -14,9 +14,8 @@
  27172. Lesser General Public License for more details.
  27173. You should have received a copy of the GNU Lesser General Public
  27174. - License along with the GNU C Library; if not, write to the Free
  27175. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27176. - 02111-1307 USA. */
  27177. + License along with the GNU C Library; if not, see
  27178. + <http://www.gnu.org/licenses/>. */
  27179. #ifndef _SYS_SOCKET_H
  27180. #define _SYS_SOCKET_H 1
  27181. @@ -69,7 +68,7 @@
  27182. old-style declaration, too. */
  27183. #if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU
  27184. # define __SOCKADDR_ARG struct sockaddr *__restrict
  27185. -# define __CONST_SOCKADDR_ARG __const struct sockaddr *
  27186. +# define __CONST_SOCKADDR_ARG const struct sockaddr *
  27187. #else
  27188. /* Add more `struct sockaddr_AF' types here as necessary.
  27189. These are all the ones I found on NetBSD and Linux. */
  27190. @@ -92,7 +91,7 @@
  27191. typedef union { __SOCKADDR_ALLTYPES
  27192. } __SOCKADDR_ARG __attribute__ ((__transparent_union__));
  27193. # undef __SOCKADDR_ONETYPE
  27194. -# define __SOCKADDR_ONETYPE(type) __const struct type *__restrict __##type##__;
  27195. +# define __SOCKADDR_ONETYPE(type) const struct type *__restrict __##type##__;
  27196. typedef union { __SOCKADDR_ALLTYPES
  27197. } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
  27198. # undef __SOCKADDR_ONETYPE
  27199. @@ -142,7 +141,7 @@
  27200. This function is a cancellation point and therefore not marked with
  27201. __THROW. */
  27202. -extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);
  27203. +extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags);
  27204. libc_hidden_proto(send)
  27205. /* Read N bytes into BUF from socket FD.
  27206. @@ -158,10 +157,13 @@
  27207. This function is a cancellation point and therefore not marked with
  27208. __THROW. */
  27209. -extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
  27210. +extern ssize_t sendto (int __fd, const void *__buf, size_t __n,
  27211. int __flags, __CONST_SOCKADDR_ARG __addr,
  27212. socklen_t __addr_len);
  27213. +#ifdef _LIBC
  27214. +extern __typeof(sendto) __sendto_nocancel attribute_hidden;
  27215. libc_hidden_proto(sendto)
  27216. +#endif
  27217. /* Read N bytes into BUF through socket FD.
  27218. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of
  27219. @@ -173,7 +175,10 @@
  27220. extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
  27221. int __flags, __SOCKADDR_ARG __addr,
  27222. socklen_t *__restrict __addr_len);
  27223. +#ifdef _LIBC
  27224. +extern __typeof(recvfrom) __recvfrom_nocancel attribute_hidden;
  27225. libc_hidden_proto(recvfrom)
  27226. +#endif
  27227. /* Send a message described MESSAGE on socket FD.
  27228. @@ -181,7 +186,7 @@
  27229. This function is a cancellation point and therefore not marked with
  27230. __THROW. */
  27231. -extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
  27232. +extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
  27233. int __flags);
  27234. libc_hidden_proto(sendmsg)
  27235. @@ -205,7 +210,7 @@
  27236. to *OPTVAL (which is OPTLEN bytes long).
  27237. Returns 0 on success, -1 for errors. */
  27238. extern int setsockopt (int __fd, int __level, int __optname,
  27239. - __const void *__optval, socklen_t __optlen) __THROW;
  27240. + const void *__optval, socklen_t __optlen) __THROW;
  27241. libc_hidden_proto(setsockopt)
  27242. @@ -260,4 +265,8 @@
  27243. __END_DECLS
  27244. +#ifdef _LIBC
  27245. +extern int __socketcall(int, unsigned long *) attribute_hidden;
  27246. +#endif
  27247. +
  27248. #endif /* sys/socket.h */
  27249. diff -Nur uClibc-0.9.33.2/include/sys/statfs.h uClibc-git/include/sys/statfs.h
  27250. --- uClibc-0.9.33.2/include/sys/statfs.h 2012-05-15 09:20:09.000000000 +0200
  27251. +++ uClibc-git/include/sys/statfs.h 2014-02-03 12:32:56.000000000 +0100
  27252. @@ -13,9 +13,8 @@
  27253. Lesser General Public License for more details.
  27254. You should have received a copy of the GNU Lesser General Public
  27255. - License along with the GNU C Library; if not, write to the Free
  27256. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27257. - 02111-1307 USA. */
  27258. + License along with the GNU C Library; if not, see
  27259. + <http://www.gnu.org/licenses/>. */
  27260. #ifndef _SYS_STATFS_H
  27261. #define _SYS_STATFS_H 1
  27262. @@ -29,19 +28,20 @@
  27263. /* Return information about the filesystem on which FILE resides. */
  27264. #ifndef __USE_FILE_OFFSET64
  27265. -extern int statfs (__const char *__file, struct statfs *__buf)
  27266. +extern int statfs (const char *__file, struct statfs *__buf)
  27267. __THROW __nonnull ((1, 2));
  27268. +libc_hidden_proto(statfs)
  27269. #else
  27270. # ifdef __REDIRECT_NTH
  27271. extern int __REDIRECT_NTH (statfs,
  27272. - (__const char *__file, struct statfs *__buf),
  27273. + (const char *__file, struct statfs *__buf),
  27274. statfs64) __nonnull ((1, 2));
  27275. # else
  27276. # define statfs statfs64
  27277. # endif
  27278. #endif
  27279. #ifdef __USE_LARGEFILE64
  27280. -extern int statfs64 (__const char *__file, struct statfs64 *__buf)
  27281. +extern int statfs64 (const char *__file, struct statfs64 *__buf)
  27282. __THROW __nonnull ((1, 2));
  27283. libc_hidden_proto(statfs64)
  27284. #endif
  27285. diff -Nur uClibc-0.9.33.2/include/sys/stat.h uClibc-git/include/sys/stat.h
  27286. --- uClibc-0.9.33.2/include/sys/stat.h 2012-05-15 09:20:09.000000000 +0200
  27287. +++ uClibc-git/include/sys/stat.h 2014-02-03 12:32:56.000000000 +0100
  27288. @@ -13,9 +13,8 @@
  27289. Lesser General Public License for more details.
  27290. You should have received a copy of the GNU Lesser General Public
  27291. - License along with the GNU C Library; if not, write to the Free
  27292. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27293. - 02111-1307 USA. */
  27294. + License along with the GNU C Library; if not, see
  27295. + <http://www.gnu.org/licenses/>. */
  27296. /*
  27297. * POSIX Standard: 5.6 File Characteristics <sys/stat.h>
  27298. @@ -206,7 +205,7 @@
  27299. #ifndef __USE_FILE_OFFSET64
  27300. /* Get file attributes for FILE and put them in BUF. */
  27301. -extern int stat (__const char *__restrict __file,
  27302. +extern int stat (const char *__restrict __file,
  27303. struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
  27304. libc_hidden_proto(stat)
  27305. @@ -216,7 +215,7 @@
  27306. libc_hidden_proto(fstat)
  27307. #else
  27308. # ifdef __REDIRECT_NTH
  27309. -extern int __REDIRECT_NTH (stat, (__const char *__restrict __file,
  27310. +extern int __REDIRECT_NTH (stat, (const char *__restrict __file,
  27311. struct stat *__restrict __buf), stat64)
  27312. __nonnull ((1, 2));
  27313. extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64)
  27314. @@ -227,7 +226,7 @@
  27315. # endif
  27316. #endif
  27317. #ifdef __USE_LARGEFILE64
  27318. -extern int stat64 (__const char *__restrict __file,
  27319. +extern int stat64 (const char *__restrict __file,
  27320. struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2));
  27321. extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2));
  27322. libc_hidden_proto(stat64)
  27323. @@ -239,12 +238,13 @@
  27324. Relative path names are interpreted relative to FD unless FD is
  27325. AT_FDCWD. */
  27326. # ifndef __USE_FILE_OFFSET64
  27327. -extern int fstatat (int __fd, __const char *__restrict __file,
  27328. +extern int fstatat (int __fd, const char *__restrict __file,
  27329. struct stat *__restrict __buf, int __flag)
  27330. __THROW __nonnull ((2, 3));
  27331. +libc_hidden_proto(fstatat)
  27332. # else
  27333. # ifdef __REDIRECT_NTH
  27334. -extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__restrict __file,
  27335. +extern int __REDIRECT_NTH (fstatat, (int __fd, const char *__restrict __file,
  27336. struct stat *__restrict __buf,
  27337. int __flag),
  27338. fstatat64) __nonnull ((2, 3));
  27339. @@ -254,9 +254,10 @@
  27340. # endif
  27341. # ifdef __USE_LARGEFILE64
  27342. -extern int fstatat64 (int __fd, __const char *__restrict __file,
  27343. +extern int fstatat64 (int __fd, const char *__restrict __file,
  27344. struct stat64 *__restrict __buf, int __flag)
  27345. __THROW __nonnull ((2, 3));
  27346. +libc_hidden_proto(fstatat64)
  27347. # endif
  27348. #endif
  27349. @@ -264,13 +265,13 @@
  27350. # ifndef __USE_FILE_OFFSET64
  27351. /* Get file attributes about FILE and put them in BUF.
  27352. If FILE is a symbolic link, do not follow it. */
  27353. -extern int lstat (__const char *__restrict __file,
  27354. +extern int lstat (const char *__restrict __file,
  27355. struct stat *__restrict __buf) __THROW __nonnull ((1, 2));
  27356. libc_hidden_proto(lstat)
  27357. # else
  27358. # ifdef __REDIRECT_NTH
  27359. extern int __REDIRECT_NTH (lstat,
  27360. - (__const char *__restrict __file,
  27361. + (const char *__restrict __file,
  27362. struct stat *__restrict __buf), lstat64)
  27363. __nonnull ((1, 2));
  27364. # else
  27365. @@ -278,7 +279,7 @@
  27366. # endif
  27367. # endif
  27368. # ifdef __USE_LARGEFILE64
  27369. -extern int lstat64 (__const char *__restrict __file,
  27370. +extern int lstat64 (const char *__restrict __file,
  27371. struct stat64 *__restrict __buf)
  27372. __THROW __nonnull ((1, 2));
  27373. libc_hidden_proto(lstat64)
  27374. @@ -287,7 +288,7 @@
  27375. /* Set file access permissions for FILE to MODE.
  27376. If FILE is a symbolic link, this affects its target instead. */
  27377. -extern int chmod (__const char *__file, __mode_t __mode)
  27378. +extern int chmod (const char *__file, __mode_t __mode)
  27379. __THROW __nonnull ((1));
  27380. libc_hidden_proto(chmod)
  27381. @@ -295,7 +296,7 @@
  27382. /* Set file access permissions for FILE to MODE.
  27383. If FILE is a symbolic link, this affects the link itself
  27384. rather than its target. */
  27385. -extern int lchmod (__const char *__file, __mode_t __mode)
  27386. +extern int lchmod (const char *__file, __mode_t __mode)
  27387. __THROW __nonnull ((1));
  27388. #endif
  27389. @@ -307,9 +308,10 @@
  27390. #ifdef __USE_ATFILE
  27391. /* Set file access permissions of FILE relative to
  27392. the directory FD is open on. */
  27393. -extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
  27394. +extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
  27395. int __flag)
  27396. __THROW __nonnull ((2)) __wur;
  27397. +libc_hidden_proto(fchmodat)
  27398. #endif /* Use ATFILE. */
  27399. @@ -325,7 +327,7 @@
  27400. #endif
  27401. /* Create a new directory named PATH, with permission bits MODE. */
  27402. -extern int mkdir (__const char *__path, __mode_t __mode)
  27403. +extern int mkdir (const char *__path, __mode_t __mode)
  27404. __THROW __nonnull ((1));
  27405. libc_hidden_proto(mkdir)
  27406. @@ -333,15 +335,16 @@
  27407. /* Like mkdir, create a new directory with permission bits MODE. But
  27408. interpret relative PATH names relative to the directory associated
  27409. with FD. */
  27410. -extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
  27411. +extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
  27412. __THROW __nonnull ((2));
  27413. +libc_hidden_proto(mkdirat)
  27414. #endif
  27415. /* Create a device file named PATH, with permission and special bits MODE
  27416. and device number DEV (which can be constructed from major and minor
  27417. device numbers with the `makedev' macro above). */
  27418. #if defined __USE_MISC || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  27419. -extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
  27420. +extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
  27421. __THROW __nonnull ((1));
  27422. libc_hidden_proto(mknod)
  27423. @@ -349,7 +352,7 @@
  27424. /* Like mknod, create a new device file with permission bits MODE and
  27425. device number DEV. But interpret relative PATH names relative to
  27426. the directory associated with FD. */
  27427. -extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
  27428. +extern int mknodat (int __fd, const char *__path, __mode_t __mode,
  27429. __dev_t __dev) __THROW __nonnull ((2));
  27430. libc_hidden_proto(mknodat)
  27431. # endif
  27432. @@ -357,22 +360,22 @@
  27433. /* Create a new FIFO named PATH, with permission bits MODE. */
  27434. -extern int mkfifo (__const char *__path, __mode_t __mode)
  27435. +extern int mkfifo (const char *__path, __mode_t __mode)
  27436. __THROW __nonnull ((1));
  27437. #ifdef __USE_ATFILE
  27438. /* Like mkfifo, create a new FIFO with permission bits MODE. But
  27439. interpret relative PATH names relative to the directory associated
  27440. with FD. */
  27441. -extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
  27442. +extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
  27443. __THROW __nonnull ((2));
  27444. #endif
  27445. #ifdef __USE_ATFILE
  27446. /* Set file access and modification times relative to directory file
  27447. descriptor. */
  27448. -extern int utimensat (int __fd, __const char *__path,
  27449. - __const struct timespec __times[2],
  27450. +extern int utimensat (int __fd, const char *__path,
  27451. + const struct timespec __times[2],
  27452. int __flags)
  27453. __THROW __nonnull ((2));
  27454. libc_hidden_proto(utimensat)
  27455. @@ -380,7 +383,7 @@
  27456. #ifdef __USE_XOPEN2K8
  27457. /* Set file access and modification times of the file associated with FD. */
  27458. -extern int futimens (int __fd, __const struct timespec __times[2]) __THROW;
  27459. +extern int futimens (int __fd, const struct timespec __times[2]) __THROW;
  27460. #endif
  27461. /* on uClibc we have unversioned struct stat and mknod.
  27462. diff -Nur uClibc-0.9.33.2/include/sys/statvfs.h uClibc-git/include/sys/statvfs.h
  27463. --- uClibc-0.9.33.2/include/sys/statvfs.h 2012-05-15 09:20:09.000000000 +0200
  27464. +++ uClibc-git/include/sys/statvfs.h 2014-02-03 12:32:56.000000000 +0100
  27465. @@ -13,9 +13,8 @@
  27466. Lesser General Public License for more details.
  27467. You should have received a copy of the GNU Lesser General Public
  27468. - License along with the GNU C Library; if not, write to the Free
  27469. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27470. - 02111-1307 USA. */
  27471. + License along with the GNU C Library; if not, see
  27472. + <http://www.gnu.org/licenses/>. */
  27473. #ifndef _SYS_STATVFS_H
  27474. #define _SYS_STATVFS_H 1
  27475. @@ -49,14 +48,14 @@
  27476. /* Return information about the filesystem on which FILE resides. */
  27477. #ifndef __USE_FILE_OFFSET64
  27478. -extern int statvfs (__const char *__restrict __file,
  27479. +extern int statvfs (const char *__restrict __file,
  27480. struct statvfs *__restrict __buf)
  27481. __THROW __nonnull ((1, 2));
  27482. libc_hidden_proto(statvfs)
  27483. #else
  27484. # ifdef __REDIRECT_NTH
  27485. extern int __REDIRECT_NTH (statvfs,
  27486. - (__const char *__restrict __file,
  27487. + (const char *__restrict __file,
  27488. struct statvfs *__restrict __buf), statvfs64)
  27489. __nonnull ((1, 2));
  27490. # else
  27491. @@ -64,7 +63,7 @@
  27492. # endif
  27493. #endif
  27494. #ifdef __USE_LARGEFILE64
  27495. -extern int statvfs64 (__const char *__restrict __file,
  27496. +extern int statvfs64 (const char *__restrict __file,
  27497. struct statvfs64 *__restrict __buf)
  27498. __THROW __nonnull ((1, 2));
  27499. #endif
  27500. diff -Nur uClibc-0.9.33.2/include/sys/swap.h uClibc-git/include/sys/swap.h
  27501. --- uClibc-0.9.33.2/include/sys/swap.h 2012-05-15 09:20:09.000000000 +0200
  27502. +++ uClibc-git/include/sys/swap.h 2014-02-03 12:32:56.000000000 +0100
  27503. @@ -13,9 +13,8 @@
  27504. Lesser General Public License for more details.
  27505. You should have received a copy of the GNU Lesser General Public
  27506. - License along with the GNU C Library; if not, write to the Free
  27507. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27508. - 02111-1307 USA. */
  27509. + License along with the GNU C Library; if not, see
  27510. + <http://www.gnu.org/licenses/>. */
  27511. #ifndef _SYS_SWAP_H
  27512. @@ -33,10 +32,10 @@
  27513. /* Make the block special device PATH available to the system for swapping.
  27514. This call is restricted to the super-user. */
  27515. -extern int swapon (__const char *__path, int __flags) __THROW;
  27516. +extern int swapon (const char *__path, int __flags) __THROW;
  27517. /* Stop using block special device PATH for swapping. */
  27518. -extern int swapoff (__const char *__path) __THROW;
  27519. +extern int swapoff (const char *__path) __THROW;
  27520. __END_DECLS
  27521. diff -Nur uClibc-0.9.33.2/include/sys/syscall.h uClibc-git/include/sys/syscall.h
  27522. --- uClibc-0.9.33.2/include/sys/syscall.h 2012-05-15 09:20:09.000000000 +0200
  27523. +++ uClibc-git/include/sys/syscall.h 2014-02-03 12:32:56.000000000 +0100
  27524. @@ -12,9 +12,8 @@
  27525. Lesser General Public License for more details.
  27526. You should have received a copy of the GNU Lesser General Public
  27527. - License along with the GNU C Library; if not, write to the Free
  27528. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27529. - 02111-1307 USA. */
  27530. + License along with the GNU C Library; if not, see
  27531. + <http://www.gnu.org/licenses/>. */
  27532. #ifndef _SYSCALL_H
  27533. #define _SYSCALL_H 1
  27534. diff -Nur uClibc-0.9.33.2/include/sys/sysctl.h uClibc-git/include/sys/sysctl.h
  27535. --- uClibc-0.9.33.2/include/sys/sysctl.h 2012-05-15 09:20:09.000000000 +0200
  27536. +++ uClibc-git/include/sys/sysctl.h 2014-02-03 12:32:56.000000000 +0100
  27537. @@ -12,9 +12,8 @@
  27538. Lesser General Public License for more details.
  27539. You should have received a copy of the GNU Lesser General Public
  27540. - License along with the GNU C Library; if not, write to the Free
  27541. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27542. - 02111-1307 USA. */
  27543. + License along with the GNU C Library; if not, see
  27544. + <http://www.gnu.org/licenses/>. */
  27545. #ifndef _SYS_SYSCTL_H
  27546. #define _SYS_SYSCTL_H 1
  27547. diff -Nur uClibc-0.9.33.2/include/sys/sysinfo.h uClibc-git/include/sys/sysinfo.h
  27548. --- uClibc-0.9.33.2/include/sys/sysinfo.h 2012-05-15 09:20:09.000000000 +0200
  27549. +++ uClibc-git/include/sys/sysinfo.h 2014-02-03 12:32:56.000000000 +0100
  27550. @@ -12,9 +12,8 @@
  27551. Lesser General Public License for more details.
  27552. You should have received a copy of the GNU Lesser General Public
  27553. - License along with the GNU C Library; if not, write to the Free
  27554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27555. - 02111-1307 USA. */
  27556. + License along with the GNU C Library; if not, see
  27557. + <http://www.gnu.org/licenses/>. */
  27558. #ifndef _SYS_SYSINFO_H
  27559. #define _SYS_SYSINFO_H 1
  27560. diff -Nur uClibc-0.9.33.2/include/sys/syslog.h uClibc-git/include/sys/syslog.h
  27561. --- uClibc-0.9.33.2/include/sys/syslog.h 2012-05-15 09:20:09.000000000 +0200
  27562. +++ uClibc-git/include/sys/syslog.h 2014-02-03 12:32:56.000000000 +0100
  27563. @@ -179,14 +179,12 @@
  27564. This function is a possible cancellation point and therefore not
  27565. marked with __THROW. */
  27566. extern void closelog (void);
  27567. -libc_hidden_proto(closelog)
  27568. /* Open connection to system logger.
  27569. This function is a possible cancellation point and therefore not
  27570. marked with __THROW. */
  27571. -extern void openlog (__const char *__ident, int __option, int __facility);
  27572. -libc_hidden_proto(openlog)
  27573. +extern void openlog (const char *__ident, int __option, int __facility);
  27574. /* Set the log mask level. */
  27575. extern int setlogmask (int __mask) __THROW;
  27576. @@ -195,7 +193,7 @@
  27577. This function is a possible cancellation point and therefore not
  27578. marked with __THROW. */
  27579. -extern void syslog (int __pri, __const char *__fmt, ...)
  27580. +extern void syslog (int __pri, const char *__fmt, ...)
  27581. __attribute__ ((__format__ (__printf__, 2, 3)));
  27582. libc_hidden_proto(syslog)
  27583. @@ -206,9 +204,8 @@
  27584. cancellation point. But due to similarity with an POSIX interface
  27585. or due to the implementation it is a cancellation point and
  27586. therefore not marked with __THROW. */
  27587. -extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap)
  27588. +extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
  27589. __attribute__ ((__format__ (__printf__, 2, 0)));
  27590. -libc_hidden_proto(vsyslog)
  27591. #endif
  27592. __END_DECLS
  27593. diff -Nur uClibc-0.9.33.2/include/sys/sysmacros.h uClibc-git/include/sys/sysmacros.h
  27594. --- uClibc-0.9.33.2/include/sys/sysmacros.h 2012-05-15 09:20:09.000000000 +0200
  27595. +++ uClibc-git/include/sys/sysmacros.h 2014-02-03 12:32:56.000000000 +0100
  27596. @@ -13,9 +13,8 @@
  27597. Lesser General Public License for more details.
  27598. You should have received a copy of the GNU Lesser General Public
  27599. - License along with the GNU C Library; if not, write to the Free
  27600. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27601. - 02111-1307 USA. */
  27602. + License along with the GNU C Library; if not, see
  27603. + <http://www.gnu.org/licenses/>. */
  27604. #ifndef _SYS_SYSMACROS_H
  27605. #define _SYS_SYSMACROS_H 1
  27606. diff -Nur uClibc-0.9.33.2/include/sys/timeb.h uClibc-git/include/sys/timeb.h
  27607. --- uClibc-0.9.33.2/include/sys/timeb.h 2012-05-15 09:20:09.000000000 +0200
  27608. +++ uClibc-git/include/sys/timeb.h 2014-02-03 12:32:56.000000000 +0100
  27609. @@ -12,9 +12,8 @@
  27610. Lesser General Public License for more details.
  27611. You should have received a copy of the GNU Lesser General Public
  27612. - License along with the GNU C Library; if not, write to the Free
  27613. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27614. - 02111-1307 USA. */
  27615. + License along with the GNU C Library; if not, see
  27616. + <http://www.gnu.org/licenses/>. */
  27617. #ifndef _SYS_TIMEB_H
  27618. #define _SYS_TIMEB_H 1
  27619. diff -Nur uClibc-0.9.33.2/include/sys/time.h uClibc-git/include/sys/time.h
  27620. --- uClibc-0.9.33.2/include/sys/time.h 2012-05-15 09:20:09.000000000 +0200
  27621. +++ uClibc-git/include/sys/time.h 2014-02-03 12:32:56.000000000 +0100
  27622. @@ -13,9 +13,8 @@
  27623. Lesser General Public License for more details.
  27624. You should have received a copy of the GNU Lesser General Public
  27625. - License along with the GNU C Library; if not, write to the Free
  27626. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27627. - 02111-1307 USA. */
  27628. + License along with the GNU C Library; if not, see
  27629. + <http://www.gnu.org/licenses/>. */
  27630. #ifndef _SYS_TIME_H
  27631. #define _SYS_TIME_H 1
  27632. @@ -77,8 +76,8 @@
  27633. #ifdef __USE_BSD
  27634. /* Set the current time of day and timezone information.
  27635. This call is restricted to the super-user. */
  27636. -extern int settimeofday (__const struct timeval *__tv,
  27637. - __const struct timezone *__tz)
  27638. +extern int settimeofday (const struct timeval *__tv,
  27639. + const struct timezone *__tz)
  27640. __THROW __nonnull ((1));
  27641. libc_hidden_proto(settimeofday)
  27642. @@ -86,7 +85,7 @@
  27643. If OLDDELTA is not NULL, it is filled in with the amount
  27644. of time adjustment remaining to be done from the last `adjtime' call.
  27645. This call is restricted to the super-user. */
  27646. -extern int adjtime (__const struct timeval *__delta,
  27647. +extern int adjtime (const struct timeval *__delta,
  27648. struct timeval *__olddelta) __THROW;
  27649. #endif
  27650. @@ -133,25 +132,25 @@
  27651. set *OLD to the old value of timer WHICH.
  27652. Returns 0 on success, -1 on errors. */
  27653. extern int setitimer (__itimer_which_t __which,
  27654. - __const struct itimerval *__restrict __new,
  27655. + const struct itimerval *__restrict __new,
  27656. struct itimerval *__restrict __old) __THROW;
  27657. libc_hidden_proto(setitimer)
  27658. /* Change the access time of FILE to TVP[0] and the modification time of
  27659. FILE to TVP[1]. If TVP is a null pointer, use the current time instead.
  27660. Returns 0 on success, -1 on errors. */
  27661. -extern int utimes (__const char *__file, __const struct timeval __tvp[2])
  27662. +extern int utimes (const char *__file, const struct timeval __tvp[2])
  27663. __THROW __nonnull ((1));
  27664. libc_hidden_proto(utimes)
  27665. #ifdef __USE_BSD
  27666. /* Same as `utimes', but does not follow symbolic links. */
  27667. -extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
  27668. +extern int lutimes (const char *__file, const struct timeval __tvp[2])
  27669. __THROW __nonnull ((1));
  27670. #if 0
  27671. /* Same as `utimes', but takes an open file descriptor instead of a name. */
  27672. -extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW;
  27673. +extern int futimes (int __fd, const struct timeval __tvp[2]) __THROW;
  27674. #endif
  27675. #endif
  27676. @@ -159,8 +158,8 @@
  27677. /* Change the access time of FILE relative to FD to TVP[0] and the
  27678. modification time of FILE to TVP[1]. If TVP is a null pointer, use
  27679. the current time instead. Returns 0 on success, -1 on errors. */
  27680. -extern int futimesat (int __fd, __const char *__file,
  27681. - __const struct timeval __tvp[2]) __THROW;
  27682. +extern int futimesat (int __fd, const char *__file,
  27683. + const struct timeval __tvp[2]) __THROW;
  27684. #endif
  27685. diff -Nur uClibc-0.9.33.2/include/sys/times.h uClibc-git/include/sys/times.h
  27686. --- uClibc-0.9.33.2/include/sys/times.h 2012-05-15 09:20:09.000000000 +0200
  27687. +++ uClibc-git/include/sys/times.h 2014-02-03 12:32:56.000000000 +0100
  27688. @@ -12,9 +12,8 @@
  27689. Lesser General Public License for more details.
  27690. You should have received a copy of the GNU Lesser General Public
  27691. - License along with the GNU C Library; if not, write to the Free
  27692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27693. - 02111-1307 USA. */
  27694. + License along with the GNU C Library; if not, see
  27695. + <http://www.gnu.org/licenses/>. */
  27696. /*
  27697. * POSIX Standard: 4.5.2 Process Times <sys/times.h>
  27698. diff -Nur uClibc-0.9.33.2/include/sys/timex.h uClibc-git/include/sys/timex.h
  27699. --- uClibc-0.9.33.2/include/sys/timex.h 2012-05-15 09:20:09.000000000 +0200
  27700. +++ uClibc-git/include/sys/timex.h 2014-02-03 12:32:56.000000000 +0100
  27701. @@ -12,9 +12,8 @@
  27702. Lesser General Public License for more details.
  27703. You should have received a copy of the GNU Lesser General Public
  27704. - License along with the GNU C Library; if not, write to the Free
  27705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27706. - 02111-1307 USA. */
  27707. + License along with the GNU C Library; if not, see
  27708. + <http://www.gnu.org/licenses/>. */
  27709. #ifndef _SYS_TIMEX_H
  27710. #define _SYS_TIMEX_H 1
  27711. diff -Nur uClibc-0.9.33.2/include/sys/types.h uClibc-git/include/sys/types.h
  27712. --- uClibc-0.9.33.2/include/sys/types.h 2012-05-15 09:20:09.000000000 +0200
  27713. +++ uClibc-git/include/sys/types.h 2014-02-03 12:32:56.000000000 +0100
  27714. @@ -13,9 +13,8 @@
  27715. Lesser General Public License for more details.
  27716. You should have received a copy of the GNU Lesser General Public
  27717. - License along with the GNU C Library; if not, write to the Free
  27718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27719. - 02111-1307 USA. */
  27720. + License along with the GNU C Library; if not, see
  27721. + <http://www.gnu.org/licenses/>. */
  27722. /*
  27723. * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h>
  27724. @@ -165,7 +164,7 @@
  27725. typedef int int32_t;
  27726. # if __WORDSIZE == 64
  27727. typedef long int int64_t;
  27728. -# elif defined __GNUC__ || defined __ICC
  27729. +# elif defined __GNUC__ || defined __ICC || defined __TenDRA__
  27730. __extension__ typedef long long int int64_t;
  27731. # endif
  27732. # endif
  27733. @@ -176,7 +175,7 @@
  27734. typedef unsigned int u_int32_t;
  27735. # if __WORDSIZE == 64
  27736. typedef unsigned long int u_int64_t;
  27737. -# elif defined __GNUC__ || defined __ICC
  27738. +# elif defined __GNUC__ || defined __ICC || defined __TenDRA__
  27739. __extension__ typedef unsigned long long int u_int64_t;
  27740. # endif
  27741. diff -Nur uClibc-0.9.33.2/include/sys/uio.h uClibc-git/include/sys/uio.h
  27742. --- uClibc-0.9.33.2/include/sys/uio.h 2012-05-15 09:20:09.000000000 +0200
  27743. +++ uClibc-git/include/sys/uio.h 2014-02-03 12:32:56.000000000 +0100
  27744. @@ -12,9 +12,8 @@
  27745. Lesser General Public License for more details.
  27746. You should have received a copy of the GNU Lesser General Public
  27747. - License along with the GNU C Library; if not, write to the Free
  27748. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27749. - 02111-1307 USA. */
  27750. + License along with the GNU C Library; if not, see
  27751. + <http://www.gnu.org/licenses/>. */
  27752. #ifndef _SYS_UIO_H
  27753. #define _SYS_UIO_H 1
  27754. @@ -37,7 +36,7 @@
  27755. This function is a cancellation point and therefore not marked with
  27756. __THROW. */
  27757. -extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count);
  27758. +extern ssize_t readv (int __fd, const struct iovec *__iovec, int __count);
  27759. /* Write data pointed by the buffers described by IOVEC, which
  27760. is a vector of COUNT `struct iovec's, to file descriptor FD.
  27761. @@ -47,7 +46,7 @@
  27762. This function is a cancellation point and therefore not marked with
  27763. __THROW. */
  27764. -extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count);
  27765. +extern ssize_t writev (int __fd, const struct iovec *__iovec, int __count);
  27766. __END_DECLS
  27767. diff -Nur uClibc-0.9.33.2/include/sys/un.h uClibc-git/include/sys/un.h
  27768. --- uClibc-0.9.33.2/include/sys/un.h 2012-05-15 09:20:09.000000000 +0200
  27769. +++ uClibc-git/include/sys/un.h 2014-02-03 12:32:56.000000000 +0100
  27770. @@ -12,9 +12,8 @@
  27771. Lesser General Public License for more details.
  27772. You should have received a copy of the GNU Lesser General Public
  27773. - License along with the GNU C Library; if not, write to the Free
  27774. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27775. - 02111-1307 USA. */
  27776. + License along with the GNU C Library; if not, see
  27777. + <http://www.gnu.org/licenses/>. */
  27778. #ifndef _SYS_UN_H
  27779. #define _SYS_UN_H 1
  27780. diff -Nur uClibc-0.9.33.2/include/sys/ustat.h uClibc-git/include/sys/ustat.h
  27781. --- uClibc-0.9.33.2/include/sys/ustat.h 2012-05-15 09:20:09.000000000 +0200
  27782. +++ uClibc-git/include/sys/ustat.h 2014-02-03 12:32:56.000000000 +0100
  27783. @@ -13,9 +13,8 @@
  27784. Lesser General Public License for more details.
  27785. You should have received a copy of the GNU Lesser General Public
  27786. - License along with the GNU C Library; if not, write to the Free
  27787. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27788. - 02111-1307 USA. */
  27789. + License along with the GNU C Library; if not, see
  27790. + <http://www.gnu.org/licenses/>. */
  27791. /*
  27792. * This interface is obsolete. Use <sys/statfs.h> instead.
  27793. diff -Nur uClibc-0.9.33.2/include/sys/utsname.h uClibc-git/include/sys/utsname.h
  27794. --- uClibc-0.9.33.2/include/sys/utsname.h 2012-05-15 09:20:09.000000000 +0200
  27795. +++ uClibc-git/include/sys/utsname.h 2014-02-03 12:32:56.000000000 +0100
  27796. @@ -12,9 +12,8 @@
  27797. Lesser General Public License for more details.
  27798. You should have received a copy of the GNU Lesser General Public
  27799. - License along with the GNU C Library; if not, write to the Free
  27800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27801. - 02111-1307 USA. */
  27802. + License along with the GNU C Library; if not, see
  27803. + <http://www.gnu.org/licenses/>. */
  27804. /*
  27805. * POSIX Standard: 4.4 System Identification <sys/utsname.h>
  27806. diff -Nur uClibc-0.9.33.2/include/sys/wait.h uClibc-git/include/sys/wait.h
  27807. --- uClibc-0.9.33.2/include/sys/wait.h 2012-05-15 09:20:09.000000000 +0200
  27808. +++ uClibc-git/include/sys/wait.h 2014-02-03 12:32:56.000000000 +0100
  27809. @@ -13,9 +13,8 @@
  27810. Lesser General Public License for more details.
  27811. You should have received a copy of the GNU Lesser General Public
  27812. - License along with the GNU C Library; if not, write to the Free
  27813. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27814. - 02111-1307 USA. */
  27815. + License along with the GNU C Library; if not, see
  27816. + <http://www.gnu.org/licenses/>. */
  27817. /*
  27818. * POSIX Standard: 3.2.1 Wait for Process Termination <sys/wait.h>
  27819. @@ -47,7 +46,7 @@
  27820. (__extension__ (((union { __typeof(status) __in; int __i; }) \
  27821. { .__in = (status) }).__i))
  27822. # else
  27823. -# define __WAIT_INT(status) (*(__const int *) &(status))
  27824. +# define __WAIT_INT(status) (*(const int *) &(status))
  27825. # endif
  27826. /* This is the type of the argument to `wait'. The funky union
  27827. @@ -137,7 +136,10 @@
  27828. This function is a cancellation point and therefore not marked with
  27829. __THROW. */
  27830. extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options);
  27831. +#ifdef _LIBC
  27832. +extern __typeof(waitpid) __waitpid_nocancel attribute_hidden;
  27833. libc_hidden_proto(waitpid)
  27834. +#endif
  27835. #if defined __USE_SVID || defined __USE_XOPEN
  27836. # define __need_siginfo_t
  27837. @@ -158,10 +160,6 @@
  27838. #endif
  27839. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  27840. -/* This being here makes the prototypes valid whether or not
  27841. - we have already included <sys/resource.h> to define `struct rusage'. */
  27842. -struct rusage;
  27843. -
  27844. /* Wait for a child to exit. When one does, put its status in *STAT_LOC and
  27845. return its process ID. For errors return (pid_t) -1. If USAGE is not
  27846. nil, store information about the child's resource usage there. If the
  27847. @@ -175,9 +173,12 @@
  27848. /* PID is like waitpid. Other args are like wait3. */
  27849. extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options,
  27850. struct rusage *__usage) __THROW;
  27851. -libc_hidden_proto(wait4)
  27852. #endif /* Use BSD. */
  27853. +#ifdef _LIBC
  27854. +extern __pid_t __wait4_nocancel(__pid_t, __WAIT_STATUS, int, struct rusage *) attribute_hidden;
  27855. +#endif
  27856. +
  27857. __END_DECLS
  27858. diff -Nur uClibc-0.9.33.2/include/sys/xattr.h uClibc-git/include/sys/xattr.h
  27859. --- uClibc-0.9.33.2/include/sys/xattr.h 2012-05-15 09:20:09.000000000 +0200
  27860. +++ uClibc-git/include/sys/xattr.h 2014-02-03 12:32:56.000000000 +0100
  27861. @@ -12,9 +12,8 @@
  27862. Lesser General Public License for more details.
  27863. You should have received a copy of the GNU Lesser General Public
  27864. - License along with the GNU C Library; if not, write to the Free
  27865. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27866. - 02111-1307 USA. */
  27867. + License along with the GNU C Library; if not, see
  27868. + <http://www.gnu.org/licenses/>. */
  27869. #ifndef _SYS_XATTR_H
  27870. #define _SYS_XATTR_H 1
  27871. @@ -37,48 +36,48 @@
  27872. /* Set the attribute NAME of the file pointed to by PATH to VALUE (which
  27873. is SIZE bytes long). Return 0 on success, -1 for errors. */
  27874. -extern int setxattr (__const char *__path, __const char *__name,
  27875. - __const void *__value, size_t __size, int __flags)
  27876. +extern int setxattr (const char *__path, const char *__name,
  27877. + const void *__value, size_t __size, int __flags)
  27878. __THROW;
  27879. /* Set the attribute NAME of the file pointed to by PATH to VALUE (which is
  27880. SIZE bytes long), not following symlinks for the last pathname component.
  27881. Return 0 on success, -1 for errors. */
  27882. -extern int lsetxattr (__const char *__path, __const char *__name,
  27883. - __const void *__value, size_t __size, int __flags)
  27884. +extern int lsetxattr (const char *__path, const char *__name,
  27885. + const void *__value, size_t __size, int __flags)
  27886. __THROW;
  27887. /* Set the attribute NAME of the file descriptor FD to VALUE (which is SIZE
  27888. bytes long). Return 0 on success, -1 for errors. */
  27889. -extern int fsetxattr (int __fd, __const char *__name, __const void *__value,
  27890. +extern int fsetxattr (int __fd, const char *__name, const void *__value,
  27891. size_t __size, int __flags) __THROW;
  27892. /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is
  27893. SIZE bytes long). Return 0 on success, -1 for errors. */
  27894. -extern ssize_t getxattr (__const char *__path, __const char *__name,
  27895. +extern ssize_t getxattr (const char *__path, const char *__name,
  27896. void *__value, size_t __size) __THROW;
  27897. /* Get the attribute NAME of the file pointed to by PATH to VALUE (which is
  27898. SIZE bytes long), not following symlinks for the last pathname component.
  27899. Return 0 on success, -1 for errors. */
  27900. -extern ssize_t lgetxattr (__const char *__path, __const char *__name,
  27901. +extern ssize_t lgetxattr (const char *__path, const char *__name,
  27902. void *__value, size_t __size) __THROW;
  27903. /* Get the attribute NAME of the file descriptor FD to VALUE (which is SIZE
  27904. bytes long). Return 0 on success, -1 for errors. */
  27905. -extern ssize_t fgetxattr (int __fd, __const char *__name, void *__value,
  27906. +extern ssize_t fgetxattr (int __fd, const char *__name, void *__value,
  27907. size_t __size) __THROW;
  27908. /* List attributes of the file pointed to by PATH into the user-supplied
  27909. buffer LIST (which is SIZE bytes big). Return 0 on success, -1 for
  27910. errors. */
  27911. -extern ssize_t listxattr (__const char *__path, char *__list, size_t __size)
  27912. +extern ssize_t listxattr (const char *__path, char *__list, size_t __size)
  27913. __THROW;
  27914. /* List attributes of the file pointed to by PATH into the user-supplied
  27915. buffer LIST (which is SIZE bytes big), not following symlinks for the
  27916. last pathname component. Return 0 on success, -1 for errors. */
  27917. -extern ssize_t llistxattr (__const char *__path, char *__list, size_t __size)
  27918. +extern ssize_t llistxattr (const char *__path, char *__list, size_t __size)
  27919. __THROW;
  27920. /* List attributes of the file descriptor FD into the user-supplied buffer
  27921. @@ -88,16 +87,16 @@
  27922. /* Remove the attribute NAME from the file pointed to by PATH. Return 0
  27923. on success, -1 for errors. */
  27924. -extern int removexattr (__const char *__path, __const char *__name) __THROW;
  27925. +extern int removexattr (const char *__path, const char *__name) __THROW;
  27926. /* Remove the attribute NAME from the file pointed to by PATH, not
  27927. following symlinks for the last pathname component. Return 0 on
  27928. success, -1 for errors. */
  27929. -extern int lremovexattr (__const char *__path, __const char *__name) __THROW;
  27930. +extern int lremovexattr (const char *__path, const char *__name) __THROW;
  27931. /* Remove the attribute NAME from the file descriptor FD. Return 0 on
  27932. success, -1 for errors. */
  27933. -extern int fremovexattr (int __fd, __const char *__name) __THROW;
  27934. +extern int fremovexattr (int __fd, const char *__name) __THROW;
  27935. __END_DECLS
  27936. diff -Nur uClibc-0.9.33.2/include/tar.h uClibc-git/include/tar.h
  27937. --- uClibc-0.9.33.2/include/tar.h 2012-05-15 09:20:09.000000000 +0200
  27938. +++ uClibc-git/include/tar.h 2014-02-03 12:32:56.000000000 +0100
  27939. @@ -14,9 +14,8 @@
  27940. Lesser General Public License for more details.
  27941. You should have received a copy of the GNU Lesser General Public
  27942. - License along with the GNU C Library; if not, write to the Free
  27943. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27944. - 02111-1307 USA. */
  27945. + License along with the GNU C Library; if not, see
  27946. + <http://www.gnu.org/licenses/>. */
  27947. #ifndef _TAR_H
  27948. #define _TAR_H 1
  27949. diff -Nur uClibc-0.9.33.2/include/termios.h uClibc-git/include/termios.h
  27950. --- uClibc-0.9.33.2/include/termios.h 2012-05-15 09:20:09.000000000 +0200
  27951. +++ uClibc-git/include/termios.h 2014-02-03 12:32:56.000000000 +0100
  27952. @@ -12,9 +12,8 @@
  27953. Lesser General Public License for more details.
  27954. You should have received a copy of the GNU Lesser General Public
  27955. - License along with the GNU C Library; if not, write to the Free
  27956. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27957. - 02111-1307 USA. */
  27958. + License along with the GNU C Library; if not, see
  27959. + <http://www.gnu.org/licenses/>. */
  27960. /*
  27961. * POSIX Standard: 7.1-2 General Terminal Interface <termios.h>
  27962. @@ -46,10 +45,10 @@
  27963. #endif
  27964. /* Return the output baud rate stored in *TERMIOS_P. */
  27965. -extern speed_t cfgetospeed (__const struct termios *__termios_p) __THROW;
  27966. +extern speed_t cfgetospeed (const struct termios *__termios_p) __THROW;
  27967. /* Return the input baud rate stored in *TERMIOS_P. */
  27968. -extern speed_t cfgetispeed (__const struct termios *__termios_p) __THROW;
  27969. +extern speed_t cfgetispeed (const struct termios *__termios_p) __THROW;
  27970. /* Set the output baud rate stored in *TERMIOS_P to SPEED. */
  27971. extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) __THROW;
  27972. @@ -72,7 +71,7 @@
  27973. /* Set the state of FD to *TERMIOS_P.
  27974. Values for OPTIONAL_ACTIONS (TCSA*) are in <bits/termios.h>. */
  27975. extern int tcsetattr (int __fd, int __optional_actions,
  27976. - __const struct termios *__termios_p) __THROW;
  27977. + const struct termios *__termios_p) __THROW;
  27978. libc_hidden_proto(tcsetattr)
  27979. diff -Nur uClibc-0.9.33.2/include/tgmath.h uClibc-git/include/tgmath.h
  27980. --- uClibc-0.9.33.2/include/tgmath.h 2012-05-15 09:20:09.000000000 +0200
  27981. +++ uClibc-git/include/tgmath.h 2014-02-03 12:32:56.000000000 +0100
  27982. @@ -1,4 +1,5 @@
  27983. -/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
  27984. +/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007
  27985. + Free Software Foundation, Inc.
  27986. This file is part of the GNU C Library.
  27987. The GNU C Library is free software; you can redistribute it and/or
  27988. @@ -12,9 +13,8 @@
  27989. Lesser General Public License for more details.
  27990. You should have received a copy of the GNU Lesser General Public
  27991. - License along with the GNU C Library; if not, write to the Free
  27992. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  27993. - 02111-1307 USA. */
  27994. + License along with the GNU C Library; if not, see
  27995. + <http://www.gnu.org/licenses/>. */
  27996. /*
  27997. * ISO C99 Standard: 7.22 Type-generic math <tgmath.h>
  27998. @@ -47,174 +47,199 @@
  27999. /* 1 if 'type' is a floating type, 0 if 'type' is an integer type.
  28000. Allows for _Bool. Expands to an integer constant expression. */
  28001. -# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))
  28002. +# if 0 /* __GNUC_PREREQ (3, 1) */
  28003. +# define __floating_type(type) \
  28004. + (__builtin_classify_type ((type) 0) == 8 \
  28005. + || (__builtin_classify_type ((type) 0) == 9 \
  28006. + && __builtin_classify_type (__real__ ((type) 0)) == 8))
  28007. +# else
  28008. +# define __floating_type(type) (((type) 0.25) && ((type) 0.25 - 1))
  28009. +# endif
  28010. /* The tgmath real type for T, where E is 0 if T is an integer type and
  28011. 1 for a floating type. */
  28012. # define __tgmath_real_type_sub(T, E) \
  28013. - __typeof__(*(0 ? (__typeof__ (0 ? (double *) 0 : (void *) (E))) 0 \
  28014. - : (__typeof__ (0 ? (T *) 0 : (void *) (!(E)))) 0))
  28015. + __typeof__ (*(0 ? (__typeof__ (0 ? (double *) 0 : (void *) (E))) 0 \
  28016. + : (__typeof__ (0 ? (T *) 0 : (void *) (!(E)))) 0))
  28017. /* The tgmath real type of EXPR. */
  28018. # define __tgmath_real_type(expr) \
  28019. - __tgmath_real_type_sub(__typeof__(expr), __floating_type(__typeof__(expr)))
  28020. + __tgmath_real_type_sub (__typeof__ ((__typeof__ (expr)) 0), \
  28021. + __floating_type (__typeof__ (expr)))
  28022. /* We have two kinds of generic macros: to support functions which are
  28023. only defined on real valued parameters and those which are defined
  28024. for complex functions as well. */
  28025. # define __TGMATH_UNARY_REAL_ONLY(Val, Fct) \
  28026. - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
  28027. - if (sizeof (Val) == sizeof (double) \
  28028. - || __builtin_classify_type (Val) != 8) \
  28029. - __tgmres = Fct (Val); \
  28030. - else if (sizeof (Val) == sizeof (float)) \
  28031. - __tgmres = Fct##f (Val); \
  28032. - else \
  28033. - __tgmres = __tgml(Fct) (Val); \
  28034. - __tgmres; }))
  28035. + (__extension__ ((sizeof (Val) == sizeof (double) \
  28036. + || __builtin_classify_type (Val) != 8) \
  28037. + ? (__tgmath_real_type (Val)) Fct (Val) \
  28038. + : (sizeof (Val) == sizeof (float)) \
  28039. + ? (__tgmath_real_type (Val)) Fct##f (Val) \
  28040. + : (__tgmath_real_type (Val)) __tgml(Fct) (Val)))
  28041. +
  28042. +# define __TGMATH_UNARY_REAL_RET_ONLY(Val, RetType, Fct) \
  28043. + (__extension__ ((sizeof (Val) == sizeof (double) \
  28044. + || __builtin_classify_type (Val) != 8) \
  28045. + ? (RetType) Fct (Val) \
  28046. + : (sizeof (Val) == sizeof (float)) \
  28047. + ? (RetType) Fct##f (Val) \
  28048. + : (RetType) __tgml(Fct) (Val)))
  28049. # define __TGMATH_BINARY_FIRST_REAL_ONLY(Val1, Val2, Fct) \
  28050. - (__extension__ ({ __tgmath_real_type (Val1) __tgmres; \
  28051. - if (sizeof (Val1) == sizeof (double) \
  28052. - || __builtin_classify_type (Val1) != 8) \
  28053. - __tgmres = Fct (Val1, Val2); \
  28054. - else if (sizeof (Val1) == sizeof (float)) \
  28055. - __tgmres = Fct##f (Val1, Val2); \
  28056. - else \
  28057. - __tgmres = __tgml(Fct) (Val1, Val2); \
  28058. - __tgmres; }))
  28059. + (__extension__ ((sizeof (Val1) == sizeof (double) \
  28060. + || __builtin_classify_type (Val1) != 8) \
  28061. + ? (__tgmath_real_type (Val1)) Fct (Val1, Val2) \
  28062. + : (sizeof (Val1) == sizeof (float)) \
  28063. + ? (__tgmath_real_type (Val1)) Fct##f (Val1, Val2) \
  28064. + : (__tgmath_real_type (Val1)) __tgml(Fct) (Val1, Val2)))
  28065. # define __TGMATH_BINARY_REAL_ONLY(Val1, Val2, Fct) \
  28066. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
  28067. - if ((sizeof (Val1) > sizeof (double) \
  28068. - || sizeof (Val2) > sizeof (double)) \
  28069. - && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28070. - __tgmres = __tgml(Fct) (Val1, Val2); \
  28071. - else if (sizeof (Val1) == sizeof (double) \
  28072. - || sizeof (Val2) == sizeof (double) \
  28073. - || __builtin_classify_type (Val1) != 8 \
  28074. - || __builtin_classify_type (Val2) != 8) \
  28075. - __tgmres = Fct (Val1, Val2); \
  28076. - else \
  28077. - __tgmres = Fct##f (Val1, Val2); \
  28078. - __tgmres; }))
  28079. + (__extension__ (((sizeof (Val1) > sizeof (double) \
  28080. + || sizeof (Val2) > sizeof (double)) \
  28081. + && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28082. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28083. + + (__tgmath_real_type (Val2)) 0)) \
  28084. + __tgml(Fct) (Val1, Val2) \
  28085. + : (sizeof (Val1) == sizeof (double) \
  28086. + || sizeof (Val2) == sizeof (double) \
  28087. + || __builtin_classify_type (Val1) != 8 \
  28088. + || __builtin_classify_type (Val2) != 8) \
  28089. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28090. + + (__tgmath_real_type (Val2)) 0)) \
  28091. + Fct (Val1, Val2) \
  28092. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28093. + + (__tgmath_real_type (Val2)) 0)) \
  28094. + Fct##f (Val1, Val2)))
  28095. # define __TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY(Val1, Val2, Val3, Fct) \
  28096. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
  28097. - if ((sizeof (Val1) > sizeof (double) \
  28098. - || sizeof (Val2) > sizeof (double)) \
  28099. - && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28100. - __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
  28101. - else if (sizeof (Val1) == sizeof (double) \
  28102. - || sizeof (Val2) == sizeof (double) \
  28103. - || __builtin_classify_type (Val1) != 8 \
  28104. - || __builtin_classify_type (Val2) != 8) \
  28105. - __tgmres = Fct (Val1, Val2, Val3); \
  28106. - else \
  28107. - __tgmres = Fct##f (Val1, Val2, Val3); \
  28108. - __tgmres; }))
  28109. + (__extension__ (((sizeof (Val1) > sizeof (double) \
  28110. + || sizeof (Val2) > sizeof (double)) \
  28111. + && __builtin_classify_type ((Val1) + (Val2)) == 8) \
  28112. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28113. + + (__tgmath_real_type (Val2)) 0)) \
  28114. + __tgml(Fct) (Val1, Val2, Val3) \
  28115. + : (sizeof (Val1) == sizeof (double) \
  28116. + || sizeof (Val2) == sizeof (double) \
  28117. + || __builtin_classify_type (Val1) != 8 \
  28118. + || __builtin_classify_type (Val2) != 8) \
  28119. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28120. + + (__tgmath_real_type (Val2)) 0)) \
  28121. + Fct (Val1, Val2, Val3) \
  28122. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28123. + + (__tgmath_real_type (Val2)) 0)) \
  28124. + Fct##f (Val1, Val2, Val3)))
  28125. # define __TGMATH_TERNARY_REAL_ONLY(Val1, Val2, Val3, Fct) \
  28126. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2) + (Val3)) __tgmres;\
  28127. - if ((sizeof (Val1) > sizeof (double) \
  28128. - || sizeof (Val2) > sizeof (double) \
  28129. - || sizeof (Val3) > sizeof (double)) \
  28130. - && __builtin_classify_type ((Val1) + (Val2) \
  28131. - + (Val3)) == 8) \
  28132. - __tgmres = __tgml(Fct) (Val1, Val2, Val3); \
  28133. - else if (sizeof (Val1) == sizeof (double) \
  28134. - || sizeof (Val2) == sizeof (double) \
  28135. - || sizeof (Val3) == sizeof (double) \
  28136. - || __builtin_classify_type (Val1) != 8 \
  28137. - || __builtin_classify_type (Val2) != 8 \
  28138. - || __builtin_classify_type (Val3) != 8) \
  28139. - __tgmres = Fct (Val1, Val2, Val3); \
  28140. - else \
  28141. - __tgmres = Fct##f (Val1, Val2, Val3); \
  28142. - __tgmres; }))
  28143. + (__extension__ (((sizeof (Val1) > sizeof (double) \
  28144. + || sizeof (Val2) > sizeof (double) \
  28145. + || sizeof (Val3) > sizeof (double)) \
  28146. + && __builtin_classify_type ((Val1) + (Val2) + (Val3)) \
  28147. + == 8) \
  28148. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28149. + + (__tgmath_real_type (Val2)) 0 \
  28150. + + (__tgmath_real_type (Val3)) 0)) \
  28151. + __tgml(Fct) (Val1, Val2, Val3) \
  28152. + : (sizeof (Val1) == sizeof (double) \
  28153. + || sizeof (Val2) == sizeof (double) \
  28154. + || sizeof (Val3) == sizeof (double) \
  28155. + || __builtin_classify_type (Val1) != 8 \
  28156. + || __builtin_classify_type (Val2) != 8 \
  28157. + || __builtin_classify_type (Val3) != 8) \
  28158. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28159. + + (__tgmath_real_type (Val2)) 0 \
  28160. + + (__tgmath_real_type (Val3)) 0)) \
  28161. + Fct (Val1, Val2, Val3) \
  28162. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28163. + + (__tgmath_real_type (Val2)) 0 \
  28164. + + (__tgmath_real_type (Val3)) 0)) \
  28165. + Fct##f (Val1, Val2, Val3)))
  28166. /* XXX This definition has to be changed as soon as the compiler understands
  28167. the imaginary keyword. */
  28168. # define __TGMATH_UNARY_REAL_IMAG(Val, Fct, Cfct) \
  28169. - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
  28170. - if (sizeof (__real__ (Val)) > sizeof (double) \
  28171. - && __builtin_classify_type (__real__ (Val)) == 8) \
  28172. - { \
  28173. - if (sizeof (__real__ (Val)) == sizeof (Val)) \
  28174. - __tgmres = __tgml(Fct) (Val); \
  28175. - else \
  28176. - __tgmres = __tgml(Cfct) (Val); \
  28177. - } \
  28178. - else if (sizeof (__real__ (Val)) == sizeof (double) \
  28179. - || __builtin_classify_type (__real__ (Val)) \
  28180. - != 8) \
  28181. - { \
  28182. - if (sizeof (__real__ (Val)) == sizeof (Val)) \
  28183. - __tgmres = Fct (Val); \
  28184. - else \
  28185. - __tgmres = Cfct (Val); \
  28186. - } \
  28187. - else \
  28188. - { \
  28189. - if (sizeof (__real__ (Val)) == sizeof (Val)) \
  28190. - __tgmres = Fct##f (Val); \
  28191. - else \
  28192. - __tgmres = Cfct##f (Val); \
  28193. - } \
  28194. - __tgmres; }))
  28195. + (__extension__ ((sizeof (__real__ (Val)) == sizeof (double) \
  28196. + || __builtin_classify_type (__real__ (Val)) != 8) \
  28197. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28198. + ? (__tgmath_real_type (Val)) Fct (Val) \
  28199. + : (__tgmath_real_type (Val)) Cfct (Val)) \
  28200. + : (sizeof (__real__ (Val)) == sizeof (float)) \
  28201. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28202. + ? (__tgmath_real_type (Val)) Fct##f (Val) \
  28203. + : (__tgmath_real_type (Val)) Cfct##f (Val)) \
  28204. + : ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28205. + ? (__tgmath_real_type (Val)) __tgml(Fct) (Val) \
  28206. + : (__tgmath_real_type (Val)) __tgml(Cfct) (Val))))
  28207. +
  28208. +# define __TGMATH_UNARY_IMAG(Val, Cfct) \
  28209. + (__extension__ ((sizeof (__real__ (Val)) == sizeof (double) \
  28210. + || __builtin_classify_type (__real__ (Val)) != 8) \
  28211. + ? (__typeof__ ((__tgmath_real_type (Val)) 0 \
  28212. + + _Complex_I)) Cfct (Val) \
  28213. + : (sizeof (__real__ (Val)) == sizeof (float)) \
  28214. + ? (__typeof__ ((__tgmath_real_type (Val)) 0 \
  28215. + + _Complex_I)) Cfct##f (Val) \
  28216. + : (__typeof__ ((__tgmath_real_type (Val)) 0 \
  28217. + + _Complex_I)) __tgml(Cfct) (Val)))
  28218. /* XXX This definition has to be changed as soon as the compiler understands
  28219. the imaginary keyword. */
  28220. -# define __TGMATH_UNARY_IMAG_ONLY(Val, Fct) \
  28221. - (__extension__ ({ __tgmath_real_type (Val) __tgmres; \
  28222. - if (sizeof (Val) == sizeof (__complex__ double) \
  28223. - || __builtin_classify_type (__real__ (Val)) != 8) \
  28224. - __tgmres = Fct (Val); \
  28225. - else if (sizeof (Val) == sizeof (__complex__ float)) \
  28226. - __tgmres = Fct##f (Val); \
  28227. - else \
  28228. - __tgmres = __tgml(Fct) (Val); \
  28229. - __tgmres; }))
  28230. +# define __TGMATH_UNARY_REAL_IMAG_RET_REAL(Val, Fct, Cfct) \
  28231. + (__extension__ ((sizeof (__real__ (Val)) == sizeof (double) \
  28232. + || __builtin_classify_type (__real__ (Val)) != 8) \
  28233. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28234. + ? (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28235. + Fct (Val) \
  28236. + : (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28237. + Cfct (Val)) \
  28238. + : (sizeof (__real__ (Val)) == sizeof (float)) \
  28239. + ? ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28240. + ? (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28241. + Fct##f (Val) \
  28242. + : (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28243. + Cfct##f (Val)) \
  28244. + : ((sizeof (__real__ (Val)) == sizeof (Val)) \
  28245. + ? (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28246. + __tgml(Fct) (Val) \
  28247. + : (__typeof__ (__real__ (__tgmath_real_type (Val)) 0))\
  28248. + __tgml(Cfct) (Val))))
  28249. /* XXX This definition has to be changed as soon as the compiler understands
  28250. the imaginary keyword. */
  28251. # define __TGMATH_BINARY_REAL_IMAG(Val1, Val2, Fct, Cfct) \
  28252. - (__extension__ ({ __tgmath_real_type ((Val1) + (Val2)) __tgmres; \
  28253. - if ((sizeof (__real__ (Val1)) > sizeof (double) \
  28254. - || sizeof (__real__ (Val2)) > sizeof (double)) \
  28255. - && __builtin_classify_type (__real__ (Val1) \
  28256. - + __real__ (Val2)) \
  28257. - == 8) \
  28258. - { \
  28259. - if (sizeof (__real__ (Val1)) == sizeof (Val1) \
  28260. - && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28261. - __tgmres = __tgml(Fct) (Val1, Val2); \
  28262. - else \
  28263. - __tgmres = __tgml(Cfct) (Val1, Val2); \
  28264. - } \
  28265. - else if (sizeof (__real__ (Val1)) == sizeof (double) \
  28266. - || sizeof (__real__ (Val2)) == sizeof(double) \
  28267. - || (__builtin_classify_type (__real__ (Val1)) \
  28268. - != 8) \
  28269. - || (__builtin_classify_type (__real__ (Val2)) \
  28270. - != 8)) \
  28271. - { \
  28272. - if (sizeof (__real__ (Val1)) == sizeof (Val1) \
  28273. - && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28274. - __tgmres = Fct (Val1, Val2); \
  28275. - else \
  28276. - __tgmres = Cfct (Val1, Val2); \
  28277. - } \
  28278. - else \
  28279. - { \
  28280. - if (sizeof (__real__ (Val1)) == sizeof (Val1) \
  28281. - && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28282. - __tgmres = Fct##f (Val1, Val2); \
  28283. - else \
  28284. - __tgmres = Cfct##f (Val1, Val2); \
  28285. - } \
  28286. - __tgmres; }))
  28287. + (__extension__ (((sizeof (__real__ (Val1)) > sizeof (double) \
  28288. + || sizeof (__real__ (Val2)) > sizeof (double)) \
  28289. + && __builtin_classify_type (__real__ (Val1) \
  28290. + + __real__ (Val2)) == 8) \
  28291. + ? ((sizeof (__real__ (Val1)) == sizeof (Val1) \
  28292. + && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28293. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28294. + + (__tgmath_real_type (Val2)) 0)) \
  28295. + __tgml(Fct) (Val1, Val2) \
  28296. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28297. + + (__tgmath_real_type (Val2)) 0)) \
  28298. + __tgml(Cfct) (Val1, Val2)) \
  28299. + : (sizeof (__real__ (Val1)) == sizeof (double) \
  28300. + || sizeof (__real__ (Val2)) == sizeof (double) \
  28301. + || __builtin_classify_type (__real__ (Val1)) != 8 \
  28302. + || __builtin_classify_type (__real__ (Val2)) != 8) \
  28303. + ? ((sizeof (__real__ (Val1)) == sizeof (Val1) \
  28304. + && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28305. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28306. + + (__tgmath_real_type (Val2)) 0)) \
  28307. + Fct (Val1, Val2) \
  28308. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28309. + + (__tgmath_real_type (Val2)) 0)) \
  28310. + Cfct (Val1, Val2)) \
  28311. + : ((sizeof (__real__ (Val1)) == sizeof (Val1) \
  28312. + && sizeof (__real__ (Val2)) == sizeof (Val2)) \
  28313. + ? (__typeof ((__tgmath_real_type (Val1)) 0 \
  28314. + + (__tgmath_real_type (Val2)) 0)) \
  28315. + Fct##f (Val1, Val2) \
  28316. + : (__typeof ((__tgmath_real_type (Val1)) 0 \
  28317. + + (__tgmath_real_type (Val2)) 0)) \
  28318. + Cfct##f (Val1, Val2))))
  28319. #else
  28320. # error "Unsupported compiler; you cannot use <tgmath.h>"
  28321. #endif
  28322. @@ -317,7 +342,7 @@
  28323. #define ceil(Val) __TGMATH_UNARY_REAL_ONLY (Val, ceil)
  28324. /* Absolute value of X. */
  28325. -#define fabs(Val) __TGMATH_UNARY_REAL_IMAG (Val, fabs, cabs)
  28326. +#define fabs(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, fabs, cabs)
  28327. /* Largest integer not greater than X. */
  28328. #define floor(Val) __TGMATH_UNARY_REAL_ONLY (Val, floor)
  28329. @@ -345,13 +370,13 @@
  28330. /* Round X to nearest integral value according to current rounding
  28331. direction. */
  28332. -#define lrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, lrint)
  28333. -#define llrint(Val) __TGMATH_UNARY_REAL_ONLY (Val, llrint)
  28334. +#define lrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lrint)
  28335. +#define llrint(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llrint)
  28336. /* Round X to nearest integral value, rounding halfway cases away from
  28337. zero. */
  28338. -#define lround(Val) __TGMATH_UNARY_REAL_ONLY (Val, lround)
  28339. -#define llround(Val) __TGMATH_UNARY_REAL_ONLY (Val, llround)
  28340. +#define lround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, lround)
  28341. +#define llround(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long long int, llround)
  28342. /* Return X with its signed changed to Y's. */
  28343. @@ -376,7 +401,7 @@
  28344. /* Return the remainder of integer divison X / Y with infinite precision. */
  28345. #define remainder(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, remainder)
  28346. -#if defined __UCLIBC_SUSV3_LEGACY__
  28347. +#ifdef __UCLIBC_SUSV3_LEGACY__
  28348. /* Return X times (2 to the Nth power). */
  28349. #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
  28350. # define scalb(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, scalb)
  28351. @@ -388,10 +413,10 @@
  28352. /* Return X times (2 to the Nth power). */
  28353. #define scalbln(Val1, Val2) \
  28354. __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, scalbln)
  28355. -#endif /* UCLIBC_SUSV3_LEGACY */
  28356. +#endif /* __UCLIBC_SUSV3_LEGACY__ */
  28357. /* Return the binary exponent of X, which must be nonzero. */
  28358. -#define ilogb(Val) __TGMATH_UNARY_REAL_ONLY (Val, ilogb)
  28359. +#define ilogb(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, int, ilogb)
  28360. /* Return positive difference between X and Y. */
  28361. @@ -412,21 +437,21 @@
  28362. /* Absolute value, conjugates, and projection. */
  28363. /* Argument value of Z. */
  28364. -#define carg(Val) __TGMATH_UNARY_IMAG_ONLY (Val, carg)
  28365. +#define carg(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, carg, carg)
  28366. /* Complex conjugate of Z. */
  28367. -#define conj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, conj)
  28368. +#define conj(Val) __TGMATH_UNARY_IMAG (Val, conj)
  28369. /* Projection of Z onto the Riemann sphere. */
  28370. -#define cproj(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cproj)
  28371. +#define cproj(Val) __TGMATH_UNARY_IMAG (Val, cproj)
  28372. /* Decomposing complex values. */
  28373. /* Imaginary part of Z. */
  28374. -#define cimag(Val) __TGMATH_UNARY_IMAG_ONLY (Val, cimag)
  28375. +#define cimag(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, cimag, cimag)
  28376. /* Real part of Z. */
  28377. -#define creal(Val) __TGMATH_UNARY_IMAG_ONLY (Val, creal)
  28378. +#define creal(Val) __TGMATH_UNARY_REAL_IMAG_RET_REAL (Val, creal, creal)
  28379. #endif /* tgmath.h */
  28380. diff -Nur uClibc-0.9.33.2/include/time.h uClibc-git/include/time.h
  28381. --- uClibc-0.9.33.2/include/time.h 2012-05-15 09:20:09.000000000 +0200
  28382. +++ uClibc-git/include/time.h 2014-02-03 12:32:56.000000000 +0100
  28383. @@ -1,5 +1,4 @@
  28384. -/* Copyright (C) 1991-1999,2000,2001,2002,2003,2006
  28385. - Free Software Foundation, Inc.
  28386. +/* Copyright (C) 1991-2003,2006,2009 Free Software Foundation, Inc.
  28387. This file is part of the GNU C Library.
  28388. The GNU C Library is free software; you can redistribute it and/or
  28389. @@ -13,9 +12,8 @@
  28390. Lesser General Public License for more details.
  28391. You should have received a copy of the GNU Lesser General Public
  28392. - License along with the GNU C Library; if not, write to the Free
  28393. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28394. - 02111-1307 USA. */
  28395. + License along with the GNU C Library; if not, see
  28396. + <http://www.gnu.org/licenses/>. */
  28397. /*
  28398. * ISO C99 Standard: 7.23 Date and time <time.h>
  28399. @@ -146,10 +144,10 @@
  28400. #ifdef __UCLIBC_HAS_TM_EXTENSIONS__
  28401. #ifdef __USE_BSD
  28402. long int tm_gmtoff; /* Seconds east of UTC. */
  28403. - __const char *tm_zone; /* Timezone abbreviation. */
  28404. + const char *tm_zone; /* Timezone abbreviation. */
  28405. #else
  28406. long int __tm_gmtoff; /* Seconds east of UTC. */
  28407. - __const char *__tm_zone; /* Timezone abbreviation. */
  28408. + const char *__tm_zone; /* Timezone abbreviation. */
  28409. #endif
  28410. #endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
  28411. };
  28412. @@ -195,7 +193,9 @@
  28413. __THROW __attribute__ ((__const__));
  28414. #endif /* __UCLIBC_HAS_FLOATS__ */
  28415. -#define CLOCK_IDFIELD_SIZE 3
  28416. +#ifdef _LIBC
  28417. +# define CLOCK_IDFIELD_SIZE 3
  28418. +#endif
  28419. /* Return the `time_t' representation of TP and normalize TP. */
  28420. extern time_t mktime (struct tm *__tp) __THROW;
  28421. @@ -205,32 +205,34 @@
  28422. Write no more than MAXSIZE characters and return the number
  28423. of characters written, or 0 if it would exceed MAXSIZE. */
  28424. extern size_t strftime (char *__restrict __s, size_t __maxsize,
  28425. - __const char *__restrict __format,
  28426. - __const struct tm *__restrict __tp) __THROW;
  28427. + const char *__restrict __format,
  28428. + const struct tm *__restrict __tp) __THROW;
  28429. __END_NAMESPACE_STD
  28430. # ifdef __USE_XOPEN
  28431. /* Parse S according to FORMAT and store binary time information in TP.
  28432. The return value is a pointer to the first unparsed character in S. */
  28433. -extern char *strptime (__const char *__restrict __s,
  28434. - __const char *__restrict __fmt, struct tm *__tp)
  28435. +extern char *strptime (const char *__restrict __s,
  28436. + const char *__restrict __fmt, struct tm *__tp)
  28437. __THROW;
  28438. # endif
  28439. #ifdef __UCLIBC_HAS_XLOCALE__
  28440. -# ifdef __USE_GNU
  28441. +# ifdef __USE_XOPEN2K8
  28442. /* Similar to the two functions above but take the information from
  28443. the provided locale and not the global locale. */
  28444. # include <xlocale.h>
  28445. extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
  28446. - __const char *__restrict __format,
  28447. - __const struct tm *__restrict __tp,
  28448. + const char *__restrict __format,
  28449. + const struct tm *__restrict __tp,
  28450. __locale_t __loc) __THROW;
  28451. libc_hidden_proto(strftime_l)
  28452. +# endif
  28453. -extern char *strptime_l (__const char *__restrict __s,
  28454. - __const char *__restrict __fmt, struct tm *__tp,
  28455. +# ifdef __USE_GNU
  28456. +extern char *strptime_l (const char *__restrict __s,
  28457. + const char *__restrict __fmt, struct tm *__tp,
  28458. __locale_t __loc) __THROW;
  28459. libc_hidden_proto(strptime_l)
  28460. # endif
  28461. @@ -240,23 +242,23 @@
  28462. __BEGIN_NAMESPACE_STD
  28463. /* Return the `struct tm' representation of *TIMER
  28464. in Universal Coordinated Time (aka Greenwich Mean Time). */
  28465. -extern struct tm *gmtime (__const time_t *__timer) __THROW;
  28466. +extern struct tm *gmtime (const time_t *__timer) __THROW;
  28467. /* Return the `struct tm' representation
  28468. of *TIMER in the local timezone. */
  28469. -extern struct tm *localtime (__const time_t *__timer) __THROW;
  28470. +extern struct tm *localtime (const time_t *__timer) __THROW;
  28471. libc_hidden_proto(localtime)
  28472. __END_NAMESPACE_STD
  28473. # if defined __USE_POSIX || defined __USE_MISC
  28474. /* Return the `struct tm' representation of *TIMER in UTC,
  28475. using *TP to store the result. */
  28476. -extern struct tm *gmtime_r (__const time_t *__restrict __timer,
  28477. +extern struct tm *gmtime_r (const time_t *__restrict __timer,
  28478. struct tm *__restrict __tp) __THROW;
  28479. /* Return the `struct tm' representation of *TIMER in local time,
  28480. using *TP to store the result. */
  28481. -extern struct tm *localtime_r (__const time_t *__restrict __timer,
  28482. +extern struct tm *localtime_r (const time_t *__restrict __timer,
  28483. struct tm *__restrict __tp) __THROW;
  28484. libc_hidden_proto(localtime_r)
  28485. # endif /* POSIX or misc */
  28486. @@ -264,11 +266,11 @@
  28487. __BEGIN_NAMESPACE_STD
  28488. /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
  28489. that is the representation of TP in this format. */
  28490. -extern char *asctime (__const struct tm *__tp) __THROW;
  28491. +extern char *asctime (const struct tm *__tp) __THROW;
  28492. libc_hidden_proto(asctime)
  28493. /* Equivalent to `asctime (localtime (timer))'. */
  28494. -extern char *ctime (__const time_t *__timer) __THROW;
  28495. +extern char *ctime (const time_t *__timer) __THROW;
  28496. libc_hidden_proto(ctime)
  28497. __END_NAMESPACE_STD
  28498. @@ -277,12 +279,12 @@
  28499. /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n"
  28500. that is the representation of TP in this format. */
  28501. -extern char *asctime_r (__const struct tm *__restrict __tp,
  28502. +extern char *asctime_r (const struct tm *__restrict __tp,
  28503. char *__restrict __buf) __THROW;
  28504. libc_hidden_proto(asctime_r)
  28505. /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */
  28506. -extern char *ctime_r (__const time_t *__restrict __timer,
  28507. +extern char *ctime_r (const time_t *__restrict __timer,
  28508. char *__restrict __buf) __THROW;
  28509. # endif /* POSIX or misc */
  28510. @@ -314,7 +316,8 @@
  28511. # ifdef __USE_SVID
  28512. /* Set the system time to *WHEN.
  28513. This call is restricted to the superuser. */
  28514. -extern int stime (__const time_t *__when) __THROW;
  28515. +extern int stime (const time_t *__when) __THROW;
  28516. +libc_hidden_proto(stime)
  28517. # endif
  28518. @@ -345,7 +348,7 @@
  28519. This function is a cancellation point and therefore not marked with
  28520. __THROW. */
  28521. -extern int nanosleep (__const struct timespec *__requested_time,
  28522. +extern int nanosleep (const struct timespec *__requested_time,
  28523. struct timespec *__remaining);
  28524. libc_hidden_proto(nanosleep)
  28525. @@ -358,23 +361,24 @@
  28526. extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
  28527. /* Set clock CLOCK_ID to value TP. */
  28528. -extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
  28529. +extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
  28530. __THROW;
  28531. # endif /* __UCLIBC_HAS_REALTIME__ */
  28532. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  28533. -# if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  28534. +
  28535. +# if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  28536. +# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  28537. /* High-resolution sleep with the specified clock.
  28538. This function is a cancellation point and therefore not marked with
  28539. __THROW. */
  28540. extern int clock_nanosleep (clockid_t __clock_id, int __flags,
  28541. - __const struct timespec *__req,
  28542. + const struct timespec *__req,
  28543. struct timespec *__rem);
  28544. /* Return clock ID for CPU-time clock. */
  28545. extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
  28546. -# endif
  28547. -# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  28548. +# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  28549. +# endif
  28550. # if defined __UCLIBC_HAS_REALTIME__
  28551. /* Create new per-process timer using CLOCK_ID. */
  28552. @@ -387,7 +391,7 @@
  28553. /* Set timer TIMERID to VALUE, returning old value in OVLAUE. */
  28554. extern int timer_settime (timer_t __timerid, int __flags,
  28555. - __const struct itimerspec *__restrict __value,
  28556. + const struct itimerspec *__restrict __value,
  28557. struct itimerspec *__restrict __ovalue) __THROW;
  28558. /* Get current value of timer TIMERID and store it in VLAUE. */
  28559. @@ -423,7 +427,7 @@
  28560. This function is a possible cancellation points and therefore not
  28561. marked with __THROW. */
  28562. -extern struct tm *getdate (__const char *__string);
  28563. +extern struct tm *getdate (const char *__string);
  28564. # endif
  28565. # ifdef __USE_GNU
  28566. @@ -437,7 +441,7 @@
  28567. cancellation point. But due to similarity with an POSIX interface
  28568. or due to the implementation it is a cancellation point and
  28569. therefore not marked with __THROW. */
  28570. -extern int getdate_r (__const char *__restrict __string,
  28571. +extern int getdate_r (const char *__restrict __string,
  28572. struct tm *__restrict __resbufp);
  28573. # endif
  28574. #endif /* __UCLIBC_MJN3_ONLY__ */
  28575. diff -Nur uClibc-0.9.33.2/include/ttyent.h uClibc-git/include/ttyent.h
  28576. --- uClibc-0.9.33.2/include/ttyent.h 2012-05-15 09:20:09.000000000 +0200
  28577. +++ uClibc-git/include/ttyent.h 2014-02-03 12:32:56.000000000 +0100
  28578. @@ -57,7 +57,7 @@
  28579. extern struct ttyent *getttyent (void) __THROW;
  28580. libc_hidden_proto(getttyent)
  28581. -extern struct ttyent *getttynam (__const char *__tty) __THROW;
  28582. +extern struct ttyent *getttynam (const char *__tty) __THROW;
  28583. extern int setttyent (void) __THROW;
  28584. libc_hidden_proto(setttyent)
  28585. extern int endttyent (void) __THROW;
  28586. diff -Nur uClibc-0.9.33.2/include/ucontext.h uClibc-git/include/ucontext.h
  28587. --- uClibc-0.9.33.2/include/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  28588. +++ uClibc-git/include/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  28589. @@ -12,21 +12,46 @@
  28590. Lesser General Public License for more details.
  28591. You should have received a copy of the GNU Lesser General Public
  28592. - License along with the GNU C Library; if not, write to the Free
  28593. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28594. - 02111-1307 USA. */
  28595. + License along with the GNU C Library; if not, see
  28596. + <http://www.gnu.org/licenses/>. */
  28597. +
  28598. +/* The System V ABI user-level context switching support functions
  28599. + are marked obsolescent by SuSv3. */
  28600. #ifndef _UCONTEXT_H
  28601. #define _UCONTEXT_H 1
  28602. #include <features.h>
  28603. +#ifdef __UCLIBC_HAS_CONTEXT_FUNCS__
  28604. +
  28605. /* Get machine dependent definition of data structures. */
  28606. #include <sys/ucontext.h>
  28607. -/* The System V ABI user-level context switching support functions
  28608. - * are marked obsolescent by SuSv3, and are not implemented by
  28609. - * uClibc. This header is therefore empty. */
  28610. +__BEGIN_DECLS
  28611. +
  28612. +/* Get user context and store it in variable pointed to by UCP. */
  28613. +extern int getcontext (ucontext_t *__ucp) __THROW;
  28614. +
  28615. +/* Set user context from information of variable pointed to by UCP. */
  28616. +extern int setcontext (const ucontext_t *__ucp) __THROW;
  28617. +
  28618. +/* Save current context in context variable pointed to by OUCP and set
  28619. + context from variable pointed to by UCP. */
  28620. +extern int swapcontext (ucontext_t *__restrict __oucp,
  28621. + const ucontext_t *__restrict __ucp) __THROW;
  28622. +
  28623. +/* Manipulate user context UCP to continue with calling functions FUNC
  28624. + and the ARGC-1 parameters following ARGC when the context is used
  28625. + the next time in `setcontext' or `swapcontext'.
  28626. +
  28627. + We cannot say anything about the parameters FUNC takes; `void'
  28628. + is as good as any other choice. */
  28629. +extern void makecontext (ucontext_t *__ucp, void (*__func) (void),
  28630. + int __argc, ...) __THROW;
  28631. +
  28632. +__END_DECLS
  28633. +#endif
  28634. #endif /* ucontext.h */
  28635. diff -Nur uClibc-0.9.33.2/include/ulimit.h uClibc-git/include/ulimit.h
  28636. --- uClibc-0.9.33.2/include/ulimit.h 2012-05-15 09:20:09.000000000 +0200
  28637. +++ uClibc-git/include/ulimit.h 2014-02-03 12:32:56.000000000 +0100
  28638. @@ -12,9 +12,8 @@
  28639. Lesser General Public License for more details.
  28640. You should have received a copy of the GNU Lesser General Public
  28641. - License along with the GNU C Library; if not, write to the Free
  28642. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28643. - 02111-1307 USA. */
  28644. + License along with the GNU C Library; if not, see
  28645. + <http://www.gnu.org/licenses/>. */
  28646. #ifndef _ULIMIT_H
  28647. #define _ULIMIT_H 1
  28648. diff -Nur uClibc-0.9.33.2/include/unistd.h uClibc-git/include/unistd.h
  28649. --- uClibc-0.9.33.2/include/unistd.h 2012-05-15 09:20:09.000000000 +0200
  28650. +++ uClibc-git/include/unistd.h 2014-02-03 12:32:56.000000000 +0100
  28651. @@ -1,4 +1,4 @@
  28652. -/* Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
  28653. +/* Copyright (C) 1991-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
  28654. This file is part of the GNU C Library.
  28655. The GNU C Library is free software; you can redistribute it and/or
  28656. @@ -12,9 +12,8 @@
  28657. Lesser General Public License for more details.
  28658. You should have received a copy of the GNU Lesser General Public
  28659. - License along with the GNU C Library; if not, write to the Free
  28660. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  28661. - 02111-1307 USA. */
  28662. + License along with the GNU C Library; if not, see
  28663. + <http://www.gnu.org/licenses/>. */
  28664. /*
  28665. * POSIX Standard: 2.10 Symbolic Constants <unistd.h>
  28666. @@ -30,35 +29,67 @@
  28667. /* These may be used to determine what facilities are present at compile time.
  28668. Their values can be obtained at run time from `sysconf'. */
  28669. +#ifdef __USE_XOPEN2K8
  28670. +/* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. */
  28671. +# define _POSIX_VERSION 200809L
  28672. +#elif defined __USE_XOPEN2K
  28673. /* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001. */
  28674. -#define _POSIX_VERSION 200112L
  28675. +# define _POSIX_VERSION 200112L
  28676. +#elif defined __USE_POSIX199506
  28677. +/* POSIX Standard approved as ISO/IEC 9945-1 as of June 1995. */
  28678. +# define _POSIX_VERSION 199506L
  28679. +#elif defined __USE_POSIX199309
  28680. +/* POSIX Standard approved as ISO/IEC 9945-1 as of September 1993. */
  28681. +# define _POSIX_VERSION 199309L
  28682. +#else
  28683. +/* POSIX Standard approved as ISO/IEC 9945-1 as of September 1990. */
  28684. +# define _POSIX_VERSION 199009L
  28685. +#endif
  28686. /* These are not #ifdef __USE_POSIX2 because they are
  28687. in the theoretically application-owned namespace. */
  28688. +#ifdef __USE_XOPEN2K8
  28689. +# define __POSIX2_THIS_VERSION 200809L
  28690. +/* The utilities on GNU systems also correspond to this version. */
  28691. +#elif defined __USE_XOPEN2K
  28692. +/* The utilities on GNU systems also correspond to this version. */
  28693. +# define __POSIX2_THIS_VERSION 200112L
  28694. +#elif defined __USE_POSIX199506
  28695. +/* The utilities on GNU systems also correspond to this version. */
  28696. +# define __POSIX2_THIS_VERSION 199506L
  28697. +#else
  28698. +/* The utilities on GNU systems also correspond to this version. */
  28699. +# define __POSIX2_THIS_VERSION 199209L
  28700. +#endif
  28701. +
  28702. /* The utilities on GNU systems also correspond to this version. */
  28703. -#define _POSIX2_VERSION 200112L
  28704. +#define _POSIX2_VERSION __POSIX2_THIS_VERSION
  28705. /* If defined, the implementation supports the
  28706. C Language Bindings Option. */
  28707. -#define _POSIX2_C_BIND 200112L
  28708. +#define _POSIX2_C_BIND __POSIX2_THIS_VERSION
  28709. /* If defined, the implementation supports the
  28710. C Language Development Utilities Option. */
  28711. -#define _POSIX2_C_DEV 200112L
  28712. +#define _POSIX2_C_DEV __POSIX2_THIS_VERSION
  28713. /* If defined, the implementation supports the
  28714. Software Development Utilities Option. */
  28715. -#define _POSIX2_SW_DEV 200112L
  28716. +#define _POSIX2_SW_DEV __POSIX2_THIS_VERSION
  28717. #if 0 /* uClibc does not provide the utility */
  28718. /* If defined, the implementation supports the
  28719. creation of locales with the localedef utility. */
  28720. -#define _POSIX2_LOCALEDEF 200112L
  28721. +#define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION
  28722. #endif
  28723. /* X/Open version number to which the library conforms. It is selectable. */
  28724. -#ifdef __USE_UNIX98
  28725. +#ifdef __USE_XOPEN2K8
  28726. +# define _XOPEN_VERSION 700
  28727. +#elif defined __USE_XOPEN2K
  28728. +# define _XOPEN_VERSION 600
  28729. +#elif defined __USE_UNIX98
  28730. # define _XOPEN_VERSION 500
  28731. #else
  28732. # define _XOPEN_VERSION 4
  28733. @@ -171,6 +202,8 @@
  28734. */
  28735. #include <bits/posix_opt.h>
  28736. +/* keep it after posix_opt.h, it overwrites based on uClibc's config options */
  28737. +#include <bits/uClibc_posix_opt.h>
  28738. /* Get the environment definitions from Unix98. */
  28739. #ifdef __USE_UNIX98
  28740. @@ -255,16 +288,16 @@
  28741. #define F_OK 0 /* Test for existence. */
  28742. /* Test for access to NAME using the real UID and real GID. */
  28743. -extern int access (__const char *__name, int __type) __THROW __nonnull ((1));
  28744. +extern int access (const char *__name, int __type) __THROW __nonnull ((1));
  28745. #if 0 /*def __USE_GNU*/
  28746. /* Test for access to NAME using the effective UID and GID
  28747. (as normal file operations use). */
  28748. -extern int euidaccess (__const char *__name, int __type)
  28749. +extern int euidaccess (const char *__name, int __type)
  28750. __THROW __nonnull ((1));
  28751. /* An alias for `euidaccess', used by some other systems. */
  28752. -extern int eaccess (__const char *__name, int __type)
  28753. +extern int eaccess (const char *__name, int __type)
  28754. __THROW __nonnull ((1));
  28755. #endif
  28756. @@ -272,8 +305,9 @@
  28757. /* Test for access to FILE relative to the directory FD is open on.
  28758. If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess',
  28759. otherwise use real IDs like `access'. */
  28760. -extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
  28761. +extern int faccessat (int __fd, const char *__file, int __type, int __flag)
  28762. __THROW __nonnull ((2)) __wur;
  28763. +libc_hidden_proto(faccessat)
  28764. #endif /* Use GNU. */
  28765. @@ -299,7 +333,10 @@
  28766. Return the new file position. */
  28767. #ifndef __USE_FILE_OFFSET64
  28768. extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
  28769. +# ifdef _LIBC
  28770. +extern __typeof(lseek) __lseek_nocancel attribute_hidden;
  28771. libc_hidden_proto(lseek)
  28772. +# endif
  28773. #else
  28774. # ifdef __REDIRECT_NTH
  28775. extern __off64_t __REDIRECT_NTH (lseek,
  28776. @@ -312,7 +349,10 @@
  28777. #ifdef __USE_LARGEFILE64
  28778. extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
  28779. __THROW;
  28780. +# ifdef _LIBC
  28781. +extern __typeof(lseek64) __lseek64_nocancel attribute_hidden;
  28782. libc_hidden_proto(lseek64)
  28783. +# endif
  28784. #endif
  28785. /* Close the file descriptor FD.
  28786. @@ -320,7 +360,11 @@
  28787. This function is a cancellation point and therefore not marked with
  28788. __THROW. */
  28789. extern int close (int __fd);
  28790. +#ifdef _LIBC
  28791. +extern __typeof(close) __close_nocancel attribute_hidden;
  28792. +extern void __close_nocancel_no_status(int) attribute_hidden;
  28793. libc_hidden_proto(close)
  28794. +#endif
  28795. /* Read NBYTES into BUF from FD. Return the
  28796. number read, -1 for errors or 0 for EOF.
  28797. @@ -328,14 +372,20 @@
  28798. This function is a cancellation point and therefore not marked with
  28799. __THROW. */
  28800. extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
  28801. +#ifdef _LIBC
  28802. +extern __typeof(read) __read_nocancel attribute_hidden;
  28803. libc_hidden_proto(read)
  28804. +#endif
  28805. /* Write N bytes of BUF to FD. Return the number written, or -1.
  28806. This function is a cancellation point and therefore not marked with
  28807. __THROW. */
  28808. -extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur;
  28809. +extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
  28810. +#ifdef _LIBC
  28811. +extern __typeof(write) __write_nocancel attribute_hidden;
  28812. libc_hidden_proto(write)
  28813. +#endif
  28814. #ifdef __USE_UNIX98
  28815. # ifndef __USE_FILE_OFFSET64
  28816. @@ -353,14 +403,14 @@
  28817. This function is a cancellation point and therefore not marked with
  28818. __THROW. */
  28819. -extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
  28820. +extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
  28821. __off_t __offset) __wur;
  28822. # else
  28823. # ifdef __REDIRECT
  28824. extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
  28825. __off64_t __offset),
  28826. pread64) __wur;
  28827. -extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
  28828. +extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
  28829. size_t __nbytes, __off64_t __offset),
  28830. pwrite64) __wur;
  28831. # else
  28832. @@ -377,7 +427,7 @@
  28833. __off64_t __offset) __wur;
  28834. /* Write N bytes of BUF to FD at the given position OFFSET without
  28835. changing the file pointer. Return the number written, or -1. */
  28836. -extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
  28837. +extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
  28838. __off64_t __offset) __wur;
  28839. # endif
  28840. #endif
  28841. @@ -446,7 +496,7 @@
  28842. /* Change the owner and group of FILE. */
  28843. -extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
  28844. +extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
  28845. __THROW __nonnull ((1)) __wur;
  28846. libc_hidden_proto(chown)
  28847. @@ -457,7 +507,7 @@
  28848. /* Change owner and group of FILE, if it is a symbolic
  28849. link the ownership of the symbolic link is changed. */
  28850. -extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
  28851. +extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
  28852. __THROW __nonnull ((1)) __wur;
  28853. #endif /* Use BSD || X/Open Unix. */
  28854. @@ -465,13 +515,14 @@
  28855. #ifdef __USE_ATFILE
  28856. /* Change the owner and group of FILE relative to the directory FD is open
  28857. on. */
  28858. -extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
  28859. +extern int fchownat (int __fd, const char *__file, __uid_t __owner,
  28860. __gid_t __group, int __flag)
  28861. __THROW __nonnull ((2)) __wur;
  28862. +libc_hidden_proto(fchownat)
  28863. #endif /* Use GNU. */
  28864. /* Change the process's working directory to PATH. */
  28865. -extern int chdir (__const char *__path) __THROW __nonnull ((1)) __wur;
  28866. +extern int chdir (const char *__path) __THROW __nonnull ((1)) __wur;
  28867. libc_hidden_proto(chdir)
  28868. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  28869. @@ -513,6 +564,13 @@
  28870. extern int dup2 (int __fd, int __fd2) __THROW;
  28871. libc_hidden_proto(dup2)
  28872. +#ifdef __USE_GNU
  28873. +/* Duplicate FD to FD2, closing FD2 and making it open on the same
  28874. + file while setting flags according to FLAGS. */
  28875. +extern int dup3 (int __fd, int __fd2, int __flags) __THROW;
  28876. +libc_hidden_proto(dup3)
  28877. +#endif
  28878. +
  28879. /* NULL-terminated array of "NAME=VALUE" environment variables. */
  28880. extern char **__environ;
  28881. #ifdef __USE_GNU
  28882. @@ -522,48 +580,56 @@
  28883. /* Replace the current process, executing PATH with arguments ARGV and
  28884. environment ENVP. ARGV and ENVP are terminated by NULL pointers. */
  28885. -extern int execve (__const char *__path, char *__const __argv[],
  28886. - char *__const __envp[]) __THROW __nonnull ((1));
  28887. +extern int execve (const char *__path, char *const __argv[],
  28888. + char *const __envp[]) __THROW __nonnull ((1));
  28889. libc_hidden_proto(execve)
  28890. -#if 0 /*def __USE_GNU*/
  28891. +#if 0 /*def __USE_XOPEN2K8*/
  28892. /* Execute the file FD refers to, overlaying the running program image.
  28893. ARGV and ENVP are passed to the new program, as for `execve'. */
  28894. -extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
  28895. +extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
  28896. __THROW;
  28897. #endif
  28898. /* Execute PATH with arguments ARGV and environment from `environ'. */
  28899. -extern int execv (__const char *__path, char *__const __argv[])
  28900. +extern int execv (const char *__path, char *const __argv[])
  28901. __THROW __nonnull ((1));
  28902. libc_hidden_proto(execv)
  28903. /* Execute PATH with all arguments after PATH until a NULL pointer,
  28904. and the argument after that for environment. */
  28905. -extern int execle (__const char *__path, __const char *__arg, ...)
  28906. +extern int execle (const char *__path, const char *__arg, ...)
  28907. __THROW __nonnull ((1));
  28908. libc_hidden_proto(execle)
  28909. /* Execute PATH with all arguments after PATH until
  28910. a NULL pointer and environment from `environ'. */
  28911. -extern int execl (__const char *__path, __const char *__arg, ...)
  28912. +extern int execl (const char *__path, const char *__arg, ...)
  28913. __THROW __nonnull ((1));
  28914. libc_hidden_proto(execl)
  28915. /* Execute FILE, searching in the `PATH' environment variable if it contains
  28916. no slashes, with arguments ARGV and environment from `environ'. */
  28917. -extern int execvp (__const char *__file, char *__const __argv[])
  28918. +extern int execvp (const char *__file, char *const __argv[])
  28919. __THROW __nonnull ((1));
  28920. libc_hidden_proto(execvp)
  28921. /* Execute FILE, searching in the `PATH' environment variable if
  28922. it contains no slashes, with all arguments after FILE until a
  28923. NULL pointer and environment from `environ'. */
  28924. -extern int execlp (__const char *__file, __const char *__arg, ...)
  28925. +extern int execlp (const char *__file, const char *__arg, ...)
  28926. __THROW __nonnull ((1));
  28927. libc_hidden_proto(execlp)
  28928. +#ifdef __USE_GNU
  28929. +/* Execute FILE, searching in the `PATH' environment variable if it contains
  28930. + no slashes, with arguments ARGV and environment from a pointer */
  28931. +extern int execvpe (__const char *__file, char *__const __argv[], char *__const __envp[])
  28932. + __THROW __nonnull ((1));
  28933. +libc_hidden_proto(execvpe)
  28934. +#endif
  28935. +
  28936. #if defined __USE_MISC || defined __USE_XOPEN
  28937. /* Add INC to priority of the current process. */
  28938. @@ -582,7 +648,7 @@
  28939. #include <bits/confname.h>
  28940. /* Get file-specific configuration information about PATH. */
  28941. -extern long int pathconf (__const char *__path, int __name)
  28942. +extern long int pathconf (const char *__path, int __name)
  28943. __THROW __nonnull ((1));
  28944. /* Get file-specific configuration about descriptor FD. */
  28945. @@ -767,7 +833,12 @@
  28946. Return -1 for errors, 0 to the new process,
  28947. and the process ID of the new process to the old process. */
  28948. extern __pid_t fork (void) __THROW;
  28949. +# ifdef _LIBC
  28950. +# ifdef __UCLIBC_HAS_THREADS__
  28951. +extern __typeof(fork) __libc_fork;
  28952. +# endif
  28953. libc_hidden_proto(fork)
  28954. +# endif
  28955. #endif
  28956. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  28957. @@ -779,8 +850,10 @@
  28958. libc_hidden_proto(vfork)
  28959. #endif /* Use BSD. */
  28960. +#if 0 /* psm: seems unused , exit-thread.S is not compiled */
  28961. /* Special exit function which only terminates the current thread. */
  28962. extern void __exit_thread (int val) __attribute__ ((__noreturn__));
  28963. +#endif
  28964. /* Return the pathname of the terminal FD is open on, or NULL on errors.
  28965. The returned storage is good only until the next call to this function. */
  28966. @@ -797,7 +870,6 @@
  28967. extern int isatty (int __fd) __THROW;
  28968. libc_hidden_proto(isatty)
  28969. -
  28970. #if 0 /*defined __USE_BSD \
  28971. || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98)*/
  28972. /* Return the index into the active-logins file (utmp) for
  28973. @@ -807,26 +879,27 @@
  28974. /* Make a link to FROM named TO. */
  28975. -extern int link (__const char *__from, __const char *__to)
  28976. +extern int link (const char *__from, const char *__to)
  28977. __THROW __nonnull ((1, 2)) __wur;
  28978. #ifdef __USE_ATFILE
  28979. /* Like link but relative paths in TO and FROM are interpreted relative
  28980. to FROMFD and TOFD respectively. */
  28981. -extern int linkat (int __fromfd, __const char *__from, int __tofd,
  28982. - __const char *__to, int __flags)
  28983. +extern int linkat (int __fromfd, const char *__from, int __tofd,
  28984. + const char *__to, int __flags)
  28985. __THROW __nonnull ((2, 4)) __wur;
  28986. +libc_hidden_proto(linkat)
  28987. #endif
  28988. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
  28989. /* Make a symbolic link to FROM named TO. */
  28990. -extern int symlink (__const char *__from, __const char *__to)
  28991. +extern int symlink (const char *__from, const char *__to)
  28992. __THROW __nonnull ((1, 2)) __wur;
  28993. /* Read the contents of the symbolic link PATH into no more than
  28994. LEN bytes of BUF. The contents are not null-terminated.
  28995. Returns the number of characters read, or -1 for errors. */
  28996. -extern ssize_t readlink (__const char *__restrict __path,
  28997. +extern ssize_t readlink (const char *__restrict __path,
  28998. char *__restrict __buf, size_t __len)
  28999. __THROW __nonnull ((1, 2)) __wur;
  29000. libc_hidden_proto(readlink)
  29001. @@ -834,27 +907,30 @@
  29002. #ifdef __USE_ATFILE
  29003. /* Like symlink but a relative path in TO is interpreted relative to TOFD. */
  29004. -extern int symlinkat (__const char *__from, int __tofd,
  29005. - __const char *__to) __THROW __nonnull ((1, 3)) __wur;
  29006. +extern int symlinkat (const char *__from, int __tofd,
  29007. + const char *__to) __THROW __nonnull ((1, 3)) __wur;
  29008. +libc_hidden_proto(symlinkat)
  29009. /* Like readlink but a relative PATH is interpreted relative to FD. */
  29010. -extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
  29011. +extern ssize_t readlinkat (int __fd, const char *__restrict __path,
  29012. char *__restrict __buf, size_t __len)
  29013. __THROW __nonnull ((2, 3)) __wur;
  29014. +libc_hidden_proto(readlinkat)
  29015. #endif
  29016. /* Remove the link NAME. */
  29017. -extern int unlink (__const char *__name) __THROW __nonnull ((1));
  29018. +extern int unlink (const char *__name) __THROW __nonnull ((1));
  29019. libc_hidden_proto(unlink)
  29020. #ifdef __USE_ATFILE
  29021. /* Remove the link NAME relative to FD. */
  29022. -extern int unlinkat (int __fd, __const char *__name, int __flag)
  29023. +extern int unlinkat (int __fd, const char *__name, int __flag)
  29024. __THROW __nonnull ((2));
  29025. +libc_hidden_proto(unlinkat)
  29026. #endif
  29027. /* Remove the directory PATH. */
  29028. -extern int rmdir (__const char *__path) __THROW __nonnull ((1));
  29029. +extern int rmdir (const char *__path) __THROW __nonnull ((1));
  29030. libc_hidden_proto(rmdir)
  29031. @@ -884,7 +960,7 @@
  29032. #if 0 /*def __USE_BSD*/
  29033. /* Set the login name returned by `getlogin'. */
  29034. -extern int setlogin (__const char *__name) __THROW __nonnull ((1));
  29035. +extern int setlogin (const char *__name) __THROW __nonnull ((1));
  29036. #endif
  29037. @@ -910,13 +986,14 @@
  29038. #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
  29039. /* Set the name of the current host to NAME, which is LEN bytes long.
  29040. This call is restricted to the super-user. */
  29041. -extern int sethostname (__const char *__name, size_t __len)
  29042. +extern int sethostname (const char *__name, size_t __len)
  29043. __THROW __nonnull ((1)) __wur;
  29044. /* Set the current machine's Internet number to ID.
  29045. This call is restricted to the super-user. */
  29046. extern int sethostid (long int __id) __THROW __wur;
  29047. +
  29048. #if defined __UCLIBC_BSD_SPECIFIC__ || defined _LIBC
  29049. /* Get and set the NIS (aka YP) domain name, if any.
  29050. Called just like `gethostname' and `sethostname'.
  29051. @@ -926,10 +1003,11 @@
  29052. libc_hidden_proto(getdomainname)
  29053. #endif
  29054. #if defined __UCLIBC_BSD_SPECIFIC__
  29055. -extern int setdomainname (__const char *__name, size_t __len)
  29056. +extern int setdomainname (const char *__name, size_t __len)
  29057. __THROW __nonnull ((1)) __wur;
  29058. #endif
  29059. +
  29060. #if defined __UCLIBC_LINUX_SPECIFIC__
  29061. /* Revoke access permissions to all processes currently communicating
  29062. with the control terminal, and then send a SIGHUP signal to the process
  29063. @@ -939,7 +1017,7 @@
  29064. #if 0
  29065. /* Revoke the access of all descriptors currently open on FILE. */
  29066. -extern int revoke (__const char *__file) __THROW __nonnull ((1)) __wur;
  29067. +extern int revoke (const char *__file) __THROW __nonnull ((1)) __wur;
  29068. /* Enable statistical profiling, writing samples of the PC into at most
  29069. @@ -956,7 +1034,7 @@
  29070. /* Turn accounting on if NAME is an existing file. The system will then write
  29071. a record for each process as it terminates, to this file. If NAME is NULL,
  29072. turn accounting off. This call is restricted to the super-user. */
  29073. -extern int acct (__const char *__name) __THROW;
  29074. +extern int acct (const char *__name) __THROW;
  29075. /* Successive calls return the shells listed in `/etc/shells'. */
  29076. @@ -977,21 +1055,21 @@
  29077. #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
  29078. /* Make PATH be the root directory (the starting point for absolute paths).
  29079. This call is restricted to the super-user. */
  29080. -extern int chroot (__const char *__path) __THROW __nonnull ((1)) __wur;
  29081. +extern int chroot (const char *__path) __THROW __nonnull ((1)) __wur;
  29082. /* Prompt with PROMPT and read a string from the terminal without echoing.
  29083. Uses /dev/tty if possible; otherwise stderr and stdin. */
  29084. -extern char *getpass (__const char *__prompt) __nonnull ((1));
  29085. +extern char *getpass (const char *__prompt) __nonnull ((1));
  29086. #endif /* Use BSD || X/Open. */
  29087. -#if defined __USE_BSD || defined __USE_XOPEN
  29088. +#if defined __USE_BSD || defined __USE_XOPEN || defined __USE_XOPEN2K
  29089. /* Make all changes done to FD actually appear on disk.
  29090. This function is a cancellation point and therefore not marked with
  29091. __THROW. */
  29092. extern int fsync (int __fd);
  29093. -#endif /* Use BSD || X/Open. */
  29094. +#endif /* Use BSD || X/Open || Unix98. */
  29095. #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  29096. @@ -1017,21 +1095,22 @@
  29097. /* Truncate FILE to LENGTH bytes. */
  29098. # ifndef __USE_FILE_OFFSET64
  29099. -extern int truncate (__const char *__file, __off_t __length)
  29100. +extern int truncate (const char *__file, __off_t __length)
  29101. __THROW __nonnull ((1)) __wur;
  29102. libc_hidden_proto(truncate)
  29103. # else
  29104. # ifdef __REDIRECT_NTH
  29105. extern int __REDIRECT_NTH (truncate,
  29106. - (__const char *__file, __off64_t __length),
  29107. + (const char *__file, __off64_t __length),
  29108. truncate64) __nonnull ((1)) __wur;
  29109. # else
  29110. # define truncate truncate64
  29111. # endif
  29112. # endif
  29113. # ifdef __USE_LARGEFILE64
  29114. -extern int truncate64 (__const char *__file, __off64_t __length)
  29115. +extern int truncate64 (const char *__file, __off64_t __length)
  29116. __THROW __nonnull ((1)) __wur;
  29117. +libc_hidden_proto(truncate64)
  29118. # endif
  29119. #endif /* Use BSD || X/Open Unix. */
  29120. @@ -1120,7 +1199,6 @@
  29121. # endif
  29122. # ifdef __USE_LARGEFILE64
  29123. extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur;
  29124. -libc_hidden_proto(lockf64)
  29125. # endif
  29126. #endif /* Use misc and F_LOCK not already defined. */
  29127. @@ -1142,7 +1220,7 @@
  29128. && defined __UCLIBC_HAS_REALTIME__
  29129. /* Synchronize at least the data part of a file with the underlying
  29130. media. */
  29131. -extern int fdatasync (int __fildes) __THROW;
  29132. +extern int fdatasync (int __fildes);
  29133. #endif /* Use POSIX199309 */
  29134. @@ -1151,7 +1229,7 @@
  29135. #ifdef __USE_XOPEN
  29136. # if defined __UCLIBC_HAS_CRYPT__
  29137. /* Encrypt at most 8 characters from KEY using salt to perturb DES. */
  29138. -extern char *crypt (__const char *__key, __const char *__salt)
  29139. +extern char *crypt (const char *__key, const char *__salt)
  29140. __THROW __nonnull ((1, 2));
  29141. /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
  29142. @@ -1164,7 +1242,7 @@
  29143. FROM and copy the result to TO. The value of TO must not be in the
  29144. range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
  29145. is without partner. */
  29146. -extern void swab (__const void *__restrict __from, void *__restrict __to,
  29147. +extern void swab (const void *__restrict __from, void *__restrict __to,
  29148. ssize_t __n) __THROW __nonnull ((1, 2));
  29149. #endif
  29150. @@ -1178,7 +1256,7 @@
  29151. /* Define some macros helping to catch buffer overflows. */
  29152. -#if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
  29153. +#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
  29154. # include <bits/unistd.h>
  29155. #endif
  29156. @@ -1191,6 +1269,7 @@
  29157. #endif
  29158. typedef signed smallint_type smallint;
  29159. typedef unsigned smallint_type smalluint;
  29160. +extern size_t __pagesize attribute_hidden;
  29161. #endif
  29162. diff -Nur uClibc-0.9.33.2/include/utime.h uClibc-git/include/utime.h
  29163. --- uClibc-0.9.33.2/include/utime.h 2012-05-15 09:20:09.000000000 +0200
  29164. +++ uClibc-git/include/utime.h 2014-02-03 12:32:56.000000000 +0100
  29165. @@ -12,9 +12,8 @@
  29166. Lesser General Public License for more details.
  29167. You should have received a copy of the GNU Lesser General Public
  29168. - License along with the GNU C Library; if not, write to the Free
  29169. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29170. - 02111-1307 USA. */
  29171. + License along with the GNU C Library; if not, see
  29172. + <http://www.gnu.org/licenses/>. */
  29173. /*
  29174. * POSIX Standard: 5.6.6 Set File Access and Modification Times <utime.h>
  29175. @@ -43,8 +42,8 @@
  29176. /* Set the access and modification times of FILE to those given in
  29177. *FILE_TIMES. If FILE_TIMES is NULL, set them to the current time. */
  29178. -extern int utime (__const char *__file,
  29179. - __const struct utimbuf *__file_times)
  29180. +extern int utime (const char *__file,
  29181. + const struct utimbuf *__file_times)
  29182. __THROW __nonnull ((1));
  29183. libc_hidden_proto(utime)
  29184. diff -Nur uClibc-0.9.33.2/include/utmp.h uClibc-git/include/utmp.h
  29185. --- uClibc-0.9.33.2/include/utmp.h 2012-05-15 09:20:09.000000000 +0200
  29186. +++ uClibc-git/include/utmp.h 2014-02-03 12:32:56.000000000 +0100
  29187. @@ -12,9 +12,8 @@
  29188. Lesser General Public License for more details.
  29189. You should have received a copy of the GNU Lesser General Public
  29190. - License along with the GNU C Library; if not, write to the Free
  29191. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29192. - 02111-1307 USA. */
  29193. + License along with the GNU C Library; if not, see
  29194. + <http://www.gnu.org/licenses/>. */
  29195. #ifndef _UTMP_H
  29196. #define _UTMP_H 1
  29197. @@ -44,60 +43,52 @@
  29198. /* Write the given entry into utmp and wtmp. */
  29199. -extern void login (__const struct utmp *__entry) __THROW;
  29200. +extern void login (const struct utmp *__entry) __THROW;
  29201. /* Write the utmp entry to say the user on UT_LINE has logged out. */
  29202. -extern int logout (__const char *__ut_line) __THROW;
  29203. +extern int logout (const char *__ut_line) __THROW;
  29204. /* Append to wtmp an entry for the current time and the given info. */
  29205. -extern void logwtmp (__const char *__ut_line, __const char *__ut_name,
  29206. - __const char *__ut_host) __THROW;
  29207. +extern void logwtmp (const char *__ut_line, const char *__ut_name,
  29208. + const char *__ut_host) __THROW;
  29209. #endif
  29210. /* Append entry UTMP to the wtmp-like file WTMP_FILE. */
  29211. -extern void updwtmp (__const char *__wtmp_file, __const struct utmp *__utmp)
  29212. +extern void updwtmp (const char *__wtmp_file, const struct utmp *__utmp)
  29213. __THROW;
  29214. -libc_hidden_proto(updwtmp)
  29215. /* Change name of the utmp file to be examined. */
  29216. -extern int utmpname (__const char *__file) __THROW;
  29217. -libc_hidden_proto(utmpname)
  29218. +extern int utmpname (const char *__file) __THROW;
  29219. /* Read next entry from a utmp-like file. */
  29220. extern struct utmp *getutent (void) __THROW;
  29221. -libc_hidden_proto(getutent)
  29222. /* Reset the input stream to the beginning of the file. */
  29223. extern void setutent (void) __THROW;
  29224. -libc_hidden_proto(setutent)
  29225. /* Close the current open file. */
  29226. extern void endutent (void) __THROW;
  29227. -libc_hidden_proto(endutent)
  29228. /* Search forward from the current point in the utmp file until the
  29229. next entry with a ut_type matching ID->ut_type. */
  29230. -extern struct utmp *getutid (__const struct utmp *__id) __THROW;
  29231. -libc_hidden_proto(getutid)
  29232. +extern struct utmp *getutid (const struct utmp *__id) __THROW;
  29233. /* Search forward from the current point in the utmp file until the
  29234. next entry with a ut_line matching LINE->ut_line. */
  29235. -extern struct utmp *getutline (__const struct utmp *__line) __THROW;
  29236. -libc_hidden_proto(getutline)
  29237. +extern struct utmp *getutline (const struct utmp *__line) __THROW;
  29238. /* Write out entry pointed to by UTMP_PTR into the utmp file. */
  29239. -extern struct utmp *pututline (__const struct utmp *__utmp_ptr) __THROW;
  29240. -libc_hidden_proto(pututline)
  29241. +extern struct utmp *pututline (const struct utmp *__utmp_ptr) __THROW;
  29242. #if 0 /* def __USE_MISC */
  29243. /* Reentrant versions of the file for handling utmp files. */
  29244. extern int getutent_r (struct utmp *__buffer, struct utmp **__result) __THROW;
  29245. -extern int getutid_r (__const struct utmp *__id, struct utmp *__buffer,
  29246. +extern int getutid_r (const struct utmp *__id, struct utmp *__buffer,
  29247. struct utmp **__result) __THROW;
  29248. -extern int getutline_r (__const struct utmp *__line,
  29249. +extern int getutline_r (const struct utmp *__line,
  29250. struct utmp *__buffer, struct utmp **__result) __THROW;
  29251. #endif /* Use misc. */
  29252. diff -Nur uClibc-0.9.33.2/include/utmpx.h uClibc-git/include/utmpx.h
  29253. --- uClibc-0.9.33.2/include/utmpx.h 2012-05-15 09:20:09.000000000 +0200
  29254. +++ uClibc-git/include/utmpx.h 2014-02-03 12:32:56.000000000 +0100
  29255. @@ -12,9 +12,8 @@
  29256. Lesser General Public License for more details.
  29257. You should have received a copy of the GNU Lesser General Public
  29258. - License along with the GNU C Library; if not, write to the Free
  29259. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29260. - 02111-1307 USA. */
  29261. + License along with the GNU C Library; if not, see
  29262. + <http://www.gnu.org/licenses/>. */
  29263. #ifndef _UTMPX_H
  29264. #define _UTMPX_H 1
  29265. @@ -69,19 +68,19 @@
  29266. This function is a possible cancellation point and therefore not
  29267. marked with __THROW. */
  29268. -extern struct utmpx *getutxid (__const struct utmpx *__id);
  29269. +extern struct utmpx *getutxid (const struct utmpx *__id);
  29270. /* Get the user accounting database entry corresponding to LINE.
  29271. This function is a possible cancellation point and therefore not
  29272. marked with __THROW. */
  29273. -extern struct utmpx *getutxline (__const struct utmpx *__line);
  29274. +extern struct utmpx *getutxline (const struct utmpx *__line);
  29275. /* Write the entry UTMPX into the user accounting database.
  29276. This function is a possible cancellation point and therefore not
  29277. marked with __THROW. */
  29278. -extern struct utmpx *pututxline (__const struct utmpx *__utmpx);
  29279. +extern struct utmpx *pututxline (const struct utmpx *__utmpx);
  29280. #ifdef __USE_GNU
  29281. @@ -91,7 +90,7 @@
  29282. cancellation point. But due to similarity with an POSIX interface
  29283. or due to the implementation it is a cancellation point and
  29284. therefore not marked with __THROW. */
  29285. -extern int utmpxname (__const char *__file);
  29286. +extern int utmpxname (const char *__file);
  29287. /* Append entry UTMP to the wtmpx-like file WTMPX_FILE.
  29288. @@ -99,8 +98,8 @@
  29289. cancellation point. But due to similarity with an POSIX interface
  29290. or due to the implementation it is a cancellation point and
  29291. therefore not marked with __THROW. */
  29292. -extern void updwtmpx (__const char *__wtmpx_file,
  29293. - __const struct utmpx *__utmpx);
  29294. +extern void updwtmpx (const char *__wtmpx_file,
  29295. + const struct utmpx *__utmpx);
  29296. /* Copy the information in UTMPX to UTMP.
  29297. @@ -109,7 +108,7 @@
  29298. cancellation point. But due to similarity with an POSIX interface
  29299. or due to the implementation it is a cancellation point and
  29300. therefore not marked with __THROW. */
  29301. -extern void getutmp (__const struct utmpx *__utmpx,
  29302. +extern void getutmp (const struct utmpx *__utmpx,
  29303. struct utmp *__utmp);
  29304. /* Copy the information in UTMP to UTMPX.
  29305. @@ -118,7 +117,7 @@
  29306. cancellation point. But due to similarity with an POSIX interface
  29307. or due to the implementation it is a cancellation point and
  29308. therefore not marked with __THROW. */
  29309. -extern void getutmpx (__const struct utmp *__utmp,
  29310. +extern void getutmpx (const struct utmp *__utmp,
  29311. struct utmpx *__utmpx);
  29312. #endif
  29313. diff -Nur uClibc-0.9.33.2/include/values.h uClibc-git/include/values.h
  29314. --- uClibc-0.9.33.2/include/values.h 2012-05-15 09:20:09.000000000 +0200
  29315. +++ uClibc-git/include/values.h 2014-02-03 12:32:56.000000000 +0100
  29316. @@ -13,9 +13,8 @@
  29317. Lesser General Public License for more details.
  29318. You should have received a copy of the GNU Lesser General Public
  29319. - License along with the GNU C Library; if not, write to the Free
  29320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29321. - 02111-1307 USA. */
  29322. + License along with the GNU C Library; if not, see
  29323. + <http://www.gnu.org/licenses/>. */
  29324. /* This interface is obsolete. New programs should use
  29325. <limits.h> and/or <float.h> instead of <values.h>. */
  29326. diff -Nur uClibc-0.9.33.2/include/wchar.h uClibc-git/include/wchar.h
  29327. --- uClibc-0.9.33.2/include/wchar.h 2012-05-15 09:20:09.000000000 +0200
  29328. +++ uClibc-git/include/wchar.h 2014-02-03 12:32:56.000000000 +0100
  29329. @@ -12,9 +12,8 @@
  29330. Lesser General Public License for more details.
  29331. You should have received a copy of the GNU Lesser General Public
  29332. - License along with the GNU C Library; if not, write to the Free
  29333. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29334. - 02111-1307 USA. */
  29335. + License along with the GNU C Library; if not, see
  29336. + <http://www.gnu.org/licenses/>. */
  29337. /*
  29338. * ISO C99 Standard: 7.24
  29339. @@ -133,46 +132,46 @@
  29340. /* This incomplete type is defined in <time.h> but needed here because
  29341. of `wcsftime'. */
  29342. struct tm;
  29343. +__END_NAMESPACE_STD
  29344. /* XXX We have to clean this up at some point. Since tm is in the std
  29345. namespace but wcsftime is in __c99 the type wouldn't be found
  29346. without inserting it in the global namespace. */
  29347. __USING_NAMESPACE_STD(tm)
  29348. -__END_NAMESPACE_STD
  29349. __BEGIN_NAMESPACE_C99
  29350. /* Copy SRC to DEST. */
  29351. extern wchar_t *wcscpy (wchar_t *__restrict __dest,
  29352. - __const wchar_t *__restrict __src) __THROW;
  29353. + const wchar_t *__restrict __src) __THROW;
  29354. /* Copy no more than N wide-characters of SRC to DEST. */
  29355. extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
  29356. - __const wchar_t *__restrict __src, size_t __n)
  29357. + const wchar_t *__restrict __src, size_t __n)
  29358. __THROW;
  29359. /* Append SRC onto DEST. */
  29360. extern wchar_t *wcscat (wchar_t *__restrict __dest,
  29361. - __const wchar_t *__restrict __src) __THROW;
  29362. + const wchar_t *__restrict __src) __THROW;
  29363. libc_hidden_proto(wcscat)
  29364. /* Append no more than N wide-characters of SRC onto DEST. */
  29365. extern wchar_t *wcsncat (wchar_t *__restrict __dest,
  29366. - __const wchar_t *__restrict __src, size_t __n)
  29367. + const wchar_t *__restrict __src, size_t __n)
  29368. __THROW;
  29369. /* Compare S1 and S2. */
  29370. -extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)
  29371. +extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
  29372. __THROW __attribute_pure__;
  29373. libc_hidden_proto(wcscmp)
  29374. /* Compare N wide-characters of S1 and S2. */
  29375. -extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)
  29376. +extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
  29377. __THROW __attribute_pure__;
  29378. __END_NAMESPACE_C99
  29379. #ifdef __USE_GNU
  29380. /* Compare S1 and S2, ignoring case. */
  29381. -extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
  29382. +extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) __THROW;
  29383. /* Compare no more than N chars of S1 and S2, ignoring case. */
  29384. -extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,
  29385. +extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2,
  29386. size_t __n) __THROW;
  29387. #ifdef __UCLIBC_HAS_XLOCALE__
  29388. @@ -180,11 +179,11 @@
  29389. the provided locale and not the global locale. */
  29390. # include <xlocale.h>
  29391. -extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
  29392. +extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
  29393. __locale_t __loc) __THROW;
  29394. libc_hidden_proto(wcscasecmp_l)
  29395. -extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,
  29396. +extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2,
  29397. size_t __n, __locale_t __loc) __THROW;
  29398. libc_hidden_proto(wcsncasecmp_l)
  29399. #endif /* __UCLIBC_HAS_XLOCALE__ */
  29400. @@ -193,13 +192,13 @@
  29401. __BEGIN_NAMESPACE_C99
  29402. /* Compare S1 and S2, both interpreted as appropriate to the
  29403. LC_COLLATE category of the current locale. */
  29404. -extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW;
  29405. +extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW;
  29406. libc_hidden_proto(wcscoll)
  29407. /* Transform S2 into array pointed to by S1 such that if wcscmp is
  29408. applied to two transformed strings the result is the as applying
  29409. `wcscoll' to the original strings. */
  29410. extern size_t wcsxfrm (wchar_t *__restrict __s1,
  29411. - __const wchar_t *__restrict __s2, size_t __n) __THROW;
  29412. + const wchar_t *__restrict __s2, size_t __n) __THROW;
  29413. __END_NAMESPACE_C99
  29414. #ifdef __USE_GNU
  29415. @@ -209,76 +208,79 @@
  29416. /* Compare S1 and S2, both interpreted as appropriate to the
  29417. LC_COLLATE category of the given locale. */
  29418. -extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,
  29419. +extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2,
  29420. __locale_t __loc) __THROW;
  29421. libc_hidden_proto(wcscoll_l)
  29422. /* Transform S2 into array pointed to by S1 such that if wcscmp is
  29423. applied to two transformed strings the result is the as applying
  29424. `wcscoll' to the original strings. */
  29425. -extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,
  29426. +extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2,
  29427. size_t __n, __locale_t __loc) __THROW;
  29428. libc_hidden_proto(wcsxfrm_l)
  29429. #endif /* __UCLIBC_HAS_XLOCALE__ */
  29430. /* Duplicate S, returning an identical malloc'd string. */
  29431. -extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__;
  29432. +extern wchar_t *wcsdup (const wchar_t *__s) __THROW __attribute_malloc__;
  29433. #endif
  29434. __BEGIN_NAMESPACE_C99
  29435. /* Find the first occurrence of WC in WCS. */
  29436. -extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)
  29437. +extern wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
  29438. __THROW __attribute_pure__;
  29439. /* Find the last occurrence of WC in WCS. */
  29440. -extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)
  29441. +extern wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc)
  29442. __THROW __attribute_pure__;
  29443. __END_NAMESPACE_C99
  29444. #ifdef __USE_GNU
  29445. /* This function is similar to `wcschr'. But it returns a pointer to
  29446. the closing NUL wide character in case C is not found in S. */
  29447. -extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)
  29448. +extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc)
  29449. __THROW __attribute_pure__;
  29450. #endif
  29451. __BEGIN_NAMESPACE_C99
  29452. /* Return the length of the initial segmet of WCS which
  29453. consists entirely of wide characters not in REJECT. */
  29454. -extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)
  29455. +extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject)
  29456. __THROW __attribute_pure__;
  29457. /* Return the length of the initial segmet of WCS which
  29458. consists entirely of wide characters in ACCEPT. */
  29459. -extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)
  29460. +extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept)
  29461. __THROW __attribute_pure__;
  29462. libc_hidden_proto(wcsspn)
  29463. /* Find the first occurrence in WCS of any character in ACCEPT. */
  29464. -extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)
  29465. +extern wchar_t *wcspbrk (const wchar_t *__wcs, const wchar_t *__accept)
  29466. __THROW __attribute_pure__;
  29467. libc_hidden_proto(wcspbrk)
  29468. /* Find the first occurrence of NEEDLE in HAYSTACK. */
  29469. -extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)
  29470. +/* SuSv uses restrict keyword, glibc does not */
  29471. +extern wchar_t *wcsstr (const wchar_t *__restrict __haystack, const wchar_t *__restrict __needle)
  29472. __THROW __attribute_pure__;
  29473. /* Divide WCS into tokens separated by characters in DELIM. */
  29474. extern wchar_t *wcstok (wchar_t *__restrict __s,
  29475. - __const wchar_t *__restrict __delim,
  29476. + const wchar_t *__restrict __delim,
  29477. wchar_t **__restrict __ptr) __THROW;
  29478. /* Return the number of wide characters in S. */
  29479. -extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__;
  29480. +extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__;
  29481. libc_hidden_proto(wcslen)
  29482. __END_NAMESPACE_C99
  29483. #if defined __USE_XOPEN && defined __UCLIBC_SUSV3_LEGACY__
  29484. /* Another name for `wcsstr' from XPG4. */
  29485. -extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)
  29486. +/* SuSv3 did not use restrict keyword, probably because it was marked LEGACY
  29487. + we do to be in sync with wcsstr */
  29488. +extern wchar_t *wcswcs (const wchar_t *__restrict __haystack, const wchar_t *__restrict __needle)
  29489. __THROW __attribute_pure__;
  29490. #endif
  29491. #ifdef __USE_GNU
  29492. /* Return the number of wide characters in S, but at most MAXLEN. */
  29493. -extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)
  29494. +extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen)
  29495. __THROW __attribute_pure__;
  29496. libc_hidden_proto(wcsnlen)
  29497. #endif
  29498. @@ -286,23 +288,24 @@
  29499. __BEGIN_NAMESPACE_C99
  29500. /* Search N wide characters of S for C. */
  29501. -extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)
  29502. +extern wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, size_t __n)
  29503. __THROW __attribute_pure__;
  29504. libc_hidden_proto(wmemchr)
  29505. /* Compare N wide characters of S1 and S2. */
  29506. -extern int wmemcmp (__const wchar_t *__restrict __s1,
  29507. - __const wchar_t *__restrict __s2, size_t __n)
  29508. +/* SuSv4 does not use restrict keyword for S1 and S2, glibc does */
  29509. +extern int wmemcmp (const wchar_t *__s1,
  29510. + const wchar_t *__s2, size_t __n)
  29511. __THROW __attribute_pure__;
  29512. /* Copy N wide characters of SRC to DEST. */
  29513. extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
  29514. - __const wchar_t *__restrict __s2, size_t __n) __THROW;
  29515. + const wchar_t *__restrict __s2, size_t __n) __THROW;
  29516. libc_hidden_proto(wmemcpy)
  29517. /* Copy N wide characters of SRC to DEST, guaranteeing
  29518. correct behavior for overlapping strings. */
  29519. -extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)
  29520. +extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
  29521. __THROW;
  29522. /* Set N wide characters of S to C. */
  29523. @@ -313,7 +316,7 @@
  29524. /* Copy N wide characters of SRC to DEST and return pointer to following
  29525. wide character. */
  29526. extern wchar_t *wmempcpy (wchar_t *__restrict __s1,
  29527. - __const wchar_t *__restrict __s2, size_t __n)
  29528. + const wchar_t *__restrict __s2, size_t __n)
  29529. __THROW;
  29530. libc_hidden_proto(wmempcpy)
  29531. #endif
  29532. @@ -331,13 +334,13 @@
  29533. /* Determine whether PS points to an object representing the initial
  29534. state. */
  29535. -extern int mbsinit (__const mbstate_t *__ps) __THROW __attribute_pure__;
  29536. +extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__;
  29537. libc_hidden_proto(mbsinit)
  29538. /* Write wide character representation of multibyte character pointed
  29539. to by S to PWC. */
  29540. extern size_t mbrtowc (wchar_t *__restrict __pwc,
  29541. - __const char *__restrict __s, size_t __n,
  29542. + const char *__restrict __s, size_t __n,
  29543. mbstate_t *__p) __THROW;
  29544. libc_hidden_proto(mbrtowc)
  29545. @@ -348,24 +351,24 @@
  29546. /* Return number of bytes in multibyte character pointed to by S. */
  29547. #if 0 /* uClibc: disabled */
  29548. -extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
  29549. +extern size_t __mbrlen (const char *__restrict __s, size_t __n,
  29550. mbstate_t *__restrict __ps) __THROW;
  29551. #endif
  29552. -extern size_t mbrlen (__const char *__restrict __s, size_t __n,
  29553. +extern size_t mbrlen (const char *__restrict __s, size_t __n,
  29554. mbstate_t *__restrict __ps) __THROW;
  29555. libc_hidden_proto(mbrlen)
  29556. /* Write wide character representation of multibyte character string
  29557. SRC to DST. */
  29558. extern size_t mbsrtowcs (wchar_t *__restrict __dst,
  29559. - __const char **__restrict __src, size_t __len,
  29560. + const char **__restrict __src, size_t __len,
  29561. mbstate_t *__restrict __ps) __THROW;
  29562. libc_hidden_proto(mbsrtowcs)
  29563. /* Write multibyte character representation of wide character string
  29564. SRC to DST. */
  29565. extern size_t wcsrtombs (char *__restrict __dst,
  29566. - __const wchar_t **__restrict __src, size_t __len,
  29567. + const wchar_t **__restrict __src, size_t __len,
  29568. mbstate_t *__restrict __ps) __THROW;
  29569. libc_hidden_proto(wcsrtombs)
  29570. __END_NAMESPACE_C99
  29571. @@ -375,14 +378,14 @@
  29572. /* Write wide character representation of at most NMC bytes of the
  29573. multibyte character string SRC to DST. */
  29574. extern size_t mbsnrtowcs (wchar_t *__restrict __dst,
  29575. - __const char **__restrict __src, size_t __nmc,
  29576. + const char **__restrict __src, size_t __nmc,
  29577. size_t __len, mbstate_t *__restrict __ps) __THROW;
  29578. libc_hidden_proto(mbsnrtowcs)
  29579. /* Write multibyte character representation of at most NWC characters
  29580. from the wide character string SRC to DST. */
  29581. extern size_t wcsnrtombs (char *__restrict __dst,
  29582. - __const wchar_t **__restrict __src,
  29583. + const wchar_t **__restrict __src,
  29584. size_t __nwc, size_t __len,
  29585. mbstate_t *__restrict __ps) __THROW;
  29586. libc_hidden_proto(wcsnrtombs)
  29587. @@ -396,7 +399,7 @@
  29588. /* Determine number of column positions required for first N wide
  29589. characters (or fewer if S ends before this) in S. */
  29590. -extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW;
  29591. +extern int wcswidth (const wchar_t *__s, size_t __n) __THROW;
  29592. libc_hidden_proto(wcswidth)
  29593. #endif /* Use X/Open. */
  29594. @@ -405,14 +408,14 @@
  29595. #ifdef __UCLIBC_HAS_FLOATS__
  29596. /* Convert initial portion of the wide string NPTR to `double'
  29597. representation. */
  29598. -extern double wcstod (__const wchar_t *__restrict __nptr,
  29599. +extern double wcstod (const wchar_t *__restrict __nptr,
  29600. wchar_t **__restrict __endptr) __THROW;
  29601. #ifdef __USE_ISOC99
  29602. /* Likewise for `float' and `long double' sizes of floating-point numbers. */
  29603. -extern float wcstof (__const wchar_t *__restrict __nptr,
  29604. +extern float wcstof (const wchar_t *__restrict __nptr,
  29605. wchar_t **__restrict __endptr) __THROW;
  29606. -extern long double wcstold (__const wchar_t *__restrict __nptr,
  29607. +extern long double wcstold (const wchar_t *__restrict __nptr,
  29608. wchar_t **__restrict __endptr) __THROW;
  29609. #endif /* C99 */
  29610. #endif /* __UCLIBC_HAS_FLOATS__ */
  29611. @@ -420,44 +423,44 @@
  29612. /* Convert initial portion of wide string NPTR to `long int'
  29613. representation. */
  29614. -extern long int wcstol (__const wchar_t *__restrict __nptr,
  29615. +extern long int wcstol (const wchar_t *__restrict __nptr,
  29616. wchar_t **__restrict __endptr, int __base) __THROW;
  29617. /* Convert initial portion of wide string NPTR to `unsigned long int'
  29618. representation. */
  29619. -extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr,
  29620. +extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
  29621. wchar_t **__restrict __endptr, int __base)
  29622. __THROW;
  29623. #if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_GNU)
  29624. -/* Convert initial portion of wide string NPTR to `long int'
  29625. +/* Convert initial portion of wide string NPTR to `long long int'
  29626. representation. */
  29627. __extension__
  29628. -extern long long int wcstoll (__const wchar_t *__restrict __nptr,
  29629. +extern long long int wcstoll (const wchar_t *__restrict __nptr,
  29630. wchar_t **__restrict __endptr, int __base)
  29631. __THROW;
  29632. /* Convert initial portion of wide string NPTR to `unsigned long long int'
  29633. representation. */
  29634. __extension__
  29635. -extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr,
  29636. +extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
  29637. wchar_t **__restrict __endptr,
  29638. int __base) __THROW;
  29639. #endif /* ISO C99 or GCC and GNU. */
  29640. __END_NAMESPACE_C99
  29641. #if defined __GNUC__ && defined __USE_GNU
  29642. -/* Convert initial portion of wide string NPTR to `long int'
  29643. +/* Convert initial portion of wide string NPTR to `long long int'
  29644. representation. */
  29645. __extension__
  29646. -extern long long int wcstoq (__const wchar_t *__restrict __nptr,
  29647. +extern long long int wcstoq (const wchar_t *__restrict __nptr,
  29648. wchar_t **__restrict __endptr, int __base)
  29649. __THROW;
  29650. /* Convert initial portion of wide string NPTR to `unsigned long long int'
  29651. representation. */
  29652. __extension__
  29653. -extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr,
  29654. +extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr,
  29655. wchar_t **__restrict __endptr,
  29656. int __base) __THROW;
  29657. #endif /* GCC and use GNU. */
  29658. @@ -481,35 +484,35 @@
  29659. /* Special versions of the functions above which take the locale to
  29660. use as an additional parameter. */
  29661. -extern long int wcstol_l (__const wchar_t *__restrict __nptr,
  29662. +extern long int wcstol_l (const wchar_t *__restrict __nptr,
  29663. wchar_t **__restrict __endptr, int __base,
  29664. __locale_t __loc) __THROW;
  29665. -extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr,
  29666. +extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr,
  29667. wchar_t **__restrict __endptr,
  29668. int __base, __locale_t __loc) __THROW;
  29669. __extension__
  29670. -extern long long int wcstoll_l (__const wchar_t *__restrict __nptr,
  29671. +extern long long int wcstoll_l (const wchar_t *__restrict __nptr,
  29672. wchar_t **__restrict __endptr,
  29673. int __base, __locale_t __loc) __THROW;
  29674. __extension__
  29675. -extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr,
  29676. +extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr,
  29677. wchar_t **__restrict __endptr,
  29678. int __base, __locale_t __loc)
  29679. __THROW;
  29680. #ifdef __UCLIBC_HAS_FLOATS__
  29681. -extern double wcstod_l (__const wchar_t *__restrict __nptr,
  29682. +extern double wcstod_l (const wchar_t *__restrict __nptr,
  29683. wchar_t **__restrict __endptr, __locale_t __loc)
  29684. __THROW;
  29685. -extern float wcstof_l (__const wchar_t *__restrict __nptr,
  29686. +extern float wcstof_l (const wchar_t *__restrict __nptr,
  29687. wchar_t **__restrict __endptr, __locale_t __loc)
  29688. __THROW;
  29689. -extern long double wcstold_l (__const wchar_t *__restrict __nptr,
  29690. +extern long double wcstold_l (const wchar_t *__restrict __nptr,
  29691. wchar_t **__restrict __endptr,
  29692. __locale_t __loc) __THROW;
  29693. #endif /* __UCLIBC_HAS_FLOATS__ */
  29694. @@ -520,11 +523,11 @@
  29695. #ifdef __USE_GNU
  29696. /* Copy SRC to DEST, returning the address of the terminating L'\0' in
  29697. DEST. */
  29698. -extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW;
  29699. +extern wchar_t *wcpcpy (wchar_t *__dest, const wchar_t *__src) __THROW;
  29700. /* Copy no more than N characters of SRC to DEST, returning the address of
  29701. the last character written into DEST. */
  29702. -extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
  29703. +extern wchar_t *wcpncpy (wchar_t *__dest, const wchar_t *__src, size_t __n)
  29704. __THROW;
  29705. #endif /* use GNU */
  29706. @@ -542,17 +545,17 @@
  29707. This function is a possible cancellation point and therefore not
  29708. marked with __THROW. */
  29709. extern int fwprintf (__FILE *__restrict __stream,
  29710. - __const wchar_t *__restrict __format, ...)
  29711. + const wchar_t *__restrict __format, ...)
  29712. /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */;
  29713. /* Write formatted output to stdout.
  29714. This function is a possible cancellation point and therefore not
  29715. marked with __THROW. */
  29716. -extern int wprintf (__const wchar_t *__restrict __format, ...)
  29717. +extern int wprintf (const wchar_t *__restrict __format, ...)
  29718. /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */;
  29719. /* Write formatted output of at most N characters to S. */
  29720. extern int swprintf (wchar_t *__restrict __s, size_t __n,
  29721. - __const wchar_t *__restrict __format, ...)
  29722. + const wchar_t *__restrict __format, ...)
  29723. __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */;
  29724. /* Write formatted output to S from argument list ARG.
  29725. @@ -560,7 +563,7 @@
  29726. This function is a possible cancellation point and therefore not
  29727. marked with __THROW. */
  29728. extern int vfwprintf (__FILE *__restrict __s,
  29729. - __const wchar_t *__restrict __format,
  29730. + const wchar_t *__restrict __format,
  29731. __gnuc_va_list __arg)
  29732. /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */;
  29733. libc_hidden_proto(vfwprintf)
  29734. @@ -568,13 +571,13 @@
  29735. This function is a possible cancellation point and therefore not
  29736. marked with __THROW. */
  29737. -extern int vwprintf (__const wchar_t *__restrict __format,
  29738. +extern int vwprintf (const wchar_t *__restrict __format,
  29739. __gnuc_va_list __arg)
  29740. /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */;
  29741. /* Write formatted output of at most N character to S from argument
  29742. list ARG. */
  29743. extern int vswprintf (wchar_t *__restrict __s, size_t __n,
  29744. - __const wchar_t *__restrict __format,
  29745. + const wchar_t *__restrict __format,
  29746. __gnuc_va_list __arg)
  29747. __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */;
  29748. libc_hidden_proto(vswprintf)
  29749. @@ -585,17 +588,17 @@
  29750. This function is a possible cancellation point and therefore not
  29751. marked with __THROW. */
  29752. extern int fwscanf (__FILE *__restrict __stream,
  29753. - __const wchar_t *__restrict __format, ...)
  29754. + const wchar_t *__restrict __format, ...)
  29755. /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
  29756. /* Read formatted input from stdin.
  29757. This function is a possible cancellation point and therefore not
  29758. marked with __THROW. */
  29759. -extern int wscanf (__const wchar_t *__restrict __format, ...)
  29760. +extern int wscanf (const wchar_t *__restrict __format, ...)
  29761. /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */;
  29762. /* Read formatted input from S. */
  29763. -extern int swscanf (__const wchar_t *__restrict __s,
  29764. - __const wchar_t *__restrict __format, ...)
  29765. +extern int swscanf (const wchar_t *__restrict __s,
  29766. + const wchar_t *__restrict __format, ...)
  29767. __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
  29768. __END_NAMESPACE_C99
  29769. @@ -609,7 +612,7 @@
  29770. This function is a possible cancellation point and therefore not
  29771. marked with __THROW. */
  29772. extern int vfwscanf (__FILE *__restrict __s,
  29773. - __const wchar_t *__restrict __format,
  29774. + const wchar_t *__restrict __format,
  29775. __gnuc_va_list __arg)
  29776. /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
  29777. libc_hidden_proto(vfwscanf)
  29778. @@ -617,12 +620,12 @@
  29779. This function is a possible cancellation point and therefore not
  29780. marked with __THROW. */
  29781. -extern int vwscanf (__const wchar_t *__restrict __format,
  29782. +extern int vwscanf (const wchar_t *__restrict __format,
  29783. __gnuc_va_list __arg)
  29784. /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */;
  29785. /* Read formatted input from S into argument list ARG. */
  29786. -extern int vswscanf (__const wchar_t *__restrict __s,
  29787. - __const wchar_t *__restrict __format,
  29788. +extern int vswscanf (const wchar_t *__restrict __s,
  29789. + const wchar_t *__restrict __format,
  29790. __gnuc_va_list __arg)
  29791. __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */;
  29792. libc_hidden_proto(vswscanf)
  29793. @@ -652,6 +655,7 @@
  29794. These functions are possible cancellation points and therefore not
  29795. marked with __THROW. */
  29796. extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
  29797. +libc_hidden_proto(fputwc)
  29798. extern wint_t putwc (wchar_t __wc, __FILE *__stream);
  29799. /* Write a character to stdout.
  29800. @@ -673,7 +677,7 @@
  29801. This function is a possible cancellation points and therefore not
  29802. marked with __THROW. */
  29803. -extern int fputws (__const wchar_t *__restrict __ws,
  29804. +extern int fputws (const wchar_t *__restrict __ws,
  29805. __FILE *__restrict __stream);
  29806. libc_hidden_proto(fputws)
  29807. @@ -743,7 +747,7 @@
  29808. cancellation point. But due to similarity with an POSIX interface
  29809. or due to the implementation it is a cancellation point and
  29810. therefore not marked with __THROW. */
  29811. -extern int fputws_unlocked (__const wchar_t *__restrict __ws,
  29812. +extern int fputws_unlocked (const wchar_t *__restrict __ws,
  29813. __FILE *__restrict __stream);
  29814. libc_hidden_proto(fputws_unlocked)
  29815. #endif
  29816. @@ -754,8 +758,8 @@
  29817. Write no more than MAXSIZE wide characters and return the number
  29818. of wide characters written, or 0 if it would exceed MAXSIZE. */
  29819. extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize,
  29820. - __const wchar_t *__restrict __format,
  29821. - __const struct tm *__restrict __tp) __THROW;
  29822. + const wchar_t *__restrict __format,
  29823. + const struct tm *__restrict __tp) __THROW;
  29824. __END_NAMESPACE_C99
  29825. # if defined __USE_GNU && defined __UCLIBC_HAS_XLOCALE__
  29826. @@ -764,8 +768,8 @@
  29827. /* Similar to `wcsftime' but takes the information from
  29828. the provided locale and not the global locale. */
  29829. extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
  29830. - __const wchar_t *__restrict __format,
  29831. - __const struct tm *__restrict __tp,
  29832. + const wchar_t *__restrict __format,
  29833. + const struct tm *__restrict __tp,
  29834. __locale_t __loc) __THROW;
  29835. libc_hidden_proto(wcsftime_l)
  29836. # endif
  29837. diff -Nur uClibc-0.9.33.2/include/wctype.h uClibc-git/include/wctype.h
  29838. --- uClibc-0.9.33.2/include/wctype.h 2012-05-15 09:20:09.000000000 +0200
  29839. +++ uClibc-git/include/wctype.h 2014-02-03 12:32:56.000000000 +0100
  29840. @@ -12,9 +12,8 @@
  29841. Lesser General Public License for more details.
  29842. You should have received a copy of the GNU Lesser General Public
  29843. - License along with the GNU C Library; if not, write to the Free
  29844. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29845. - 02111-1307 USA. */
  29846. + License along with the GNU C Library; if not, see
  29847. + <http://www.gnu.org/licenses/>. */
  29848. /*
  29849. * ISO C99 Standard: 7.25
  29850. @@ -183,7 +182,7 @@
  29851. /* Construct value that describes a class of wide characters identified
  29852. by the string argument PROPERTY. */
  29853. -extern wctype_t wctype (__const char *__property) __THROW;
  29854. +extern wctype_t wctype (const char *__property) __THROW;
  29855. libc_hidden_proto(wctype)
  29856. /* Determine whether the wide-character WC has the property described by
  29857. @@ -200,7 +199,7 @@
  29858. __BEGIN_NAMESPACE_C99
  29859. /* Scalar type that can hold values which represent locale-specific
  29860. character mappings. */
  29861. -/* uClibc note: glibc uses - typedef __const __int32_t *wctrans_t; */
  29862. +/* uClibc note: glibc uses - typedef const __int32_t *wctrans_t; */
  29863. typedef unsigned int wctrans_t;
  29864. __END_NAMESPACE_C99
  29865. #ifdef __USE_GNU
  29866. @@ -235,7 +234,7 @@
  29867. __BEGIN_NAMESPACE_C99
  29868. /* Construct value that describes a mapping between wide characters
  29869. identified by the string argument PROPERTY. */
  29870. -extern wctrans_t wctrans (__const char *__property) __THROW;
  29871. +extern wctrans_t wctrans (const char *__property) __THROW;
  29872. libc_hidden_proto(wctrans)
  29873. /* Map the wide character WC using the mapping described by DESC. */
  29874. @@ -304,7 +303,7 @@
  29875. /* Construct value that describes a class of wide characters identified
  29876. by the string argument PROPERTY. */
  29877. -extern wctype_t wctype_l (__const char *__property, __locale_t __locale)
  29878. +extern wctype_t wctype_l (const char *__property, __locale_t __locale)
  29879. __THROW;
  29880. /* Determine whether the wide-character WC has the property described by
  29881. @@ -328,7 +327,7 @@
  29882. /* Construct value that describes a mapping between wide characters
  29883. identified by the string argument PROPERTY. */
  29884. -extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)
  29885. +extern wctrans_t wctrans_l (const char *__property, __locale_t __locale)
  29886. __THROW;
  29887. /* Map the wide character WC using the mapping described by DESC. */
  29888. diff -Nur uClibc-0.9.33.2/include/wordexp.h uClibc-git/include/wordexp.h
  29889. --- uClibc-0.9.33.2/include/wordexp.h 2012-05-15 09:20:09.000000000 +0200
  29890. +++ uClibc-git/include/wordexp.h 2014-02-03 12:32:56.000000000 +0100
  29891. @@ -12,9 +12,8 @@
  29892. Lesser General Public License for more details.
  29893. You should have received a copy of the GNU Lesser General Public
  29894. - License along with the GNU C Library; if not, write to the Free
  29895. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29896. - 02111-1307 USA. */
  29897. + License along with the GNU C Library; if not, see
  29898. + <http://www.gnu.org/licenses/>. */
  29899. #ifndef _WORDEXP_H
  29900. #define _WORDEXP_H 1
  29901. @@ -60,7 +59,7 @@
  29902. };
  29903. /* Do word expansion of WORDS into PWORDEXP. */
  29904. -extern int wordexp (__const char *__restrict __words,
  29905. +extern int wordexp (const char *__restrict __words,
  29906. wordexp_t *__restrict __pwordexp, int __flags);
  29907. /* Free the storage allocated by a `wordexp' call. */
  29908. diff -Nur uClibc-0.9.33.2/include/xlocale.h uClibc-git/include/xlocale.h
  29909. --- uClibc-0.9.33.2/include/xlocale.h 2012-05-15 09:20:09.000000000 +0200
  29910. +++ uClibc-git/include/xlocale.h 2014-02-03 12:32:56.000000000 +0100
  29911. @@ -14,9 +14,8 @@
  29912. Lesser General Public License for more details.
  29913. You should have received a copy of the GNU Lesser General Public
  29914. - License along with the GNU C Library; if not, write to the Free
  29915. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  29916. - 02111-1307 USA. */
  29917. + License along with the GNU C Library; if not, see
  29918. + <http://www.gnu.org/licenses/>. */
  29919. #ifndef _XLOCALE_H
  29920. #define _XLOCALE_H 1
  29921. @@ -39,11 +38,11 @@
  29922. /* Note: LC_ALL is not a valid index into this array. */
  29923. const char *__names[13];
  29924. } *__locale_t;
  29925. +#else
  29926. +# include <bits/uClibc_locale.h>
  29927. +#endif
  29928. /* POSIX 2008 makes locale_t official. */
  29929. typedef __locale_t locale_t;
  29930. -#else
  29931. -# include <locale.h>
  29932. -#endif
  29933. #endif /* xlocale.h */
  29934. diff -Nur uClibc-0.9.33.2/ldso/include/dl-defs.h uClibc-git/ldso/include/dl-defs.h
  29935. --- uClibc-0.9.33.2/ldso/include/dl-defs.h 2012-05-15 09:20:09.000000000 +0200
  29936. +++ uClibc-git/ldso/include/dl-defs.h 2014-02-03 12:32:56.000000000 +0100
  29937. @@ -5,8 +5,8 @@
  29938. * GNU Lesser General Public License version 2.1 or later.
  29939. */
  29940. -#ifndef _LD_DEFS_H
  29941. -#define _LD_DEFS_H
  29942. +#ifndef _DL_DEFS_H
  29943. +#define _DL_DEFS_H
  29944. #define FLAG_ANY -1
  29945. #define FLAG_TYPE_MASK 0x00ff
  29946. @@ -72,6 +72,11 @@
  29947. #endif
  29948. +#ifdef _LIBC
  29949. +/* arch specific defines */
  29950. +#include <dl-sysdep.h>
  29951. +#endif
  29952. +
  29953. /* Provide a means for a port to pass additional arguments to the _dl_start
  29954. function. */
  29955. #ifndef DL_START
  29956. @@ -281,4 +286,4 @@
  29957. # define DL_GET_RUN_ADDR(loadaddr, mapaddr) (mapaddr)
  29958. #endif
  29959. -#endif /* _LD_DEFS_H */
  29960. +#endif /* _DL_DEFS_H */
  29961. diff -Nur uClibc-0.9.33.2/ldso/include/dl-elf.h uClibc-git/ldso/include/dl-elf.h
  29962. --- uClibc-0.9.33.2/ldso/include/dl-elf.h 2012-05-15 09:20:09.000000000 +0200
  29963. +++ uClibc-git/ldso/include/dl-elf.h 2014-02-03 12:32:56.000000000 +0100
  29964. @@ -5,19 +5,22 @@
  29965. * GNU Lesser General Public License version 2.1 or later.
  29966. */
  29967. -#ifndef LINUXELF_H
  29968. -#define LINUXELF_H
  29969. +#ifndef _DL_ELF_H
  29970. +#define _DL_ELF_H
  29971. +#include <features.h>
  29972. +#include <bits/wordsize.h>
  29973. #include <dl-string.h> /* before elf.h to get ELF_USES_RELOCA right */
  29974. #include <elf.h>
  29975. #include <link.h>
  29976. +#include <dl-defs.h>
  29977. +#include <dlfcn.h>
  29978. -/* Forward declarations for stuff defined in ld_hash.h */
  29979. +/* Forward declarations for stuff defined in dl-hash.h */
  29980. struct dyn_elf;
  29981. struct elf_resolve;
  29982. struct r_scope_elem;
  29983. -#include <dl-defs.h>
  29984. #ifdef __LDSO_CACHE_SUPPORT__
  29985. extern int _dl_map_cache(void);
  29986. extern int _dl_unmap_cache(void);
  29987. @@ -29,7 +32,7 @@
  29988. #define DL_RESOLVE_SECURE 0x0001
  29989. #define DL_RESOLVE_NOLOAD 0x0002
  29990. -/* Function prototypes for non-static stuff in readelflib1.c */
  29991. +/* Function prototypes for non-static stuff in elfinterp.c */
  29992. extern void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
  29993. unsigned long rel_addr, unsigned long rel_size);
  29994. extern int _dl_parse_relocation_information(struct dyn_elf *rpnt,
  29995. @@ -39,8 +42,6 @@
  29996. int trace_loaded_objects);
  29997. extern struct elf_resolve * _dl_load_elf_shared_library(unsigned rflags,
  29998. struct dyn_elf **rpnt, const char *libname);
  29999. -extern struct elf_resolve *_dl_check_if_named_library_is_loaded(const char *full_libname,
  30000. - int trace_loaded_objects);
  30001. extern int _dl_linux_resolve(void);
  30002. extern int _dl_fixup(struct dyn_elf *rpnt, struct r_scope_elem *scope, int flag);
  30003. extern void _dl_protect_relro (struct elf_resolve *l);
  30004. @@ -222,11 +223,6 @@
  30005. #ifdef __DSBT__
  30006. /* Get the mapped address of the DSBT base. */
  30007. ADJUST_DYN_INFO(DT_DSBT_BASE_IDX, load_off);
  30008. -
  30009. - /* Initialize loadmap dsbt info. */
  30010. - load_off.map->dsbt_table = (void *)dynamic_info[DT_DSBT_BASE_IDX];
  30011. - load_off.map->dsbt_size = dynamic_info[DT_DSBT_SIZE_IDX];
  30012. - load_off.map->dsbt_index = dynamic_info[DT_DSBT_INDEX_IDX];
  30013. #endif
  30014. #undef ADJUST_DYN_INFO
  30015. return rtld_flags;
  30016. @@ -259,4 +255,4 @@
  30017. (((X) & PF_X) ? PROT_EXEC : 0))
  30018. -#endif /* LINUXELF_H */
  30019. +#endif /* _DL_ELF_H */
  30020. diff -Nur uClibc-0.9.33.2/ldso/include/dlfcn.h uClibc-git/ldso/include/dlfcn.h
  30021. --- uClibc-0.9.33.2/ldso/include/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  30022. +++ uClibc-git/ldso/include/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  30023. @@ -19,9 +19,9 @@
  30024. `dladdr'. */
  30025. typedef struct
  30026. {
  30027. - __const char *dli_fname; /* File name of defining object. */
  30028. + const char *dli_fname; /* File name of defining object. */
  30029. void *dli_fbase; /* Load address of that object. */
  30030. - __const char *dli_sname; /* Name of nearest symbol. */
  30031. + const char *dli_sname; /* Name of nearest symbol. */
  30032. void *dli_saddr; /* Exact value of nearest symbol. */
  30033. } Dl_info;
  30034. diff -Nur uClibc-0.9.33.2/ldso/include/dl-hash.h uClibc-git/ldso/include/dl-hash.h
  30035. --- uClibc-0.9.33.2/ldso/include/dl-hash.h 2012-05-15 09:20:09.000000000 +0200
  30036. +++ uClibc-git/ldso/include/dl-hash.h 2014-02-03 12:32:56.000000000 +0100
  30037. @@ -5,8 +5,8 @@
  30038. * GNU Lesser General Public License version 2.1 or later.
  30039. */
  30040. -#ifndef _LD_HASH_H_
  30041. -#define _LD_HASH_H_
  30042. +#ifndef _DL_HASH_H
  30043. +#define _DL_HASH_H
  30044. #ifndef RTLD_NEXT
  30045. #define RTLD_NEXT ((void*)-1)
  30046. @@ -139,6 +139,12 @@
  30047. memory when the module is dlclose()d. */
  30048. struct funcdesc_ht *funcdesc_ht;
  30049. #endif
  30050. +#ifdef __DSBT__
  30051. + /* Information for DSBT */
  30052. + void **dsbt_table;
  30053. + unsigned long dsbt_size;
  30054. + unsigned long dsbt_index;
  30055. +#endif
  30056. };
  30057. #define RELOCS_DONE 0x000001
  30058. @@ -160,17 +166,7 @@
  30059. struct elf_resolve *mytpnt, int type_class,
  30060. struct symbol_ref *symbol);
  30061. -extern int _dl_linux_dynamic_link(void);
  30062. -
  30063. extern char * _dl_library_path;
  30064. -extern char * _dl_not_lazy;
  30065. -
  30066. -static __inline__ int _dl_symbol(char * name)
  30067. -{
  30068. - if (name[0] != '_' || name[1] != 'd' || name[2] != 'l' || name[3] != '_')
  30069. - return 0;
  30070. - return 1;
  30071. -}
  30072. #define LD_ERROR_NOFILE 1
  30073. #define LD_ERROR_NOZERO 2
  30074. @@ -184,4 +180,4 @@
  30075. #define LD_BAD_HANDLE 10
  30076. #define LD_NO_SYMBOL 11
  30077. -#endif /* _LD_HASH_H_ */
  30078. +#endif /* _DL_HASH_H */
  30079. diff -Nur uClibc-0.9.33.2/ldso/include/dl-string.h uClibc-git/ldso/include/dl-string.h
  30080. --- uClibc-0.9.33.2/ldso/include/dl-string.h 2012-05-15 09:20:09.000000000 +0200
  30081. +++ uClibc-git/ldso/include/dl-string.h 2014-02-03 12:32:56.000000000 +0100
  30082. @@ -5,12 +5,16 @@
  30083. * GNU Lesser General Public License version 2.1 or later.
  30084. */
  30085. -#ifndef _LINUX_STRING_H_
  30086. -#define _LINUX_STRING_H_
  30087. +#ifndef _DL_STRING_H
  30088. +#define _DL_STRING_H
  30089. -#include <dl-sysdep.h> /* for do_rem */
  30090. #include <features.h>
  30091. +#define __need_NULL
  30092. +#include <stddef.h>
  30093. +
  30094. +#include <dl-defs.h> /* for do_rem by dl-sysdep.h */
  30095. +
  30096. /* provide some sane defaults */
  30097. #ifndef do_rem
  30098. # define do_rem(result, n, base) ((result) = (n) % (base))
  30099. @@ -19,25 +23,7 @@
  30100. # define do_div_10(result, remain) ((result) /= 10)
  30101. #endif
  30102. -static size_t _dl_strlen(const char *str);
  30103. -static char *_dl_strcat(char *dst, const char *src);
  30104. -static char *_dl_strcpy(char *dst, const char *src);
  30105. -static int _dl_strcmp(const char *s1, const char *s2);
  30106. -static int _dl_strncmp(const char *s1, const char *s2, size_t len);
  30107. -static char *_dl_strchr(const char *str, int c);
  30108. -static char *_dl_strrchr(const char *str, int c);
  30109. -static char *_dl_strstr(const char *s1, const char *s2);
  30110. -static void *_dl_memcpy(void *dst, const void *src, size_t len);
  30111. -static int _dl_memcmp(const void *s1, const void *s2, size_t len);
  30112. -static void *_dl_memset(void *str, int c, size_t len);
  30113. -static char *_dl_get_last_path_component(char *path);
  30114. -static char *_dl_simple_ltoa(char *local, unsigned long i);
  30115. -static char *_dl_simple_ltoahex(char *local, unsigned long i);
  30116. -
  30117. -#ifndef NULL
  30118. -#define NULL ((void *) 0)
  30119. -#endif
  30120. -
  30121. +#ifdef IS_IN_rtld
  30122. static __always_inline size_t _dl_strlen(const char *str)
  30123. {
  30124. register const char *ptr = (char *) str-1;
  30125. @@ -84,22 +70,6 @@
  30126. return c1 - c2;
  30127. }
  30128. -static __always_inline int _dl_strncmp(const char *s1, const char *s2, size_t len)
  30129. -{
  30130. - register unsigned char c1 = '\0';
  30131. - register unsigned char c2 = '\0';
  30132. -
  30133. - s1--;s2--;
  30134. - while (len > 0) {
  30135. - c1 = (unsigned char) *++s1;
  30136. - c2 = (unsigned char) *++s2;
  30137. - if (c1 == '\0' || c1 != c2)
  30138. - return c1 - c2;
  30139. - len--;
  30140. - }
  30141. - return c1 - c2;
  30142. -}
  30143. -
  30144. static __always_inline char * _dl_strchr(const char *str, int c)
  30145. {
  30146. register char ch;
  30147. @@ -172,7 +142,7 @@
  30148. return 0;
  30149. }
  30150. -#if defined(powerpc)
  30151. +#if defined(__powerpc__)
  30152. /* Will generate smaller and faster code due to loop unrolling.*/
  30153. static __always_inline void * _dl_memset(void *to, int c, size_t n)
  30154. {
  30155. @@ -228,7 +198,19 @@
  30156. ;/* empty */
  30157. return ptr == path ? ptr : ptr+1;
  30158. }
  30159. +#else /* IS_IN_rtld */
  30160. +# include <string.h>
  30161. +# define _dl_strlen strlen
  30162. +# define _dl_strcat strcat
  30163. +# define _dl_strcpy strcpy
  30164. +# define _dl_strcmp strcmp
  30165. +# define _dl_strrchr strrchr
  30166. +# define _dl_memcpy memcpy
  30167. +# define _dl_memcmp memcmp
  30168. +# define _dl_memset memset
  30169. +#endif /* IS_IN_rtld */
  30170. +#if defined IS_IN_rtld || defined __SUPPORT_LD_DEBUG__
  30171. /* Early on, we can't call printf, so use this to print out
  30172. * numbers using the SEND_STDERR() macro. Avoid using mod
  30173. * or using long division */
  30174. @@ -246,7 +228,9 @@
  30175. } while (i > 0);
  30176. return p;
  30177. }
  30178. +#endif
  30179. +#ifdef IS_IN_rtld
  30180. static __always_inline char * _dl_simple_ltoahex(char *local, unsigned long i)
  30181. {
  30182. /* 16 digits plus a leading "0x" plus a null terminator,
  30183. @@ -266,9 +250,6 @@
  30184. return p;
  30185. }
  30186. -
  30187. -
  30188. -
  30189. /* The following macros may be used in dl-startup.c to debug
  30190. * ldso before ldso has fixed itself up to make function calls */
  30191. @@ -285,7 +266,7 @@
  30192. /* On some arches constant strings are referenced through the GOT.
  30193. * This requires that load_addr must already be defined... */
  30194. #if defined(mc68000) || defined(__arm__) || defined(__thumb__) || \
  30195. - defined(__mips__) || defined(__sh__) || defined(__powerpc__) || \
  30196. + defined(__sh__) || defined(__powerpc__) || \
  30197. defined(__avr32__) || defined(__xtensa__) || defined(__sparc__) || defined(__microblaze__)
  30198. # define CONSTANT_STRING_GOT_FIXUP(X) \
  30199. if ((X) < (const char *) load_addr) (X) += load_addr
  30200. @@ -362,4 +343,6 @@
  30201. # define SEND_ADDRESS_STDERR_DEBUG(X, add_a_newline)
  30202. #endif
  30203. -#endif
  30204. +#endif /* IS_IN_rtld */
  30205. +
  30206. +#endif /* _DL_STRING_H */
  30207. diff -Nur uClibc-0.9.33.2/ldso/include/dl-syscall.h uClibc-git/ldso/include/dl-syscall.h
  30208. --- uClibc-0.9.33.2/ldso/include/dl-syscall.h 2012-05-15 09:20:09.000000000 +0200
  30209. +++ uClibc-git/ldso/include/dl-syscall.h 2014-02-03 12:32:56.000000000 +0100
  30210. @@ -5,8 +5,8 @@
  30211. * GNU Lesser General Public License version 2.1 or later.
  30212. */
  30213. -#ifndef _LD_SYSCALL_H_
  30214. -#define _LD_SYSCALL_H_
  30215. +#ifndef _DL_SYSCALL_H
  30216. +#define _DL_SYSCALL_H
  30217. /* We can't use the real errno in ldso, since it has not yet
  30218. * been dynamicly linked in yet. */
  30219. @@ -20,6 +20,8 @@
  30220. /* For MAP_ANONYMOUS -- differs between platforms */
  30221. #define _SYS_MMAN_H 1
  30222. #include <bits/mman.h>
  30223. +
  30224. +#ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  30225. /* Pull in whatever this particular arch's kernel thinks the kernel version of
  30226. * struct stat should look like. It turns out that each arch has a different
  30227. * opinion on the subject, and different kernel revs use different names... */
  30228. @@ -35,6 +37,13 @@
  30229. #define S_ISUID 04000 /* Set user ID on execution. */
  30230. #define S_ISGID 02000 /* Set group ID on execution. */
  30231. +#else
  30232. +/* 1. common-generic ABI doesn't need kernel_stat translation
  30233. + * 3. S_IS?ID already provided by stat.h
  30234. + */
  30235. +#include <sys/stat.h>
  30236. +#endif
  30237. +
  30238. /* Here are the definitions for some syscalls that are used
  30239. by the dynamic linker. The idea is that we want to be able
  30240. @@ -48,9 +57,18 @@
  30241. #define __NR__dl_close __NR_close
  30242. static __always_inline _syscall1(int, _dl_close, int, fd)
  30243. -#define __NR__dl_open __NR_open
  30244. +#if defined __NR_openat && !defined __NR_open
  30245. +static __always_inline int _dl_open(const char *fn,
  30246. + int flags, __kernel_mode_t mode)
  30247. +{
  30248. + return INLINE_SYSCALL(openat, 4, AT_FDCWD, fn, flags, mode);
  30249. +}
  30250. +
  30251. +#elif defined __NR_open
  30252. +# define __NR__dl_open __NR_open
  30253. static __always_inline _syscall3(int, _dl_open, const char *, fn, int, flags,
  30254. __kernel_mode_t, mode)
  30255. +#endif
  30256. #define __NR__dl_write __NR_write
  30257. static __always_inline _syscall3(unsigned long, _dl_write, int, fd,
  30258. @@ -64,11 +82,27 @@
  30259. static __always_inline _syscall3(int, _dl_mprotect, const void *, addr,
  30260. unsigned long, len, int, prot)
  30261. -#define __NR__dl_stat __NR_stat
  30262. +#if defined __NR_fstatat64 && !defined __NR_stat
  30263. +# define __NR__dl_fstatat64 __NR_fstatat64
  30264. +static __always_inline _syscall4(int, _dl_fstatat64, int, fd, const char *,
  30265. + fn, struct stat *, stat, int, flags)
  30266. +
  30267. +static __always_inline int _dl_stat(const char *file_name,
  30268. + struct stat *buf)
  30269. +{
  30270. + return _dl_fstatat64(AT_FDCWD, file_name, buf, 0);
  30271. +}
  30272. +#elif defined __NR_stat
  30273. +# define __NR__dl_stat __NR_stat
  30274. static __always_inline _syscall2(int, _dl_stat, const char *, file_name,
  30275. struct stat *, buf)
  30276. +#endif
  30277. -#define __NR__dl_fstat __NR_fstat
  30278. +#if defined __NR_fstat64 && !defined __NR_fstat
  30279. +# define __NR__dl_fstat __NR_fstat64
  30280. +#elif defined __NR_fstat
  30281. +# define __NR__dl_fstat __NR_fstat
  30282. +#endif
  30283. static __always_inline _syscall2(int, _dl_fstat, int, fd, struct stat *, buf)
  30284. #define __NR__dl_munmap __NR_munmap
  30285. @@ -104,9 +138,15 @@
  30286. #define __NR__dl_getpid __NR_getpid
  30287. static __always_inline _syscall0(gid_t, _dl_getpid)
  30288. -#define __NR__dl_readlink __NR_readlink
  30289. +#if defined __NR_readlinkat && !defined __NR_readlink
  30290. +# define __NR__dl_readlink __NR_readlinkat
  30291. +static __always_inline _syscall4(int, _dl_readlink, int, id, const char *, path,
  30292. + char *, buf, size_t, bufsiz)
  30293. +#elif defined __NR_readlink
  30294. +# define __NR__dl_readlink __NR_readlink
  30295. static __always_inline _syscall3(int, _dl_readlink, const char *, path, char *, buf,
  30296. size_t, bufsiz)
  30297. +#endif
  30298. #ifdef __NR_pread64
  30299. #define __NR___syscall_pread __NR_pread64
  30300. @@ -187,4 +227,4 @@
  30301. #endif
  30302. }
  30303. -#endif /* _LD_SYSCALL_H_ */
  30304. +#endif /* _DL_SYSCALL_H */
  30305. diff -Nur uClibc-0.9.33.2/ldso/include/ldsodefs.h uClibc-git/ldso/include/ldsodefs.h
  30306. --- uClibc-0.9.33.2/ldso/include/ldsodefs.h 2012-05-15 09:20:09.000000000 +0200
  30307. +++ uClibc-git/ldso/include/ldsodefs.h 2014-02-03 12:32:56.000000000 +0100
  30308. @@ -66,7 +66,7 @@
  30309. /* Taken from glibc/elf/dl-reloc.c */
  30310. #define CHECK_STATIC_TLS(sym_map) \
  30311. do { \
  30312. - if (__builtin_expect ((sym_map)->l_tls_offset == NO_TLS_OFFSET, 0)) \
  30313. + if (unlikely((sym_map)->l_tls_offset == NO_TLS_OFFSET)) \
  30314. _dl_allocate_static_tls (sym_map); \
  30315. } while (0)
  30316. diff -Nur uClibc-0.9.33.2/ldso/include/ldso.h uClibc-git/ldso/include/ldso.h
  30317. --- uClibc-0.9.33.2/ldso/include/ldso.h 2012-05-15 09:20:09.000000000 +0200
  30318. +++ uClibc-git/ldso/include/ldso.h 2014-02-03 12:32:56.000000000 +0100
  30319. @@ -5,8 +5,8 @@
  30320. * GNU Lesser General Public License version 2.1 or later.
  30321. */
  30322. -#ifndef _LDSO_H_
  30323. -#define _LDSO_H_
  30324. +#ifndef _LDSO_H
  30325. +#define _LDSO_H
  30326. #include <features.h>
  30327. @@ -30,6 +30,10 @@
  30328. #include <stddef.h> /* for ptrdiff_t */
  30329. #include <stdbool.h>
  30330. #define _FCNTL_H
  30331. +/* We need this if arch has only new syscalls defined */
  30332. +#ifndef AT_FDCWD
  30333. +#define AT_FDCWD -100
  30334. +#endif /* AT_FDCWD */
  30335. #include <bits/fcntl.h>
  30336. #include <bits/wordsize.h>
  30337. /* Pull in the arch specific type information */
  30338. @@ -42,7 +46,6 @@
  30339. #ifndef __ARCH_HAS_NO_SHARED__
  30340. #include <dl-syscall.h>
  30341. #include <dl-string.h>
  30342. -#include <dlfcn.h>
  30343. /* Now the ldso specific headers */
  30344. #include <dl-elf.h>
  30345. #ifdef __UCLIBC_HAS_TLS__
  30346. @@ -84,16 +87,15 @@
  30347. #else
  30348. #define _dl_trace_prelink 0
  30349. #endif
  30350. +#ifdef __DSBT__
  30351. +extern void **_dl_ldso_dsbt;
  30352. +#endif
  30353. #if defined(USE_TLS) && USE_TLS
  30354. extern void _dl_add_to_slotinfo (struct link_map *l);
  30355. extern void ** __attribute__ ((const)) _dl_initial_error_catch_tsd (void);
  30356. #endif
  30357. -#ifdef USE_TLS
  30358. -void _dl_add_to_slotinfo (struct link_map *l);
  30359. -void ** __attribute__ ((const)) _dl_initial_error_catch_tsd (void);
  30360. -#endif
  30361. #ifdef __SUPPORT_LD_DEBUG__
  30362. extern char *_dl_debug;
  30363. extern char *_dl_debug_symbols;
  30364. @@ -110,7 +112,8 @@
  30365. #else
  30366. # define __dl_debug_dprint(fmt, args...) do {} while (0)
  30367. # define _dl_if_debug_dprint(fmt, args...) do {} while (0)
  30368. -# define _dl_debug_file 2
  30369. +/* disabled on purpose, _dl_debug_file should be guarded by __SUPPORT_LD_DEBUG__
  30370. +# define _dl_debug_file 2*/
  30371. #endif /* __SUPPORT_LD_DEBUG__ */
  30372. #ifdef IS_IN_rtld
  30373. @@ -146,8 +149,19 @@
  30374. extern void _dl_free(void *);
  30375. extern char *_dl_getenv(const char *symbol, char **envp);
  30376. extern void _dl_unsetenv(const char *symbol, char **envp);
  30377. +#ifdef IS_IN_rtld
  30378. extern char *_dl_strdup(const char *string);
  30379. extern void _dl_dprintf(int, const char *, ...);
  30380. +#else
  30381. +# include <string.h>
  30382. +# define _dl_strdup strdup
  30383. +# include <stdio.h>
  30384. +# ifdef __USE_GNU
  30385. +# define _dl_dprintf dprintf
  30386. +# else
  30387. +# define _dl_dprintf(fd, fmt, args...) fprintf(stderr, fmt, ## args)
  30388. +# endif
  30389. +#endif
  30390. #ifndef DL_GET_READY_TO_RUN_EXTRA_PARMS
  30391. # define DL_GET_READY_TO_RUN_EXTRA_PARMS
  30392. @@ -168,4 +182,4 @@
  30393. #include <dl-defs.h>
  30394. #endif
  30395. -#endif /* _LDSO_H_ */
  30396. +#endif /* _LDSO_H */
  30397. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-debug.h uClibc-git/ldso/ldso/arc/dl-debug.h
  30398. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-debug.h 1970-01-01 01:00:00.000000000 +0100
  30399. +++ uClibc-git/ldso/ldso/arc/dl-debug.h 2014-02-03 12:32:56.000000000 +0100
  30400. @@ -0,0 +1,68 @@
  30401. +/*
  30402. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  30403. + *
  30404. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  30405. + */
  30406. +static const char *_dl_reltypes_tab[] =
  30407. +{
  30408. + "R_ARC_NONE", /* 0 */
  30409. + "R_ARC_8",
  30410. + "R_ARC_16",
  30411. + "R_ARC_24",
  30412. + "R_ARC_32",
  30413. + "R_ARC_B26", /* 5 */
  30414. + "R_ARC_B22_PCREL",
  30415. + "R_ARC_H30",
  30416. + "R_ARC_N8",
  30417. + "R_ARC_N16",
  30418. + "R_ARC_N24", /* 10 */
  30419. + "R_ARC_N32",
  30420. + "R_ARC_SDA",
  30421. + "R_ARC_SECTOFF",
  30422. + "R_ARC_S21H_PCREL",
  30423. + "R_ARC_S21W_PCREL", /* 15 */
  30424. + "R_ARC_S25H_PCREL",
  30425. + "R_ARC_S25W_PCREL",
  30426. + "R_ARC_SDA32",
  30427. + "R_ARC_SDA_LDST",
  30428. + "R_ARC_SDA_LDST1", /* 20 */
  30429. + "R_ARC_SDA_LDST2",
  30430. + "R_ARC_SDA16_LD",
  30431. + "R_ARC_SDA16_LD1",
  30432. + "R_ARC_SDA16_LD2",
  30433. + "R_ARC_S13_PCREL", /* 25 */
  30434. + "R_ARC_W",
  30435. + "R_ARC_32_ME",
  30436. + "R_ARC_N32_ME",
  30437. + "R_ARC_SECTOFF_ME",
  30438. + "R_ARC_SDA32_ME", /* 30 */
  30439. + "R_ARC_W_ME",
  30440. + "R_ARC_H30_ME",
  30441. + "R_ARC_SECTOFF_U8",
  30442. + "R_ARC_SECTOFF_S9",
  30443. + "R_AC_SECTOFF_U8", /* 35 */
  30444. + "R_AC_SECTOFF_U8_1",
  30445. + "R_AC_SECTOFF_U8_2",
  30446. + "R_AC_SECTOFF_S9",
  30447. + "R_AC_SECTOFF_S9_1",
  30448. + "R_AC_SECTOFF_S9_2", /* 40 */
  30449. + "R_ARC_SECTOFF_ME_1",
  30450. + "R_ARC_SECTOFF_ME_2",
  30451. + "R_ARC_SECTOFF_1",
  30452. + "R_ARC_SECTOFF_2",
  30453. + "", /* 45 */
  30454. + "",
  30455. + "",
  30456. + "",
  30457. + "",
  30458. + "R_ARC_PC32", /* 50 */
  30459. + "R_ARC_GOTPC32",
  30460. + "R_ARC_PLT32",
  30461. + "R_ARC_COPY",
  30462. + "R_ARC_GLOB_DAT",
  30463. + "R_ARC_JMP_SLOT", /* 55 */
  30464. + "R_ARC_RELATIVE",
  30465. + "R_ARC_GOTOFF",
  30466. + "R_ARC_GOTPC",
  30467. + "R_ARC_GOT32",
  30468. +};
  30469. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-startup.h uClibc-git/ldso/ldso/arc/dl-startup.h
  30470. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-startup.h 1970-01-01 01:00:00.000000000 +0100
  30471. +++ uClibc-git/ldso/ldso/arc/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  30472. @@ -0,0 +1,89 @@
  30473. +/*
  30474. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  30475. + *
  30476. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  30477. + */
  30478. +
  30479. +/*
  30480. + * vineetg: Refactoring/cleanup of loader entry point
  30481. + * Removed 6 useless insns
  30482. + * Joern Improved it even further:
  30483. + * -better insn scheduling
  30484. + * -no need for conditional code for _dl_skip_args
  30485. + * -use of assembler .&2 expressions vs. @gotpc refs (avoids need for GP)
  30486. + *
  30487. + * What this code does:
  30488. + * -ldso starts execution here when kernel returns from execve()
  30489. + * -calls into generic ldso entry point _dl_start( )
  30490. + * -optionally adjusts argc for executable if exec passed as cmd
  30491. + * -calls into app main with address of finaliser
  30492. + */
  30493. +__asm__(
  30494. + ".section .text \n"
  30495. + ".align 4 \n"
  30496. + ".global _start \n"
  30497. + ".hidden _start \n"
  30498. + ".type _start,@function \n"
  30499. +
  30500. + "_start: \n"
  30501. + " ; ldso entry point, returns app entry point \n"
  30502. + " bl.d _dl_start \n"
  30503. + " mov_s r0, sp ; pass ptr to aux vector tbl \n"
  30504. +
  30505. + " ; If ldso ran as cmd with executable file nm as arg \n"
  30506. + " ; skip the extra args calc by dl_start() \n"
  30507. + " ld_s r1, [sp] ; orig argc from aux-vec Tbl \n"
  30508. +#ifdef STAR_9000535888_FIXED
  30509. + " ld r12, [pcl, _dl_skip_args-.+(.&2)] \n"
  30510. +#else
  30511. + " add r12, pcl, _dl_skip_args-.+(.&2) \n"
  30512. + " ld r12, [r12] \n"
  30513. +#endif
  30514. +
  30515. + " add r2, pcl, _dl_fini-.+(.&2) ; finalizer \n"
  30516. +
  30517. + " add2 sp, sp, r12 ; discard argv entries from stack\n"
  30518. + " sub_s r1, r1, r12 ; adjusted argc, on stack \n"
  30519. + " st_s r1, [sp] \n"
  30520. +
  30521. + " j_s.d [r0] ; app entry point \n"
  30522. + " mov_s r0, r2 ; ptr to finalizer _dl_fini \n"
  30523. +
  30524. + ".size _start,.-_start \n"
  30525. + ".previous \n"
  30526. +);
  30527. +
  30528. +/*
  30529. + * Get a pointer to the argv array. On many platforms this can be just
  30530. + * the address if the first argument, on other platforms we need to
  30531. + * do something a little more subtle here.
  30532. + */
  30533. +#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long*) ARGS + 1)
  30534. +
  30535. +/*
  30536. + * Dynamic loader bootstrapping:
  30537. + * Since we don't modify text at runtime, these can only be data relos
  30538. + * (so safe to assume that they are word aligned).
  30539. + * And also they HAVE to be RELATIVE relos only
  30540. + * @RELP is the relo entry being processed
  30541. + * @REL is the pointer to the address we are relocating.
  30542. + * @SYMBOL is the symbol involved in the relocation
  30543. + * @LOAD is the load address.
  30544. + */
  30545. +
  30546. +#define PERFORM_BOOTSTRAP_RELOC(RELP,REL,SYMBOL,LOAD,SYMTAB) \
  30547. +do { \
  30548. + int type = ELF32_R_TYPE((RELP)->r_info); \
  30549. + if (likely(type == R_ARC_RELATIVE)) \
  30550. + *REL += (unsigned long) LOAD; \
  30551. + else \
  30552. + _dl_exit(1); \
  30553. +}while(0)
  30554. +
  30555. +/*
  30556. + * This will go away once we have DT_RELACOUNT
  30557. + */
  30558. +#define ARCH_NEEDS_BOOTSTRAP_RELOCS
  30559. +
  30560. +/* we dont need to spit out argc, argv etc for debugging */
  30561. +#define NO_EARLY_SEND_STDERR 1
  30562. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-syscalls.h uClibc-git/ldso/ldso/arc/dl-syscalls.h
  30563. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-syscalls.h 1970-01-01 01:00:00.000000000 +0100
  30564. +++ uClibc-git/ldso/ldso/arc/dl-syscalls.h 2014-02-03 12:32:56.000000000 +0100
  30565. @@ -0,0 +1,7 @@
  30566. +/*
  30567. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  30568. + *
  30569. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  30570. + */
  30571. +
  30572. +/* stub for arch-specific syscall issues */
  30573. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/dl-sysdep.h uClibc-git/ldso/ldso/arc/dl-sysdep.h
  30574. --- uClibc-0.9.33.2/ldso/ldso/arc/dl-sysdep.h 1970-01-01 01:00:00.000000000 +0100
  30575. +++ uClibc-git/ldso/ldso/arc/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  30576. @@ -0,0 +1,150 @@
  30577. +/*
  30578. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  30579. + *
  30580. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  30581. + */
  30582. +
  30583. +#include "elf.h"
  30584. +
  30585. +/*
  30586. + * Define this if the system uses RELOCA.
  30587. + */
  30588. +#define ELF_USES_RELOCA
  30589. +
  30590. +/*
  30591. + * Dynamic Linking ABI for ARCompact ISA
  30592. + *
  30593. + * PLT
  30594. + * --------------------------------
  30595. + * | ld r11, [pcl, off-to-GOT[1] | 0 (20 bytes)
  30596. + * | | 4
  30597. + * plt0 | ld r10, [pcl, off-to-GOT[2] | 8
  30598. + * | | 12
  30599. + * | j [r10] | 16
  30600. + * --------------------------------
  30601. + * | Base address of GOT | 20
  30602. + * --------------------------------
  30603. + * | ld r12, [pcl, off-to-GOT[3] | 24 (12 bytes each)
  30604. + * plt1 | |
  30605. + * | j_s.d [r12] | 32
  30606. + * | mov_s r12, pcl | 34
  30607. + * --------------------------------
  30608. + * | | 36
  30609. + * ~ ~
  30610. + * ~ ~
  30611. + * | |
  30612. + * --------------------------------
  30613. + *
  30614. + * GOT
  30615. + * --------------
  30616. + * | [0] |
  30617. + * --------------
  30618. + * | [1] | Module info - setup by ldso
  30619. + * --------------
  30620. + * | [2] | resolver entry point
  30621. + * --------------
  30622. + * | [3] |
  30623. + * | ... | Runtime address for function symbols
  30624. + * | [f] |
  30625. + * --------------
  30626. + * | [f+1] |
  30627. + * | ... | Runtime address for data symbols
  30628. + * | [last] |
  30629. + * --------------
  30630. + */
  30631. +
  30632. +/*
  30633. + * Initialization sequence for a GOT.
  30634. + * Caller elf_resolve() seeds @GOT_BASE from DT_PLTGOT - which essentially is
  30635. + * pointer to first PLT entry. The actual GOT base is 5th word in PLT
  30636. + *
  30637. + */
  30638. +#define INIT_GOT(GOT_BASE,MODULE) \
  30639. +do { \
  30640. + unsigned long *__plt_base = (unsigned long *)GOT_BASE; \
  30641. + GOT_BASE = (unsigned long *)(__plt_base[5] + \
  30642. + (unsigned long)MODULE->loadaddr); \
  30643. + GOT_BASE[1] = (unsigned long) MODULE; \
  30644. + GOT_BASE[2] = (unsigned long) _dl_linux_resolve; \
  30645. +} while(0)
  30646. +
  30647. +/* Here we define the magic numbers that this dynamic loader should accept */
  30648. +#define MAGIC1 EM_ARCOMPACT
  30649. +#undef MAGIC2
  30650. +
  30651. +/* Used for error messages */
  30652. +#define ELF_TARGET "ARC"
  30653. +
  30654. +struct elf_resolve;
  30655. +extern unsigned long _dl_linux_resolver(struct elf_resolve * tpnt,
  30656. + unsigned int plt_pc);
  30657. +
  30658. +extern unsigned __udivmodsi4(unsigned, unsigned) attribute_hidden;
  30659. +
  30660. +#define do_rem(result, n, base) ((result) = \
  30661. + \
  30662. + __builtin_constant_p (base) ? (n) % (unsigned) (base) : \
  30663. + __extension__ ({ \
  30664. + register unsigned r1 __asm__ ("r1") = (base); \
  30665. + \
  30666. + __asm__("bl.d @__udivmodsi4` mov r0,%1" \
  30667. + : "=r" (r1) \
  30668. + : "r" (n), "r" (r1) \
  30669. + : "r0", "r2", "r3", "r4", "lp_count", "blink", "cc"); \
  30670. + \
  30671. + r1; \
  30672. + }) \
  30673. +)
  30674. +
  30675. +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
  30676. + PLT entries should not be allowed to define the value.
  30677. + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
  30678. + of the main executable's symbols, as for a COPY reloc. */
  30679. +#define elf_machine_type_class(type) \
  30680. + ((((type) == R_ARC_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) \
  30681. + | (((type) == R_ARC_COPY) * ELF_RTYPE_CLASS_COPY))
  30682. +
  30683. +/*
  30684. + * Get the runtime address of GOT[0]
  30685. + */
  30686. +static __always_inline Elf32_Addr elf_machine_dynamic(void)
  30687. +{
  30688. + Elf32_Addr dyn;
  30689. +
  30690. + __asm__("ld %0,[pcl,_DYNAMIC@gotpc]\n\t" : "=r" (dyn));
  30691. + return dyn;
  30692. +
  30693. +/*
  30694. + * Another way would have been to simply return GP, which due to some
  30695. + * PIC reference would be automatically setup by gcc in caller
  30696. + * register Elf32_Addr *got __asm__ ("gp"); return *got;
  30697. + */
  30698. +}
  30699. +
  30700. +/* Return the run-time load address of the shared object. */
  30701. +static __always_inline Elf32_Addr elf_machine_load_address(void)
  30702. +{
  30703. + /* To find the loadaddr we subtract the runtime addr of any symbol
  30704. + * say _dl_start from it's build-time addr.
  30705. + */
  30706. + Elf32_Addr addr, tmp;
  30707. + __asm__ (
  30708. + "ld %1, [pcl, _dl_start@gotpc] ;build addr of _dl_start \n"
  30709. + "add %0, pcl, _dl_start-.+(.&2) ;runtime addr of _dl_start \n"
  30710. + "sub %0, %0, %1 ;delta \n"
  30711. + : "=&r" (addr), "=r"(tmp)
  30712. + );
  30713. + return addr;
  30714. +}
  30715. +
  30716. +static __always_inline void
  30717. +elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
  30718. + Elf32_Word relative_count)
  30719. +{
  30720. + Elf32_Rel * rpnt = (void *) rel_addr;
  30721. + --rpnt;
  30722. + do {
  30723. + Elf32_Addr *const reloc_addr = (void *) (load_off + (++rpnt)->r_offset);
  30724. + *reloc_addr += load_off;
  30725. + } while (--relative_count);
  30726. +}
  30727. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/elfinterp.c uClibc-git/ldso/ldso/arc/elfinterp.c
  30728. --- uClibc-0.9.33.2/ldso/ldso/arc/elfinterp.c 1970-01-01 01:00:00.000000000 +0100
  30729. +++ uClibc-git/ldso/ldso/arc/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  30730. @@ -0,0 +1,279 @@
  30731. +/*
  30732. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  30733. + *
  30734. + * Lots of code copied from ../i386/elfinterp.c, so:
  30735. + * Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
  30736. + * David Engel, Hongjiu Lu and Mitch D'Souza
  30737. + * Copyright (C) 2001-2002, Erik Andersen
  30738. + * All rights reserved.
  30739. + *
  30740. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  30741. + */
  30742. +#include "ldso.h"
  30743. +
  30744. +#define ARC_PLT_SIZE 12
  30745. +
  30746. +unsigned long
  30747. +_dl_linux_resolver(struct elf_resolve *tpnt, unsigned int plt_pc)
  30748. +{
  30749. + ELF_RELOC *this_reloc, *rel_base;
  30750. + char *strtab, *symname, *new_addr;
  30751. + ElfW(Sym) *symtab;
  30752. + int symtab_index;
  30753. + unsigned int *got_addr;
  30754. + unsigned long plt_base;
  30755. + int plt_idx;
  30756. +
  30757. + /* start of .rela.plt */
  30758. + rel_base = (ELF_RELOC *)(tpnt->dynamic_info[DT_JMPREL]);
  30759. +
  30760. + /* starts of .plt (addr of PLT0) */
  30761. + plt_base = tpnt->dynamic_info[DT_PLTGOT];
  30762. +
  30763. + /*
  30764. + * compute the idx of the yet-unresolved PLT entry in .plt
  30765. + * Same idx will be used to find the relo entry in .rela.plt
  30766. + */
  30767. + plt_idx = (plt_pc - plt_base)/ARC_PLT_SIZE - 2; /* ignoring 2 dummy PLTs */
  30768. +
  30769. + this_reloc = rel_base + plt_idx;
  30770. +
  30771. + symtab_index = ELF_R_SYM(this_reloc->r_info);
  30772. + symtab = (ElfW(Sym) *)(intptr_t) (tpnt->dynamic_info[DT_SYMTAB]);
  30773. + strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]);
  30774. + symname= strtab + symtab[symtab_index].st_name;
  30775. +
  30776. + /* relo-offset to fixup, shd be a .got entry */
  30777. + got_addr = (unsigned int *)(this_reloc->r_offset + tpnt->loadaddr);
  30778. +
  30779. + /* Get the address of the GOT entry */
  30780. + new_addr = _dl_find_hash(symname, &_dl_loaded_modules->symbol_scope, tpnt,
  30781. + ELF_RTYPE_CLASS_PLT, NULL);
  30782. +
  30783. + if (unlikely(!new_addr)) {
  30784. + _dl_dprintf(2, "%s: can't resolve symbol '%s'\n", _dl_progname, symname);
  30785. + _dl_exit(1);
  30786. + }
  30787. +
  30788. +
  30789. +#if defined __SUPPORT_LD_DEBUG__
  30790. + if (_dl_debug_bindings) {
  30791. + _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
  30792. + if (_dl_debug_detail)
  30793. + _dl_dprintf(_dl_debug_file, "\n\tpatched %x ==> %pc @ %pl\n",
  30794. + *got_addr, new_addr, got_addr);
  30795. + }
  30796. +
  30797. + if (!_dl_debug_nofixups)
  30798. + *got_addr = (unsigned int)new_addr;
  30799. +#else
  30800. + /* Update the .got entry with the runtime address of symbol */
  30801. + *got_addr = (unsigned int)new_addr;
  30802. +#endif
  30803. +
  30804. + /*
  30805. + * Return the new addres, where the asm trampoline will jump to
  30806. + * after re-setting up the orig args
  30807. + */
  30808. + return (unsigned long) new_addr;
  30809. +}
  30810. +
  30811. +
  30812. +static int
  30813. +_dl_do_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  30814. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  30815. +{
  30816. + int reloc_type;
  30817. + int symtab_index;
  30818. + char *symname;
  30819. + unsigned long *reloc_addr;
  30820. + unsigned long symbol_addr;
  30821. +#if defined __SUPPORT_LD_DEBUG__
  30822. + unsigned long old_val = 0;
  30823. +#endif
  30824. + struct symbol_ref sym_ref;
  30825. +
  30826. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  30827. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  30828. + symtab_index = ELF_R_SYM(rpnt->r_info);
  30829. + symbol_addr = 0;
  30830. +
  30831. + sym_ref.sym = &symtab[symtab_index];
  30832. + sym_ref.tpnt = NULL;
  30833. +
  30834. +#if defined __SUPPORT_LD_DEBUG__
  30835. + if (reloc_addr)
  30836. + old_val = *reloc_addr;
  30837. +#endif
  30838. +
  30839. + if (symtab_index) {
  30840. + symname = strtab + symtab[symtab_index].st_name;
  30841. + symbol_addr = (unsigned long) _dl_find_hash(symname, scope, tpnt,
  30842. + elf_machine_type_class(reloc_type), &sym_ref);
  30843. +
  30844. + /*
  30845. + * We want to allow undefined references to weak symbols,
  30846. + * this might have been intentional. We should not be linking
  30847. + * local symbols here, so all bases should be covered.
  30848. + */
  30849. +
  30850. + if (unlikely(!symbol_addr
  30851. + && ELF_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK)) {
  30852. + /* Non-fatal if called from dlopen, hence different ret code */
  30853. + return 1;
  30854. + }
  30855. + } else if (reloc_type == R_ARC_RELATIVE ) {
  30856. + *reloc_addr += tpnt->loadaddr;
  30857. + goto log_entry;
  30858. + }
  30859. +
  30860. + switch (reloc_type) {
  30861. + case R_ARC_32:
  30862. + *reloc_addr += symbol_addr + rpnt->r_addend;
  30863. + break;
  30864. + case R_ARC_PC32:
  30865. + *reloc_addr += symbol_addr + rpnt->r_addend - (unsigned long) reloc_addr;
  30866. + break;
  30867. + case R_ARC_GLOB_DAT:
  30868. + case R_ARC_JMP_SLOT:
  30869. + *reloc_addr = symbol_addr;
  30870. + break;
  30871. + case R_ARC_COPY:
  30872. + _dl_memcpy((void *) reloc_addr,(void *) symbol_addr,
  30873. + symtab[symtab_index].st_size);
  30874. + break;
  30875. + default:
  30876. + return -1;
  30877. + }
  30878. +
  30879. +log_entry:
  30880. +#if defined __SUPPORT_LD_DEBUG__
  30881. + if (_dl_debug_detail)
  30882. + _dl_dprintf(_dl_debug_file,"\tpatched: %lx ==> %lx @ %pl: addend %x ",
  30883. + old_val, *reloc_addr, reloc_addr, rpnt->r_addend);
  30884. +#endif
  30885. +
  30886. + return 0;
  30887. +}
  30888. +
  30889. +static int
  30890. +_dl_do_lazy_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  30891. + ELF_RELOC *rpnt)
  30892. +{
  30893. + int reloc_type;
  30894. + unsigned long *reloc_addr;
  30895. +#if defined __SUPPORT_LD_DEBUG__
  30896. + unsigned long old_val;
  30897. +#endif
  30898. +
  30899. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  30900. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  30901. +
  30902. +#if defined __SUPPORT_LD_DEBUG__
  30903. + old_val = *reloc_addr;
  30904. +#endif
  30905. +
  30906. + switch (reloc_type) {
  30907. + case R_ARC_JMP_SLOT:
  30908. + *reloc_addr += tpnt->loadaddr;
  30909. + break;
  30910. + default:
  30911. + return -1;
  30912. + }
  30913. +
  30914. +#if defined __SUPPORT_LD_DEBUG__
  30915. + if (_dl_debug_reloc && _dl_debug_detail)
  30916. + _dl_dprintf(_dl_debug_file, "\tpatched: %lx ==> %lx @ %pl\n",
  30917. + old_val, *reloc_addr, reloc_addr);
  30918. +#endif
  30919. +
  30920. + return 0;
  30921. +}
  30922. +
  30923. +#define ___DO_LAZY 1
  30924. +#define ___DO_NOW 2
  30925. +
  30926. +static int _dl_parse(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  30927. + unsigned long rel_addr, unsigned long rel_size, int type)
  30928. +{
  30929. + unsigned int i;
  30930. + char *strtab;
  30931. + ElfW(Sym) *symtab;
  30932. + ELF_RELOC *rpnt;
  30933. + int symtab_index;
  30934. + int res = 0;
  30935. +
  30936. + /* Now parse the relocation information */
  30937. + rpnt = (ELF_RELOC *)(intptr_t) (rel_addr);
  30938. + rel_size = rel_size / sizeof(ELF_RELOC);
  30939. +
  30940. + symtab = (ElfW(Sym) *)(intptr_t) (tpnt->dynamic_info[DT_SYMTAB]);
  30941. + strtab = (char *) (tpnt->dynamic_info[DT_STRTAB]);
  30942. +
  30943. + for (i = 0; i < rel_size; i++, rpnt++) {
  30944. +
  30945. + symtab_index = ELF_R_SYM(rpnt->r_info);
  30946. +
  30947. + debug_sym(symtab,strtab,symtab_index);
  30948. + debug_reloc(symtab,strtab,rpnt);
  30949. +
  30950. + /* constant propagation subsumes the 'if' */
  30951. + if (type == ___DO_LAZY)
  30952. + res = _dl_do_lazy_reloc(tpnt, scope, rpnt);
  30953. + else
  30954. + res = _dl_do_reloc(tpnt, scope, rpnt, symtab, strtab);
  30955. +
  30956. + if (res != 0)
  30957. + break;
  30958. + }
  30959. +
  30960. + if (unlikely(res != 0)) {
  30961. + if (res < 0) {
  30962. + int reloc_type = ELF_R_TYPE(rpnt->r_info);
  30963. +#if defined __SUPPORT_LD_DEBUG__
  30964. + _dl_dprintf(2, "can't handle reloc type %s\n ",
  30965. + _dl_reltypes(reloc_type));
  30966. +#else
  30967. + _dl_dprintf(2, "can't handle reloc type %x\n",
  30968. + reloc_type);
  30969. +#endif
  30970. + _dl_exit(-res);
  30971. + } else {
  30972. + _dl_dprintf(2, "can't resolve symbol\n");
  30973. + /* Fall thru to return res */
  30974. + }
  30975. + }
  30976. +
  30977. + return res;
  30978. +}
  30979. +
  30980. +void
  30981. +_dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
  30982. + unsigned long rel_addr,
  30983. + unsigned long rel_size)
  30984. +{
  30985. + /* This func is called for processing .rela.plt of loaded module(s)
  30986. + * The relo entries handled are JMP_SLOT type for fixing up .got slots
  30987. + * for external function calls.
  30988. + * This function doesn't resolve the slots: that is done lazily at
  30989. + * runtime. The build linker (at least thats what happens for ARC) had
  30990. + * pre-init the .got slots to point to PLT0. All that is done here is
  30991. + * to fix them up to point to load value of PLT0 (as opposed to the
  30992. + * build value).
  30993. + * On ARC, the loadaddr of dyn exec is zero, thus elfaddr == loadaddr
  30994. + * Thus there is no point in adding "0" to values and un-necessarily
  30995. + * stir up the caches and TLB.
  30996. + * For ldso processing busybox binary, this skips over 380 relo entries
  30997. + */
  30998. + if (rpnt->dyn->loadaddr != 0)
  30999. + _dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, ___DO_LAZY);
  31000. +}
  31001. +
  31002. +int
  31003. +_dl_parse_relocation_information(struct dyn_elf *rpnt,
  31004. + struct r_scope_elem *scope,
  31005. + unsigned long rel_addr,
  31006. + unsigned long rel_size)
  31007. +{
  31008. + return _dl_parse(rpnt->dyn, scope, rel_addr, rel_size, ___DO_NOW);
  31009. +}
  31010. diff -Nur uClibc-0.9.33.2/ldso/ldso/arc/resolve.S uClibc-git/ldso/ldso/arc/resolve.S
  31011. --- uClibc-0.9.33.2/ldso/ldso/arc/resolve.S 1970-01-01 01:00:00.000000000 +0100
  31012. +++ uClibc-git/ldso/ldso/arc/resolve.S 2014-02-03 12:32:56.000000000 +0100
  31013. @@ -0,0 +1,57 @@
  31014. +/*
  31015. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  31016. + *
  31017. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31018. + */
  31019. +
  31020. +#include <sysdep.h>
  31021. +#include <sys/syscall.h>
  31022. +
  31023. +; Save the registers which resolver could possibly clobber
  31024. +; r0-r9: args to the function - symbol being resolved
  31025. +; r10-r12 are already clobbered by PLTn, PLT0 thus neednot be saved
  31026. +
  31027. +.macro SAVE_CALLER_SAVED
  31028. + push_s r0
  31029. + push_s r1
  31030. + push_s r2
  31031. + push_s r3
  31032. + st.a r4, [sp, -4]
  31033. + st.a r5, [sp, -4]
  31034. + st.a r6, [sp, -4]
  31035. + st.a r7, [sp, -4]
  31036. + st.a r8, [sp, -4]
  31037. + st.a r9, [sp, -4]
  31038. + push_s blink
  31039. +.endm
  31040. +
  31041. +.macro RESTORE_CALLER_SAVED_BUT_R0
  31042. + ld.ab blink,[sp, 4]
  31043. + ld.ab r9, [sp, 4]
  31044. + ld.ab r8, [sp, 4]
  31045. + ld.ab r7, [sp, 4]
  31046. + ld.ab r6, [sp, 4]
  31047. + ld.ab r5, [sp, 4]
  31048. + ld.ab r4, [sp, 4]
  31049. + pop_s r3
  31050. + pop_s r2
  31051. + pop_s r1
  31052. +.endm
  31053. +
  31054. +; Upon entry, PLTn, which led us here, sets up the following regs
  31055. +; r11 = Module info (tpnt pointer as expected by resolver)
  31056. +; r12 = PC of the PLTn itself - needed by resolver to find
  31057. +; corresponding .rela.plt entry
  31058. +
  31059. +ENTRY(_dl_linux_resolve)
  31060. + ; args to func being resolved, which resolver might clobber
  31061. + SAVE_CALLER_SAVED
  31062. +
  31063. + mov_s r1, r12
  31064. + bl.d _dl_linux_resolver
  31065. + mov r0, r11
  31066. +
  31067. + RESTORE_CALLER_SAVED_BUT_R0
  31068. + j_s.d [r0] ; r0 has resolved function addr
  31069. + pop_s r0 ; restore first arg to resolved call
  31070. +END(_dl_linux_resolve)
  31071. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/aeabi_read_tp.S uClibc-git/ldso/ldso/arm/aeabi_read_tp.S
  31072. --- uClibc-0.9.33.2/ldso/ldso/arm/aeabi_read_tp.S 2012-05-15 09:20:09.000000000 +0200
  31073. +++ uClibc-git/ldso/ldso/arm/aeabi_read_tp.S 2014-02-03 12:32:56.000000000 +0100
  31074. @@ -29,9 +29,8 @@
  31075. Lesser General Public License for more details.
  31076. You should have received a copy of the GNU Lesser General Public
  31077. - License along with the GNU C Library; if not, write to the Free
  31078. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  31079. - 02111-1307 USA. */
  31080. + License along with the GNU C Library; if not, see
  31081. + <http://www.gnu.org/licenses/>. */
  31082. #include <features.h>
  31083. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/dl-startup.h uClibc-git/ldso/ldso/arm/dl-startup.h
  31084. --- uClibc-0.9.33.2/ldso/ldso/arm/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31085. +++ uClibc-git/ldso/ldso/arm/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31086. @@ -14,6 +14,7 @@
  31087. " .text\n"
  31088. " .globl _start\n"
  31089. " .type _start,%function\n"
  31090. + " .hidden _start\n"
  31091. "_start:\n"
  31092. " @ at start time, all the args are on the stack\n"
  31093. " mov r0, sp\n"
  31094. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/dl-sysdep.h uClibc-git/ldso/ldso/arm/dl-sysdep.h
  31095. --- uClibc-0.9.33.2/ldso/ldso/arm/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  31096. +++ uClibc-git/ldso/ldso/arm/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  31097. @@ -58,11 +58,6 @@
  31098. struct elf_resolve;
  31099. unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry);
  31100. -/* 4096 bytes alignment */
  31101. -#define PAGE_ALIGN 0xfffff000
  31102. -#define ADDR_ALIGN 0xfff
  31103. -#define OFFS_ALIGN 0x7ffff000
  31104. -
  31105. /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
  31106. TLS variable, so undefined references should not be allowed to
  31107. define the value.
  31108. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/elfinterp.c uClibc-git/ldso/ldso/arm/elfinterp.c
  31109. --- uClibc-0.9.33.2/ldso/ldso/arm/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  31110. +++ uClibc-git/ldso/ldso/arm/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31111. @@ -77,9 +77,9 @@
  31112. _dl_exit(1);
  31113. }
  31114. #if defined (__SUPPORT_LD_DEBUG__)
  31115. -#if !defined __SUPPORT_LD_DEBUG_EARLY__
  31116. +# if !defined __SUPPORT_LD_DEBUG_EARLY__
  31117. if ((unsigned long) got_addr < 0x40000000)
  31118. -#endif
  31119. +# endif
  31120. {
  31121. if (_dl_debug_bindings)
  31122. {
  31123. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/resolve.S uClibc-git/ldso/ldso/arm/resolve.S
  31124. --- uClibc-0.9.33.2/ldso/ldso/arm/resolve.S 2012-05-15 09:20:09.000000000 +0200
  31125. +++ uClibc-git/ldso/ldso/arm/resolve.S 2014-02-03 12:32:56.000000000 +0100
  31126. @@ -101,7 +101,7 @@
  31127. .text
  31128. .align 4 @ 16 byte boundary and there are 32 bytes below (arm case)
  31129. - #if !defined(__thumb__) || defined(__thumb2__)
  31130. +#if 1 /*(!defined(__thumb__) || defined __THUMB_INTERWORK__) || defined(__thumb2__)*/
  31131. .arm
  31132. .globl _dl_linux_resolve
  31133. .type _dl_linux_resolve,%function
  31134. diff -Nur uClibc-0.9.33.2/ldso/ldso/arm/thumb_atomics.S uClibc-git/ldso/ldso/arm/thumb_atomics.S
  31135. --- uClibc-0.9.33.2/ldso/ldso/arm/thumb_atomics.S 2012-05-15 09:20:09.000000000 +0200
  31136. +++ uClibc-git/ldso/ldso/arm/thumb_atomics.S 2014-02-03 12:32:56.000000000 +0100
  31137. @@ -29,9 +29,8 @@
  31138. Lesser General Public License for more details.
  31139. You should have received a copy of the GNU Lesser General Public
  31140. - License along with the GNU C Library; if not, write to the Free
  31141. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  31142. - 02111-1307 USA. */
  31143. + License along with the GNU C Library; if not, see
  31144. + <http://www.gnu.org/licenses/>. */
  31145. #include <features.h>
  31146. diff -Nur uClibc-0.9.33.2/ldso/ldso/avr32/dl-startup.h uClibc-git/ldso/ldso/avr32/dl-startup.h
  31147. --- uClibc-0.9.33.2/ldso/ldso/avr32/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31148. +++ uClibc-git/ldso/ldso/avr32/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31149. @@ -12,6 +12,7 @@
  31150. __asm__(" .text\n"
  31151. " .global _start\n"
  31152. " .type _start,@function\n"
  31153. + " .hidden _start\n"
  31154. "_start:\n"
  31155. /* All arguments are on the stack initially */
  31156. " mov r12, sp\n"
  31157. diff -Nur uClibc-0.9.33.2/ldso/ldso/avr32/dl-sysdep.h uClibc-git/ldso/ldso/avr32/dl-sysdep.h
  31158. --- uClibc-0.9.33.2/ldso/ldso/avr32/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  31159. +++ uClibc-git/ldso/ldso/avr32/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  31160. @@ -35,8 +35,6 @@
  31161. GOT_BASE[_i] += (unsigned long)MODULE->loadaddr; \
  31162. } while (0)
  31163. -#define do_rem(result, n, base) ((result) = (n) % (base))
  31164. -
  31165. /* Here we define the magic numbers that this dynamic loader should accept */
  31166. #define MAGIC1 EM_AVR32
  31167. #undef MAGIC2
  31168. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/dl-startup.h uClibc-git/ldso/ldso/bfin/dl-startup.h
  31169. --- uClibc-0.9.33.2/ldso/ldso/bfin/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31170. +++ uClibc-git/ldso/ldso/bfin/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31171. @@ -14,9 +14,8 @@
  31172. Library General Public License for more details.
  31173. You should have received a copy of the GNU Lesser General Public
  31174. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31175. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31176. -USA. */
  31177. +License along with uClibc; see the file COPYING.LIB. If not, see
  31178. +<http://www.gnu.org/licenses/>. */
  31179. /* Any assembly language/system dependent hacks needed to setup
  31180. * boot1.c so it will work as expected and cope with whatever platform
  31181. @@ -40,10 +39,7 @@
  31182. " .text\n"
  31183. " .global __start\n"
  31184. " .type __start,@function\n"
  31185. - /* Build system expects a "_start" for the entry point;
  31186. - provide it as it's free to do so with aliases. */
  31187. - " .set _start, __start\n"
  31188. - " .global _start\n"
  31189. + " .hidden __start\n"
  31190. "__start:\n"
  31191. " call .Lcall\n"
  31192. ".Lcall:\n"
  31193. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/dl-syscalls.h uClibc-git/ldso/ldso/bfin/dl-syscalls.h
  31194. --- uClibc-0.9.33.2/ldso/ldso/bfin/dl-syscalls.h 2012-05-15 09:20:09.000000000 +0200
  31195. +++ uClibc-git/ldso/ldso/bfin/dl-syscalls.h 2014-02-03 12:32:56.000000000 +0100
  31196. @@ -14,9 +14,8 @@
  31197. Library General Public License for more details.
  31198. You should have received a copy of the GNU Lesser General Public
  31199. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31200. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31201. -USA. */
  31202. +License along with uClibc; see the file COPYING.LIB. If not, see
  31203. +<http://www.gnu.org/licenses/>. */
  31204. #ifdef __NR_sram_alloc
  31205. #define __NR__dl_sram_alloc __NR_sram_alloc
  31206. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/elfinterp.c uClibc-git/ldso/ldso/bfin/elfinterp.c
  31207. --- uClibc-0.9.33.2/ldso/ldso/bfin/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  31208. +++ uClibc-git/ldso/ldso/bfin/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31209. @@ -20,9 +20,8 @@
  31210. Library General Public License for more details.
  31211. You should have received a copy of the GNU Lesser General Public
  31212. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31213. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31214. -USA. */
  31215. +License along with uClibc; see the file COPYING.LIB. If not, see
  31216. +<http://www.gnu.org/licenses/>. */
  31217. #include <sys/cdefs.h> /* __attribute_used__ */
  31218. diff -Nur uClibc-0.9.33.2/ldso/ldso/bfin/resolve.S uClibc-git/ldso/ldso/bfin/resolve.S
  31219. --- uClibc-0.9.33.2/ldso/ldso/bfin/resolve.S 2012-05-15 09:20:09.000000000 +0200
  31220. +++ uClibc-git/ldso/ldso/bfin/resolve.S 2014-02-03 12:32:56.000000000 +0100
  31221. @@ -14,9 +14,8 @@
  31222. Library General Public License for more details.
  31223. You should have received a copy of the GNU Lesser General Public
  31224. -License along with uClibc; see the file COPYING.LIB. If not, write to
  31225. -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  31226. -USA. */
  31227. +License along with uClibc; see the file COPYING.LIB. If not, see
  31228. +<http://www.gnu.org/licenses/>. */
  31229. /* The function below is tail-called by resolver stubs when a
  31230. lazily-bound function is called. It must preserve all
  31231. diff -Nur uClibc-0.9.33.2/ldso/ldso/c6x/dl-startup.h uClibc-git/ldso/ldso/c6x/dl-startup.h
  31232. --- uClibc-0.9.33.2/ldso/ldso/c6x/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31233. +++ uClibc-git/ldso/ldso/c6x/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31234. @@ -6,10 +6,9 @@
  31235. *
  31236. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  31237. */
  31238. -
  31239. #undef DL_START
  31240. #define DL_START(X) \
  31241. -int \
  31242. +static void * __attribute_used__ \
  31243. _dl_start (unsigned placeholder, \
  31244. struct elf32_dsbt_loadmap *dl_boot_progmap, \
  31245. struct elf32_dsbt_loadmap *dl_boot_ldsomap, \
  31246. @@ -34,7 +33,6 @@
  31247. * B4 --> executable loadmap address
  31248. * A6 --> interpreter loadmap address
  31249. * B6 --> dynamic section address
  31250. - * B14 --> our DP setup by kernel
  31251. *
  31252. * NB: DSBT index is always 0 for the executable
  31253. * and 1 for the interpreter
  31254. @@ -42,7 +40,76 @@
  31255. __asm__(" .text\n"
  31256. ".globl _start\n"
  31257. + ".hidden _start\n"
  31258. "_start:\n"
  31259. + /* Find interpreter DSBT base in dynamic section */
  31260. + " MV .S2 B6,B2\n"
  31261. + " || ADD .D1X B6,4,A2\n"
  31262. + " LDW .D2T2 *B2++[2],B0\n"
  31263. + " || LDW .D1T1 *A2++[2],A0\n"
  31264. + " MVKL .S2 " __stringify(DT_C6000_DSBT_BASE) ",B7\n"
  31265. + " MVKH .S2 " __stringify(DT_C6000_DSBT_BASE) ",B7\n"
  31266. + " NOP\n"
  31267. + " NOP\n"
  31268. + /*
  31269. + * B0 now holds dynamic tag and A0 holds tag value.
  31270. + * Loop through looking for DSBT base tag
  31271. + */
  31272. + "0:\n"
  31273. + " [B0] CMPEQ .L2 B0,B7,B1\n"
  31274. + " || [!B0] MVK .S2 1,B1\n"
  31275. + " [!B1] BNOP .S1 0b,5\n"
  31276. + " ||[!B1] LDW .D2T2 *B2++[2],B0\n"
  31277. + " ||[!B1] LDW .D1T1 *A2++[2],A0\n"
  31278. + /*
  31279. + * DSBT base in A0 needs to be relocated.
  31280. + * Search through our loadmap to find where it got loaded.
  31281. + *
  31282. + * struct elf32_dsbt_loadmap {
  31283. + * Elf32_Half version;
  31284. + * Elf32_Half nsegs;
  31285. + * struct {
  31286. + * Elf32_Addr addr;
  31287. + * Elf32_Addr p_vaddr;
  31288. + * Elf32_Word p_memsz;
  31289. + * } segments[];
  31290. + * }
  31291. + *
  31292. + */
  31293. + " MV .S1 A6,A1\n"
  31294. + " [!A1] MV .S1X B4,A1\n"
  31295. + " ADD .D1 A1,2,A3\n"
  31296. + " LDHU .D1T2 *A3++[1],B0\n" /* nsegs */
  31297. + " LDW .D1T1 *A3++[1],A10\n" /* addr */
  31298. + " LDW .D1T1 *A3++[1],A11\n" /* p_vaddr */
  31299. + " LDW .D1T1 *A3++[1],A12\n" /* p_memsz */
  31300. + " NOP\n"
  31301. + " NOP\n"
  31302. + /*
  31303. + * Here we have:
  31304. + * B0 -> number of segments to search.
  31305. + * A3 -> pointer to next segment to check
  31306. + * A10 -> segment load address
  31307. + * A11 -> ELF segment virt address
  31308. + * A12 -> ELF segment size
  31309. + */
  31310. + "0:\n"
  31311. + " [!B0] B .S2 0f\n"
  31312. + " SUB .D2 B0,1,B0\n"
  31313. + " CMPLTU .L1 A0,A11,A13\n"
  31314. + " || SUB .S1 A12,1,A12\n"
  31315. + " ADD .D1 A11,A12,A12\n"
  31316. + " CMPGTU .L1 A0,A12,A14\n"
  31317. + " OR .L1 A13,A14,A2\n"
  31318. + " [A2] B .S2 0b\n"
  31319. + " || [!A2] SUB .L1 A0,A11,A0\n"
  31320. + " [B0] LDW .D1T1 *A3++[1],A10\n" /* addr */
  31321. + " || [!A2] ADD .L1 A0,A10,A0\n"
  31322. + " [B0] LDW .D1T1 *A3++[1],A11\n" /* p_vaddr */
  31323. + " [B0] LDW .D1T1 *A3++[1],A12\n" /* p_memsz */
  31324. + " MV .S2X A0,B14\n"
  31325. + " NOP\n"
  31326. + "0:\n"
  31327. " B .S2 _dl_start\n"
  31328. " STW .D2T2 B14, *+B14[1]\n"
  31329. " ADD .D1X B15,8,A8\n"
  31330. diff -Nur uClibc-0.9.33.2/ldso/ldso/c6x/dl-sysdep.h uClibc-git/ldso/ldso/c6x/dl-sysdep.h
  31331. --- uClibc-0.9.33.2/ldso/ldso/c6x/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  31332. +++ uClibc-git/ldso/ldso/c6x/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  31333. @@ -52,13 +52,13 @@
  31334. struct funcdesc_ht;
  31335. struct elf32_dsbt_loadaddr;
  31336. -/* We must force strings used early in the bootstrap into the text
  31337. - segment (const data), such that they are referenced relative to
  31338. - the DP register rather than through the GOT which will not have
  31339. - been relocated when these are used. */
  31340. +/* Current toolchains access constant strings via unrelocated GOT
  31341. + entries. Fortunately, we have enough in place to just call the
  31342. + relocation function early on. */
  31343. #undef SEND_EARLY_STDERR
  31344. #define SEND_EARLY_STDERR(S) \
  31345. - do { static char __s[] = (S); SEND_STDERR (__s); } while (0)
  31346. + do { char *__p = __reloc_pointer((S), dl_boot_ldsomap?:dl_boot_progmap);\
  31347. + SEND_STDERR (__p); } while (0)
  31348. #define DL_LOADADDR_TYPE struct elf32_dsbt_loadaddr
  31349. @@ -114,7 +114,7 @@
  31350. (__dl_loadaddr_unmap ((LIB)->loadaddr))
  31351. #define DL_LOADADDR_BASE(LOADADDR) \
  31352. - ((LOADADDR).map->dsbt_table)
  31353. + ((LOADADDR).map)
  31354. #define DL_ADDR_IN_LOADADDR(ADDR, TPNT, TFROM) \
  31355. (! (TFROM) && __dl_addr_in_loadaddr ((void*)(ADDR), (TPNT)->loadaddr))
  31356. @@ -150,18 +150,28 @@
  31357. /*
  31358. - * Compute the GOT address.
  31359. - * Also setup program and interpreter DSBT table entries.
  31360. + * C6X doesn't really need the GOT here.
  31361. + * The GOT is placed just past the DSBT table, so we could find it by
  31362. + * using the DSBT register + table size found in the dynamic section.
  31363. + *
  31364. + * do { \
  31365. + * unsigned long *ldso_dsbt; \
  31366. + * ElfW(Dyn) *d = dl_boot_ldso_dyn_pointer; \
  31367. + * while (d->d_tag != DT_NULL) { \
  31368. + * if (d->d_tag == DT_C6000_DSBT_SIZE) { \
  31369. + * __asm__ (" MV .S2 B14,%0\n" \
  31370. + * : "=b" (ldso_dsbt)); \
  31371. + * (GOT) = ldso_dsbt + d->d_un.d_val; \
  31372. + * break; \
  31373. + * } \
  31374. + * d++; \
  31375. + * } \
  31376. + * } while(0)
  31377. + *
  31378. + * Instead, just point it to the DSBT table to avoid unused variable warning.
  31379. */
  31380. #define DL_BOOT_COMPUTE_GOT(GOT) \
  31381. - do { \
  31382. - unsigned long *ldso_dsbt, *prog_dsbt; \
  31383. - ldso_dsbt = dl_boot_ldsomap->dsbt_table; \
  31384. - prog_dsbt = dl_boot_progmap->dsbt_table; \
  31385. - ldso_dsbt[0] = prog_dsbt[0] = (unsigned long)prog_dsbt; \
  31386. - ldso_dsbt[1] = prog_dsbt[1] = (unsigned long)ldso_dsbt; \
  31387. - (GOT) = ldso_dsbt + dl_boot_ldsomap->dsbt_size; \
  31388. - } while(0)
  31389. + __asm__ (" MV .S2 B14,%0\n" : "=b" (GOT))
  31390. #define DL_BOOT_COMPUTE_DYN(dpnt, got, load_addr) \
  31391. ((dpnt) = dl_boot_ldso_dyn_pointer)
  31392. @@ -186,12 +196,9 @@
  31393. # undef __USE_GNU
  31394. #endif
  31395. -static __always_inline Elf32_Addr
  31396. -elf_machine_load_address (void)
  31397. -{
  31398. - /* this is never an issue on DSBT systems */
  31399. - return 0;
  31400. -}
  31401. +/* we need this for __LDSO_STANDALONE_SUPPORT__ */
  31402. +#define elf_machine_load_address() \
  31403. + (dl_boot_ldsomap ?: dl_boot_progmap)->segs[0].addr
  31404. static __always_inline void
  31405. elf_machine_relative (DL_LOADADDR_TYPE load_off, const Elf32_Addr rel_addr,
  31406. diff -Nur uClibc-0.9.33.2/ldso/ldso/c6x/elfinterp.c uClibc-git/ldso/ldso/c6x/elfinterp.c
  31407. --- uClibc-0.9.33.2/ldso/ldso/c6x/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  31408. +++ uClibc-git/ldso/ldso/c6x/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31409. @@ -69,14 +69,12 @@
  31410. got_addr = (char **) DL_RELOC_ADDR(tpnt->loadaddr, this_reloc->r_offset);
  31411. /* Get the address to be used to fill in the GOT entry. */
  31412. - new_addr = _dl_find_hash(symname, tpnt->symbol_scope, tpnt,
  31413. - ELF_RTYPE_CLASS_PLT, NULL);
  31414. + new_addr = _dl_find_hash(symname, &_dl_loaded_modules->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT, NULL);
  31415. if (unlikely(!new_addr)) {
  31416. _dl_dprintf(2, "%s: can't resolve symbol '%s' in lib '%s'.\n", _dl_progname, symname, tpnt->libname);
  31417. _dl_exit(1);
  31418. }
  31419. -
  31420. #if defined (__SUPPORT_LD_DEBUG__)
  31421. if (_dl_debug_bindings) {
  31422. _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
  31423. @@ -96,9 +94,9 @@
  31424. }
  31425. static int
  31426. -_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
  31427. +_dl_parse(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  31428. unsigned long rel_addr, unsigned long rel_size,
  31429. - int (*reloc_fnc) (struct elf_resolve *tpnt, struct dyn_elf *scope,
  31430. + int (*reloc_fnc) (struct elf_resolve *tpnt, struct r_scope_elem *scope,
  31431. ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab))
  31432. {
  31433. unsigned int i;
  31434. @@ -148,7 +146,7 @@
  31435. }
  31436. static int
  31437. -_dl_do_reloc (struct elf_resolve *tpnt,struct dyn_elf *scope,
  31438. +_dl_do_reloc (struct elf_resolve *tpnt,struct r_scope_elem *scope,
  31439. ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  31440. {
  31441. int reloc_type;
  31442. @@ -157,7 +155,9 @@
  31443. unsigned long *reloc_addr;
  31444. unsigned long symbol_addr, sym_val;
  31445. long reloc_addend;
  31446. - unsigned long old_val, new_val;
  31447. + unsigned long old_val, new_val = 0;
  31448. + struct symbol_ref sym_ref;
  31449. + struct elf_resolve *symbol_tpnt;
  31450. reloc_addr = (unsigned long *)(intptr_t)
  31451. DL_RELOC_ADDR (tpnt->loadaddr, rpnt->r_offset);
  31452. @@ -167,14 +167,17 @@
  31453. symtab_index = ELF_R_SYM(rpnt->r_info);
  31454. symbol_addr = 0;
  31455. symname = strtab + symtab[symtab_index].st_name;
  31456. + sym_ref.sym = &symtab[symtab_index];
  31457. + sym_ref.tpnt = NULL;
  31458. if (ELF_ST_BIND (symtab[symtab_index].st_info) == STB_LOCAL) {
  31459. symbol_addr = (unsigned long)
  31460. DL_RELOC_ADDR (tpnt->loadaddr, symtab[symtab_index].st_value);
  31461. + symbol_tpnt = tpnt;
  31462. } else {
  31463. - symbol_addr = (unsigned long) _dl_find_hash(strtab + symtab[symtab_index].st_name,
  31464. - scope, tpnt, elf_machine_type_class(reloc_type),
  31465. - NULL);
  31466. + symbol_addr = (unsigned long) _dl_find_hash(symname,
  31467. + scope, NULL, elf_machine_type_class(reloc_type),
  31468. + &sym_ref);
  31469. /*
  31470. * We want to allow undefined references to weak symbols - this might
  31471. * have been intentional. We should not be linking local symbols
  31472. @@ -186,6 +189,7 @@
  31473. _dl_progname, strtab + symtab[symtab_index].st_name);
  31474. _dl_exit (1);
  31475. }
  31476. + symbol_tpnt = sym_ref.tpnt;
  31477. }
  31478. old_val = *reloc_addr;
  31479. sym_val = symbol_addr + reloc_addend;
  31480. @@ -199,7 +203,7 @@
  31481. *reloc_addr = sym_val;
  31482. break;
  31483. case R_C6000_DSBT_INDEX:
  31484. - new_val = (old_val & ~0x007fff00) | ((tpnt->loadaddr.map->dsbt_index & 0x7fff) << 8);
  31485. + new_val = (old_val & ~0x007fff00) | ((symbol_tpnt->dsbt_index & 0x7fff) << 8);
  31486. *reloc_addr = new_val;
  31487. break;
  31488. case R_C6000_ABS_L16:
  31489. @@ -242,7 +246,7 @@
  31490. static int
  31491. _dl_do_lazy_reloc (struct elf_resolve *tpnt,
  31492. - struct dyn_elf *scope attribute_unused,
  31493. + struct r_scope_elem *scope attribute_unused,
  31494. ELF_RELOC *rpnt, ElfW(Sym) *symtab attribute_unused,
  31495. char *strtab attribute_unused)
  31496. {
  31497. @@ -283,9 +287,9 @@
  31498. int
  31499. _dl_parse_relocation_information
  31500. -(struct dyn_elf *rpnt, unsigned long rel_addr, unsigned long rel_size)
  31501. +(struct dyn_elf *rpnt, struct r_scope_elem *scope, unsigned long rel_addr, unsigned long rel_size)
  31502. {
  31503. - return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size, _dl_do_reloc);
  31504. + return _dl_parse(rpnt->dyn, scope, rel_addr, rel_size, _dl_do_reloc);
  31505. }
  31506. /* We don't have copy relocs. */
  31507. diff -Nur uClibc-0.9.33.2/ldso/ldso/cris/dl-startup.h uClibc-git/ldso/ldso/cris/dl-startup.h
  31508. --- uClibc-0.9.33.2/ldso/ldso/cris/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31509. +++ uClibc-git/ldso/ldso/cris/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31510. @@ -10,6 +10,7 @@
  31511. " .text\n" \
  31512. " .globl _start\n" \
  31513. " .type _start,@function\n" \
  31514. +" .hidden _start\n" \
  31515. "_start:\n" \
  31516. " move.d $sp,$r10\n" \
  31517. " lapc _dl_start,$r9\n" \
  31518. @@ -28,6 +29,7 @@
  31519. " .text\n" \
  31520. " .globl _start\n" \
  31521. " .type _start,@function\n" \
  31522. +" .hidden _start\n" \
  31523. "_start:\n" \
  31524. " move.d $sp,$r10\n" \
  31525. " move.d $pc,$r9\n" \
  31526. diff -Nur uClibc-0.9.33.2/ldso/ldso/dl-elf.c uClibc-git/ldso/ldso/dl-elf.c
  31527. --- uClibc-0.9.33.2/ldso/ldso/dl-elf.c 2012-05-15 09:20:09.000000000 +0200
  31528. +++ uClibc-git/ldso/ldso/dl-elf.c 2014-02-03 12:32:56.000000000 +0100
  31529. @@ -174,8 +174,11 @@
  31530. _dl_strcpy(mylibname, "."); /* Assume current dir if empty path */
  31531. _dl_strcat(mylibname, "/");
  31532. _dl_strcat(mylibname, name);
  31533. - if ((tpnt = _dl_load_elf_shared_library(rflags, rpnt, mylibname)) != NULL)
  31534. - return tpnt;
  31535. +#ifdef __LDSO_SAFE_RUNPATH__
  31536. + if (*mylibname == '/')
  31537. +#endif
  31538. + if ((tpnt = _dl_load_elf_shared_library(rflags, rpnt, mylibname)) != NULL)
  31539. + return tpnt;
  31540. path_n = path+1;
  31541. }
  31542. path++;
  31543. @@ -500,7 +503,7 @@
  31544. return NULL;
  31545. }
  31546. header = _dl_mmap((void *) 0, _dl_pagesize, PROT_READ | PROT_WRITE,
  31547. - MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0);
  31548. + MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZED, -1, 0);
  31549. if (_dl_mmap_check_error(header)) {
  31550. _dl_dprintf(2, "%s:%i: can't map '%s'\n", _dl_progname, __LINE__, libname);
  31551. _dl_internal_error_number = LD_ERROR_MMAP_FAILED;
  31552. @@ -739,7 +742,7 @@
  31553. }
  31554. }
  31555. #else
  31556. - _dl_dprintf(_dl_debug_file, "Can't modify %s's text section."
  31557. + _dl_dprintf(2, "Can't modify %s's text section."
  31558. " Use GCC option -fPIC for shared objects, please.\n",
  31559. libname);
  31560. _dl_exit(1);
  31561. @@ -791,7 +794,7 @@
  31562. #endif
  31563. {
  31564. # ifdef __SUPPORT_LD_DEBUG_EARLY__
  31565. - unsigned int tmp = (unsigned int) tpnt->l_tls_initimage;
  31566. + char *tmp = (char *) tpnt->l_tls_initimage;
  31567. tpnt->l_tls_initimage = (char *) tlsppnt->p_vaddr + tpnt->loadaddr;
  31568. _dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n", tmp, tpnt->l_tls_initimage, tpnt->l_tls_initimage_size);
  31569. tmp = 0;
  31570. @@ -851,10 +854,15 @@
  31571. /* Handle DSBT initialization */
  31572. {
  31573. struct elf_resolve *t, *ref;
  31574. - int idx = tpnt->loadaddr.map->dsbt_index;
  31575. - unsigned *dsbt = tpnt->loadaddr.map->dsbt_table;
  31576. + int idx = tpnt->dsbt_index;
  31577. + void **dsbt = tpnt->dsbt_table;
  31578. - if (idx == 0) {
  31579. + /*
  31580. + * It is okay (required actually) to have zero idx for an executable.
  31581. + * This is the case when running ldso standalone and the program
  31582. + * is being mapped in via _dl_load_shared_library().
  31583. + */
  31584. + if (idx == 0 && tpnt->libtype != elf_executable) {
  31585. if (!dynamic_info[DT_TEXTREL]) {
  31586. /* This DSO has not been assigned an index. */
  31587. _dl_dprintf(2, "%s: '%s' is missing a dsbt index assignment!\n",
  31588. @@ -869,9 +877,9 @@
  31589. break;
  31590. }
  31591. }
  31592. - idx = tpnt->loadaddr.map->dsbt_size;
  31593. + idx = tpnt->dsbt_size;
  31594. while (idx-- > 0)
  31595. - if (!ref || ref->loadaddr.map->dsbt_table[idx] == NULL)
  31596. + if (!ref || ref->dsbt_table[idx] == NULL)
  31597. break;
  31598. if (idx <= 0) {
  31599. _dl_dprintf(2, "%s: '%s' caused DSBT table overflow!\n",
  31600. @@ -880,43 +888,36 @@
  31601. }
  31602. _dl_if_debug_dprint("\n\tfile='%s'; assigned index %d\n",
  31603. libname, idx);
  31604. - tpnt->loadaddr.map->dsbt_index = idx;
  31605. + tpnt->dsbt_index = idx;
  31606. + }
  31607. + /* make sure index is not already used */
  31608. + if (_dl_ldso_dsbt[idx]) {
  31609. + struct elf_resolve *dup;
  31610. + const char *dup_name;
  31611. +
  31612. + for (dup = _dl_loaded_modules; dup; dup = dup->next)
  31613. + if (dup != tpnt && dup->dsbt_index == idx)
  31614. + break;
  31615. + if (dup)
  31616. + dup_name = dup->libname;
  31617. + else if (idx == 1)
  31618. + dup_name = "runtime linker";
  31619. + else
  31620. + dup_name = "unknown library";
  31621. + _dl_dprintf(2, "%s: '%s' dsbt index %d already used by %s!\n",
  31622. + _dl_progname, libname, idx, dup_name);
  31623. + _dl_exit(1);
  31624. }
  31625. /*
  31626. * Setup dsbt slot for this module in dsbt of all modules.
  31627. */
  31628. - ref = NULL;
  31629. - for (t = _dl_loaded_modules; t; t = t->next) {
  31630. - /* find a dsbt table from another module */
  31631. - if (ref == NULL && t != tpnt) {
  31632. - ref = t;
  31633. -
  31634. - /* make sure index is not already used */
  31635. - if (t->loadaddr.map->dsbt_table[idx]) {
  31636. - struct elf_resolve *dup;
  31637. - char *dup_name;
  31638. -
  31639. - for (dup = _dl_loaded_modules; dup; dup = dup->next)
  31640. - if (dup != tpnt && dup->loadaddr.map->dsbt_index == idx)
  31641. - break;
  31642. - if (dup)
  31643. - dup_name = dup->libname;
  31644. - else if (idx == 1)
  31645. - dup_name = "runtime linker";
  31646. - else
  31647. - dup_name = "unknown library";
  31648. - _dl_dprintf(2, "%s: '%s' dsbt index %d already used by %s!\n",
  31649. - _dl_progname, libname, idx, dup_name);
  31650. - _dl_exit(1);
  31651. - }
  31652. - }
  31653. - t->loadaddr.map->dsbt_table[idx] = (unsigned)dsbt;
  31654. - }
  31655. - if (ref)
  31656. - _dl_memcpy(dsbt, ref->loadaddr.map->dsbt_table,
  31657. - tpnt->loadaddr.map->dsbt_size * sizeof(unsigned *));
  31658. + for (t = _dl_loaded_modules; t; t = t->next)
  31659. + t->dsbt_table[idx] = dsbt;
  31660. + _dl_ldso_dsbt[idx] = dsbt;
  31661. + _dl_memcpy(dsbt, _dl_ldso_dsbt,
  31662. + tpnt->dsbt_size * sizeof(tpnt->dsbt_table[0]));
  31663. }
  31664. #endif
  31665. _dl_if_debug_dprint("\n\tfile='%s'; generating link map\n", libname);
  31666. @@ -1006,6 +1007,7 @@
  31667. return goof;
  31668. }
  31669. +#ifdef IS_IN_rtld
  31670. /* Minimal printf which handles only %s, %d, and %x */
  31671. void _dl_dprintf(int fd, const char *fmt, ...)
  31672. {
  31673. @@ -1071,7 +1073,7 @@
  31674. break;
  31675. }
  31676. case 'x':
  31677. - case 'X':
  31678. + case 'p':
  31679. {
  31680. char tmp[22];
  31681. #if __WORDSIZE > 32
  31682. @@ -1108,6 +1110,7 @@
  31683. _dl_strcpy(retval, string);
  31684. return retval;
  31685. }
  31686. +#endif
  31687. unsigned int _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[],
  31688. void *debug_addr, DL_LOADADDR_TYPE load_off)
  31689. diff -Nur uClibc-0.9.33.2/ldso/ldso/dl-hash.c uClibc-git/ldso/ldso/dl-hash.c
  31690. --- uClibc-0.9.33.2/ldso/ldso/dl-hash.c 2012-05-15 09:20:09.000000000 +0200
  31691. +++ uClibc-git/ldso/ldso/dl-hash.c 2014-02-03 12:32:56.000000000 +0100
  31692. @@ -115,6 +115,15 @@
  31693. tpnt->dynamic_addr = (ElfW(Dyn) *)dynamic_addr;
  31694. tpnt->libtype = loaded_file;
  31695. +#ifdef __DSBT__
  31696. + if (dynamic_info[DT_DSBT_BASE_IDX] != 0)
  31697. + tpnt->dsbt_table = (void *)dynamic_info[DT_DSBT_BASE_IDX];
  31698. + if (dynamic_info[DT_DSBT_SIZE_IDX] != 0)
  31699. + tpnt->dsbt_size = dynamic_info[DT_DSBT_SIZE_IDX];
  31700. + if (dynamic_info[DT_DSBT_INDEX_IDX] != 0)
  31701. + tpnt->dsbt_index = dynamic_info[DT_DSBT_INDEX_IDX];
  31702. +#endif /* __DSBT__ */
  31703. +
  31704. #ifdef __LDSO_GNU_HASH_SUPPORT__
  31705. if (dynamic_info[DT_GNU_HASH_IDX] != 0) {
  31706. Elf32_Word *hash32 = (Elf_Symndx*)dynamic_info[DT_GNU_HASH_IDX];
  31707. @@ -355,7 +364,6 @@
  31708. #if defined(USE_TLS) && USE_TLS
  31709. if (ELF_ST_TYPE(sym->st_info) == STT_TLS) {
  31710. _dl_assert(sym_ref != NULL);
  31711. - sym_ref->tpnt = tpnt;
  31712. return (char *)sym->st_value;
  31713. }
  31714. #endif
  31715. diff -Nur uClibc-0.9.33.2/ldso/ldso/dl-tls.c uClibc-git/ldso/ldso/dl-tls.c
  31716. --- uClibc-0.9.33.2/ldso/ldso/dl-tls.c 2012-05-15 09:20:09.000000000 +0200
  31717. +++ uClibc-git/ldso/ldso/dl-tls.c 2014-02-03 12:32:56.000000000 +0100
  31718. @@ -922,8 +922,7 @@
  31719. generation. */
  31720. ++_dl_tls_generation;
  31721. - _dl_dprintf (_dl_debug_file,
  31722. - "cannot create TLS data structures: ABORT\n");
  31723. + _dl_dprintf(2, "cannot create TLS data structures: ABORT\n");
  31724. _dl_exit (127);
  31725. }
  31726. diff -Nur uClibc-0.9.33.2/ldso/ldso/i386/dl-startup.h uClibc-git/ldso/ldso/i386/dl-startup.h
  31727. --- uClibc-0.9.33.2/ldso/ldso/i386/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31728. +++ uClibc-git/ldso/ldso/i386/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31729. @@ -7,6 +7,7 @@
  31730. " .text\n"
  31731. " .globl _start\n"
  31732. " .type _start,@function\n"
  31733. + " .hidden _start\n"
  31734. "_start:\n"
  31735. " call _dl_start\n"
  31736. " # Save the user entry point address in %edi.\n"
  31737. diff -Nur uClibc-0.9.33.2/ldso/ldso/ldso.c uClibc-git/ldso/ldso/ldso.c
  31738. --- uClibc-0.9.33.2/ldso/ldso/ldso.c 2012-05-15 09:20:09.000000000 +0200
  31739. +++ uClibc-git/ldso/ldso/ldso.c 2014-02-03 12:32:56.000000000 +0100
  31740. @@ -64,7 +64,7 @@
  31741. bool _dl_verbose = true; /* On by default */
  31742. bool prelinked = false;
  31743. #endif
  31744. -static int _dl_secure = 1; /* Are we dealing with setuid stuff? */
  31745. +int _dl_secure = 1; /* Are we dealing with setuid stuff? */
  31746. #ifdef __SUPPORT_LD_DEBUG__
  31747. char *_dl_debug = NULL;
  31748. @@ -77,17 +77,11 @@
  31749. int _dl_debug_file = 2;
  31750. #endif
  31751. -#if defined (__LDSO_STANDALONE_SUPPORT__) && defined (__sh__)
  31752. -/* Not hidden, needed for standalone execution. */
  31753. -/*
  31754. - * FIXME: align dl_start for SH to other archs so that we can keep this symbol
  31755. - * hidden and we don't need to handle in __uClibc_main
  31756. - */
  31757. +#ifdef __DSBT__
  31758. +void **_dl_ldso_dsbt = NULL;
  31759. +#endif
  31760. -unsigned long _dl_skip_args = 0;
  31761. -#else
  31762. unsigned long attribute_hidden _dl_skip_args = 0;
  31763. -#endif
  31764. const char *_dl_progname = UCLIBC_LDSO; /* The name of the executable being run */
  31765. #include "dl-startup.c"
  31766. @@ -245,9 +239,9 @@
  31767. _dl_debug_early("mmapping more memory\n");
  31768. _dl_mmap_zero = _dl_malloc_addr = _dl_mmap((void *) 0, rounded_size,
  31769. - PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0);
  31770. + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZED, -1, 0);
  31771. if (_dl_mmap_check_error(_dl_mmap_zero)) {
  31772. - _dl_dprintf(_dl_debug_file, "%s: mmap of a spare page failed!\n", _dl_progname);
  31773. + _dl_dprintf(2, "%s: mmap of a spare page failed!\n", _dl_progname);
  31774. _dl_exit(20);
  31775. }
  31776. }
  31777. @@ -464,9 +458,14 @@
  31778. _dl_progname = argv[0];
  31779. }
  31780. +#ifdef __DSBT__
  31781. + _dl_ldso_dsbt = (void *)tpnt->dynamic_info[DT_DSBT_BASE_IDX];
  31782. + _dl_ldso_dsbt[tpnt->dynamic_info[DT_DSBT_INDEX_IDX]] = _dl_ldso_dsbt;
  31783. +#endif
  31784. +
  31785. #ifndef __LDSO_STANDALONE_SUPPORT__
  31786. if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) {
  31787. - _dl_dprintf(_dl_debug_file, "Standalone execution is not enabled\n");
  31788. + _dl_dprintf(2, "Standalone execution is not enabled\n");
  31789. _dl_exit(1);
  31790. }
  31791. #endif
  31792. @@ -504,15 +503,15 @@
  31793. const char *nextp;
  31794. _dl_secure = 1;
  31795. +#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
  31796. + _dl_preload = _dl_getenv("LD_PRELOAD", envp);
  31797. +#endif
  31798. nextp = unsecure_envvars;
  31799. do {
  31800. _dl_unsetenv (nextp, envp);
  31801. /* We could use rawmemchr but this need not be fast. */
  31802. nextp = _dl_strchr(nextp, '\0') + 1;
  31803. } while (*nextp != '\0');
  31804. -#ifdef __LDSO_PRELOAD_ENV_SUPPORT__
  31805. - _dl_preload = NULL;
  31806. -#endif
  31807. #ifdef __LDSO_LD_LIBRARY_PATH__
  31808. _dl_library_path = NULL;
  31809. #endif
  31810. @@ -580,7 +579,7 @@
  31811. */
  31812. app_tpnt = _dl_load_elf_shared_library(_dl_secure, &rpnt, _dl_progname);
  31813. if (!app_tpnt) {
  31814. - _dl_dprintf(_dl_debug_file, "can't load '%s'\n", _dl_progname);
  31815. + _dl_dprintf(2, "can't load '%s'\n", _dl_progname);
  31816. _dl_exit(16);
  31817. }
  31818. /*
  31819. @@ -675,7 +674,7 @@
  31820. }
  31821. #else
  31822. if (app_tpnt->dynamic_info[DT_TEXTREL]) {
  31823. - _dl_dprintf(_dl_debug_file, "Can't modify application's text section; use the GCC option -fPIE for position-independent executables.\n");
  31824. + _dl_dprintf(2, "Can't modify application's text section; use the GCC option -fPIE for position-independent executables.\n");
  31825. _dl_exit(1);
  31826. }
  31827. #endif
  31828. @@ -698,6 +697,11 @@
  31829. app_tpnt->mapaddr = app_mapaddr;
  31830. app_tpnt->rtld_flags = unlazy | RTLD_GLOBAL;
  31831. app_tpnt->usage_count++;
  31832. +#ifdef __DSBT__
  31833. + _dl_ldso_dsbt[0] = app_tpnt->dsbt_table;
  31834. + _dl_memcpy(app_tpnt->dsbt_table, _dl_ldso_dsbt,
  31835. + app_tpnt->dsbt_size * sizeof(tpnt->dsbt_table[0]));
  31836. +#endif
  31837. lpnt = (unsigned long *) (app_tpnt->dynamic_info[DT_PLTGOT]);
  31838. #ifdef ALLOW_ZERO_PLTGOT
  31839. if (lpnt)
  31840. @@ -733,7 +737,7 @@
  31841. _dl_debug_early("Found TLS header for application program\n");
  31842. break;
  31843. #else
  31844. - _dl_dprintf(_dl_debug_file, "Program uses unsupported TLS data!\n");
  31845. + _dl_dprintf(2, "Program uses unsupported TLS data!\n");
  31846. _dl_exit(1);
  31847. #endif
  31848. }
  31849. @@ -747,7 +751,8 @@
  31850. * case the executable is actually an ET_DYN object.
  31851. */
  31852. if (app_tpnt->l_tls_initimage != NULL) {
  31853. - unsigned int tmp = (unsigned int) app_tpnt->l_tls_initimage;
  31854. + char *tmp attribute_unused =
  31855. + (char *) app_tpnt->l_tls_initimage;
  31856. app_tpnt->l_tls_initimage =
  31857. (char *) app_tpnt->l_tls_initimage + app_tpnt->loadaddr;
  31858. _dl_debug_early("Relocated TLS initial image from %x to %x (size = %x)\n",
  31859. @@ -823,7 +828,7 @@
  31860. #ifndef __LDSO_LDD_SUPPORT__
  31861. if (trace_loaded_objects) {
  31862. - _dl_dprintf(_dl_debug_file, "Use the ldd provided by uClibc\n");
  31863. + _dl_dprintf(2, "Use the ldd provided by uClibc\n");
  31864. _dl_exit(1);
  31865. }
  31866. #endif
  31867. @@ -879,8 +884,9 @@
  31868. else
  31869. #endif
  31870. {
  31871. - _dl_dprintf(_dl_debug_file, "%s: can't load " "library '%s'\n", _dl_progname, str);
  31872. - _dl_exit(15);
  31873. + _dl_dprintf(2, "%s: library '%s' "
  31874. + "from LD_PRELOAD can't be preloaded: ignored.\n",
  31875. + _dl_progname, str);
  31876. }
  31877. } else {
  31878. tpnt1->rtld_flags = unlazy | RTLD_GLOBAL;
  31879. @@ -923,7 +929,7 @@
  31880. }
  31881. if ((fd = _dl_open(LDSO_PRELOAD, O_RDONLY, 0)) < 0) {
  31882. - _dl_dprintf(_dl_debug_file, "%s: can't open file '%s'\n",
  31883. + _dl_dprintf(2, "%s: can't open file '%s'\n",
  31884. _dl_progname, LDSO_PRELOAD);
  31885. break;
  31886. }
  31887. @@ -932,7 +938,7 @@
  31888. PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
  31889. _dl_close(fd);
  31890. if (preload == (caddr_t) -1) {
  31891. - _dl_dprintf(_dl_debug_file, "%s:%i: can't map '%s'\n",
  31892. + _dl_dprintf(2, "%s:%i: can't map '%s'\n",
  31893. _dl_progname, __LINE__, LDSO_PRELOAD);
  31894. break;
  31895. }
  31896. @@ -971,7 +977,7 @@
  31897. else
  31898. # endif
  31899. {
  31900. - _dl_dprintf(_dl_debug_file, "%s: can't load library '%s'\n", _dl_progname, cp2);
  31901. + _dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, cp2);
  31902. _dl_exit(15);
  31903. }
  31904. } else {
  31905. @@ -1032,7 +1038,7 @@
  31906. } else
  31907. #endif
  31908. {
  31909. - _dl_dprintf(_dl_debug_file, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
  31910. + _dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
  31911. _dl_exit(16);
  31912. }
  31913. }
  31914. diff -Nur uClibc-0.9.33.2/ldso/ldso/m68k/dl-startup.h uClibc-git/ldso/ldso/m68k/dl-startup.h
  31915. --- uClibc-0.9.33.2/ldso/ldso/m68k/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  31916. +++ uClibc-git/ldso/ldso/m68k/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  31917. @@ -19,6 +19,7 @@
  31918. .text\n\
  31919. .globl _start\n\
  31920. .type _start,@function\n\
  31921. + .hidden _start\n\
  31922. _start:\n\
  31923. move.l %sp, -(%sp)\n\
  31924. jbsr _dl_start\n\
  31925. diff -Nur uClibc-0.9.33.2/ldso/ldso/m68k/elfinterp.c uClibc-git/ldso/ldso/m68k/elfinterp.c
  31926. --- uClibc-0.9.33.2/ldso/ldso/m68k/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  31927. +++ uClibc-git/ldso/ldso/m68k/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  31928. @@ -241,8 +241,11 @@
  31929. _dl_memcpy ((void *) reloc_addr,
  31930. (void *) symbol_addr,
  31931. sym_ref.sym->st_size);
  31932. - } else
  31933. + }
  31934. +#if defined (__SUPPORT_LD_DEBUG__)
  31935. + else
  31936. _dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
  31937. +#endif
  31938. break;
  31939. default:
  31940. diff -Nur uClibc-0.9.33.2/ldso/ldso/Makefile.in uClibc-git/ldso/ldso/Makefile.in
  31941. --- uClibc-0.9.33.2/ldso/ldso/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  31942. +++ uClibc-git/ldso/ldso/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  31943. @@ -36,7 +36,7 @@
  31944. else
  31945. LDFLAGS-$(UCLIBC_LDSO_NAME).so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs
  31946. endif
  31947. -LDFLAGS-$(UCLIBC_LDSO_NAME).so += -Wl,-e,_start -Wl,-z,now -Wl,-Bsymbolic \
  31948. +LDFLAGS-$(UCLIBC_LDSO_NAME).so += -Wl,-e,$(SYMBOL_PREFIX)_start -Wl,-z,now -Wl,-Bsymbolic \
  31949. -Wl,--export-dynamic $(CFLAG_-Wl--sort-common) -Wl,--discard-locals \
  31950. $(CFLAG_-Wl--discard-all) -Wl,--no-undefined
  31951. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-debug.h uClibc-git/ldso/ldso/metag/dl-debug.h
  31952. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-debug.h 1970-01-01 01:00:00.000000000 +0100
  31953. +++ uClibc-git/ldso/ldso/metag/dl-debug.h 2014-02-03 12:32:56.000000000 +0100
  31954. @@ -0,0 +1,33 @@
  31955. +/*
  31956. + * Meta ELF shared library loader support.
  31957. + *
  31958. + * Program to load an elf binary on a linux system, and run it.
  31959. + * References to symbols in sharable libraries can be resolved
  31960. + * by either an ELF sharable library or a linux style of shared
  31961. + * library.
  31962. + *
  31963. + * Copyright (C) 2013, Imagination Technologies Ltd.
  31964. + *
  31965. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31966. + */
  31967. +
  31968. +static const char *_dl_reltypes_tab[] = {
  31969. + [0] "R_METAG_HIADDR16", "R_METAG_LOADDR16", "R_METAG_ADDR32",
  31970. + [3] "R_METAG_NONE", "R_METAG_RELBRANCH", "R_METAG_GETSETOFF",
  31971. + [6] "R_METAG_REG32OP1", "R_METAG_REG32OP2", "R_METAG_REG32OP3",
  31972. + [9] "R_METAG_REG16OP1", "R_METAG_REG16OP2", "R_METAG_REG16OP3",
  31973. + [12] "R_METAG_REG32OP4", "R_METAG_HIOG", "R_METAG_LOOG",
  31974. + [30] "R_METAG_GNU_VTINHERIT", "R_METAG_GNU_VTENTRY",
  31975. + [32] "R_METAG_HI16_GOTOFF", "R_METAG_LO16_GOTOFF",
  31976. + [34] "R_METAG_GETSET_GOTOFF", "R_METAG_GETSET_GOT",
  31977. + [36] "R_METAG_HI16_GOTPC", "R_METAG_LO16_GOTPC",
  31978. + [38] "R_METAG_HI16_PLT", "R_METAG_LO16_PLT",
  31979. + [40] "R_METAG_RELBRANCH_PLT", "R_METAG_GOTOFF",
  31980. + [42] "R_METAG_PLT", "R_METAG_COPY", "R_METAG_JMP_SLOT",
  31981. + [45] "R_METAG_RELATIVE", "R_METAG_GLOB_DAT", "R_METAG_TLS_GD",
  31982. + [48] "R_METAG_TLS_LDM", "R_METAG_TLS_LDO_HI16", "R_METAG_TLS_LDO_LO16",
  31983. + [51] "R_METAG_TLS_LDO", "R_METAG_TLS_IE", "R_METAG_TLS_IENONPIC",
  31984. + [54] "R_METAG_TLS_IENONPIC_HI16", "R_METAG_TLS_IENONPIC_LO16",
  31985. + [56] "R_METAG_TLS_TPOFF", "R_METAG_TLS_DTPMOD", "R_METAG_TLS_DTPOFF",
  31986. + [59] "R_METAG_TLS_LE", "R_METAG_TLS_LE_HI16", "R_METAG_TLS_LE_LO16"
  31987. +};
  31988. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-inlines.h uClibc-git/ldso/ldso/metag/dl-inlines.h
  31989. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-inlines.h 1970-01-01 01:00:00.000000000 +0100
  31990. +++ uClibc-git/ldso/ldso/metag/dl-inlines.h 2014-02-03 12:32:56.000000000 +0100
  31991. @@ -0,0 +1,39 @@
  31992. +/*
  31993. + * Copyright (C) 2013, Imagination Technologies Ltd.
  31994. + *
  31995. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  31996. + */
  31997. +
  31998. +static __always_inline int
  31999. +__dl_is_special_segment (Elf32_Ehdr *epnt,
  32000. + Elf32_Phdr *ppnt)
  32001. +{
  32002. + if (ppnt->p_type != PT_LOAD &&
  32003. + ppnt->p_type != PT_DYNAMIC)
  32004. + return 0;
  32005. +
  32006. + if (ppnt->p_vaddr >= 0x80000000 &&
  32007. + ppnt->p_vaddr < 0x82060000)
  32008. + return 1;
  32009. +
  32010. + if (ppnt->p_vaddr >= 0xe0200000 &&
  32011. + ppnt->p_vaddr < 0xe0260000)
  32012. + return 1;
  32013. +
  32014. + return 0;
  32015. +}
  32016. +
  32017. +static __always_inline char *
  32018. +__dl_map_segment (Elf32_Ehdr *epnt,
  32019. + Elf32_Phdr *ppnt,
  32020. + int infile,
  32021. + int flags)
  32022. +{
  32023. + char *addr = (char *)ppnt->p_vaddr;
  32024. +
  32025. + if (_DL_PREAD (infile, addr, ppnt->p_filesz, ppnt->p_offset) != ppnt->p_filesz) {
  32026. + return 0;
  32027. + }
  32028. +
  32029. + return addr;
  32030. +}
  32031. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-startup.h uClibc-git/ldso/ldso/metag/dl-startup.h
  32032. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-startup.h 1970-01-01 01:00:00.000000000 +0100
  32033. +++ uClibc-git/ldso/ldso/metag/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32034. @@ -0,0 +1,68 @@
  32035. +/*
  32036. + * Copyright (C) 2013 Imagination Technologies Ltd.
  32037. + *
  32038. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32039. + */
  32040. +
  32041. +/*
  32042. + * This code fixes the stack pointer so that the dynamic linker
  32043. + * can find argc, argv and auxvt (Auxillary Vector Table).
  32044. + */
  32045. +
  32046. +__asm__ (
  32047. +" .text\n"
  32048. +" .global __start\n"
  32049. +" .type __start,@function\n"
  32050. +" .hidden __start\n"
  32051. +"_start:\n"
  32052. +"__start:\n"
  32053. +" MSETL [A0StP++],D0Ar4,D0Ar2\n"
  32054. +" MOV D1Ar1,D0Ar2\n"
  32055. +" CALLR D1RtP,__dl_start\n"
  32056. +" GETL D0Ar2,D1Ar1,[A0StP+#-(1*8)]\n"
  32057. +" GETL D0Ar4,D1Ar3,[A0StP+#-(2*8)]\n"
  32058. +" ADDT A1LbP,CPC1,#HI(__GLOBAL_OFFSET_TABLE__)\n"
  32059. +" ADD A1LbP,A1LbP,#LO(__GLOBAL_OFFSET_TABLE__+4)\n"
  32060. +" ADDT A1LbP,A1LbP,#HI(__dl_fini@GOTOFF)\n"
  32061. +" ADD A1LbP,A1LbP,#LO(__dl_fini@GOTOFF)\n"
  32062. +" MOV D0Ar4, A1LbP\n"
  32063. +" SUB A0StP,A0StP,#(2*8)\n"
  32064. +" MOV PC,D0Re0\n"
  32065. +" .size __start,.-__start\n"
  32066. +" .previous\n"
  32067. +);
  32068. +
  32069. +
  32070. +/*
  32071. + * Get a pointer to the argv array. On many platforms this can be just
  32072. + * the address if the first argument, on other platforms we need to
  32073. + * do something a little more subtle here.
  32074. + */
  32075. +
  32076. +#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS))
  32077. +
  32078. +
  32079. +/* Handle relocation of the symbols in the dynamic loader. */
  32080. +static inline
  32081. +void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
  32082. + unsigned long symbol_addr, unsigned long load_addr, Elf32_Sym *symtab)
  32083. +{
  32084. + switch (ELF32_R_TYPE(rpnt->r_info)) {
  32085. + case R_METAG_GLOB_DAT:
  32086. + case R_METAG_JMP_SLOT:
  32087. + case R_METAG_ADDR32:
  32088. + *reloc_addr = symbol_addr;
  32089. + break;
  32090. + case R_METAG_RELATIVE:
  32091. + *reloc_addr = load_addr + rpnt->r_addend;
  32092. + break;
  32093. + case R_METAG_RELBRANCH:
  32094. + *reloc_addr = symbol_addr + rpnt->r_addend - *reloc_addr - 4;
  32095. + break;
  32096. + case R_METAG_NONE:
  32097. + break;
  32098. + default:
  32099. + _dl_exit(1);
  32100. + break;
  32101. + }
  32102. +}
  32103. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-syscalls.h uClibc-git/ldso/ldso/metag/dl-syscalls.h
  32104. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-syscalls.h 1970-01-01 01:00:00.000000000 +0100
  32105. +++ uClibc-git/ldso/ldso/metag/dl-syscalls.h 2014-02-03 12:32:56.000000000 +0100
  32106. @@ -0,0 +1,6 @@
  32107. +/* stub for arch-specific syscall issues
  32108. + *
  32109. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32110. + *
  32111. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32112. + */
  32113. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/dl-sysdep.h uClibc-git/ldso/ldso/metag/dl-sysdep.h
  32114. --- uClibc-0.9.33.2/ldso/ldso/metag/dl-sysdep.h 1970-01-01 01:00:00.000000000 +0100
  32115. +++ uClibc-git/ldso/ldso/metag/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  32116. @@ -0,0 +1,121 @@
  32117. +/*
  32118. + * Meta can never use Elf32_Rel relocations.
  32119. + *
  32120. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32121. + *
  32122. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32123. + */
  32124. +
  32125. +#define ELF_USES_RELOCA
  32126. +
  32127. +#include <elf.h>
  32128. +
  32129. +/* Initialization sequence for the GOT. */
  32130. +#define INIT_GOT(GOT_BASE,MODULE) \
  32131. +{ \
  32132. + GOT_BASE[1] = (unsigned long) MODULE; \
  32133. + GOT_BASE[2] = (unsigned long) _dl_linux_resolve; \
  32134. +}
  32135. +
  32136. +/* Maximum unsigned GOT [GS]ETD offset size, ie. 2^(11+2). */
  32137. +#define GOT_REG_OFFSET 0x2000
  32138. +
  32139. +/* Defined some magic numbers that this ld.so should accept. */
  32140. +#define MAGIC1 EM_METAG
  32141. +#undef MAGIC2
  32142. +#define ELF_TARGET "META"
  32143. +
  32144. +/* Need bootstrap relocations */
  32145. +#define ARCH_NEEDS_BOOTSTRAP_RELOCS
  32146. +
  32147. +struct elf_resolve;
  32148. +extern unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry);
  32149. +
  32150. +/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry or
  32151. + TLS variable, so undefined references should not be allowed to
  32152. + define the value.
  32153. +
  32154. + ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
  32155. + of the main executable's symbols, as for a COPY reloc. */
  32156. +#define elf_machine_type_class(type) \
  32157. + ((((type) == R_METAG_JMP_SLOT || (type) == R_METAG_TLS_DTPMOD \
  32158. + || (type) == R_METAG_TLS_DTPOFF || (type) == R_METAG_TLS_TPOFF) \
  32159. + * ELF_RTYPE_CLASS_PLT) \
  32160. + | (((type) == R_METAG_COPY) * ELF_RTYPE_CLASS_COPY))
  32161. +
  32162. +static inline Elf32_Addr
  32163. +elf_machine_dynamic(Elf32_Ehdr *header)
  32164. +{
  32165. + Elf32_Addr *got;
  32166. +
  32167. + __asm__ ("MOV %0,A1LbP" : "=r" (got));
  32168. +
  32169. + if (header->e_ident[EI_ABIVERSION] >= 1) {
  32170. + /* GOT register offset was introduced with ABI v1 */
  32171. + got = (Elf32_Addr*)((void*)got - GOT_REG_OFFSET);
  32172. + }
  32173. + return *got;
  32174. +}
  32175. +
  32176. +#define DL_BOOT_COMPUTE_GOT(GOT) \
  32177. + ((GOT) = elf_machine_dynamic(header))
  32178. +
  32179. +static inline Elf32_Addr
  32180. +elf_machine_load_address(void)
  32181. +{
  32182. + Elf32_Addr addr;
  32183. + __asm__ ("MOV D1Ar1,A1LbP\n"
  32184. + "ADDT D1Ar1,D1Ar1,#HI(__dl_start@GOTOFF)\n"
  32185. + "ADD D1Ar1,D1Ar1,#LO(__dl_start@GOTOFF)\n"
  32186. + "ADDT D0Ar2,D0Ar2,#HI(__dl_start_addr@GOTOFF)\n"
  32187. + "ADD D0Ar2,D0Ar2,#LO(__dl_start_addr@GOTOFF)\n"
  32188. + "GETD D0Ar2,[D0Ar2]\n"
  32189. + "SUB %0,D1Ar1,D0Ar2\n"
  32190. + ".section .data\n"
  32191. + "__dl_start_addr: .long __dl_start\n"
  32192. + ".previous\n"
  32193. + : "=d" (addr) : : "D1Ar1", "D0Ar2");
  32194. + return addr;
  32195. +}
  32196. +
  32197. +static inline void
  32198. +elf_machine_relative(Elf32_Addr load_off, const Elf32_Addr rel_addr,
  32199. + Elf32_Word relative_count)
  32200. +{
  32201. + Elf32_Rela *rpnt = (void *)rel_addr;
  32202. +
  32203. + --rpnt;
  32204. + do {
  32205. + Elf32_Addr *const reloc_addr =
  32206. + (void *)(load_off + (++rpnt)->r_offset);
  32207. +
  32208. + *reloc_addr = load_off + rpnt->r_addend;
  32209. + } while (--relative_count);
  32210. +}
  32211. +
  32212. +#define DL_MALLOC_ALIGN 8
  32213. +
  32214. +#define HAVE_DL_INLINES_H
  32215. +
  32216. +#define DL_IS_SPECIAL_SEGMENT(EPNT, PPNT) \
  32217. + __dl_is_special_segment(EPNT, PPNT)
  32218. +#define DL_MAP_SEGMENT(EPNT, PPNT, INFILE, FLAGS) \
  32219. + __dl_map_segment (EPNT, PPNT, INFILE, FLAGS)
  32220. +
  32221. +#define DL_CHECK_LIB_TYPE(epnt, piclib, _dl_progname, libname) \
  32222. +do \
  32223. +{ \
  32224. + ElfW(Phdr) *ppnt_; \
  32225. + char *header_ = (char *)epnt; \
  32226. + ppnt_ = (ElfW(Phdr) *)(intptr_t) & header_[epnt->e_phoff]; \
  32227. + if (ppnt_->p_vaddr >= 0x80000000 && \
  32228. + ppnt_->p_vaddr < 0x82060000) \
  32229. + (piclib) = 2; \
  32230. + if (ppnt_->p_vaddr >= 0xe0200000 && \
  32231. + ppnt_->p_vaddr < 0xe0260000) \
  32232. + (piclib) = 2; \
  32233. +} \
  32234. +while (0)
  32235. +
  32236. +#define _DL_PREAD(FD, BUF, SIZE, OFFSET) \
  32237. + (_dl_pread((FD), (BUF), (SIZE), (OFFSET)))
  32238. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/elfinterp.c uClibc-git/ldso/ldso/metag/elfinterp.c
  32239. --- uClibc-0.9.33.2/ldso/ldso/metag/elfinterp.c 1970-01-01 01:00:00.000000000 +0100
  32240. +++ uClibc-git/ldso/ldso/metag/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32241. @@ -0,0 +1,318 @@
  32242. +/*
  32243. + * Meta ELF shared library loader support.
  32244. + *
  32245. + * Program to load an elf binary on a linux system, and run it.
  32246. + * References to symbols in sharable libraries can be resolved
  32247. + * by either an ELF sharable library or a linux style of shared
  32248. + * library.
  32249. + *
  32250. + * Copyright (C) 2013, Imagination Technologies Ltd.
  32251. + *
  32252. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32253. + */
  32254. +
  32255. +#include "ldso.h"
  32256. +
  32257. +/* Defined in resolve.S. */
  32258. +extern int _dl_linux_resolve(void);
  32259. +
  32260. +static inline unsigned long __get_unaligned_reloc(unsigned long *addr)
  32261. +{
  32262. + char *rel_addr = (char *)addr;
  32263. + unsigned long val;
  32264. +
  32265. + val = *rel_addr++ & 0xff;
  32266. + val |= (*rel_addr++ << 8) & 0x0000ff00;
  32267. + val |= (*rel_addr++ << 16) & 0x00ff0000;
  32268. + val |= (*rel_addr++ << 24) & 0xff000000;
  32269. +
  32270. + return val;
  32271. +}
  32272. +
  32273. +static inline void __put_unaligned_reloc(unsigned long *addr,
  32274. + unsigned long val)
  32275. +{
  32276. + char *rel_addr = (char *)addr;
  32277. +
  32278. + *rel_addr++ = (val & 0x000000ff);
  32279. + *rel_addr++ = ((val & 0x0000ff00) >> 8);
  32280. + *rel_addr++ = ((val & 0x00ff0000) >> 16);
  32281. + *rel_addr++ = ((val & 0xff000000) >> 24);
  32282. +}
  32283. +
  32284. +unsigned long
  32285. +_dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
  32286. +{
  32287. + int symtab_index;
  32288. + char *strtab;
  32289. + char *symname;
  32290. + char *new_addr;
  32291. + char *rel_addr;
  32292. + char **got_addr;
  32293. + ElfW(Sym) *symtab;
  32294. + ELF_RELOC *this_reloc;
  32295. + unsigned long instr_addr;
  32296. +
  32297. + rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
  32298. +
  32299. + this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
  32300. + symtab_index = ELF_R_SYM(this_reloc->r_info);
  32301. +
  32302. + symtab = (ElfW(Sym) *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
  32303. + strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
  32304. + symname = strtab + symtab[symtab_index].st_name;
  32305. +
  32306. + /* Address of the jump instruction to fix up. */
  32307. + instr_addr = ((unsigned long)this_reloc->r_offset +
  32308. + (unsigned long)tpnt->loadaddr);
  32309. + got_addr = (char **)instr_addr;
  32310. +
  32311. + /* Get the address of the GOT entry. */
  32312. + new_addr = _dl_find_hash(symname, &_dl_loaded_modules->symbol_scope, tpnt,
  32313. + ELF_RTYPE_CLASS_PLT, NULL);
  32314. + if (unlikely(!new_addr)) {
  32315. + _dl_dprintf(2, "%s: Can't resolve symbol '%s'\n",
  32316. + _dl_progname, symname);
  32317. + _dl_exit(1);
  32318. + }
  32319. +
  32320. +#if defined (__SUPPORT_LD_DEBUG__)
  32321. + if (_dl_debug_bindings) {
  32322. + _dl_dprintf(_dl_debug_file, "\nresolve function: %s", symname);
  32323. + if (_dl_debug_detail)
  32324. + _dl_dprintf(_dl_debug_file,
  32325. + "\n\tpatched: %x ==> %x @ %x\n",
  32326. + *got_addr, new_addr, got_addr);
  32327. + }
  32328. + if (!_dl_debug_nofixups) {
  32329. + *got_addr = new_addr;
  32330. + }
  32331. +#else
  32332. + *got_addr = new_addr;
  32333. +#endif
  32334. +
  32335. + return (unsigned long)new_addr;
  32336. +}
  32337. +
  32338. +static int
  32339. +_dl_parse(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  32340. + unsigned long rel_addr, unsigned long rel_size,
  32341. + int (*reloc_fnc)(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  32342. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab))
  32343. +{
  32344. + int symtab_index;
  32345. + unsigned int i;
  32346. + char *strtab;
  32347. + ElfW(Sym) *symtab;
  32348. + ELF_RELOC *rpnt;
  32349. +
  32350. + /* Parse the relocation information. */
  32351. + rpnt = (ELF_RELOC *)(intptr_t)rel_addr;
  32352. + rel_size /= sizeof(ELF_RELOC);
  32353. +
  32354. + symtab = (ElfW(Sym) *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
  32355. + strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
  32356. +
  32357. + for (i = 0; i < rel_size; i++, rpnt++) {
  32358. + int res;
  32359. +
  32360. + symtab_index = ELF_R_SYM(rpnt->r_info);
  32361. +
  32362. + debug_sym(symtab, strtab, symtab_index);
  32363. + debug_reloc(symtab, strtab, rpnt);
  32364. +
  32365. + /* Pass over to actual relocation function. */
  32366. + res = reloc_fnc(tpnt, scope, rpnt, symtab, strtab);
  32367. +
  32368. + if (res == 0)
  32369. + continue;
  32370. +
  32371. + _dl_dprintf(2, "\n%s: ", _dl_progname);
  32372. +
  32373. + if (symtab_index)
  32374. + _dl_dprintf(2, "symbol '%s': ",
  32375. + strtab + symtab[symtab_index].st_name);
  32376. +
  32377. + if (unlikely(res < 0)) {
  32378. + int reloc_type = ELF_R_TYPE(rpnt->r_info);
  32379. +
  32380. +#if defined (__SUPPORT_LD_DEBUG__)
  32381. + _dl_dprintf(2, "can't handle reloc type %s\n",
  32382. + _dl_reltypes(reloc_type));
  32383. +#else
  32384. + _dl_dprintf(2, "can't handle reloc type %x\n",
  32385. + reloc_type);
  32386. +#endif
  32387. + _dl_exit(-res);
  32388. + } else if (unlikely(res > 0)) {
  32389. + _dl_dprintf(2, "can't resolve symbol\n");
  32390. + return res;
  32391. + }
  32392. + }
  32393. +
  32394. + return 0;
  32395. +}
  32396. +
  32397. +static int
  32398. +_dl_do_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  32399. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  32400. +{
  32401. + int reloc_type;
  32402. + int symtab_index;
  32403. + char *symname = NULL;
  32404. + unsigned long *reloc_addr;
  32405. + unsigned long symbol_addr;
  32406. +#if defined (__SUPPORT_LD_DEBUG__)
  32407. + unsigned long old_val = 0;
  32408. +#endif
  32409. + struct elf_resolve *tls_tpnt = NULL;
  32410. + struct symbol_ref sym_ref;
  32411. +
  32412. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  32413. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  32414. + symtab_index = ELF_R_SYM(rpnt->r_info);
  32415. + symbol_addr = 0;
  32416. + sym_ref.sym = &symtab[symtab_index];
  32417. + sym_ref.tpnt = NULL;
  32418. +
  32419. + if (symtab_index) {
  32420. + symname = strtab + symtab[symtab_index].st_name;
  32421. + symbol_addr = (unsigned long)_dl_find_hash(symname, scope, tpnt,
  32422. + elf_machine_type_class(reloc_type), &sym_ref);
  32423. +
  32424. + if (!symbol_addr
  32425. + && ELF_ST_TYPE(symtab[symtab_index].st_info) != STT_TLS
  32426. + && ELF_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
  32427. + _dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
  32428. + _dl_progname, symname);
  32429. + return 1;
  32430. + };
  32431. + if (_dl_trace_prelink) {
  32432. + _dl_debug_lookup(symname, tpnt, &symtab[symtab_index],
  32433. + &sym_ref, elf_machine_type_class(reloc_type));
  32434. + }
  32435. + tls_tpnt = sym_ref.tpnt;
  32436. + }
  32437. +
  32438. +#if defined (__SUPPORT_LD_DEBUG__)
  32439. + if (reloc_type != R_METAG_NONE)
  32440. + old_val = __get_unaligned_reloc(reloc_addr);
  32441. +#endif
  32442. +
  32443. +#if defined USE_TLS && USE_TLS
  32444. + /* In case of a TLS reloc, tls_tpnt NULL means we have an 'anonymous'
  32445. + symbol. This is the case for a static tls variable, so the lookup
  32446. + module is just that one is referencing the tls variable. */
  32447. + if (!tls_tpnt)
  32448. + tls_tpnt = tpnt;
  32449. +#endif
  32450. + switch (reloc_type) {
  32451. + case R_METAG_NONE:
  32452. + break;
  32453. + case R_METAG_GLOB_DAT:
  32454. + case R_METAG_JMP_SLOT:
  32455. + case R_METAG_ADDR32:
  32456. + __put_unaligned_reloc(reloc_addr,
  32457. + symbol_addr + rpnt->r_addend);
  32458. + break;
  32459. + case R_METAG_COPY:
  32460. +#if defined (__SUPPORT_LD_DEBUG__)
  32461. + if (_dl_debug_move)
  32462. + _dl_dprintf(_dl_debug_file,
  32463. + "\t%s move %d bytes from %x to %x\n",
  32464. + symname, symtab[symtab_index].st_size,
  32465. + symbol_addr + rpnt->r_addend,
  32466. + reloc_addr);
  32467. +#endif
  32468. +
  32469. + _dl_memcpy((char *)reloc_addr,
  32470. + (char *)symbol_addr + rpnt->r_addend,
  32471. + symtab[symtab_index].st_size);
  32472. + break;
  32473. + case R_METAG_RELATIVE:
  32474. + __put_unaligned_reloc(reloc_addr,
  32475. + (unsigned long)tpnt->loadaddr +
  32476. + rpnt->r_addend);
  32477. + break;
  32478. +#if defined USE_TLS && USE_TLS
  32479. + case R_METAG_TLS_DTPMOD:
  32480. + *reloc_addr = tls_tpnt->l_tls_modid;
  32481. + break;
  32482. + case R_METAG_TLS_DTPOFF:
  32483. + *reloc_addr = symbol_addr;
  32484. + break;
  32485. + case R_METAG_TLS_TPOFF:
  32486. + CHECK_STATIC_TLS ((struct link_map *) tls_tpnt);
  32487. + *reloc_addr = tls_tpnt->l_tls_offset + symbol_addr + rpnt->r_addend;
  32488. + break;
  32489. +#endif
  32490. + default:
  32491. + return -1; /* Calls _dl_exit(1). */
  32492. + }
  32493. +
  32494. +#if defined (__SUPPORT_LD_DEBUG__)
  32495. + if (_dl_debug_reloc && _dl_debug_detail && reloc_type != R_METAG_NONE) {
  32496. + unsigned long new_val = __get_unaligned_reloc(reloc_addr);
  32497. + _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
  32498. + old_val, new_val, reloc_addr);
  32499. + }
  32500. +#endif
  32501. +
  32502. + return 0;
  32503. +}
  32504. +
  32505. +static int
  32506. +_dl_do_lazy_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
  32507. + ELF_RELOC *rpnt, ElfW(Sym) *symtab, char *strtab)
  32508. +{
  32509. + int reloc_type;
  32510. + unsigned long *reloc_addr;
  32511. +#if defined (__SUPPORT_LD_DEBUG__)
  32512. + unsigned long old_val;
  32513. +#endif
  32514. +
  32515. + reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
  32516. + reloc_type = ELF_R_TYPE(rpnt->r_info);
  32517. +
  32518. +#if defined (__SUPPORT_LD_DEBUG__)
  32519. + old_val = *reloc_addr;
  32520. +#endif
  32521. +
  32522. + switch (reloc_type) {
  32523. + case R_METAG_NONE:
  32524. + break;
  32525. + case R_METAG_JMP_SLOT:
  32526. + *reloc_addr += (unsigned long)tpnt->loadaddr;
  32527. + break;
  32528. + default:
  32529. + return -1; /* Calls _dl_exit(1). */
  32530. + }
  32531. +
  32532. +#if defined (__SUPPORT_LD_DEBUG__)
  32533. + if (_dl_debug_reloc && _dl_debug_detail)
  32534. + _dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
  32535. + old_val, *reloc_addr, reloc_addr);
  32536. +#endif
  32537. +
  32538. + return 0;
  32539. +}
  32540. +
  32541. +/* External interface to the generic part of the dynamic linker. */
  32542. +
  32543. +void
  32544. +_dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
  32545. + unsigned long rel_addr,
  32546. + unsigned long rel_size)
  32547. +{
  32548. + _dl_parse(rpnt->dyn, NULL, rel_addr, rel_size, _dl_do_lazy_reloc);
  32549. +}
  32550. +
  32551. +int
  32552. +_dl_parse_relocation_information(struct dyn_elf *rpnt,
  32553. + struct r_scope_elem *scope,
  32554. + unsigned long rel_addr,
  32555. + unsigned long rel_size)
  32556. +{
  32557. + return _dl_parse(rpnt->dyn, scope, rel_addr,
  32558. + rel_size, _dl_do_reloc);
  32559. +}
  32560. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/metag_load_tp.S uClibc-git/ldso/ldso/metag/metag_load_tp.S
  32561. --- uClibc-0.9.33.2/ldso/ldso/metag/metag_load_tp.S 1970-01-01 01:00:00.000000000 +0100
  32562. +++ uClibc-git/ldso/ldso/metag/metag_load_tp.S 2014-02-03 12:32:56.000000000 +0100
  32563. @@ -0,0 +1,20 @@
  32564. +! Copyright (C) 2013 Imagination Technologies Ltd.
  32565. +
  32566. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32567. +
  32568. +#include <features.h>
  32569. +
  32570. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  32571. +
  32572. +#include <sysdep.h>
  32573. +
  32574. + .text
  32575. + .global ___metag_load_tp
  32576. + .type ___metag_load_tp,@function
  32577. +
  32578. +___metag_load_tp:
  32579. + MOVT D1Ar1,#HI(0x6ffff000)
  32580. + JUMP D1Ar1,#LO(0x6ffff000)
  32581. + .size ___metag_load_tp,.-___metag_load_tp
  32582. +
  32583. +#endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  32584. diff -Nur uClibc-0.9.33.2/ldso/ldso/metag/resolve.S uClibc-git/ldso/ldso/metag/resolve.S
  32585. --- uClibc-0.9.33.2/ldso/ldso/metag/resolve.S 1970-01-01 01:00:00.000000000 +0100
  32586. +++ uClibc-git/ldso/ldso/metag/resolve.S 2014-02-03 12:32:56.000000000 +0100
  32587. @@ -0,0 +1,51 @@
  32588. +/*
  32589. + * Meta dynamic resolver
  32590. + *
  32591. + * Copyright (C) 2013 Imagination Technologies Ltd.
  32592. + *
  32593. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  32594. + *
  32595. + * This function is _not_ called directly. It is jumped to (so no return
  32596. + * address is on the stack) when attempting to use a symbol that has not yet
  32597. + * been resolved. The first time a jump symbol (such as a function call inside
  32598. + * a shared library) is used (before it gets resolved) it will jump here to
  32599. + * _dl_linux_resolve. When we get called the stack looks like this:
  32600. + * reloc_entry
  32601. + * tpnt
  32602. + *
  32603. + * This function saves all the registers then makes the function call
  32604. + * _dl_linux_resolver(tpnt, reloc_entry). _dl_linux_resolver() figures out
  32605. + * where the jump symbol is _really_ supposed to have jumped to and returns
  32606. + * that to us. Once we have that, we overwrite tpnt with this fixed up
  32607. + * address. We then clean up after ourselves, put all the registers back how we
  32608. + * found them, then we jump to the fixed up address, which is where the jump
  32609. + * symbol that got us here really wanted to jump to in the first place.
  32610. + * -Erik Andersen
  32611. + */
  32612. +
  32613. + .text
  32614. + .global __dl_linux_resolve
  32615. + .type __dl_linux_resolve,@function
  32616. +
  32617. +__dl_linux_resolve:
  32618. + !! Save registers on the stack. Do we need to save any more here?
  32619. + MSETL [A0StP++],D0Ar6,D0Ar4,D0Ar2,D0FrT
  32620. + SETL [A0StP++],A0FrP,A1LbP
  32621. + !! Get the args for _dl_linux_resolver off the stack
  32622. + GETL D0Re0,D1Re0,[A0StP+#-(6*8)]
  32623. + GETD D1Ar1,[D0Re0]
  32624. + MOV D0Ar2,D1Re0
  32625. + !! Multiply plt_index by sizeof(Elf32_Rela)
  32626. + MULW D0Ar2,D0Ar2,#12
  32627. + !! Call the resolver
  32628. + CALLR D1RtP,__dl_linux_resolver
  32629. + !! Restore the registers from the stack
  32630. + SUB A0.2,A0StP,#(1*8)
  32631. + GETL A0FrP,A1LbP,[A0.2]
  32632. + SUB A0.2,A0.2,#(4*8)
  32633. + MGETL D0Ar6,D0Ar4,D0Ar2,D0FrT,[A0.2]
  32634. + !! Also take into account args pushed by PLT
  32635. + SUB A0StP,A0StP,#(6*8)
  32636. + !! Jump to the resolved address
  32637. + MOV PC,D0Re0
  32638. + .size __dl_linux_resolve, .-__dl_linux_resolve
  32639. diff -Nur uClibc-0.9.33.2/ldso/ldso/microblaze/dl-startup.h uClibc-git/ldso/ldso/microblaze/dl-startup.h
  32640. --- uClibc-0.9.33.2/ldso/ldso/microblaze/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32641. +++ uClibc-git/ldso/ldso/microblaze/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32642. @@ -12,14 +12,14 @@
  32643. Lesser General Public License for more details.
  32644. You should have received a copy of the GNU Lesser General Public
  32645. - License along with the GNU C Library; if not, write to the Free
  32646. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  32647. - 02111-1307 USA. */
  32648. + License along with the GNU C Library; if not, see
  32649. + <http://www.gnu.org/licenses/>. */
  32650. __asm__ ("\
  32651. .text\n\
  32652. .globl _start\n\
  32653. .type _start,@function\n\
  32654. + .hidden _start\n\
  32655. _start:\n\
  32656. addk r5,r0,r1\n\
  32657. addk r3,r0,r0\n\
  32658. diff -Nur uClibc-0.9.33.2/ldso/ldso/microblaze/dl-sysdep.h uClibc-git/ldso/ldso/microblaze/dl-sysdep.h
  32659. --- uClibc-0.9.33.2/ldso/ldso/microblaze/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  32660. +++ uClibc-git/ldso/ldso/microblaze/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  32661. @@ -12,9 +12,8 @@
  32662. Lesser General Public License for more details.
  32663. You should have received a copy of the GNU Lesser General Public
  32664. - License along with the GNU C Library; if not, write to the Free
  32665. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  32666. - 02111-1307 USA. */
  32667. + License along with the GNU C Library; if not, see
  32668. + <http://www.gnu.org/licenses/>. */
  32669. /* Use reloca */
  32670. #define ELF_USES_RELOCA
  32671. diff -Nur uClibc-0.9.33.2/ldso/ldso/microblaze/resolve.S uClibc-git/ldso/ldso/microblaze/resolve.S
  32672. --- uClibc-0.9.33.2/ldso/ldso/microblaze/resolve.S 2012-05-15 09:20:09.000000000 +0200
  32673. +++ uClibc-git/ldso/ldso/microblaze/resolve.S 2014-02-03 12:32:56.000000000 +0100
  32674. @@ -18,9 +18,8 @@
  32675. Lesser General Public License for more details.
  32676. You should have received a copy of the GNU Lesser General Public
  32677. - License along with the GNU C Library; if not, write to the Free
  32678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  32679. - 02111-1307 USA. */
  32680. + License along with the GNU C Library; if not, see
  32681. + <http://www.gnu.org/licenses/>. */
  32682. .text
  32683. .align 4
  32684. diff -Nur uClibc-0.9.33.2/ldso/ldso/mips/dl-startup.h uClibc-git/ldso/ldso/mips/dl-startup.h
  32685. --- uClibc-0.9.33.2/ldso/ldso/mips/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32686. +++ uClibc-git/ldso/ldso/mips/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32687. @@ -12,6 +12,7 @@
  32688. " .globl _start\n"
  32689. " .ent _start\n"
  32690. " .type _start,@function\n"
  32691. + " .hidden _start\n"
  32692. "_start:\n"
  32693. " .set noreorder\n"
  32694. " move $25, $31\n"
  32695. diff -Nur uClibc-0.9.33.2/ldso/ldso/mips/elfinterp.c uClibc-git/ldso/ldso/mips/elfinterp.c
  32696. --- uClibc-0.9.33.2/ldso/ldso/mips/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  32697. +++ uClibc-git/ldso/ldso/mips/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32698. @@ -259,11 +259,11 @@
  32699. case R_MIPS_TLS_TPREL32:
  32700. case R_MIPS_TLS_TPREL64:
  32701. CHECK_STATIC_TLS((struct link_map *)tls_tpnt);
  32702. - *(ElfW(Word) *)reloc_addr +=
  32703. + *(ElfW(Addr) *)reloc_addr +=
  32704. TLS_TPREL_VALUE (tls_tpnt, symbol_addr);
  32705. #ifdef __SUPPORT_LD_DEBUG__
  32706. _dl_dprintf(2, "TLS_TPREL : %s, %x, %x\n",
  32707. - symname, old_val, *((unsigned int *)reloc_addr));
  32708. + symname, old_val, *((unsigned long *)reloc_addr));
  32709. #endif
  32710. break;
  32711. }
  32712. diff -Nur uClibc-0.9.33.2/ldso/ldso/mips/README uClibc-git/ldso/ldso/mips/README
  32713. --- uClibc-0.9.33.2/ldso/ldso/mips/README 2012-05-15 09:20:09.000000000 +0200
  32714. +++ uClibc-git/ldso/ldso/mips/README 2014-02-03 12:32:56.000000000 +0100
  32715. @@ -13,7 +13,7 @@
  32716. elfinterp.c
  32717. -----------
  32718. Contains the runtime resolver code taken from the function
  32719. -'__dl_runtime_resolve' in 'sysdeps/mips/dl-machine.h'. Also
  32720. +'__dl_runtime_resolve' in 'sysdeps/mips/dl-trampoline.h'. Also
  32721. contains the function to perform relocations for objects
  32722. other than the linker itself. The code was taken from the
  32723. function 'elf_machine_rel' in 'sysdeps/mips/dl-machine.h'.
  32724. @@ -47,6 +47,6 @@
  32725. ---------
  32726. Contains the low-level assembly code for the dynamic runtime
  32727. resolver. The code is taken from the assembly code function
  32728. -'_dl_runtime_resolve' in the file 'sysdeps/mips/dl-machine.h'.
  32729. +'_dl_runtime_resolve' in the file 'sysdeps/mips/dl-trampoline.h'.
  32730. The code looks a bit different since we only need to pass the
  32731. symbol index and the old GP register.
  32732. diff -Nur uClibc-0.9.33.2/ldso/ldso/powerpc/dl-startup.h uClibc-git/ldso/ldso/powerpc/dl-startup.h
  32733. --- uClibc-0.9.33.2/ldso/ldso/powerpc/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32734. +++ uClibc-git/ldso/ldso/powerpc/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32735. @@ -8,6 +8,7 @@
  32736. " .text\n"
  32737. " .globl _start\n"
  32738. " .type _start,@function\n"
  32739. + " .hidden _start\n"
  32740. "_start:\n"
  32741. " mr 3,1\n" /* Pass SP to _dl_start in r3 */
  32742. " li 0,0\n"
  32743. diff -Nur uClibc-0.9.33.2/ldso/ldso/powerpc/elfinterp.c uClibc-git/ldso/ldso/powerpc/elfinterp.c
  32744. --- uClibc-0.9.33.2/ldso/ldso/powerpc/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  32745. +++ uClibc-git/ldso/ldso/powerpc/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32746. @@ -234,12 +234,12 @@
  32747. case R_PPC_ADDR32:
  32748. case R_PPC_GLOB_DAT:
  32749. *reloc_addr = finaladdr;
  32750. - goto out_nocode; /* No code code modified */
  32751. + goto out_nocode; /* No code modified */
  32752. case R_PPC_JMP_SLOT:
  32753. {
  32754. if (tpnt->dynamic_info[DT_PPC_GOT_IDX] != 0) {
  32755. *reloc_addr = finaladdr;
  32756. - goto out_nocode; /* No code code modified */
  32757. + goto out_nocode; /* No code modified */
  32758. } else {
  32759. Elf32_Sword delta = finaladdr - (Elf32_Word)reloc_addr;
  32760. if (delta<<6>>6 == delta) {
  32761. @@ -275,7 +275,7 @@
  32762. symbol_addr, reloc_addr);
  32763. #endif
  32764. _dl_memcpy((char *) reloc_addr, (char *) finaladdr, sym_ref.sym->st_size);
  32765. - goto out_nocode; /* No code code modified */
  32766. + goto out_nocode; /* No code modified */
  32767. case R_PPC_ADDR16_HA:
  32768. finaladdr += 0x8000; /* fall through. */
  32769. case R_PPC_ADDR16_HI:
  32770. @@ -314,7 +314,7 @@
  32771. return -1;
  32772. #endif
  32773. case R_PPC_NONE:
  32774. - goto out_nocode; /* No code code modified */
  32775. + goto out_nocode; /* No code modified */
  32776. default:
  32777. _dl_dprintf(2, "%s: can't handle reloc type ", _dl_progname);
  32778. #if defined (__SUPPORT_LD_DEBUG__)
  32779. diff -Nur uClibc-0.9.33.2/ldso/ldso/sh/dl-startup.h uClibc-git/ldso/ldso/sh/dl-startup.h
  32780. --- uClibc-0.9.33.2/ldso/ldso/sh/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32781. +++ uClibc-git/ldso/ldso/sh/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32782. @@ -6,6 +6,7 @@
  32783. " .text\n"
  32784. " .globl _start\n"
  32785. " .type _start,@function\n"
  32786. + " .hidden _start\n"
  32787. "_start:\n"
  32788. " mov r15, r4\n"
  32789. " mov.l .L_dl_start, r0\n"
  32790. @@ -16,12 +17,22 @@
  32791. " mov.l .L_got, r12 ! Load the GOT on r12\n"
  32792. " mova .L_got, r0\n"
  32793. " add r0, r12\n"
  32794. + " mov.l .L_dl_skip_args,r0\n"
  32795. + " mov.l @(r0,r12),r0\n"
  32796. + " mov.l @r0,r0\n"
  32797. + " mov.l @r15,r5 ! Get the original argument count\n"
  32798. + " sub r0,r5 ! Subtract _dl_skip_args from it\n"
  32799. + " shll2 r0\n"
  32800. + " add r0,r15 ! Adjust the stack pointer to skip _dl_skip_args words\n"
  32801. + " mov.l r5,@r15 ! Store back the modified argument count\n"
  32802. " mov.l .L_dl_fini, r0\n"
  32803. " mov.l @(r0,r12), r4 ! Pass the finalizer in r4\n"
  32804. " jmp @r8\n"
  32805. " nop\n"
  32806. ".L_dl_start:\n"
  32807. " .long _dl_start-.jmp_loc\n"
  32808. + ".L_dl_skip_args:\n"
  32809. + " .long _dl_skip_args@GOT\n"
  32810. ".L_dl_fini:\n"
  32811. " .long _dl_fini@GOT\n"
  32812. ".L_got:\n"
  32813. diff -Nur uClibc-0.9.33.2/ldso/ldso/sh/elfinterp.c uClibc-git/ldso/ldso/sh/elfinterp.c
  32814. --- uClibc-0.9.33.2/ldso/ldso/sh/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  32815. +++ uClibc-git/ldso/ldso/sh/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32816. @@ -160,7 +160,9 @@
  32817. unsigned long old_val;
  32818. #endif
  32819. +#if defined USE_TLS && USE_TLS
  32820. struct elf_resolve *tls_tpnt = NULL;
  32821. +#endif
  32822. struct symbol_ref sym_ref;
  32823. reloc_addr = (unsigned long *)(intptr_t) (tpnt->loadaddr + (unsigned long) rpnt->r_offset);
  32824. @@ -193,7 +195,9 @@
  32825. _dl_debug_lookup (symname, tpnt, &symtab[symtab_index],
  32826. &sym_ref, elf_machine_type_class(reloc_type));
  32827. }
  32828. +#if defined USE_TLS && USE_TLS
  32829. tls_tpnt = sym_ref.tpnt;
  32830. +#endif
  32831. }
  32832. #if defined (__SUPPORT_LD_DEBUG__)
  32833. diff -Nur uClibc-0.9.33.2/ldso/ldso/sh64/dl-startup.h uClibc-git/ldso/ldso/sh64/dl-startup.h
  32834. --- uClibc-0.9.33.2/ldso/ldso/sh64/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32835. +++ uClibc-git/ldso/ldso/sh64/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32836. @@ -7,6 +7,7 @@
  32837. " .section .text..SHmedia32,\"ax\"\n" \
  32838. " .globl _start\n" \
  32839. " .type _start, @function\n" \
  32840. +" .hidden _start\n" \
  32841. " .align 5\n" \
  32842. "_start:\n" \
  32843. " ! Set r12 to point to GOT\n" \
  32844. diff -Nur uClibc-0.9.33.2/ldso/ldso/sparc/dl-startup.h uClibc-git/ldso/ldso/sparc/dl-startup.h
  32845. --- uClibc-0.9.33.2/ldso/ldso/sparc/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32846. +++ uClibc-git/ldso/ldso/sparc/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32847. @@ -8,6 +8,7 @@
  32848. .text\n\
  32849. .global _start\n\
  32850. .type _start,%function\n\
  32851. + .hidden _start\n\
  32852. .align 32\n\
  32853. .register %g2, #scratch\n\
  32854. _start:\n\
  32855. diff -Nur uClibc-0.9.33.2/ldso/ldso/sparc/elfinterp.c uClibc-git/ldso/ldso/sparc/elfinterp.c
  32856. --- uClibc-0.9.33.2/ldso/ldso/sparc/elfinterp.c 2012-05-15 09:20:09.000000000 +0200
  32857. +++ uClibc-git/ldso/ldso/sparc/elfinterp.c 2014-02-03 12:32:56.000000000 +0100
  32858. @@ -275,8 +275,11 @@
  32859. _dl_memcpy((char *)reloc_addr,
  32860. (char *)symbol_addr,
  32861. sym_ref.sym->st_size);
  32862. - } else
  32863. + }
  32864. +#if defined (__SUPPORT_LD_DEBUG__)
  32865. + else
  32866. _dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
  32867. +#endif
  32868. break;
  32869. #if defined USE_TLS && USE_TLS
  32870. case R_SPARC_TLS_DTPMOD32:
  32871. diff -Nur uClibc-0.9.33.2/ldso/ldso/x86_64/dl-startup.h uClibc-git/ldso/ldso/x86_64/dl-startup.h
  32872. --- uClibc-0.9.33.2/ldso/ldso/x86_64/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32873. +++ uClibc-git/ldso/ldso/x86_64/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32874. @@ -10,6 +10,7 @@
  32875. " .text\n"
  32876. " .global _start\n"
  32877. " .type _start,%function\n"
  32878. + " .hidden _start\n"
  32879. "_start:\n"
  32880. " movq %rsp, %rdi\n"
  32881. " call _dl_start\n"
  32882. diff -Nur uClibc-0.9.33.2/ldso/ldso/x86_64/dl-sysdep.h uClibc-git/ldso/ldso/x86_64/dl-sysdep.h
  32883. --- uClibc-0.9.33.2/ldso/ldso/x86_64/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  32884. +++ uClibc-git/ldso/ldso/x86_64/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  32885. @@ -16,9 +16,8 @@
  32886. Lesser General Public License for more details.
  32887. You should have received a copy of the GNU Lesser General Public
  32888. - License along with the GNU C Library; if not, write to the Free
  32889. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  32890. - 02111-1307 USA. */
  32891. + License along with the GNU C Library; if not, see
  32892. + <http://www.gnu.org/licenses/>. */
  32893. /* Define this if the system uses RELOCA. */
  32894. #define ELF_USES_RELOCA
  32895. diff -Nur uClibc-0.9.33.2/ldso/ldso/xtensa/dl-startup.h uClibc-git/ldso/ldso/xtensa/dl-startup.h
  32896. --- uClibc-0.9.33.2/ldso/ldso/xtensa/dl-startup.h 2012-05-15 09:20:09.000000000 +0200
  32897. +++ uClibc-git/ldso/ldso/xtensa/dl-startup.h 2014-02-03 12:32:56.000000000 +0100
  32898. @@ -13,6 +13,7 @@
  32899. " .align 4\n"
  32900. " .global _start\n"
  32901. " .type _start, @function\n"
  32902. + " .hidden _start\n"
  32903. "_start:\n"
  32904. " # Compute load offset in a2: the GOT has not yet been relocated\n"
  32905. " # but the entries for local symbols contain the relative offsets\n"
  32906. diff -Nur uClibc-0.9.33.2/ldso/ldso/xtensa/dl-sysdep.h uClibc-git/ldso/ldso/xtensa/dl-sysdep.h
  32907. --- uClibc-0.9.33.2/ldso/ldso/xtensa/dl-sysdep.h 2012-05-15 09:20:09.000000000 +0200
  32908. +++ uClibc-git/ldso/ldso/xtensa/dl-sysdep.h 2014-02-03 12:32:56.000000000 +0100
  32909. @@ -14,9 +14,8 @@
  32910. Lesser General Public License for more details.
  32911. You should have received a copy of the GNU Lesser General Public
  32912. - License along with the GNU C Library; if not, write to the Free
  32913. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  32914. - Boston, MA 02110-1301, USA. */
  32915. + License along with the GNU C Library; if not, see
  32916. + <http://www.gnu.org/licenses/>. */
  32917. /* Define this if the system uses RELOCA. */
  32918. #define ELF_USES_RELOCA
  32919. diff -Nur uClibc-0.9.33.2/ldso/ldso/xtensa/resolve.S uClibc-git/ldso/ldso/xtensa/resolve.S
  32920. --- uClibc-0.9.33.2/ldso/ldso/xtensa/resolve.S 2012-05-15 09:20:09.000000000 +0200
  32921. +++ uClibc-git/ldso/ldso/xtensa/resolve.S 2014-02-03 12:32:56.000000000 +0100
  32922. @@ -14,9 +14,8 @@
  32923. Lesser General Public License for more details.
  32924. You should have received a copy of the GNU Lesser General Public
  32925. - License along with the GNU C Library; if not, write to the Free
  32926. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  32927. - Boston, MA 02110-1301, USA. */
  32928. + License along with the GNU C Library; if not, see
  32929. + <http://www.gnu.org/licenses/>. */
  32930. #define MIN_FRAME_SIZE 32
  32931. diff -Nur uClibc-0.9.33.2/ldso/libdl/libdl.c uClibc-git/ldso/libdl/libdl.c
  32932. --- uClibc-0.9.33.2/ldso/libdl/libdl.c 2012-05-15 09:20:09.000000000 +0200
  32933. +++ uClibc-git/ldso/libdl/libdl.c 2014-02-03 12:32:56.000000000 +0100
  32934. @@ -32,7 +32,7 @@
  32935. #include <ldso.h>
  32936. #include <stdio.h>
  32937. -#include <string.h> /* Needed for 'strstr' prototype' */
  32938. +#include <string.h>
  32939. #include <stdbool.h>
  32940. #include <bits/uClibc_mutex.h>
  32941. @@ -42,6 +42,7 @@
  32942. #if defined(USE_TLS) && USE_TLS
  32943. #include <ldsodefs.h>
  32944. +#include <dl-tls.h>
  32945. extern void _dl_add_to_slotinfo(struct link_map *l);
  32946. #endif
  32947. @@ -51,7 +52,6 @@
  32948. #ifdef SHARED
  32949. # if defined(USE_TLS) && USE_TLS
  32950. -# include <dl-tls.h>
  32951. extern struct link_map *_dl_update_slotinfo(unsigned long int req_modid);
  32952. # endif
  32953. @@ -269,7 +269,7 @@
  32954. #endif
  32955. #ifndef __LDSO_NO_CLEANUP__
  32956. -void dl_cleanup(void) __attribute__ ((destructor));
  32957. +void dl_cleanup(void) attribute_hidden __attribute__ ((destructor));
  32958. void dl_cleanup(void)
  32959. {
  32960. struct dyn_elf *h, *n;
  32961. @@ -296,11 +296,10 @@
  32962. return p - list;
  32963. }
  32964. -static void *do_dlopen(const char *libname, int flag)
  32965. +static void *do_dlopen(const char *libname, int flag, ElfW(Addr) from)
  32966. {
  32967. struct elf_resolve *tpnt, *tfrom;
  32968. struct dyn_elf *dyn_chain, *rpnt = NULL, *dyn_ptr, *relro_ptr, *handle;
  32969. - ElfW(Addr) from;
  32970. struct elf_resolve *tpnt1;
  32971. void (*dl_brk) (void);
  32972. int now_flag;
  32973. @@ -309,7 +308,9 @@
  32974. struct elf_resolve **init_fini_list;
  32975. static bool _dl_init;
  32976. struct elf_resolve **local_scope;
  32977. +#ifdef SHARED
  32978. struct r_scope_elem *ls;
  32979. +#endif
  32980. #if defined(USE_TLS) && USE_TLS
  32981. bool any_tls = false;
  32982. #endif
  32983. @@ -320,8 +321,6 @@
  32984. return NULL;
  32985. }
  32986. - from = (ElfW(Addr)) __builtin_return_address(0);
  32987. -
  32988. if (!_dl_init) {
  32989. _dl_init = true;
  32990. _dl_malloc_function = malloc;
  32991. @@ -335,7 +334,7 @@
  32992. # ifdef __SUPPORT_LD_DEBUG__
  32993. _dl_debug = getenv("LD_DEBUG");
  32994. if (_dl_debug) {
  32995. - if (_dl_strstr(_dl_debug, "all")) {
  32996. + if (strstr(_dl_debug, "all")) {
  32997. _dl_debug_detail = _dl_debug_move = _dl_debug_symbols
  32998. = _dl_debug_reloc = _dl_debug_bindings = _dl_debug_nofixups = (void*)1;
  32999. } else {
  33000. @@ -377,7 +376,7 @@
  33001. if (getenv("LD_BIND_NOW"))
  33002. now_flag = RTLD_NOW;
  33003. -#if !defined SHARED && defined __LDSO_LIBRARY_PATH__
  33004. +#if !defined SHARED && defined __LDSO_LD_LIBRARY_PATH__
  33005. /* When statically linked, the _dl_library_path is not yet initialized */
  33006. _dl_library_path = getenv("LD_LIBRARY_PATH");
  33007. #endif
  33008. @@ -393,7 +392,7 @@
  33009. return NULL;
  33010. }
  33011. dyn_chain = (struct dyn_elf *) malloc(sizeof(struct dyn_elf));
  33012. - _dl_memset(dyn_chain, 0, sizeof(struct dyn_elf));
  33013. + memset(dyn_chain, 0, sizeof(struct dyn_elf));
  33014. dyn_chain->dyn = tpnt;
  33015. tpnt->rtld_flags |= (flag & RTLD_GLOBAL);
  33016. @@ -444,7 +443,7 @@
  33017. /* This list is for dlsym() and relocation */
  33018. dyn_ptr->next = (struct dyn_elf *) malloc(sizeof(struct dyn_elf));
  33019. - _dl_memset (dyn_ptr->next, 0, sizeof (struct dyn_elf));
  33020. + memset (dyn_ptr->next, 0, sizeof (struct dyn_elf));
  33021. dyn_ptr = dyn_ptr->next;
  33022. dyn_ptr->dyn = tpnt1;
  33023. /* Used to record RTLD_LOCAL scope */
  33024. @@ -544,11 +543,18 @@
  33025. * to the GOT tables. We need to do this in reverse order so that COPY
  33026. * directives work correctly */
  33027. - /* Get the tail of the list */
  33028. +#ifdef SHARED
  33029. + /*
  33030. + * Get the tail of the list.
  33031. + * In the static case doesn't need to extend the global scope, it is
  33032. + * ready to be used as it is, because _dl_loaded_modules already points
  33033. + * to the dlopened library.
  33034. + */
  33035. for (ls = &_dl_loaded_modules->symbol_scope; ls && ls->next; ls = ls->next);
  33036. /* Extend the global scope by adding the local scope of the dlopened DSO. */
  33037. ls->next = &dyn_chain->dyn->symbol_scope;
  33038. +#endif
  33039. #ifdef __mips__
  33040. /*
  33041. * Relocation of the GOT entries for MIPS have to be done
  33042. @@ -661,7 +667,8 @@
  33043. void *ret;
  33044. __UCLIBC_MUTEX_CONDITIONAL_LOCK(_dl_mutex, 1);
  33045. - ret = do_dlopen(libname, flag);
  33046. + ret = do_dlopen(libname, flag,
  33047. + (ElfW(Addr)) __builtin_return_address(0));
  33048. __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(_dl_mutex, 1);
  33049. return ret;
  33050. @@ -671,7 +678,7 @@
  33051. {
  33052. struct elf_resolve *tpnt, *tfrom;
  33053. struct dyn_elf *handle;
  33054. - ElfW(Addr) from;
  33055. + ElfW(Addr) from = 0;
  33056. struct dyn_elf *rpnt;
  33057. void *ret;
  33058. struct symbol_ref sym_ref = { NULL, NULL };
  33059. @@ -729,7 +736,13 @@
  33060. tpnt = NULL;
  33061. if (handle == _dl_symbol_tables)
  33062. tpnt = handle->dyn; /* Only search RTLD_GLOBAL objs if global object */
  33063. - ret = _dl_find_hash(name2, &handle->dyn->symbol_scope, tpnt, ELF_RTYPE_CLASS_DLSYM, &sym_ref);
  33064. +
  33065. + do {
  33066. + ret = _dl_find_hash(name2, &handle->dyn->symbol_scope, tpnt, ELF_RTYPE_CLASS_DLSYM, &sym_ref);
  33067. + if (ret != NULL)
  33068. + break;
  33069. + handle = handle->next;
  33070. + } while (from && handle);
  33071. #if defined(USE_TLS) && USE_TLS && defined SHARED
  33072. if (sym_ref.sym && (ELF_ST_TYPE(sym_ref.sym->st_info) == STT_TLS) && (sym_ref.tpnt)) {
  33073. @@ -1081,8 +1094,10 @@
  33074. * Dump information to stderr about the current loaded modules
  33075. */
  33076. #ifdef __USE_GNU
  33077. +# if 0
  33078. static const char type[][4] = { "Lib", "Exe", "Int", "Mod" };
  33079. +/* reimplement this, being a GNU extension it should be the same as on glibc */
  33080. int dlinfo(void)
  33081. {
  33082. struct elf_resolve *tpnt;
  33083. @@ -1109,6 +1124,7 @@
  33084. }
  33085. return 0;
  33086. }
  33087. +#endif
  33088. static int do_dladdr(const void *__address, Dl_info * __info)
  33089. {
  33090. diff -Nur uClibc-0.9.33.2/ldso/libdl/Makefile.in uClibc-git/ldso/libdl/Makefile.in
  33091. --- uClibc-0.9.33.2/ldso/libdl/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  33092. +++ uClibc-git/ldso/libdl/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  33093. @@ -23,7 +23,7 @@
  33094. LDFLAGS-libdl.so := $(LDFLAGS)
  33095. ifeq ($(LDSO_NO_CLEANUP),)
  33096. -LDFLAGS-libdl.so += -Wl,-fini,dl_cleanup
  33097. +LDFLAGS-libdl.so += -Wl,-fini,$(SYMBOL_PREFIX)dl_cleanup
  33098. endif
  33099. LIBS-libdl.so := $(LIBS) $(ldso)
  33100. diff -Nur uClibc-0.9.33.2/ldso/man/dlopen.3 uClibc-git/ldso/man/dlopen.3
  33101. --- uClibc-0.9.33.2/ldso/man/dlopen.3 2012-05-15 09:20:09.000000000 +0200
  33102. +++ uClibc-git/ldso/man/dlopen.3 2014-02-03 12:32:56.000000000 +0100
  33103. @@ -19,9 +19,8 @@
  33104. .\" GNU General Public License for more details.
  33105. .\"
  33106. .\" You should have received a copy of the GNU General Public
  33107. -.\" License along with this manual; if not, write to the Free
  33108. -.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
  33109. -.\" USA.
  33110. +.\" License along with this manual; if not, see
  33111. +.\" <http://www.gnu.org/licenses/>.
  33112. .\"
  33113. .TH DLOPEN 3 "16 May 1995" "Linux" "Linux Programmer's Manual"
  33114. .SH NAME
  33115. diff -Nur uClibc-0.9.33.2/libc/.gitignore uClibc-git/libc/.gitignore
  33116. --- uClibc-0.9.33.2/libc/.gitignore 1970-01-01 01:00:00.000000000 +0100
  33117. +++ uClibc-git/libc/.gitignore 2014-02-03 12:32:56.000000000 +0100
  33118. @@ -0,0 +1 @@
  33119. +ucontext_i.[chs]
  33120. diff -Nur uClibc-0.9.33.2/libc/inet/addr.c uClibc-git/libc/inet/addr.c
  33121. --- uClibc-0.9.33.2/libc/inet/addr.c 2012-05-15 09:20:09.000000000 +0200
  33122. +++ uClibc-git/libc/inet/addr.c 2014-02-03 12:32:56.000000000 +0100
  33123. @@ -17,8 +17,6 @@
  33124. * Changed to use _int10tostr.
  33125. */
  33126. -#define __FORCE_GLIBC
  33127. -#include <features.h>
  33128. #include <stdio.h>
  33129. #include <string.h>
  33130. #include <ctype.h>
  33131. @@ -114,7 +112,7 @@
  33132. #define INET_NTOA_MAX_LEN 16 /* max 12 digits + 3 '.'s + 1 nul */
  33133. -char *inet_ntoa_r(struct in_addr in, char buf[INET_NTOA_MAX_LEN])
  33134. +static char *__inet_ntoa_r(struct in_addr in, char buf[INET_NTOA_MAX_LEN])
  33135. {
  33136. in_addr_t addr = ntohl(in.s_addr);
  33137. int i;
  33138. @@ -133,12 +131,12 @@
  33139. return p+1;
  33140. }
  33141. -libc_hidden_def(inet_ntoa_r)
  33142. +strong_alias(__inet_ntoa_r,inet_ntoa_r)
  33143. char *inet_ntoa(struct in_addr in)
  33144. {
  33145. static char buf[INET_NTOA_MAX_LEN];
  33146. - return inet_ntoa_r(in, buf);
  33147. + return __inet_ntoa_r(in, buf);
  33148. }
  33149. libc_hidden_def(inet_ntoa)
  33150. #endif
  33151. @@ -153,18 +151,18 @@
  33152. */
  33153. struct in_addr inet_makeaddr(in_addr_t net, in_addr_t host)
  33154. {
  33155. - in_addr_t addr;
  33156. + struct in_addr in;
  33157. if (net < 128)
  33158. - addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
  33159. + in.s_addr = (net << IN_CLASSA_NSHIFT) | (host & IN_CLASSA_HOST);
  33160. else if (net < 65536)
  33161. - addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
  33162. + in.s_addr = (net << IN_CLASSB_NSHIFT) | (host & IN_CLASSB_HOST);
  33163. else if (net < 16777216UL)
  33164. - addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
  33165. + in.s_addr = (net << IN_CLASSC_NSHIFT) | (host & IN_CLASSC_HOST);
  33166. else
  33167. - addr = net | host;
  33168. - addr = htonl(addr);
  33169. - return *(struct in_addr *)&addr;
  33170. + in.s_addr = net | host;
  33171. + in.s_addr = htonl(in.s_addr);
  33172. + return in;
  33173. }
  33174. libc_hidden_def(inet_makeaddr)
  33175. #endif
  33176. diff -Nur uClibc-0.9.33.2/libc/inet/ether_addr.c uClibc-git/libc/inet/ether_addr.c
  33177. --- uClibc-0.9.33.2/libc/inet/ether_addr.c 2012-05-15 09:20:09.000000000 +0200
  33178. +++ uClibc-git/libc/inet/ether_addr.c 2014-02-03 12:32:56.000000000 +0100
  33179. @@ -13,9 +13,8 @@
  33180. Lesser General Public License for more details.
  33181. You should have received a copy of the GNU Lesser General Public
  33182. - License along with the GNU C Library; if not, write to the Free
  33183. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33184. - 02111-1307 USA.
  33185. + License along with the GNU C Library; see the file COPYING.LIB. If
  33186. + not, see <http://www.gnu.org/licenses/>.
  33187. */
  33188. /*
  33189. @@ -23,8 +22,6 @@
  33190. * - initial uClibc port
  33191. */
  33192. -#define __FORCE_GLIBC
  33193. -#include <features.h>
  33194. #include <ctype.h>
  33195. #include <stdio.h>
  33196. #include <stdlib.h>
  33197. diff -Nur uClibc-0.9.33.2/libc/inet/gai_strerror.c uClibc-git/libc/inet/gai_strerror.c
  33198. --- uClibc-0.9.33.2/libc/inet/gai_strerror.c 2012-05-15 09:20:09.000000000 +0200
  33199. +++ uClibc-git/libc/inet/gai_strerror.c 2014-02-03 12:32:56.000000000 +0100
  33200. @@ -13,17 +13,13 @@
  33201. Lesser General Public License for more details.
  33202. You should have received a copy of the GNU Lesser General Public
  33203. - License along with the GNU C Library; if not, write to the Free
  33204. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33205. - 02111-1307 USA. */
  33206. + License along with the GNU C Library; if not, see
  33207. + <http://www.gnu.org/licenses/>. */
  33208. -#define __FORCE_GLIBC
  33209. -#include <features.h>
  33210. #include <stdio.h>
  33211. #include <netdb.h>
  33212. +#include <libintl.h>
  33213. -#define N_(x) x
  33214. -#define _(x) x
  33215. static const struct
  33216. {
  33217. int code;
  33218. diff -Nur uClibc-0.9.33.2/libc/inet/getaddrinfo.c uClibc-git/libc/inet/getaddrinfo.c
  33219. --- uClibc-0.9.33.2/libc/inet/getaddrinfo.c 2012-05-15 09:20:09.000000000 +0200
  33220. +++ uClibc-git/libc/inet/getaddrinfo.c 2014-02-03 12:32:56.000000000 +0100
  33221. @@ -51,8 +51,6 @@
  33222. If these license terms cause you a real problem, contact the author. */
  33223. -#define __FORCE_GLIBC
  33224. -#include <features.h>
  33225. #include <assert.h>
  33226. #include <errno.h>
  33227. #include <netdb.h>
  33228. @@ -283,7 +281,7 @@
  33229. ai->ai_protocol = req->ai_protocol;
  33230. ai->ai_addrlen = sizeof(struct sockaddr_un);
  33231. ai->ai_addr = (void *)ai + sizeof(struct addrinfo);
  33232. -#if SALEN
  33233. +#if 0 /* SALEN */
  33234. ((struct sockaddr_un *)ai->ai_addr)->sun_len = sizeof(struct sockaddr_un);
  33235. #endif /* SALEN */
  33236. @@ -713,7 +711,7 @@
  33237. (*pai)->ai_protocol = st2->protocol;
  33238. (*pai)->ai_addrlen = socklen;
  33239. (*pai)->ai_addr = (void *) (*pai) + sizeof(struct addrinfo);
  33240. -#if defined SALEN
  33241. +#if 0 /* SALEN */
  33242. (*pai)->ai_addr->sa_len = socklen;
  33243. #endif
  33244. (*pai)->ai_addr->sa_family = family;
  33245. diff -Nur uClibc-0.9.33.2/libc/inet/herror.c uClibc-git/libc/inet/herror.c
  33246. --- uClibc-0.9.33.2/libc/inet/herror.c 2012-05-15 09:20:09.000000000 +0200
  33247. +++ uClibc-git/libc/inet/herror.c 2014-02-03 12:32:56.000000000 +0100
  33248. @@ -17,8 +17,6 @@
  33249. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  33250. */
  33251. -#define __FORCE_GLIBC
  33252. -#include <features.h>
  33253. #include <stdio.h>
  33254. #include <string.h>
  33255. #include <netdb.h>
  33256. diff -Nur uClibc-0.9.33.2/libc/inet/hostid.c uClibc-git/libc/inet/hostid.c
  33257. --- uClibc-0.9.33.2/libc/inet/hostid.c 2012-05-15 09:20:09.000000000 +0200
  33258. +++ uClibc-git/libc/inet/hostid.c 2014-02-03 12:32:56.000000000 +0100
  33259. @@ -5,8 +5,6 @@
  33260. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  33261. */
  33262. -#define __FORCE_GLIBC
  33263. -#include <features.h>
  33264. #include <errno.h>
  33265. #include <unistd.h>
  33266. #include <sys/types.h>
  33267. diff -Nur uClibc-0.9.33.2/libc/inet/ifaddrs.c uClibc-git/libc/inet/ifaddrs.c
  33268. --- uClibc-0.9.33.2/libc/inet/ifaddrs.c 2012-05-15 09:20:09.000000000 +0200
  33269. +++ uClibc-git/libc/inet/ifaddrs.c 2014-02-03 12:32:56.000000000 +0100
  33270. @@ -13,12 +13,9 @@
  33271. Lesser General Public License for more details.
  33272. You should have received a copy of the GNU Lesser General Public
  33273. - License along with the GNU C Library; if not, write to the Free
  33274. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33275. - 02111-1307 USA. */
  33276. + License along with the GNU C Library; if not, see
  33277. + <http://www.gnu.org/licenses/>. */
  33278. -#define __FORCE_GLIBC
  33279. -#include <features.h>
  33280. #include <alloca.h>
  33281. #include <assert.h>
  33282. #include <errno.h>
  33283. @@ -33,7 +30,6 @@
  33284. #include <string.h>
  33285. #include <sys/ioctl.h>
  33286. #include <sys/socket.h>
  33287. -#include <libc-internal.h>
  33288. #include <time.h>
  33289. #include <unistd.h>
  33290. diff -Nur uClibc-0.9.33.2/libc/inet/if_index.c uClibc-git/libc/inet/if_index.c
  33291. --- uClibc-0.9.33.2/libc/inet/if_index.c 2012-05-15 09:20:09.000000000 +0200
  33292. +++ uClibc-git/libc/inet/if_index.c 2014-02-03 12:32:56.000000000 +0100
  33293. @@ -13,15 +13,12 @@
  33294. Lesser General Public License for more details.
  33295. You should have received a copy of the GNU Lesser General Public
  33296. - License along with the GNU C Library; if not, write to the Free
  33297. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33298. - 02111-1307 USA.
  33299. + License along with the GNU C Library; see the file COPYING.LIB. If
  33300. + not, see <http://www.gnu.org/licenses/>.
  33301. Reworked Dec 2002 by Erik Andersen <andersen@codepoet.org>
  33302. */
  33303. -#define __FORCE_GLIBC
  33304. -#include <features.h>
  33305. #include <string.h>
  33306. #include <alloca.h>
  33307. #include <errno.h>
  33308. @@ -31,7 +28,6 @@
  33309. #include <net/if.h>
  33310. #include <sys/socket.h>
  33311. #include <sys/ioctl.h>
  33312. -#include <libc-internal.h>
  33313. #include <not-cancel.h>
  33314. #include "netlinkaccess.h"
  33315. diff -Nur uClibc-0.9.33.2/libc/inet/in6_addr.c uClibc-git/libc/inet/in6_addr.c
  33316. --- uClibc-0.9.33.2/libc/inet/in6_addr.c 2012-05-15 09:20:09.000000000 +0200
  33317. +++ uClibc-git/libc/inet/in6_addr.c 2014-02-03 12:32:56.000000000 +0100
  33318. @@ -13,12 +13,9 @@
  33319. Lesser General Public License for more details.
  33320. You should have received a copy of the GNU Lesser General Public
  33321. - License along with the GNU C Library; if not, write to the Free
  33322. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33323. - 02111-1307 USA. */
  33324. + License along with the GNU C Library; if not, see
  33325. + <http://www.gnu.org/licenses/>. */
  33326. -#define __FORCE_GLIBC
  33327. -#include <features.h>
  33328. #include <netinet/in.h>
  33329. #ifdef __UCLIBC_HAS_IPV6__
  33330. diff -Nur uClibc-0.9.33.2/libc/inet/inet_addr.c uClibc-git/libc/inet/inet_addr.c
  33331. --- uClibc-0.9.33.2/libc/inet/inet_addr.c 2012-05-15 09:20:09.000000000 +0200
  33332. +++ uClibc-git/libc/inet/inet_addr.c 2014-02-03 12:32:56.000000000 +0100
  33333. @@ -4,5 +4,5 @@
  33334. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  33335. */
  33336. -#define L_inet_makeaddr
  33337. +#define L_inet_addr
  33338. #include "addr.c"
  33339. diff -Nur uClibc-0.9.33.2/libc/inet/inet_makeaddr.c uClibc-git/libc/inet/inet_makeaddr.c
  33340. --- uClibc-0.9.33.2/libc/inet/inet_makeaddr.c 2012-05-15 09:20:09.000000000 +0200
  33341. +++ uClibc-git/libc/inet/inet_makeaddr.c 2014-02-03 12:32:56.000000000 +0100
  33342. @@ -4,5 +4,5 @@
  33343. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  33344. */
  33345. -#define L_inet_addr
  33346. +#define L_inet_makeaddr
  33347. #include "addr.c"
  33348. diff -Nur uClibc-0.9.33.2/libc/inet/inet_net.c uClibc-git/libc/inet/inet_net.c
  33349. --- uClibc-0.9.33.2/libc/inet/inet_net.c 2012-05-15 09:20:09.000000000 +0200
  33350. +++ uClibc-git/libc/inet/inet_net.c 2014-02-03 12:32:56.000000000 +0100
  33351. @@ -32,8 +32,6 @@
  33352. * SUCH DAMAGE.
  33353. */
  33354. -#define __FORCE_GLIBC
  33355. -#include <features.h>
  33356. #include <ctype.h>
  33357. #include <netinet/in.h>
  33358. #include <arpa/inet.h>
  33359. diff -Nur uClibc-0.9.33.2/libc/inet/Makefile.in uClibc-git/libc/inet/Makefile.in
  33360. --- uClibc-0.9.33.2/libc/inet/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  33361. +++ uClibc-git/libc/inet/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  33362. @@ -11,33 +11,34 @@
  33363. INET_DIR := $(top_srcdir)libc/inet
  33364. INET_OUT := $(top_builddir)libc/inet
  33365. +V4_OR_V6 := $(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6))
  33366. CFLAGS-inet := -DRESOLVER="\"resolv.c\""
  33367. CSRC-y :=
  33368. # des uses ntohl
  33369. -CSRC-$(findstring y,$(UCLIBC_HAS_CRYPT_IMPL)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += ntohl.c
  33370. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  33371. +CSRC-$(findstring y,$(UCLIBC_HAS_CRYPT_IMPL)$(V4_OR_V6)) += ntohl.c
  33372. +CSRC-$(V4_OR_V6) += \
  33373. getservice.c getproto.c getnet.c hostid.c \
  33374. inet_net.c herror.c if_index.c gai_strerror.c getaddrinfo.c \
  33375. ifaddrs.c ntop.c
  33376. CSRC-$(UCLIBC_HAS_IPV6) += in6_addr.c
  33377. # multi source addr.c
  33378. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  33379. +CSRC-$(V4_OR_V6) += \
  33380. inet_aton.c inet_addr.c inet_ntoa.c inet_makeaddr.c \
  33381. inet_lnaof.c inet_netof.c
  33382. # multi source resolv.c
  33383. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  33384. +CSRC-$(V4_OR_V6) += \
  33385. encodeh.c decodeh.c encoded.c decoded.c \
  33386. encodeq.c encodea.c \
  33387. read_etc_hosts_r.c \
  33388. dnslookup.c opennameservers.c closenameservers.c \
  33389. getnameinfo.c \
  33390. gethostent.c gethostent_r.c
  33391. -CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \
  33392. +CSRC-$(V4_OR_V6) += \
  33393. get_hosts_byaddr_r.c get_hosts_byname_r.c \
  33394. gethostbyaddr_r.c gethostbyname_r.c gethostbyname2_r.c \
  33395. gethostbyaddr.c gethostbyname.c gethostbyname2.c
  33396. -CSRC-$(findstring y,$(UCLIBC_HAS_RESOLVER_SUPPORT)) += \
  33397. +CSRC-$(UCLIBC_HAS_RESOLVER_SUPPORT) += \
  33398. ns_netint.c ns_parse.c res_data.c \
  33399. res_init.c res_query.c res_comp.c ns_name.c \
  33400. _res_state.c
  33401. @@ -52,7 +53,7 @@
  33402. socketcalls_CSRC-$(UCLIBC_LINUX_SPECIFIC) += accept4.c
  33403. CSRC-$(UCLIBC_HAS_SOCKET) += $(socketcalls_CSRC-y) opensock.c
  33404. -CSRC-$(findstring y,$(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += ethers.c ether_addr.c
  33405. +CSRC-$(findstring y,$(UCLIBC_HAS_SOCKET)$(V4_OR_V6)) += ethers.c ether_addr.c
  33406. INET_SRC := $(patsubst %.c,$(INET_DIR)/%.c,$(CSRC-y))
  33407. INET_OBJ := $(patsubst %.c,$(INET_OUT)/%.o,$(CSRC-y))
  33408. diff -Nur uClibc-0.9.33.2/libc/inet/netlinkaccess.h uClibc-git/libc/inet/netlinkaccess.h
  33409. --- uClibc-0.9.33.2/libc/inet/netlinkaccess.h 2012-05-15 09:20:09.000000000 +0200
  33410. +++ uClibc-git/libc/inet/netlinkaccess.h 2014-02-03 12:32:56.000000000 +0100
  33411. @@ -12,9 +12,8 @@
  33412. Lesser General Public License for more details.
  33413. You should have received a copy of the GNU Lesser General Public
  33414. - License along with the GNU C Library; if not, write to the Free
  33415. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33416. - 02111-1307 USA. */
  33417. + License along with the GNU C Library; if not, see
  33418. + <http://www.gnu.org/licenses/>. */
  33419. #ifndef _NETLINKACCESS_H
  33420. #define _NETLINKACCESS_H 1
  33421. diff -Nur uClibc-0.9.33.2/libc/inet/ntohl.c uClibc-git/libc/inet/ntohl.c
  33422. --- uClibc-0.9.33.2/libc/inet/ntohl.c 2012-05-15 09:20:09.000000000 +0200
  33423. +++ uClibc-git/libc/inet/ntohl.c 2014-02-03 12:32:56.000000000 +0100
  33424. @@ -6,9 +6,6 @@
  33425. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  33426. */
  33427. -#include <stdint.h>
  33428. -#include <endian.h>
  33429. -#include <byteswap.h>
  33430. #include <netinet/in.h>
  33431. #undef ntohl
  33432. @@ -16,51 +13,30 @@
  33433. #undef htonl
  33434. #undef htons
  33435. -#if __BYTE_ORDER == __BIG_ENDIAN
  33436. -uint32_t ntohl (uint32_t x)
  33437. -{
  33438. - return x;
  33439. -}
  33440. -
  33441. -uint16_t ntohs (uint16_t x)
  33442. -{
  33443. - return x;
  33444. -}
  33445. -
  33446. -uint32_t htonl (uint32_t x)
  33447. -{
  33448. - return x;
  33449. -}
  33450. +#if __BYTE_ORDER != __BIG_ENDIAN && __BYTE_ORDER != __LITTLE_ENDIAN
  33451. +# error "You seem to have an unsupported byteorder"
  33452. +#endif
  33453. -uint16_t htons (uint16_t x)
  33454. -{
  33455. - return x;
  33456. -}
  33457. -#elif __BYTE_ORDER == __LITTLE_ENDIAN
  33458. uint32_t ntohl (uint32_t x)
  33459. {
  33460. +#if __BYTE_ORDER == __BIG_ENDIAN
  33461. + return x;
  33462. +#else
  33463. return __bswap_32(x);
  33464. +#endif
  33465. }
  33466. +libc_hidden_def(ntohl)
  33467. +strong_alias(ntohl,htonl)
  33468. +libc_hidden_def(htonl)
  33469. uint16_t ntohs (uint16_t x)
  33470. {
  33471. - return __bswap_16(x);
  33472. -}
  33473. -
  33474. -uint32_t htonl (uint32_t x)
  33475. -{
  33476. - return __bswap_32(x);
  33477. -}
  33478. -
  33479. -uint16_t htons (uint16_t x)
  33480. -{
  33481. - return __bswap_16(x);
  33482. -}
  33483. +#if __BYTE_ORDER == __BIG_ENDIAN
  33484. + return x;
  33485. #else
  33486. -#error "You seem to have an unsupported byteorder"
  33487. + return __bswap_16(x);
  33488. #endif
  33489. -
  33490. -libc_hidden_def(ntohl)
  33491. +}
  33492. libc_hidden_def(ntohs)
  33493. -libc_hidden_def(htonl)
  33494. +strong_alias(ntohs,htons)
  33495. libc_hidden_def(htons)
  33496. diff -Nur uClibc-0.9.33.2/libc/inet/ntop.c uClibc-git/libc/inet/ntop.c
  33497. --- uClibc-0.9.33.2/libc/inet/ntop.c 2012-05-15 09:20:09.000000000 +0200
  33498. +++ uClibc-git/libc/inet/ntop.c 2014-02-03 12:32:56.000000000 +0100
  33499. @@ -15,8 +15,6 @@
  33500. * SOFTWARE.
  33501. */
  33502. -#define __FORCE_GLIBC
  33503. -#include <features.h>
  33504. #include <sys/param.h>
  33505. #include <sys/types.h>
  33506. #include <sys/socket.h>
  33507. diff -Nur uClibc-0.9.33.2/libc/inet/opensock.c uClibc-git/libc/inet/opensock.c
  33508. --- uClibc-0.9.33.2/libc/inet/opensock.c 2012-05-15 09:20:09.000000000 +0200
  33509. +++ uClibc-git/libc/inet/opensock.c 2014-02-03 12:32:56.000000000 +0100
  33510. @@ -12,18 +12,11 @@
  33511. Lesser General Public License for more details.
  33512. You should have received a copy of the GNU Lesser General Public
  33513. - License along with the GNU C Library; if not, write to the Free
  33514. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  33515. - 02111-1307 USA. */
  33516. + License along with the GNU C Library; if not, see
  33517. + <http://www.gnu.org/licenses/>. */
  33518. -#include <assert.h>
  33519. -#include <errno.h>
  33520. -#include <stdio.h>
  33521. -#include <string.h>
  33522. -#include <unistd.h>
  33523. #include <sys/socket.h>
  33524. -#include <features.h>
  33525. -#include <libc-internal.h>
  33526. +#include <bits/kernel-features.h>
  33527. /* Return a socket of any type. The socket can be used in subsequent
  33528. ioctl calls to talk to the kernel. */
  33529. diff -Nur uClibc-0.9.33.2/libc/inet/resolv.c uClibc-git/libc/inet/resolv.c
  33530. --- uClibc-0.9.33.2/libc/inet/resolv.c 2012-05-15 09:20:09.000000000 +0200
  33531. +++ uClibc-git/libc/inet/resolv.c 2014-02-03 12:32:56.000000000 +0100
  33532. @@ -293,8 +293,6 @@
  33533. - a sequence of labels ending with a pointer
  33534. */
  33535. -#define __FORCE_GLIBC
  33536. -#include <features.h>
  33537. #include <string.h>
  33538. #include <stdio.h>
  33539. #include <stdio_ext.h>
  33540. @@ -317,6 +315,7 @@
  33541. #include <sys/utsname.h>
  33542. #include <sys/un.h>
  33543. #include <sys/stat.h>
  33544. +#include <sys/param.h>
  33545. #include <bits/uClibc_mutex.h>
  33546. #include "internal/parse_config.h"
  33547. @@ -406,7 +405,7 @@
  33548. } sockaddr46_t;
  33549. -__UCLIBC_MUTEX_EXTERN(__resolv_lock);
  33550. +__UCLIBC_MUTEX_EXTERN(__resolv_lock) attribute_hidden;
  33551. /* Protected by __resolv_lock */
  33552. extern void (*__res_sync)(void) attribute_hidden;
  33553. @@ -566,7 +565,7 @@
  33554. #ifdef L_encodeh
  33555. -int attribute_hidden __encode_header(struct resolv_header *h, unsigned char *dest, int maxlen)
  33556. +int __encode_header(struct resolv_header *h, unsigned char *dest, int maxlen)
  33557. {
  33558. if (maxlen < HFIXEDSZ)
  33559. return -1;
  33560. @@ -595,7 +594,7 @@
  33561. #ifdef L_decodeh
  33562. -void attribute_hidden __decode_header(unsigned char *data,
  33563. +void __decode_header(unsigned char *data,
  33564. struct resolv_header *h)
  33565. {
  33566. h->id = (data[0] << 8) | data[1];
  33567. @@ -619,7 +618,7 @@
  33568. /* Encode a dotted string into nameserver transport-level encoding.
  33569. This routine is fairly dumb, and doesn't attempt to compress
  33570. the data */
  33571. -int attribute_hidden __encode_dotted(const char *dotted, unsigned char *dest, int maxlen)
  33572. +int __encode_dotted(const char *dotted, unsigned char *dest, int maxlen)
  33573. {
  33574. unsigned used = 0;
  33575. @@ -657,7 +656,7 @@
  33576. /* Decode a dotted string from nameserver transport-level encoding.
  33577. This routine understands compressed data. */
  33578. -int attribute_hidden __decode_dotted(const unsigned char *packet,
  33579. +int __decode_dotted(const unsigned char *packet,
  33580. int offset,
  33581. int packet_len,
  33582. char *dest,
  33583. @@ -722,7 +721,7 @@
  33584. #ifdef L_encodeq
  33585. -int attribute_hidden __encode_question(const struct resolv_question *q,
  33586. +int __encode_question(const struct resolv_question *q,
  33587. unsigned char *dest,
  33588. int maxlen)
  33589. {
  33590. @@ -750,7 +749,7 @@
  33591. #ifdef L_encodea
  33592. -int attribute_hidden __encode_answer(struct resolv_answer *a, unsigned char *dest, int maxlen)
  33593. +int __encode_answer(struct resolv_answer *a, unsigned char *dest, int maxlen)
  33594. {
  33595. int i;
  33596. @@ -864,7 +863,7 @@
  33597. const char *name,
  33598. int type,
  33599. unsigned char *packet,
  33600. - int maxlen);
  33601. + int maxlen) attribute_hidden;
  33602. int __form_query(int id,
  33603. const char *name,
  33604. int type,
  33605. @@ -956,7 +955,7 @@
  33606. }
  33607. /* Must be called under __resolv_lock. */
  33608. -void attribute_hidden __open_nameservers(void)
  33609. +void __open_nameservers(void)
  33610. {
  33611. static uint32_t resolv_conf_mtime;
  33612. @@ -1122,7 +1121,7 @@
  33613. #ifdef L_closenameservers
  33614. /* Must be called under __resolv_lock. */
  33615. -void attribute_hidden __close_nameservers(void)
  33616. +void __close_nameservers(void)
  33617. {
  33618. if (__nameserver != (void*) &__local_nameserver)
  33619. free(__nameserver);
  33620. @@ -1230,7 +1229,7 @@
  33621. * appended. (why the filed is called "dotted" I have no idea)
  33622. * This is a malloced string. May be NULL because strdup failed.
  33623. */
  33624. -int attribute_hidden __dns_lookup(const char *name,
  33625. +int __dns_lookup(const char *name,
  33626. int type,
  33627. unsigned char **outpacket,
  33628. struct resolv_answer *a)
  33629. @@ -1594,7 +1593,7 @@
  33630. #define HALISTOFF (sizeof(char*) * MAXTOKENS)
  33631. #define INADDROFF (HALISTOFF + 2 * sizeof(char*))
  33632. -int attribute_hidden __read_etc_hosts_r(
  33633. +int __read_etc_hosts_r(
  33634. parser_t * parser,
  33635. const char *name,
  33636. int type,
  33637. @@ -1708,7 +1707,7 @@
  33638. #ifdef L_get_hosts_byname_r
  33639. -int attribute_hidden __get_hosts_byname_r(const char *name,
  33640. +int __get_hosts_byname_r(const char *name,
  33641. int type,
  33642. struct hostent *result_buf,
  33643. char *buf,
  33644. @@ -1724,7 +1723,7 @@
  33645. #ifdef L_get_hosts_byaddr_r
  33646. -int attribute_hidden __get_hosts_byaddr_r(const char *addr,
  33647. +int __get_hosts_byaddr_r(const char *addr,
  33648. int len,
  33649. int type,
  33650. struct hostent *result_buf,
  33651. @@ -1775,7 +1774,7 @@
  33652. unsigned flags)
  33653. {
  33654. int serrno = errno;
  33655. - unsigned ok;
  33656. + bool ok = 0;
  33657. struct hostent *hoste = NULL;
  33658. char domain[256];
  33659. @@ -1785,16 +1784,15 @@
  33660. if (sa == NULL || addrlen < sizeof(sa_family_t))
  33661. return EAI_FAMILY;
  33662. - ok = sa->sa_family;
  33663. - if (ok == AF_LOCAL) /* valid */;
  33664. + if (sa->sa_family == AF_LOCAL) /* valid */;
  33665. #ifdef __UCLIBC_HAS_IPV4__
  33666. - else if (ok == AF_INET) {
  33667. + else if (sa->sa_family == AF_INET) {
  33668. if (addrlen < sizeof(struct sockaddr_in))
  33669. return EAI_FAMILY;
  33670. }
  33671. #endif
  33672. #ifdef __UCLIBC_HAS_IPV6__
  33673. - else if (ok == AF_INET6) {
  33674. + else if (sa->sa_family == AF_INET6) {
  33675. if (addrlen < sizeof(struct sockaddr_in6))
  33676. return EAI_FAMILY;
  33677. }
  33678. @@ -1802,7 +1800,6 @@
  33679. else
  33680. return EAI_FAMILY;
  33681. - ok = 0;
  33682. if (host != NULL && hostlen > 0)
  33683. switch (sa->sa_family) {
  33684. case AF_INET:
  33685. @@ -1826,21 +1823,18 @@
  33686. if (hoste) {
  33687. char *c;
  33688. -#undef min
  33689. -#define min(x,y) (((x) > (y)) ? (y) : (x))
  33690. if ((flags & NI_NOFQDN)
  33691. && (getdomainname(domain, sizeof(domain)) == 0)
  33692. && (c = strstr(hoste->h_name, domain)) != NULL
  33693. && (c != hoste->h_name) && (*(--c) == '.')
  33694. ) {
  33695. strncpy(host, hoste->h_name,
  33696. - min(hostlen, (size_t) (c - hoste->h_name)));
  33697. - host[min(hostlen - 1, (size_t) (c - hoste->h_name))] = '\0';
  33698. + MIN(hostlen, (size_t) (c - hoste->h_name)));
  33699. + host[MIN(hostlen - 1, (size_t) (c - hoste->h_name))] = '\0';
  33700. } else {
  33701. strncpy(host, hoste->h_name, hostlen);
  33702. }
  33703. ok = 1;
  33704. -#undef min
  33705. }
  33706. }
  33707. @@ -3432,6 +3426,7 @@
  33708. */
  33709. }
  33710. +/* has to be called under __resolv_lock */
  33711. static int
  33712. __res_vinit(res_state rp, int preinit)
  33713. {
  33714. @@ -3440,7 +3435,6 @@
  33715. int m = 0;
  33716. #endif
  33717. - __UCLIBC_MUTEX_LOCK(__resolv_lock);
  33718. __close_nameservers();
  33719. __open_nameservers();
  33720. @@ -3532,29 +3526,87 @@
  33721. rp->options |= RES_INIT;
  33722. + return 0;
  33723. +}
  33724. +
  33725. +static unsigned int
  33726. +res_randomid(void)
  33727. +{
  33728. + return 0xffff & getpid();
  33729. +}
  33730. +
  33731. +/* Our res_init never fails (always returns 0) */
  33732. +int
  33733. +res_init(void)
  33734. +{
  33735. + /*
  33736. + * These three fields used to be statically initialized. This made
  33737. + * it hard to use this code in a shared library. It is necessary,
  33738. + * now that we're doing dynamic initialization here, that we preserve
  33739. + * the old semantics: if an application modifies one of these three
  33740. + * fields of _res before res_init() is called, res_init() will not
  33741. + * alter them. Of course, if an application is setting them to
  33742. + * _zero_ before calling res_init(), hoping to override what used
  33743. + * to be the static default, we can't detect it and unexpected results
  33744. + * will follow. Zero for any of these fields would make no sense,
  33745. + * so one can safely assume that the applications were already getting
  33746. + * unexpected results.
  33747. + *
  33748. + * _res.options is tricky since some apps were known to diddle the bits
  33749. + * before res_init() was first called. We can't replicate that semantic
  33750. + * with dynamic initialization (they may have turned bits off that are
  33751. + * set in RES_DEFAULT). Our solution is to declare such applications
  33752. + * "broken". They could fool us by setting RES_INIT but none do (yet).
  33753. + */
  33754. +
  33755. + __UCLIBC_MUTEX_LOCK(__resolv_lock);
  33756. +
  33757. + if (!_res.retrans)
  33758. + _res.retrans = RES_TIMEOUT;
  33759. + if (!_res.retry)
  33760. + _res.retry = 4;
  33761. + if (!(_res.options & RES_INIT))
  33762. + _res.options = RES_DEFAULT;
  33763. +
  33764. + /*
  33765. + * This one used to initialize implicitly to zero, so unless the app
  33766. + * has set it to something in particular, we can randomize it now.
  33767. + */
  33768. + if (!_res.id)
  33769. + _res.id = res_randomid();
  33770. +
  33771. + __res_sync = NULL;
  33772. + __res_vinit(&_res, 1);
  33773. + __res_sync = res_sync_func;
  33774. +
  33775. __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  33776. +
  33777. return 0;
  33778. }
  33779. +libc_hidden_def(res_init)
  33780. static void
  33781. -__res_iclose(void)
  33782. +__res_iclose(res_state statp)
  33783. {
  33784. + struct __res_state * rp = statp;
  33785. __UCLIBC_MUTEX_LOCK(__resolv_lock);
  33786. + if (rp == NULL)
  33787. + rp = __res_state();
  33788. __close_nameservers();
  33789. __res_sync = NULL;
  33790. #ifdef __UCLIBC_HAS_IPV6__
  33791. {
  33792. - char *p1 = (char*) &(_res.nsaddr_list[0]);
  33793. - int m = 0;
  33794. + char *p1 = (char*) &(rp->nsaddr_list[0]);
  33795. + unsigned int m = 0;
  33796. /* free nsaddrs[m] if they do not point to nsaddr_list[x] */
  33797. - while (m < ARRAY_SIZE(_res._u._ext.nsaddrs)) {
  33798. - char *p2 = (char*)(_res._u._ext.nsaddrs[m++]);
  33799. - if (p2 < p1 || (p2 - p1) > sizeof(_res.nsaddr_list))
  33800. + while (m < ARRAY_SIZE(rp->_u._ext.nsaddrs)) {
  33801. + char *p2 = (char*)(rp->_u._ext.nsaddrs[m++]);
  33802. + if (p2 < p1 || (p2 - p1) > (signed)sizeof(rp->nsaddr_list))
  33803. free(p2);
  33804. }
  33805. }
  33806. #endif
  33807. - memset(&_res, 0, sizeof(_res));
  33808. + memset(rp, 0, sizeof(struct __res_state));
  33809. __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  33810. }
  33811. @@ -3569,13 +3621,13 @@
  33812. void
  33813. res_nclose(res_state statp)
  33814. {
  33815. - __res_iclose();
  33816. + __res_iclose(statp);
  33817. }
  33818. #ifdef __UCLIBC_HAS_BSD_RES_CLOSE__
  33819. void res_close(void)
  33820. {
  33821. - __res_iclose();
  33822. + __res_iclose(NULL);
  33823. }
  33824. #endif
  33825. @@ -3595,74 +3647,14 @@
  33826. # if defined __UCLIBC_HAS_TLS__
  33827. # undef __resp
  33828. __thread struct __res_state *__resp = &_res;
  33829. -/*
  33830. - * FIXME: Add usage of hidden attribute for this when used in the shared
  33831. - * library. It currently crashes the linker when doing section
  33832. - * relocations.
  33833. - */
  33834. extern __thread struct __res_state *__libc_resp
  33835. - __attribute__ ((alias ("__resp"))) attribute_hidden;
  33836. + __attribute__ ((alias ("__resp"))) attribute_hidden attribute_tls_model_ie;
  33837. # else
  33838. # undef __resp
  33839. struct __res_state *__resp = &_res;
  33840. # endif
  33841. #endif /* !__UCLIBC_HAS_THREADS__ */
  33842. -static unsigned int
  33843. -res_randomid(void)
  33844. -{
  33845. - return 0xffff & getpid();
  33846. -}
  33847. -
  33848. -/* Our res_init never fails (always returns 0) */
  33849. -int
  33850. -res_init(void)
  33851. -{
  33852. - /*
  33853. - * These three fields used to be statically initialized. This made
  33854. - * it hard to use this code in a shared library. It is necessary,
  33855. - * now that we're doing dynamic initialization here, that we preserve
  33856. - * the old semantics: if an application modifies one of these three
  33857. - * fields of _res before res_init() is called, res_init() will not
  33858. - * alter them. Of course, if an application is setting them to
  33859. - * _zero_ before calling res_init(), hoping to override what used
  33860. - * to be the static default, we can't detect it and unexpected results
  33861. - * will follow. Zero for any of these fields would make no sense,
  33862. - * so one can safely assume that the applications were already getting
  33863. - * unexpected results.
  33864. - *
  33865. - * _res.options is tricky since some apps were known to diddle the bits
  33866. - * before res_init() was first called. We can't replicate that semantic
  33867. - * with dynamic initialization (they may have turned bits off that are
  33868. - * set in RES_DEFAULT). Our solution is to declare such applications
  33869. - * "broken". They could fool us by setting RES_INIT but none do (yet).
  33870. - */
  33871. -
  33872. - __UCLIBC_MUTEX_LOCK(__resolv_lock);
  33873. -
  33874. - if (!_res.retrans)
  33875. - _res.retrans = RES_TIMEOUT;
  33876. - if (!_res.retry)
  33877. - _res.retry = 4;
  33878. - if (!(_res.options & RES_INIT))
  33879. - _res.options = RES_DEFAULT;
  33880. -
  33881. - /*
  33882. - * This one used to initialize implicitly to zero, so unless the app
  33883. - * has set it to something in particular, we can randomize it now.
  33884. - */
  33885. - if (!_res.id)
  33886. - _res.id = res_randomid();
  33887. - __res_sync = res_sync_func;
  33888. -
  33889. - __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  33890. -
  33891. - __res_vinit(&_res, 1);
  33892. -
  33893. - return 0;
  33894. -}
  33895. -libc_hidden_def(res_init)
  33896. -
  33897. /*
  33898. * Set up default settings. If the configuration file exist, the values
  33899. * there will have precedence. Otherwise, the server address is set to
  33900. @@ -3687,7 +3679,11 @@
  33901. int
  33902. res_ninit(res_state statp)
  33903. {
  33904. - return __res_vinit(statp, 0);
  33905. + int ret;
  33906. + __UCLIBC_MUTEX_LOCK(__resolv_lock);
  33907. + ret = __res_vinit(statp, 0);
  33908. + __UCLIBC_MUTEX_UNLOCK(__resolv_lock);
  33909. + return ret;
  33910. }
  33911. #endif /* L_res_init */
  33912. @@ -3740,11 +3736,10 @@
  33913. free(a.dotted);
  33914. - if (a.atype == type) { /* CNAME */
  33915. - if (i > anslen)
  33916. - i = anslen;
  33917. - memcpy(answer, packet, i);
  33918. - }
  33919. + if (i > anslen)
  33920. + i = anslen;
  33921. + memcpy(answer, packet, i);
  33922. +
  33923. free(packet);
  33924. return i;
  33925. }
  33926. @@ -4227,7 +4222,7 @@
  33927. hp = (HEADER *) buf;
  33928. hp->id = getpid() & 0xffff;
  33929. hp->opcode = op;
  33930. - hp->rd = (_res.options & RES_RECURSE) != 0U;
  33931. + hp->rd = (_res_options & RES_RECURSE) != 0U;
  33932. hp->rcode = NOERROR;
  33933. cp = buf + HFIXEDSZ;
  33934. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/auth_none.c uClibc-git/libc/inet/rpc/auth_none.c
  33935. --- uClibc-0.9.33.2/libc/inet/rpc/auth_none.c 2012-05-15 09:20:09.000000000 +0200
  33936. +++ uClibc-git/libc/inet/rpc/auth_none.c 2014-02-03 12:32:56.000000000 +0100
  33937. @@ -35,8 +35,6 @@
  33938. * credentials and verifiers to remote systems.
  33939. */
  33940. -#define __FORCE_GLIBC
  33941. -#include <features.h>
  33942. #include "rpc_private.h"
  33943. @@ -66,49 +64,54 @@
  33944. char marshalled_client[MAX_MARSHAL_SIZE];
  33945. u_int mcnt;
  33946. };
  33947. +
  33948. +static struct authnone_private_s authnone_private;
  33949. #ifdef __UCLIBC_HAS_THREADS__
  33950. -#define authnone_private (*(struct authnone_private_s **)&RPC_THREAD_VARIABLE(authnone_private_s))
  33951. -#else
  33952. -static struct authnone_private_s *authnone_private;
  33953. +__libc_once_define(static, authnone_private_guard);
  33954. #endif
  33955. -AUTH *
  33956. -authnone_create (void)
  33957. +static void authnone_create_once (void);
  33958. +
  33959. +static void
  33960. +authnone_create_once (void)
  33961. {
  33962. struct authnone_private_s *ap;
  33963. XDR xdr_stream;
  33964. XDR *xdrs;
  33965. - ap = (struct authnone_private_s *) authnone_private;
  33966. - if (ap == NULL)
  33967. - {
  33968. - ap = (struct authnone_private_s *) calloc (1, sizeof (*ap));
  33969. - if (ap == NULL)
  33970. - return NULL;
  33971. - authnone_private = ap;
  33972. - }
  33973. - if (!ap->mcnt)
  33974. - {
  33975. - ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth;
  33976. - ap->no_client.ah_ops = (struct auth_ops *)&ops;
  33977. - xdrs = &xdr_stream;
  33978. - xdrmem_create (xdrs, ap->marshalled_client, (u_int) MAX_MARSHAL_SIZE,
  33979. - XDR_ENCODE);
  33980. - (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_cred);
  33981. - (void) xdr_opaque_auth (xdrs, &ap->no_client.ah_verf);
  33982. - ap->mcnt = XDR_GETPOS (xdrs);
  33983. - XDR_DESTROY (xdrs);
  33984. - }
  33985. - return (&ap->no_client);
  33986. + ap = &authnone_private;
  33987. +
  33988. + ap->no_client.ah_cred = ap->no_client.ah_verf = _null_auth;
  33989. + ap->no_client.ah_ops = (struct auth_ops *) &ops;
  33990. + xdrs = &xdr_stream;
  33991. + xdrmem_create(xdrs, ap->marshalled_client,
  33992. + (u_int) MAX_MARSHAL_SIZE, XDR_ENCODE);
  33993. + (void) xdr_opaque_auth(xdrs, &ap->no_client.ah_cred);
  33994. + (void) xdr_opaque_auth(xdrs, &ap->no_client.ah_verf);
  33995. + ap->mcnt = XDR_GETPOS (xdrs);
  33996. + XDR_DESTROY (xdrs);
  33997. +}
  33998. +
  33999. +AUTH *
  34000. +authnone_create (void)
  34001. +{
  34002. +#ifdef __UCLIBC_HAS_THREADS__
  34003. + __libc_once (authnone_private_guard, authnone_create_once);
  34004. +#else
  34005. + authnone_create_once();
  34006. +#endif
  34007. + return &authnone_private.no_client;
  34008. }
  34009. libc_hidden_def(authnone_create)
  34010. static bool_t
  34011. -authnone_marshal (AUTH *client attribute_unused, XDR *xdrs)
  34012. +authnone_marshal (AUTH *client, XDR *xdrs)
  34013. {
  34014. struct authnone_private_s *ap;
  34015. - ap = authnone_private;
  34016. + /* authnone_create returned authnone_private->no_client, which is
  34017. + the first field of struct authnone_private_s. */
  34018. + ap = (struct authnone_private_s *) client;
  34019. if (ap == NULL)
  34020. return FALSE;
  34021. return (*xdrs->x_ops->x_putbytes) (xdrs, ap->marshalled_client, ap->mcnt);
  34022. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/auth_unix.c uClibc-git/libc/inet/rpc/auth_unix.c
  34023. --- uClibc-0.9.33.2/libc/inet/rpc/auth_unix.c 2012-05-15 09:20:09.000000000 +0200
  34024. +++ uClibc-git/libc/inet/rpc/auth_unix.c 2014-02-03 12:32:56.000000000 +0100
  34025. @@ -38,13 +38,11 @@
  34026. * for the credentials.
  34027. */
  34028. -#define __FORCE_GLIBC
  34029. -#include <features.h>
  34030. -
  34031. #include <limits.h>
  34032. #include <stdio.h>
  34033. #include <string.h>
  34034. #include <unistd.h>
  34035. +#include <libintl.h>
  34036. #include <sys/param.h>
  34037. #include <rpc/types.h>
  34038. @@ -52,10 +50,6 @@
  34039. #include <rpc/auth.h>
  34040. #include <rpc/auth_unix.h>
  34041. -#ifdef USE_IN_LIBIO
  34042. -# include <wchar.h>
  34043. -#endif
  34044. -
  34045. /*
  34046. * Unix authenticator operations vector
  34047. */
  34048. @@ -65,7 +59,7 @@
  34049. static bool_t authunix_refresh (AUTH *);
  34050. static void authunix_destroy (AUTH *);
  34051. -static struct auth_ops auth_unix_ops = {
  34052. +static const struct auth_ops auth_unix_ops = {
  34053. authunix_nextverf,
  34054. authunix_marshal,
  34055. authunix_validate,
  34056. @@ -111,13 +105,7 @@
  34057. if (auth == NULL || au == NULL)
  34058. {
  34059. no_memory:
  34060. -#ifdef USE_IN_LIBIO
  34061. - if (_IO_fwide (stderr, 0) > 0)
  34062. - (void) fwprintf (stderr, L"%s",
  34063. - _("authunix_create: out of memory\n"));
  34064. - else
  34065. -#endif
  34066. - (void) fputs (_("authunix_create: out of memory\n"), stderr);
  34067. + (void) fputs (_("authunix_create: out of memory\n"), stderr);
  34068. mem_free (auth, sizeof (*auth));
  34069. mem_free (au, sizeof (*au));
  34070. return NULL;
  34071. @@ -326,7 +314,7 @@
  34072. xdrmem_create (xdrs, au->au_marshed, MAX_AUTH_BYTES, XDR_ENCODE);
  34073. if ((!xdr_opaque_auth (xdrs, &(auth->ah_cred))) ||
  34074. (!xdr_opaque_auth (xdrs, &(auth->ah_verf))))
  34075. - perror (_("auth_none.c - Fatal marshalling problem"));
  34076. + perror (_("auth_unix.c - Fatal marshalling problem"));
  34077. else
  34078. au->au_mpos = XDR_GETPOS (xdrs);
  34079. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/bindresvport.c uClibc-git/libc/inet/rpc/bindresvport.c
  34080. --- uClibc-0.9.33.2/libc/inet/rpc/bindresvport.c 2012-05-15 09:20:09.000000000 +0200
  34081. +++ uClibc-git/libc/inet/rpc/bindresvport.c 2014-02-03 12:32:56.000000000 +0100
  34082. @@ -30,9 +30,6 @@
  34083. * Copyright (c) 1987 by Sun Microsystems, Inc.
  34084. */
  34085. -#define __FORCE_GLIBC
  34086. -#include <features.h>
  34087. -
  34088. #include <errno.h>
  34089. #include <unistd.h>
  34090. #include <string.h>
  34091. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_generic.c uClibc-git/libc/inet/rpc/clnt_generic.c
  34092. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_generic.c 2012-05-15 09:20:09.000000000 +0200
  34093. +++ uClibc-git/libc/inet/rpc/clnt_generic.c 2014-02-03 12:32:56.000000000 +0100
  34094. @@ -30,9 +30,6 @@
  34095. * Copyright (C) 1987, Sun Microsystems, Inc.
  34096. */
  34097. -#define __FORCE_GLIBC
  34098. -#include <features.h>
  34099. -
  34100. #include <alloca.h>
  34101. #include <errno.h>
  34102. #include <string.h>
  34103. @@ -119,7 +116,7 @@
  34104. prttmpbuf = alloca (prtbuflen);
  34105. while (getprotobyname_r (proto, &protobuf, prttmpbuf, prtbuflen, &p) != 0
  34106. || p == NULL)
  34107. - if (errno != ERANGE)
  34108. + if (errno != ERANGE)
  34109. {
  34110. struct rpc_createerr *ce = &get_rpc_createerr ();
  34111. ce->cf_stat = RPC_UNKNOWNPROTO;
  34112. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_perror.c uClibc-git/libc/inet/rpc/clnt_perror.c
  34113. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_perror.c 2012-05-15 09:20:09.000000000 +0200
  34114. +++ uClibc-git/libc/inet/rpc/clnt_perror.c 2014-02-03 12:32:56.000000000 +0100
  34115. @@ -38,19 +38,10 @@
  34116. *
  34117. */
  34118. -#define __FORCE_GLIBC
  34119. -#include <features.h>
  34120. -
  34121. #include <stdio.h>
  34122. #include <string.h>
  34123. #include "rpc_private.h"
  34124. -#ifdef USE_IN_LIBIO
  34125. -# include <wchar.h>
  34126. -# include <libio/iolibio.h>
  34127. -# define fputs(s, f) _IO_fputs (s, f)
  34128. -#endif
  34129. -
  34130. static char *auth_errmsg (enum auth_stat stat) internal_function;
  34131. #ifdef __UCLIBC_HAS_THREADS__
  34132. @@ -81,74 +72,74 @@
  34133. static const char rpc_errstr[] =
  34134. {
  34135. #define RPC_SUCCESS_IDX 0
  34136. - _("RPC: Success")
  34137. + N_("RPC: Success")
  34138. "\0"
  34139. #define RPC_CANTENCODEARGS_IDX (RPC_SUCCESS_IDX + sizeof "RPC: Success")
  34140. - _("RPC: Can't encode arguments")
  34141. + N_("RPC: Can't encode arguments")
  34142. "\0"
  34143. #define RPC_CANTDECODERES_IDX (RPC_CANTENCODEARGS_IDX \
  34144. + sizeof "RPC: Can't encode arguments")
  34145. - _("RPC: Can't decode result")
  34146. + N_("RPC: Can't decode result")
  34147. "\0"
  34148. #define RPC_CANTSEND_IDX (RPC_CANTDECODERES_IDX \
  34149. + sizeof "RPC: Can't decode result")
  34150. - _("RPC: Unable to send")
  34151. + N_("RPC: Unable to send")
  34152. "\0"
  34153. #define RPC_CANTRECV_IDX (RPC_CANTSEND_IDX \
  34154. + sizeof "RPC: Unable to send")
  34155. - _("RPC: Unable to receive")
  34156. + N_("RPC: Unable to receive")
  34157. "\0"
  34158. #define RPC_TIMEDOUT_IDX (RPC_CANTRECV_IDX \
  34159. + sizeof "RPC: Unable to receive")
  34160. - _("RPC: Timed out")
  34161. + N_("RPC: Timed out")
  34162. "\0"
  34163. #define RPC_VERSMISMATCH_IDX (RPC_TIMEDOUT_IDX \
  34164. + sizeof "RPC: Timed out")
  34165. - _("RPC: Incompatible versions of RPC")
  34166. + N_("RPC: Incompatible versions of RPC")
  34167. "\0"
  34168. #define RPC_AUTHERROR_IDX (RPC_VERSMISMATCH_IDX \
  34169. + sizeof "RPC: Incompatible versions of RPC")
  34170. - _("RPC: Authentication error")
  34171. + N_("RPC: Authentication error")
  34172. "\0"
  34173. #define RPC_PROGUNAVAIL_IDX (RPC_AUTHERROR_IDX \
  34174. + sizeof "RPC: Authentication error")
  34175. - _("RPC: Program unavailable")
  34176. + N_("RPC: Program unavailable")
  34177. "\0"
  34178. #define RPC_PROGVERSMISMATCH_IDX (RPC_PROGUNAVAIL_IDX \
  34179. + sizeof "RPC: Program unavailable")
  34180. - _("RPC: Program/version mismatch")
  34181. + N_("RPC: Program/version mismatch")
  34182. "\0"
  34183. #define RPC_PROCUNAVAIL_IDX (RPC_PROGVERSMISMATCH_IDX \
  34184. + sizeof "RPC: Program/version mismatch")
  34185. - _("RPC: Procedure unavailable")
  34186. + N_("RPC: Procedure unavailable")
  34187. "\0"
  34188. #define RPC_CANTDECODEARGS_IDX (RPC_PROCUNAVAIL_IDX \
  34189. + sizeof "RPC: Procedure unavailable")
  34190. - _("RPC: Server can't decode arguments")
  34191. + N_("RPC: Server can't decode arguments")
  34192. "\0"
  34193. #define RPC_SYSTEMERROR_IDX (RPC_CANTDECODEARGS_IDX \
  34194. + sizeof "RPC: Server can't decode arguments")
  34195. - _("RPC: Remote system error")
  34196. + N_("RPC: Remote system error")
  34197. "\0"
  34198. #define RPC_UNKNOWNHOST_IDX (RPC_SYSTEMERROR_IDX \
  34199. + sizeof "RPC: Remote system error")
  34200. - _("RPC: Unknown host")
  34201. + N_("RPC: Unknown host")
  34202. "\0"
  34203. #define RPC_UNKNOWNPROTO_IDX (RPC_UNKNOWNHOST_IDX \
  34204. + sizeof "RPC: Unknown host")
  34205. - _("RPC: Unknown protocol")
  34206. + N_("RPC: Unknown protocol")
  34207. "\0"
  34208. #define RPC_PMAPFAILURE_IDX (RPC_UNKNOWNPROTO_IDX \
  34209. + sizeof "RPC: Unknown protocol")
  34210. - _("RPC: Port mapper failure")
  34211. + N_("RPC: Port mapper failure")
  34212. "\0"
  34213. #define RPC_PROGNOTREGISTERED_IDX (RPC_PMAPFAILURE_IDX \
  34214. + sizeof "RPC: Port mapper failure")
  34215. - _("RPC: Program not registered")
  34216. + N_("RPC: Program not registered")
  34217. "\0"
  34218. #define RPC_FAILED_IDX (RPC_PROGNOTREGISTERED_IDX \
  34219. + sizeof "RPC: Program not registered")
  34220. - _("RPC: Failed (unspecified error)")
  34221. + N_("RPC: Failed (unspecified error)")
  34222. };
  34223. static const struct rpc_errtab rpc_errlist[] =
  34224. @@ -189,19 +180,14 @@
  34225. return (char*)_(rpc_errstr + rpc_errlist[i].message_off);
  34226. }
  34227. }
  34228. - return _("RPC: (unknown error code)");
  34229. + return N_("RPC: (unknown error code)");
  34230. }
  34231. libc_hidden_def(clnt_sperrno)
  34232. void
  34233. clnt_perrno (enum clnt_stat num)
  34234. {
  34235. -#ifdef USE_IN_LIBIO
  34236. - if (_IO_fwide (stderr, 0) > 0)
  34237. - (void) fwprintf (stderr, L"%s", clnt_sperrno (num));
  34238. - else
  34239. -#endif
  34240. - (void) fputs (clnt_sperrno (num), stderr);
  34241. + (void) fputs (clnt_sperrno (num), stderr);
  34242. }
  34243. /*
  34244. @@ -295,12 +281,7 @@
  34245. void
  34246. clnt_perror (CLIENT * rpch, const char *msg)
  34247. {
  34248. -#ifdef USE_IN_LIBIO
  34249. - if (_IO_fwide (stderr, 0) > 0)
  34250. - (void) fwprintf (stderr, L"%s", clnt_sperror (rpch, msg));
  34251. - else
  34252. -#endif
  34253. - (void) fputs (clnt_sperror (rpch, msg), stderr);
  34254. + (void) fputs (clnt_sperror (rpch, msg), stderr);
  34255. }
  34256. libc_hidden_def(clnt_perror)
  34257. @@ -352,12 +333,7 @@
  34258. void
  34259. clnt_pcreateerror (const char *msg)
  34260. {
  34261. -#ifdef USE_IN_LIBIO
  34262. - if (_IO_fwide (stderr, 0) > 0)
  34263. - (void) fwprintf (stderr, L"%s", clnt_spcreateerror (msg));
  34264. - else
  34265. -#endif
  34266. - (void) fputs (clnt_spcreateerror (msg), stderr);
  34267. + (void) fputs (clnt_spcreateerror (msg), stderr);
  34268. }
  34269. struct auth_errtab
  34270. @@ -369,34 +345,34 @@
  34271. static const char auth_errstr[] =
  34272. {
  34273. #define AUTH_OK_IDX 0
  34274. - _("Authentication OK")
  34275. + N_("Authentication OK")
  34276. "\0"
  34277. #define AUTH_BADCRED_IDX (AUTH_OK_IDX + sizeof "Authentication OK")
  34278. - _("Invalid client credential")
  34279. + N_("Invalid client credential")
  34280. "\0"
  34281. #define AUTH_REJECTEDCRED_IDX (AUTH_BADCRED_IDX \
  34282. + sizeof "Invalid client credential")
  34283. - _("Server rejected credential")
  34284. + N_("Server rejected credential")
  34285. "\0"
  34286. #define AUTH_BADVERF_IDX (AUTH_REJECTEDCRED_IDX \
  34287. + sizeof "Server rejected credential")
  34288. - _("Invalid client verifier")
  34289. + N_("Invalid client verifier")
  34290. "\0"
  34291. #define AUTH_REJECTEDVERF_IDX (AUTH_BADVERF_IDX \
  34292. + sizeof "Invalid client verifier")
  34293. - _("Server rejected verifier")
  34294. + N_("Server rejected verifier")
  34295. "\0"
  34296. #define AUTH_TOOWEAK_IDX (AUTH_REJECTEDVERF_IDX \
  34297. + sizeof "Server rejected verifier")
  34298. - _("Client credential too weak")
  34299. + N_("Client credential too weak")
  34300. "\0"
  34301. #define AUTH_INVALIDRESP_IDX (AUTH_TOOWEAK_IDX \
  34302. + sizeof "Client credential too weak")
  34303. - _("Invalid server verifier")
  34304. + N_("Invalid server verifier")
  34305. "\0"
  34306. #define AUTH_FAILED_IDX (AUTH_INVALIDRESP_IDX \
  34307. + sizeof "Invalid server verifier")
  34308. - _("Failed (unspecified error)")
  34309. + N_("Failed (unspecified error)")
  34310. };
  34311. static const struct auth_errtab auth_errlist[] =
  34312. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_raw.c uClibc-git/libc/inet/rpc/clnt_raw.c
  34313. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_raw.c 2012-05-15 09:20:09.000000000 +0200
  34314. +++ uClibc-git/libc/inet/rpc/clnt_raw.c 2014-02-03 12:32:56.000000000 +0100
  34315. @@ -42,7 +42,6 @@
  34316. * any interference from the kernel.
  34317. */
  34318. -#define __FORCE_GLIBC
  34319. #include <features.h>
  34320. #include "rpc_private.h"
  34321. #include <rpc/svc.h>
  34322. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_simple.c uClibc-git/libc/inet/rpc/clnt_simple.c
  34323. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_simple.c 2012-05-15 09:20:09.000000000 +0200
  34324. +++ uClibc-git/libc/inet/rpc/clnt_simple.c 2014-02-03 12:32:56.000000000 +0100
  34325. @@ -38,9 +38,6 @@
  34326. * Copyright (C) 1984, Sun Microsystems, Inc.
  34327. */
  34328. -#define __FORCE_GLIBC
  34329. -#include <features.h>
  34330. -
  34331. #include <alloca.h>
  34332. #include <errno.h>
  34333. #include <stdio.h>
  34334. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_tcp.c uClibc-git/libc/inet/rpc/clnt_tcp.c
  34335. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_tcp.c 2012-05-15 09:20:09.000000000 +0200
  34336. +++ uClibc-git/libc/inet/rpc/clnt_tcp.c 2014-02-03 12:32:56.000000000 +0100
  34337. @@ -50,22 +50,14 @@
  34338. * Now go hang yourself.
  34339. */
  34340. -#define __FORCE_GLIBC
  34341. -#include <features.h>
  34342. -
  34343. #include <netdb.h>
  34344. #include <errno.h>
  34345. #include <stdio.h>
  34346. #include <unistd.h>
  34347. -#include <rpc/rpc.h>
  34348. +#include "rpc_private.h"
  34349. #include <sys/poll.h>
  34350. #include <sys/socket.h>
  34351. #include <rpc/pmap_clnt.h>
  34352. -#ifdef USE_IN_LIBIO
  34353. -# include <wchar.h>
  34354. -#endif
  34355. -
  34356. -extern u_long _create_xid (void) attribute_hidden;
  34357. #define MCALL_MSG_SIZE 24
  34358. @@ -130,13 +122,7 @@
  34359. if (h == NULL || ct == NULL)
  34360. {
  34361. struct rpc_createerr *ce = &get_rpc_createerr ();
  34362. -#ifdef USE_IN_LIBIO
  34363. - if (_IO_fwide (stderr, 0) > 0)
  34364. - (void) fwprintf (stderr, L"%s",
  34365. - _("clnttcp_create: out of memory\n"));
  34366. - else
  34367. -#endif
  34368. - (void) fputs (_("clnttcp_create: out of memory\n"), stderr);
  34369. + (void) fputs (_("clnttcp_create: out of memory\n"), stderr);
  34370. ce->cf_stat = RPC_SYSTEMERROR;
  34371. ce->cf_error.re_errno = ENOMEM;
  34372. goto fooy;
  34373. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_udp.c uClibc-git/libc/inet/rpc/clnt_udp.c
  34374. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_udp.c 2012-05-15 09:20:09.000000000 +0200
  34375. +++ uClibc-git/libc/inet/rpc/clnt_udp.c 2014-02-03 12:32:56.000000000 +0100
  34376. @@ -37,12 +37,9 @@
  34377. * Copyright (C) 1984, Sun Microsystems, Inc.
  34378. */
  34379. -#define __FORCE_GLIBC
  34380. -#include <features.h>
  34381. -
  34382. #include <stdio.h>
  34383. #include <unistd.h>
  34384. -#include <rpc/rpc.h>
  34385. +#include "rpc_private.h"
  34386. #include <rpc/xdr.h>
  34387. #include <rpc/clnt.h>
  34388. #include <sys/poll.h>
  34389. @@ -52,20 +49,12 @@
  34390. #include <errno.h>
  34391. #include <rpc/pmap_clnt.h>
  34392. #include <net/if.h>
  34393. -#ifdef USE_IN_LIBIO
  34394. -# include <wchar.h>
  34395. -#endif
  34396. #ifdef IP_RECVERR
  34397. #include "errqueue.h"
  34398. #include <sys/uio.h>
  34399. #endif
  34400. -/* CMSG_NXTHDR is using it */
  34401. -
  34402. -
  34403. -extern u_long _create_xid (void) attribute_hidden;
  34404. -
  34405. /*
  34406. * UDP bases client side rpc operations
  34407. */
  34408. @@ -116,7 +105,7 @@
  34409. * NB: The rpch->cl_auth is initialized to null authentication.
  34410. * Caller may wish to set this something more useful.
  34411. *
  34412. - * wait is the amount of time used between retransmitting a call if
  34413. + * _wait is the amount of time used between retransmitting a call if
  34414. * no response has been heard; retransmission occurs until the actual
  34415. * rpc call times out.
  34416. *
  34417. @@ -125,7 +114,7 @@
  34418. */
  34419. CLIENT *
  34420. clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version,
  34421. - struct timeval wait, int *sockp, u_int sendsz,
  34422. + struct timeval _wait, int *sockp, u_int sendsz,
  34423. u_int recvsz)
  34424. {
  34425. CLIENT *cl;
  34426. @@ -139,13 +128,7 @@
  34427. if (cl == NULL || cu == NULL)
  34428. {
  34429. struct rpc_createerr *ce = &get_rpc_createerr ();
  34430. -#ifdef USE_IN_LIBIO
  34431. - if (_IO_fwide (stderr, 0) > 0)
  34432. - (void) fwprintf (stderr, L"%s",
  34433. - _("clntudp_create: out of memory\n"));
  34434. - else
  34435. -#endif
  34436. - (void) fputs (_("clntudp_create: out of memory\n"), stderr);
  34437. + (void) fputs (_("clntudp_create: out of memory\n"), stderr);
  34438. ce->cf_stat = RPC_SYSTEMERROR;
  34439. ce->cf_error.re_errno = ENOMEM;
  34440. goto fooy;
  34441. @@ -166,7 +149,7 @@
  34442. cl->cl_private = (caddr_t) cu;
  34443. cu->cu_raddr = *raddr;
  34444. cu->cu_rlen = sizeof (cu->cu_raddr);
  34445. - cu->cu_wait = wait;
  34446. + cu->cu_wait = _wait;
  34447. cu->cu_total.tv_sec = -1;
  34448. cu->cu_total.tv_usec = -1;
  34449. cu->cu_sendsz = sendsz;
  34450. @@ -224,10 +207,10 @@
  34451. libc_hidden_def(clntudp_bufcreate)
  34452. CLIENT *
  34453. -clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version, struct timeval wait, int *sockp)
  34454. +clntudp_create (struct sockaddr_in *raddr, u_long program, u_long version, struct timeval _wait, int *sockp)
  34455. {
  34456. - return clntudp_bufcreate (raddr, program, version, wait, sockp,
  34457. + return clntudp_bufcreate (raddr, program, version, _wait, sockp,
  34458. UDPMSGSIZE, UDPMSGSIZE);
  34459. }
  34460. libc_hidden_def(clntudp_create)
  34461. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/clnt_unix.c uClibc-git/libc/inet/rpc/clnt_unix.c
  34462. --- uClibc-0.9.33.2/libc/inet/rpc/clnt_unix.c 2012-05-15 09:20:09.000000000 +0200
  34463. +++ uClibc-git/libc/inet/rpc/clnt_unix.c 2014-02-03 12:32:56.000000000 +0100
  34464. @@ -46,24 +46,15 @@
  34465. * Now go hang yourself.
  34466. */
  34467. -#define __FORCE_GLIBC
  34468. -#include <features.h>
  34469. -
  34470. #include <netdb.h>
  34471. #include <errno.h>
  34472. #include <stdio.h>
  34473. #include <unistd.h>
  34474. -#include <rpc/rpc.h>
  34475. +#include "rpc_private.h"
  34476. #include <sys/uio.h>
  34477. #include <sys/poll.h>
  34478. #include <sys/socket.h>
  34479. #include <rpc/pmap_clnt.h>
  34480. -#ifdef USE_IN_LIBIO
  34481. -# include <wchar.h>
  34482. -#endif
  34483. -
  34484. -
  34485. -extern u_long _create_xid (void) attribute_hidden;
  34486. #define MCALL_MSG_SIZE 24
  34487. @@ -128,13 +119,7 @@
  34488. if (h == NULL || ct == NULL)
  34489. {
  34490. struct rpc_createerr *ce = &get_rpc_createerr ();
  34491. -#ifdef USE_IN_LIBIO
  34492. - if (_IO_fwide (stderr, 0) > 0)
  34493. - (void) fwprintf (stderr, L"%s",
  34494. - _("clntunix_create: out of memory\n"));
  34495. - else
  34496. -#endif
  34497. - (void) fputs (_("clntunix_create: out of memory\n"), stderr);
  34498. + (void) fputs (_("clntunix_create: out of memory\n"), stderr);
  34499. ce->cf_stat = RPC_SYSTEMERROR;
  34500. ce->cf_error.re_errno = ENOMEM;
  34501. goto fooy;
  34502. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/create_xid.c uClibc-git/libc/inet/rpc/create_xid.c
  34503. --- uClibc-0.9.33.2/libc/inet/rpc/create_xid.c 2012-05-15 09:20:09.000000000 +0200
  34504. +++ uClibc-git/libc/inet/rpc/create_xid.c 2014-02-03 12:32:56.000000000 +0100
  34505. @@ -13,17 +13,13 @@
  34506. Lesser General Public License for more details.
  34507. You should have received a copy of the GNU Lesser General Public
  34508. - License along with the GNU C Library; if not, write to the Free
  34509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34510. - 02111-1307 USA. */
  34511. -
  34512. -#define __FORCE_GLIBC
  34513. -#include <features.h>
  34514. + License along with the GNU C Library; if not, see
  34515. + <http://www.gnu.org/licenses/>. */
  34516. #include <unistd.h>
  34517. #include <stdlib.h>
  34518. #include <sys/time.h>
  34519. -#include <rpc/rpc.h>
  34520. +#include "rpc_private.h"
  34521. /* The RPC code is not threadsafe, but new code should be threadsafe. */
  34522. @@ -34,7 +30,6 @@
  34523. static smallint is_initialized;
  34524. static struct drand48_data __rpc_lrand48_data;
  34525. -u_long _create_xid (void) attribute_hidden;
  34526. u_long _create_xid (void)
  34527. {
  34528. long res;
  34529. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/errqueue.h uClibc-git/libc/inet/rpc/errqueue.h
  34530. --- uClibc-0.9.33.2/libc/inet/rpc/errqueue.h 2012-05-15 09:20:09.000000000 +0200
  34531. +++ uClibc-git/libc/inet/rpc/errqueue.h 2014-02-03 12:32:56.000000000 +0100
  34532. @@ -12,9 +12,8 @@
  34533. Lesser General Public License for more details.
  34534. You should have received a copy of the GNU Lesser General Public
  34535. - License along with the GNU C Library; if not, write to the Free
  34536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34537. - 02111-1307 USA. */
  34538. + License along with the GNU C Library; if not, see
  34539. + <http://www.gnu.org/licenses/>. */
  34540. /* Linux version. */
  34541. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/get_myaddress.c uClibc-git/libc/inet/rpc/get_myaddress.c
  34542. --- uClibc-0.9.33.2/libc/inet/rpc/get_myaddress.c 2012-05-15 09:20:09.000000000 +0200
  34543. +++ uClibc-git/libc/inet/rpc/get_myaddress.c 2014-02-03 12:32:56.000000000 +0100
  34544. @@ -44,6 +44,7 @@
  34545. #include <sys/socket.h>
  34546. #include <stdio.h>
  34547. #include <unistd.h>
  34548. +#include <libintl.h>
  34549. #include <net/if.h>
  34550. #include <sys/ioctl.h>
  34551. /* Order of following two #includes reversed by roland@gnu */
  34552. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/getrpcent.c uClibc-git/libc/inet/rpc/getrpcent.c
  34553. --- uClibc-0.9.33.2/libc/inet/rpc/getrpcent.c 2012-05-15 09:20:09.000000000 +0200
  34554. +++ uClibc-git/libc/inet/rpc/getrpcent.c 2014-02-03 12:32:56.000000000 +0100
  34555. @@ -33,8 +33,6 @@
  34556. * Copyright (c) 1985 by Sun Microsystems, Inc.
  34557. */
  34558. -#define __FORCE_GLIBC
  34559. -#include <features.h>
  34560. #include <stdio.h>
  34561. #include <string.h>
  34562. #include <sys/types.h>
  34563. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/getrpcport.c uClibc-git/libc/inet/rpc/getrpcport.c
  34564. --- uClibc-0.9.33.2/libc/inet/rpc/getrpcport.c 2012-05-15 09:20:09.000000000 +0200
  34565. +++ uClibc-git/libc/inet/rpc/getrpcport.c 2014-02-03 12:32:56.000000000 +0100
  34566. @@ -35,9 +35,6 @@
  34567. * Copyright (c) 1985 by Sun Microsystems, Inc.
  34568. */
  34569. -#define __FORCE_GLIBC
  34570. -#include <features.h>
  34571. -
  34572. #include <alloca.h>
  34573. #include <errno.h>
  34574. #include <stdio.h>
  34575. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/Makefile.in uClibc-git/libc/inet/rpc/Makefile.in
  34576. --- uClibc-0.9.33.2/libc/inet/rpc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  34577. +++ uClibc-git/libc/inet/rpc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  34578. @@ -9,9 +9,8 @@
  34579. CFLAGS-rpc := -fno-strict-aliasing
  34580. -ifneq ($(UCLIBC_HAS_FULL_RPC),y)
  34581. # For now, only compile the stuff needed to do an NFS mount....
  34582. -CSRC:= authunix_prot.c auth_none.c auth_unix.c bindresvport.c \
  34583. +CSRC_NFS = authunix_prot.c auth_none.c auth_unix.c bindresvport.c \
  34584. clnt_perror.c clnt_simple.c clnt_tcp.c clnt_udp.c \
  34585. create_xid.c getrpcent.c \
  34586. pmap_clnt.c pm_getmaps.c pm_getport.c pmap_prot.c pmap_prot2.c \
  34587. @@ -19,27 +18,23 @@
  34588. rpc_prot.c rpc_thread.c rtime.c ruserpass.c sa_len.c \
  34589. svc.c svc_auth.c svc_authux.c \
  34590. xdr.c xdr_array.c xdr_mem.c xdr_rec.c xdr_reference.c
  34591. -endif
  34592. INET_RPC_DIR:=$(top_srcdir)libc/inet/rpc
  34593. INET_RPC_OUT:=$(top_builddir)libc/inet/rpc
  34594. -ifeq ($(UCLIBC_HAS_FULL_RPC),y)
  34595. -INET_RPC_SRC:=$(wildcard $(INET_RPC_DIR)/*.c)
  34596. -else
  34597. -INET_RPC_SRC:=$(patsubst %.c,$(INET_RPC_DIR)/%.c,$(CSRC))
  34598. -endif
  34599. -# rpc_thread.oS is better, because the header adds unneeded references to __pthread_internal_tsd*
  34600. -INET_RPC_SRC:=$(filter-out $(INET_RPC_DIR)/rpc_thread.c,$(INET_RPC_SRC))
  34601. +CSRC_ALL = $(notdir $(wildcard $(INET_RPC_DIR)/*.c))
  34602. +CSRC-y := $(if $(UCLIBC_HAS_FULL_RPC),$(CSRC_ALL),$(CSRC_NFS))
  34603. +# rpc_thread.oS is better, because the header adds unneeded references
  34604. +# to __pthread_internal_tsd*
  34605. +CSRC-y := $(filter-out rpc_thread.c,$(CSRC-y))
  34606. -INET_RPC_OBJ:=$(patsubst $(INET_RPC_DIR)/%.c,$(INET_RPC_OUT)/%.o,$(INET_RPC_SRC))
  34607. -
  34608. -libc-static-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OUT)/rpc_thread.o
  34609. -libc-shared-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OUT)/rpc_thread.oS
  34610. +INET_RPC_SRC:=$(patsubst %.c,$(INET_RPC_DIR)/%.c,$(CSRC-y))
  34611. +INET_RPC_OBJ:=$(patsubst %.c,$(INET_RPC_OUT)/%.o,$(CSRC-y))
  34612. +libc-static-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.o
  34613. +libc-shared-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.oS
  34614. libc-nomulti-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.o
  34615. -
  34616. -libc-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ)
  34617. +libc-$(UCLIBC_HAS_RPC) += $(INET_RPC_OBJ)
  34618. objclean-y+=CLEAN_libc/inet/rpc
  34619. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pmap_clnt.c uClibc-git/libc/inet/rpc/pmap_clnt.c
  34620. --- uClibc-0.9.33.2/libc/inet/rpc/pmap_clnt.c 2012-05-15 09:20:09.000000000 +0200
  34621. +++ uClibc-git/libc/inet/rpc/pmap_clnt.c 2014-02-03 12:32:56.000000000 +0100
  34622. @@ -34,9 +34,6 @@
  34623. * Client interface to pmap rpc service.
  34624. */
  34625. -#define __FORCE_GLIBC
  34626. -#include <features.h>
  34627. -
  34628. #include <stdio.h>
  34629. #include <unistd.h>
  34630. #include <net/if.h>
  34631. @@ -44,7 +41,7 @@
  34632. #include <sys/socket.h>
  34633. #include <netinet/in.h>
  34634. #include <arpa/inet.h>
  34635. -#include <rpc/rpc.h>
  34636. +#include "rpc_private.h"
  34637. #include <rpc/pmap_prot.h>
  34638. #include <rpc/pmap_clnt.h>
  34639. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pmap_rmt.c uClibc-git/libc/inet/rpc/pmap_rmt.c
  34640. --- uClibc-0.9.33.2/libc/inet/rpc/pmap_rmt.c 2012-05-15 09:20:09.000000000 +0200
  34641. +++ uClibc-git/libc/inet/rpc/pmap_rmt.c 2014-02-03 12:32:56.000000000 +0100
  34642. @@ -39,12 +39,9 @@
  34643. * Copyright (C) 1984, Sun Microsystems, Inc.
  34644. */
  34645. -#define __FORCE_GLIBC
  34646. -#include <features.h>
  34647. -
  34648. #include <unistd.h>
  34649. #include <string.h>
  34650. -#include <rpc/rpc.h>
  34651. +#include "rpc_private.h"
  34652. #include <rpc/pmap_prot.h>
  34653. #include <rpc/pmap_clnt.h>
  34654. #include <rpc/pmap_rmt.h>
  34655. @@ -52,17 +49,12 @@
  34656. #include <sys/socket.h>
  34657. #include <stdio.h>
  34658. #include <errno.h>
  34659. -#undef _POSIX_SOURCE /* Ultrix <sys/param.h> needs --roland@gnu */
  34660. #include <sys/param.h> /* Ultrix needs before net/if --roland@gnu */
  34661. #include <net/if.h>
  34662. #include <sys/ioctl.h>
  34663. #include <arpa/inet.h>
  34664. #define MAX_BROADCAST_SIZE 1400
  34665. -
  34666. -
  34667. -extern u_long _create_xid (void) attribute_hidden;
  34668. -
  34669. static const struct timeval timeout = {3, 0};
  34670. /*
  34671. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pm_getmaps.c uClibc-git/libc/inet/rpc/pm_getmaps.c
  34672. --- uClibc-0.9.33.2/libc/inet/rpc/pm_getmaps.c 2012-05-15 09:20:09.000000000 +0200
  34673. +++ uClibc-git/libc/inet/rpc/pm_getmaps.c 2014-02-03 12:32:56.000000000 +0100
  34674. @@ -39,7 +39,7 @@
  34675. * Copyright (C) 1984, Sun Microsystems, Inc.
  34676. */
  34677. -#include <rpc/rpc.h>
  34678. +#include "rpc_private.h"
  34679. #include <rpc/pmap_prot.h>
  34680. #include <rpc/pmap_clnt.h>
  34681. #include <netdb.h>
  34682. @@ -78,7 +78,7 @@
  34683. }
  34684. CLNT_DESTROY (client);
  34685. }
  34686. - /* (void)__close(_socket); CLNT_DESTROY already closed it */
  34687. + /* (void)close(_socket); CLNT_DESTROY already closed it */
  34688. address->sin_port = 0;
  34689. return head;
  34690. }
  34691. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/pm_getport.c uClibc-git/libc/inet/rpc/pm_getport.c
  34692. --- uClibc-0.9.33.2/libc/inet/rpc/pm_getport.c 2012-05-15 09:20:09.000000000 +0200
  34693. +++ uClibc-git/libc/inet/rpc/pm_getport.c 2014-02-03 12:32:56.000000000 +0100
  34694. @@ -65,7 +65,19 @@
  34695. struct pmap parms;
  34696. address->sin_port = htons (PMAPPORT);
  34697. - client = clntudp_bufcreate (address, PMAPPROG,
  34698. + if (protocol == IPPROTO_TCP)
  34699. + {
  34700. + // glibc does this:
  34701. + ///* Don't need a reserved port to get ports from the portmapper. */
  34702. + //socket = __get_socket(address); // does socket(TCP),bind(),connect(address)
  34703. + //if (_socket != -1)
  34704. + // closeit = true;
  34705. + // do we need/want to do the same?
  34706. + client = clnttcp_create (address, PMAPPROG,
  34707. + PMAPVERS, &_socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE);
  34708. + }
  34709. + else
  34710. + client = clntudp_bufcreate (address, PMAPPROG,
  34711. PMAPVERS, timeout, &_socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE);
  34712. if (client != (CLIENT *) NULL)
  34713. {
  34714. @@ -87,7 +99,7 @@
  34715. }
  34716. CLNT_DESTROY (client);
  34717. }
  34718. - /* (void)__close(_socket); CLNT_DESTROY already closed it */
  34719. + /* (void)close(_socket); CLNT_DESTROY already closed it */
  34720. address->sin_port = 0;
  34721. return port;
  34722. }
  34723. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rcmd.c uClibc-git/libc/inet/rpc/rcmd.c
  34724. --- uClibc-0.9.33.2/libc/inet/rpc/rcmd.c 2012-05-15 09:20:09.000000000 +0200
  34725. +++ uClibc-git/libc/inet/rpc/rcmd.c 2014-02-03 12:32:56.000000000 +0100
  34726. @@ -76,7 +76,6 @@
  34727. #include <pwd.h>
  34728. #include <errno.h>
  34729. #include <stdio.h>
  34730. -#include <stdio_ext.h>
  34731. #include <ctype.h>
  34732. #include <string.h>
  34733. #include <libintl.h>
  34734. @@ -87,6 +86,11 @@
  34735. #include <sys/uio.h>
  34736. #include <bits/uClibc_alloc.h>
  34737. +/* sigsetmask and sigblock are not provided anymore, until this file is corrected,
  34738. + * include the sources */
  34739. +#include "../../signal/sigblock.c"
  34740. +#include "../../signal/sigsetmask.c"
  34741. +
  34742. /* some forward declarations */
  34743. static int __ivaliduser2(FILE *hostf, u_int32_t raddr,
  34744. @@ -146,7 +150,7 @@
  34745. pfd[1].events = POLLIN;
  34746. *ahost = hp->h_name;
  34747. - oldmask = sigblock(sigmask(SIGURG)); /* __sigblock */
  34748. + oldmask = sigblock(__sigmask(SIGURG)); /* sigblock */
  34749. for (timo = 1, lport = IPPORT_RESERVED - 1;;) {
  34750. s = rresvport(&lport);
  34751. if (s < 0) {
  34752. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rexec.c uClibc-git/libc/inet/rpc/rexec.c
  34753. --- uClibc-0.9.33.2/libc/inet/rpc/rexec.c 2012-05-15 09:20:09.000000000 +0200
  34754. +++ uClibc-git/libc/inet/rpc/rexec.c 2014-02-03 12:32:56.000000000 +0100
  34755. @@ -27,8 +27,6 @@
  34756. * SUCH DAMAGE.
  34757. */
  34758. -#define __FORCE_GLIBC
  34759. -#include <features.h>
  34760. #include <sys/types.h>
  34761. #include <sys/socket.h>
  34762. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_cmsg.c uClibc-git/libc/inet/rpc/rpc_cmsg.c
  34763. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_cmsg.c 2012-05-15 09:20:09.000000000 +0200
  34764. +++ uClibc-git/libc/inet/rpc/rpc_cmsg.c 2014-02-03 12:32:56.000000000 +0100
  34765. @@ -38,9 +38,6 @@
  34766. *
  34767. */
  34768. -#define __FORCE_GLIBC
  34769. -#include <features.h>
  34770. -
  34771. #include <string.h>
  34772. #include <sys/param.h>
  34773. #include <rpc/rpc.h>
  34774. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_dtablesize.c uClibc-git/libc/inet/rpc/rpc_dtablesize.c
  34775. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_dtablesize.c 2012-05-15 09:20:09.000000000 +0200
  34776. +++ uClibc-git/libc/inet/rpc/rpc_dtablesize.c 2014-02-03 12:32:56.000000000 +0100
  34777. @@ -31,10 +31,6 @@
  34778. static char sccsid[] = "@(#)rpc_dtablesize.c 1.2 87/08/11 Copyr 1987 Sun Micro";
  34779. #endif
  34780. -#define __FORCE_GLIBC
  34781. -#define __USE_BSD
  34782. -#include <features.h>
  34783. -
  34784. #include <unistd.h>
  34785. #include <rpc/clnt.h>
  34786. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_private.h uClibc-git/libc/inet/rpc/rpc_private.h
  34787. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_private.h 2012-05-15 09:20:09.000000000 +0200
  34788. +++ uClibc-git/libc/inet/rpc/rpc_private.h 2014-02-03 12:32:56.000000000 +0100
  34789. @@ -1,5 +1,7 @@
  34790. -#ifndef _RPC_RPC_H
  34791. +#ifndef _RPC_PRIVATE_H
  34792. +#define _RPC_PRIVATE_H
  34793. #include <rpc/rpc.h>
  34794. +#include <libintl.h>
  34795. /* Now define the internal interfaces. */
  34796. extern u_long _create_xid (void) attribute_hidden;
  34797. @@ -12,14 +14,13 @@
  34798. */
  34799. #ifdef __UCLIBC_HAS_THREADS__
  34800. #include <pthread.h>
  34801. +#include <bits/libc-lock.h>
  34802. struct rpc_thread_variables {
  34803. fd_set svc_fdset_s; /* Global, rpc_common.c */
  34804. struct rpc_createerr rpc_createerr_s; /* Global, rpc_common.c */
  34805. struct pollfd *svc_pollfd_s; /* Global, rpc_common.c */
  34806. int svc_max_pollfd_s; /* Global, rpc_common.c */
  34807. - void *authnone_private_s; /* auth_none.c */
  34808. -
  34809. void *clnt_perr_buf_s; /* clnt_perr.c */
  34810. void *clntraw_private_s; /* clnt_raw.c */
  34811. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_prot.c uClibc-git/libc/inet/rpc/rpc_prot.c
  34812. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_prot.c 2012-05-15 09:20:09.000000000 +0200
  34813. +++ uClibc-git/libc/inet/rpc/rpc_prot.c 2014-02-03 12:32:56.000000000 +0100
  34814. @@ -44,9 +44,6 @@
  34815. * routines are also in this program.
  34816. */
  34817. -#define __FORCE_GLIBC
  34818. -#include <features.h>
  34819. -
  34820. #include <sys/param.h>
  34821. #include <rpc/rpc.h>
  34822. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rpc_thread.c uClibc-git/libc/inet/rpc/rpc_thread.c
  34823. --- uClibc-0.9.33.2/libc/inet/rpc/rpc_thread.c 2012-05-15 09:20:09.000000000 +0200
  34824. +++ uClibc-git/libc/inet/rpc/rpc_thread.c 2014-02-03 12:32:56.000000000 +0100
  34825. @@ -4,8 +4,6 @@
  34826. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  34827. */
  34828. -#define __FORCE_GLIBC
  34829. -#include <features.h>
  34830. #include <stdio.h>
  34831. #include <assert.h>
  34832. #include "rpc_private.h"
  34833. @@ -32,7 +30,6 @@
  34834. __rpc_thread_svc_cleanup ();
  34835. __rpc_thread_clnt_cleanup ();
  34836. /*__rpc_thread_key_cleanup (); */
  34837. - free (tvp->authnone_private_s);
  34838. free (tvp->clnt_perr_buf_s);
  34839. free (tvp->clntraw_private_s);
  34840. free (tvp->svcraw_private_s);
  34841. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/rtime.c uClibc-git/libc/inet/rpc/rtime.c
  34842. --- uClibc-0.9.33.2/libc/inet/rpc/rtime.c 2012-05-15 09:20:09.000000000 +0200
  34843. +++ uClibc-git/libc/inet/rpc/rtime.c 2014-02-03 12:32:56.000000000 +0100
  34844. @@ -43,9 +43,6 @@
  34845. * what unix uses.
  34846. */
  34847. -#define __FORCE_GLIBC
  34848. -#include <features.h>
  34849. -
  34850. #include <stdio.h>
  34851. #include <unistd.h>
  34852. #include <rpc/rpc.h>
  34853. @@ -150,4 +147,3 @@
  34854. timep->tv_usec = 0;
  34855. return 0;
  34856. }
  34857. -libc_hidden_def (rtime)
  34858. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/ruserpass.c uClibc-git/libc/inet/rpc/ruserpass.c
  34859. --- uClibc-0.9.33.2/libc/inet/rpc/ruserpass.c 2012-05-15 09:20:09.000000000 +0200
  34860. +++ uClibc-git/libc/inet/rpc/ruserpass.c 2014-02-03 12:32:56.000000000 +0100
  34861. @@ -27,8 +27,6 @@
  34862. * SUCH DAMAGE.
  34863. */
  34864. -#define __FORCE_GLIBC
  34865. -#include <features.h>
  34866. #include <sys/types.h>
  34867. #include <sys/stat.h>
  34868. @@ -37,13 +35,14 @@
  34869. #include <errno.h>
  34870. #include <netdb.h>
  34871. #include <stdio.h>
  34872. -#include <stdio_ext.h>
  34873. +#ifdef __UCLIBC_HAS_THREADS__
  34874. +# include <stdio_ext.h>
  34875. +#endif
  34876. #include <stdlib.h>
  34877. #include <string.h>
  34878. #include <unistd.h>
  34879. +#include <libintl.h>
  34880. -
  34881. -#define _(X) (X)
  34882. /* #include "ftp_var.h" */
  34883. static int token (void);
  34884. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/sa_len.c uClibc-git/libc/inet/rpc/sa_len.c
  34885. --- uClibc-0.9.33.2/libc/inet/rpc/sa_len.c 2012-05-15 09:20:09.000000000 +0200
  34886. +++ uClibc-git/libc/inet/rpc/sa_len.c 2014-02-03 12:32:56.000000000 +0100
  34887. @@ -12,17 +12,14 @@
  34888. Lesser General Public License for more details.
  34889. You should have received a copy of the GNU Lesser General Public
  34890. - License along with the GNU C Library; if not, write to the Free
  34891. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  34892. - 02111-1307 USA. */
  34893. + License along with the GNU C Library; if not, see
  34894. + <http://www.gnu.org/licenses/>. */
  34895. -#define __FORCE_GLIBC
  34896. -#include <features.h>
  34897. #include <sys/socket.h>
  34898. #include <netinet/in.h>
  34899. -#include <netipx/ipx.h>
  34900. #include <sys/un.h>
  34901. #if 0
  34902. +#include <netipx/ipx.h>
  34903. #include <netash/ash.h>
  34904. #include <netatalk/at.h>
  34905. #include <netax25/ax25.h>
  34906. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_auth.c uClibc-git/libc/inet/rpc/svc_auth.c
  34907. --- uClibc-0.9.33.2/libc/inet/rpc/svc_auth.c 2012-05-15 09:20:09.000000000 +0200
  34908. +++ uClibc-git/libc/inet/rpc/svc_auth.c 2014-02-03 12:32:56.000000000 +0100
  34909. @@ -58,9 +58,9 @@
  34910. static enum auth_stat _svcauth_null (struct svc_req *, struct rpc_msg *);
  34911. /* no authentication */
  34912. -extern enum auth_stat _svcauth_unix (struct svc_req *, struct rpc_msg *);
  34913. +extern enum auth_stat _svcauth_unix (struct svc_req *, struct rpc_msg *) attribute_hidden;
  34914. /* unix style (uid, gids) */
  34915. -extern enum auth_stat _svcauth_short (struct svc_req *, struct rpc_msg *);
  34916. +extern enum auth_stat _svcauth_short (struct svc_req *, struct rpc_msg *) attribute_hidden;
  34917. /* short hand unix style */
  34918. #ifdef CONFIG_AUTH_DES
  34919. extern enum auth_stat _svcauth_des (struct svc_req *, struct rpc_msg *);
  34920. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_authux.c uClibc-git/libc/inet/rpc/svc_authux.c
  34921. --- uClibc-0.9.33.2/libc/inet/rpc/svc_authux.c 2012-05-15 09:20:09.000000000 +0200
  34922. +++ uClibc-git/libc/inet/rpc/svc_authux.c 2014-02-03 12:32:56.000000000 +0100
  34923. @@ -38,9 +38,6 @@
  34924. * Copyright (C) 1984, Sun Microsystems, Inc.
  34925. */
  34926. -#define __FORCE_GLIBC
  34927. -#include <features.h>
  34928. -
  34929. #include <stdio.h>
  34930. #include <string.h>
  34931. #include <rpc/rpc.h>
  34932. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc.c uClibc-git/libc/inet/rpc/svc.c
  34933. --- uClibc-0.9.33.2/libc/inet/rpc/svc.c 2012-05-15 09:20:09.000000000 +0200
  34934. +++ uClibc-git/libc/inet/rpc/svc.c 2014-02-03 12:32:56.000000000 +0100
  34935. @@ -36,9 +36,6 @@
  34936. * Copyright (C) 1984, Sun Microsystems, Inc.
  34937. */
  34938. -#define __FORCE_GLIBC
  34939. -#include <features.h>
  34940. -
  34941. #include <errno.h>
  34942. #include <unistd.h>
  34943. #include <string.h>
  34944. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_raw.c uClibc-git/libc/inet/rpc/svc_raw.c
  34945. --- uClibc-0.9.33.2/libc/inet/rpc/svc_raw.c 2012-05-15 09:20:09.000000000 +0200
  34946. +++ uClibc-git/libc/inet/rpc/svc_raw.c 2014-02-03 12:32:56.000000000 +0100
  34947. @@ -40,8 +40,6 @@
  34948. * Copyright (C) 1984, Sun Microsystems, Inc.
  34949. */
  34950. -#define __FORCE_GLIBC
  34951. -#include <features.h>
  34952. #include "rpc_private.h"
  34953. #include <rpc/svc.h>
  34954. @@ -69,7 +67,7 @@
  34955. static bool_t svcraw_freeargs (SVCXPRT *, xdrproc_t, caddr_t);
  34956. static void svcraw_destroy (SVCXPRT *);
  34957. -static struct xp_ops server_ops =
  34958. +static const struct xp_ops server_ops =
  34959. {
  34960. svcraw_recv,
  34961. svcraw_stat,
  34962. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_run.c uClibc-git/libc/inet/rpc/svc_run.c
  34963. --- uClibc-0.9.33.2/libc/inet/rpc/svc_run.c 2012-05-15 09:20:09.000000000 +0200
  34964. +++ uClibc-git/libc/inet/rpc/svc_run.c 2014-02-03 12:32:56.000000000 +0100
  34965. @@ -31,13 +31,10 @@
  34966. * Wait for input, call server program.
  34967. */
  34968. -#define __FORCE_GLIBC
  34969. -#include <features.h>
  34970. -
  34971. #include <errno.h>
  34972. #include <unistd.h>
  34973. #include <sys/poll.h>
  34974. -#include <rpc/rpc.h>
  34975. +#include "rpc_private.h"
  34976. /* used by svc_[max_]pollfd */
  34977. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_simple.c uClibc-git/libc/inet/rpc/svc_simple.c
  34978. --- uClibc-0.9.33.2/libc/inet/rpc/svc_simple.c 2012-05-15 09:20:09.000000000 +0200
  34979. +++ uClibc-git/libc/inet/rpc/svc_simple.c 2014-02-03 12:32:56.000000000 +0100
  34980. @@ -38,9 +38,6 @@
  34981. * Copyright (C) 1984, Sun Microsystems, Inc.
  34982. */
  34983. -#define __FORCE_GLIBC
  34984. -#include <features.h>
  34985. -
  34986. #include <stdio.h>
  34987. #include <string.h>
  34988. #include <unistd.h>
  34989. @@ -49,13 +46,6 @@
  34990. #include <sys/socket.h>
  34991. #include <netdb.h>
  34992. -#ifdef USE_IN_LIBIO
  34993. -# include <wchar.h>
  34994. -# include <libio/iolibio.h>
  34995. -# define fputs(s, f) _IO_fputs (s, f)
  34996. -#endif
  34997. -
  34998. -
  34999. struct proglst_
  35000. {
  35001. char *(*p_progname) (char *);
  35002. @@ -127,12 +117,7 @@
  35003. return 0;
  35004. err_out:
  35005. -#ifdef USE_IN_LIBIO
  35006. - if (_IO_fwide (stderr, 0) > 0)
  35007. - (void) __fwprintf (stderr, L"%s", buf);
  35008. - else
  35009. -#endif
  35010. - (void) fputs (buf, stderr);
  35011. + (void) fputs (buf, stderr);
  35012. free (buf);
  35013. return -1;
  35014. }
  35015. @@ -186,12 +171,7 @@
  35016. return;
  35017. }
  35018. (void) asprintf (&buf, _("never registered prog %d\n"), prog);
  35019. -#ifdef USE_IN_LIBIO
  35020. - if (_IO_fwide (stderr, 0) > 0)
  35021. - __fwprintf (stderr, L"%s", buf);
  35022. - else
  35023. -#endif
  35024. - fputs (buf, stderr);
  35025. + fputs (buf, stderr);
  35026. free (buf);
  35027. exit (1);
  35028. }
  35029. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_tcp.c uClibc-git/libc/inet/rpc/svc_tcp.c
  35030. --- uClibc-0.9.33.2/libc/inet/rpc/svc_tcp.c 2012-05-15 09:20:09.000000000 +0200
  35031. +++ uClibc-git/libc/inet/rpc/svc_tcp.c 2014-02-03 12:32:56.000000000 +0100
  35032. @@ -41,25 +41,15 @@
  35033. * and a record/tcp stream.
  35034. */
  35035. -#define __FORCE_GLIBC
  35036. -#include <features.h>
  35037. -
  35038. #include <stdio.h>
  35039. #include <unistd.h>
  35040. #include <string.h>
  35041. -#include <rpc/rpc.h>
  35042. +#include "rpc_private.h"
  35043. #include <sys/socket.h>
  35044. #include <sys/poll.h>
  35045. #include <errno.h>
  35046. #include <stdlib.h>
  35047. -#ifdef USE_IN_LIBIO
  35048. -# include <wchar.h>
  35049. -# include <libio/iolibio.h>
  35050. -# define fputs(s, f) _IO_fputs (s, f)
  35051. -#endif
  35052. -
  35053. -
  35054. /*
  35055. * Ops vector for TCP/IP based rpc service handle
  35056. */
  35057. @@ -180,12 +170,7 @@
  35058. xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
  35059. if (r == NULL || xprt == NULL)
  35060. {
  35061. -#ifdef USE_IN_LIBIO
  35062. - if (_IO_fwide (stderr, 0) > 0)
  35063. - (void) __fwprintf (stderr, L"%s", _("svctcp_create: out of memory\n"));
  35064. - else
  35065. -#endif
  35066. - (void) fputs (_("svctcp_create: out of memory\n"), stderr);
  35067. + (void) fputs (_("svctcp_create: out of memory\n"), stderr);
  35068. mem_free (r, sizeof (*r));
  35069. mem_free (xprt, sizeof (SVCXPRT));
  35070. return NULL;
  35071. @@ -225,13 +210,7 @@
  35072. cd = (struct tcp_conn *) mem_alloc (sizeof (struct tcp_conn));
  35073. if (xprt == (SVCXPRT *) NULL || cd == NULL)
  35074. {
  35075. -#ifdef USE_IN_LIBIO
  35076. - if (_IO_fwide (stderr, 0) > 0)
  35077. - (void) __fwprintf (stderr, L"%s",
  35078. - _("svc_tcp: makefd_xprt: out of memory\n"));
  35079. - else
  35080. -#endif
  35081. - (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
  35082. + (void) fputs (_("svc_tcp: makefd_xprt: out of memory\n"), stderr);
  35083. mem_free (xprt, sizeof (SVCXPRT));
  35084. mem_free (cd, sizeof (struct tcp_conn));
  35085. return NULL;
  35086. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_udp.c uClibc-git/libc/inet/rpc/svc_udp.c
  35087. --- uClibc-0.9.33.2/libc/inet/rpc/svc_udp.c 2012-05-15 09:20:09.000000000 +0200
  35088. +++ uClibc-git/libc/inet/rpc/svc_udp.c 2014-02-03 12:32:56.000000000 +0100
  35089. @@ -39,13 +39,10 @@
  35090. * Copyright (C) 1984, Sun Microsystems, Inc.
  35091. */
  35092. -#define __FORCE_GLIBC
  35093. -#include <features.h>
  35094. -
  35095. #include <stdio.h>
  35096. #include <unistd.h>
  35097. #include <string.h>
  35098. -#include <rpc/rpc.h>
  35099. +#include "rpc_private.h"
  35100. #include <sys/socket.h>
  35101. #include <errno.h>
  35102. @@ -53,13 +50,6 @@
  35103. #include <sys/uio.h>
  35104. #endif
  35105. -#ifdef USE_IN_LIBIO
  35106. -# include <wchar.h>
  35107. -# include <libio/iolibio.h>
  35108. -# define fputs(s, f) _IO_fputs (s, f)
  35109. -#endif
  35110. -
  35111. -
  35112. #define rpc_buffer(xprt) ((xprt)->xp_p1)
  35113. #ifndef MAX
  35114. #define MAX(a, b) ((a > b) ? a : b)
  35115. @@ -151,12 +141,7 @@
  35116. buf = mem_alloc (((MAX (sendsz, recvsz) + 3) / 4) * 4);
  35117. if (xprt == NULL || su == NULL || buf == NULL)
  35118. {
  35119. -#ifdef USE_IN_LIBIO
  35120. - if (_IO_fwide (stderr, 0) > 0)
  35121. - (void) fwprintf (stderr, L"%s", _("svcudp_create: out of memory\n"));
  35122. - else
  35123. -#endif
  35124. - (void) fputs (_("svcudp_create: out of memory\n"), stderr);
  35125. + (void) fputs (_("svcudp_create: out of memory\n"), stderr);
  35126. mem_free (xprt, sizeof (SVCXPRT));
  35127. mem_free (su, sizeof (*su));
  35128. mem_free (buf, ((MAX (sendsz, recvsz) + 3) / 4) * 4);
  35129. @@ -177,13 +162,7 @@
  35130. + sizeof(struct cmsghdr) + sizeof (struct in_pktinfo))
  35131. > sizeof (xprt->xp_pad))
  35132. {
  35133. -# ifdef USE_IN_LIBIO
  35134. - if (_IO_fwide (stderr, 0) > 0)
  35135. - (void) fwprintf (stderr, L"%s",
  35136. - _("svcudp_create: xp_pad is too small for IP_PKTINFO\n"));
  35137. - else
  35138. -# endif
  35139. - (void) fputs (_("svcudp_create: xp_pad is too small for IP_PKTINFO\n"),
  35140. + (void) fputs (_("svcudp_create: xp_pad is too small for IP_PKTINFO\n"),
  35141. stderr);
  35142. return NULL;
  35143. }
  35144. @@ -378,16 +357,8 @@
  35145. #define SPARSENESS 4 /* 75% sparse */
  35146. -#ifdef USE_IN_LIBIO
  35147. -# define CACHE_PERROR(msg) \
  35148. - if (_IO_fwide (stderr, 0) > 0) \
  35149. - (void) __fwprintf(stderr, L"%s\n", msg); \
  35150. - else \
  35151. - (void) fprintf(stderr, "%s\n", msg)
  35152. -#else
  35153. -# define CACHE_PERROR(msg) \
  35154. +#define CACHE_PERROR(msg) \
  35155. (void) fprintf(stderr,"%s\n", msg)
  35156. -#endif
  35157. #define ALLOC(type, size) \
  35158. (type *) mem_alloc((unsigned) (sizeof(type) * (size)))
  35159. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/svc_unix.c uClibc-git/libc/inet/rpc/svc_unix.c
  35160. --- uClibc-0.9.33.2/libc/inet/rpc/svc_unix.c 2012-05-15 09:20:09.000000000 +0200
  35161. +++ uClibc-git/libc/inet/rpc/svc_unix.c 2014-02-03 12:32:56.000000000 +0100
  35162. @@ -37,13 +37,10 @@
  35163. * and a record/unix stream.
  35164. */
  35165. -#define __FORCE_GLIBC
  35166. -#include <features.h>
  35167. -
  35168. #include <stdio.h>
  35169. #include <unistd.h>
  35170. #include <string.h>
  35171. -#include <rpc/rpc.h>
  35172. +#include "rpc_private.h"
  35173. #include <rpc/svc.h>
  35174. #include <sys/socket.h>
  35175. #include <sys/uio.h>
  35176. @@ -51,11 +48,6 @@
  35177. #include <errno.h>
  35178. #include <stdlib.h>
  35179. -#ifdef USE_IN_LIBIO
  35180. -# include <wchar.h>
  35181. -#endif
  35182. -
  35183. -
  35184. /*
  35185. * Ops vector for AF_UNIX based rpc service handle
  35186. */
  35187. @@ -176,12 +168,7 @@
  35188. xprt = (SVCXPRT *) mem_alloc (sizeof (SVCXPRT));
  35189. if (r == NULL || xprt == NULL)
  35190. {
  35191. -#ifdef USE_IN_LIBIO
  35192. - if (_IO_fwide (stderr, 0) > 0)
  35193. - __fwprintf (stderr, L"%s", _("svcunix_create: out of memory\n"));
  35194. - else
  35195. -#endif
  35196. - fputs (_("svcunix_create: out of memory\n"), stderr);
  35197. + fputs (_("svcunix_create: out of memory\n"), stderr);
  35198. mem_free (r, sizeof (*r));
  35199. mem_free (xprt, sizeof (SVCXPRT));
  35200. return NULL;
  35201. @@ -221,13 +208,7 @@
  35202. cd = (struct unix_conn *) mem_alloc (sizeof (struct unix_conn));
  35203. if (xprt == (SVCXPRT *) NULL || cd == (struct unix_conn *) NULL)
  35204. {
  35205. -#ifdef USE_IN_LIBIO
  35206. - if (_IO_fwide (stderr, 0) > 0)
  35207. - (void) __fwprintf (stderr, L"%s",
  35208. - _("svc_unix: makefd_xprt: out of memory\n"));
  35209. - else
  35210. -#endif
  35211. - (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
  35212. + (void) fputs (_("svc_unix: makefd_xprt: out of memory\n"), stderr);
  35213. mem_free (xprt, sizeof (SVCXPRT));
  35214. mem_free (cd, sizeof (struct unix_conn));
  35215. return NULL;
  35216. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_array.c uClibc-git/libc/inet/rpc/xdr_array.c
  35217. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_array.c 2012-05-15 09:20:09.000000000 +0200
  35218. +++ uClibc-git/libc/inet/rpc/xdr_array.c 2014-02-03 12:32:56.000000000 +0100
  35219. @@ -40,23 +40,15 @@
  35220. * arrays. See xdr.h for more info on the interface to xdr.
  35221. */
  35222. -#define __FORCE_GLIBC
  35223. -#include <features.h>
  35224. -
  35225. #include <stdio.h>
  35226. #include <string.h>
  35227. #include <rpc/types.h>
  35228. #include <rpc/xdr.h>
  35229. #include <limits.h>
  35230. -
  35231. -#ifdef USE_IN_LIBIO
  35232. -# include <wchar.h>
  35233. -#endif
  35234. -
  35235. +#include <libintl.h>
  35236. #define LASTUNSIGNED ((u_int)0-1)
  35237. -
  35238. /*
  35239. * XDR an array of arbitrary elements
  35240. * *addrp is a pointer to the array, *sizep is the number of elements.
  35241. @@ -102,13 +94,7 @@
  35242. *addrp = target = mem_alloc (nodesize);
  35243. if (target == NULL)
  35244. {
  35245. -#ifdef USE_IN_LIBIO
  35246. - if (_IO_fwide (stderr, 0) > 0)
  35247. - (void) fwprintf (stderr, L"%s",
  35248. - _("xdr_array: out of memory\n"));
  35249. - else
  35250. -#endif
  35251. - (void) fputs (_("xdr_array: out of memory\n"), stderr);
  35252. + (void) fputs (_("xdr_array: out of memory\n"), stderr);
  35253. return FALSE;
  35254. }
  35255. memset (target, 0, nodesize);
  35256. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr.c uClibc-git/libc/inet/rpc/xdr.c
  35257. --- uClibc-0.9.33.2/libc/inet/rpc/xdr.c 2012-05-15 09:20:09.000000000 +0200
  35258. +++ uClibc-git/libc/inet/rpc/xdr.c 2014-02-03 12:32:56.000000000 +0100
  35259. @@ -41,21 +41,14 @@
  35260. * xdr.
  35261. */
  35262. -#define __FORCE_GLIBC
  35263. -#include <features.h>
  35264. -
  35265. #include <stdio.h>
  35266. #include <limits.h>
  35267. #include <string.h>
  35268. +#include <libintl.h>
  35269. #include <rpc/types.h>
  35270. #include <rpc/xdr.h>
  35271. -#ifdef USE_IN_LIBIO
  35272. -# include <wchar.h>
  35273. -#endif
  35274. -
  35275. -
  35276. /*
  35277. * constants specific to the xdr "protocol"
  35278. */
  35279. @@ -564,12 +557,7 @@
  35280. }
  35281. if (sp == NULL)
  35282. {
  35283. -#ifdef USE_IN_LIBIO
  35284. - if (_IO_fwide (stderr, 0) > 0)
  35285. - (void) fwprintf (stderr, L"%s", _("xdr_bytes: out of memory\n"));
  35286. - else
  35287. -#endif
  35288. - (void) fputs (_("xdr_bytes: out of memory\n"), stderr);
  35289. + (void) fputs (_("xdr_bytes: out of memory\n"), stderr);
  35290. return FALSE;
  35291. }
  35292. /* fall into ... */
  35293. @@ -706,13 +694,7 @@
  35294. *cpp = sp = (char *) mem_alloc (nodesize);
  35295. if (sp == NULL)
  35296. {
  35297. -#ifdef USE_IN_LIBIO
  35298. - if (_IO_fwide (stderr, 0) > 0)
  35299. - (void) fwprintf (stderr, L"%s",
  35300. - _("xdr_string: out of memory\n"));
  35301. - else
  35302. -#endif
  35303. - (void) fputs (_("xdr_string: out of memory\n"), stderr);
  35304. + (void) fputs (_("xdr_string: out of memory\n"), stderr);
  35305. return FALSE;
  35306. }
  35307. sp[size] = 0;
  35308. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_float.c uClibc-git/libc/inet/rpc/xdr_float.c
  35309. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_float.c 2012-05-15 09:20:09.000000000 +0200
  35310. +++ uClibc-git/libc/inet/rpc/xdr_float.c 2014-02-03 12:32:56.000000000 +0100
  35311. @@ -41,9 +41,6 @@
  35312. * xdr.
  35313. */
  35314. -#define __FORCE_GLIBC
  35315. -#include <features.h>
  35316. -
  35317. #include <stdio.h>
  35318. #include <endian.h>
  35319. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_intXX_t.c uClibc-git/libc/inet/rpc/xdr_intXX_t.c
  35320. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_intXX_t.c 2012-05-15 09:20:09.000000000 +0200
  35321. +++ uClibc-git/libc/inet/rpc/xdr_intXX_t.c 2014-02-03 12:32:56.000000000 +0100
  35322. @@ -13,9 +13,8 @@
  35323. Lesser General Public License for more details.
  35324. You should have received a copy of the GNU Lesser General Public
  35325. - License along with the GNU C Library; if not, write to the Free
  35326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  35327. - 02111-1307 USA. */
  35328. + License along with the GNU C Library; if not, see
  35329. + <http://www.gnu.org/licenses/>. */
  35330. #include <rpc/types.h>
  35331. #include <rpc/xdr.h>
  35332. @@ -47,6 +46,7 @@
  35333. return FALSE;
  35334. }
  35335. }
  35336. +strong_alias_untyped(xdr_int64_t,xdr_quad_t)
  35337. /* XDR 64bit unsigned integers */
  35338. bool_t
  35339. @@ -75,6 +75,7 @@
  35340. return FALSE;
  35341. }
  35342. }
  35343. +strong_alias_untyped(xdr_uint64_t,xdr_u_quad_t)
  35344. /* XDR 32bit integers */
  35345. bool_t
  35346. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_mem.c uClibc-git/libc/inet/rpc/xdr_mem.c
  35347. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_mem.c 2012-05-15 09:20:09.000000000 +0200
  35348. +++ uClibc-git/libc/inet/rpc/xdr_mem.c 2014-02-03 12:32:56.000000000 +0100
  35349. @@ -77,9 +77,7 @@
  35350. xdrmem_create (XDR *xdrs, const caddr_t addr, u_int size, enum xdr_op op)
  35351. {
  35352. xdrs->x_op = op;
  35353. - /* We have to add the const since the `struct xdr_ops' in `struct XDR'
  35354. - is not `const'. */
  35355. - xdrs->x_ops = (struct xdr_ops *) &xdrmem_ops;
  35356. + xdrs->x_ops = &xdrmem_ops;
  35357. xdrs->x_private = xdrs->x_base = addr;
  35358. xdrs->x_handy = size;
  35359. }
  35360. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_rec.c uClibc-git/libc/inet/rpc/xdr_rec.c
  35361. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_rec.c 2012-05-15 09:20:09.000000000 +0200
  35362. +++ uClibc-git/libc/inet/rpc/xdr_rec.c 2014-02-03 12:32:56.000000000 +0100
  35363. @@ -44,21 +44,10 @@
  35364. * The other 31 bits encode the byte length of the fragment.
  35365. */
  35366. -#define __FORCE_GLIBC
  35367. -#include <features.h>
  35368. -
  35369. -
  35370. #include <stdio.h>
  35371. #include <string.h>
  35372. #include <unistd.h>
  35373. -#include <rpc/rpc.h>
  35374. -
  35375. -#ifdef USE_IN_LIBIO
  35376. -# include <wchar.h>
  35377. -# include <libio/iolibio.h>
  35378. -# define fputs(s, f) _IO_fputs (s, f)
  35379. -#endif
  35380. -
  35381. +#include "rpc_private.h"
  35382. static bool_t xdrrec_getbytes (XDR *, caddr_t, u_int);
  35383. static bool_t xdrrec_putbytes (XDR *, const char *, u_int);
  35384. @@ -165,12 +154,7 @@
  35385. if (rstrm == NULL || buf == NULL)
  35386. {
  35387. -#ifdef USE_IN_LIBIO
  35388. - if (_IO_fwide (stderr, 0) > 0)
  35389. - (void) fwprintf (stderr, L"%s", _("xdrrec_create: out of memory\n"));
  35390. - else
  35391. -#endif
  35392. - (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
  35393. + (void) fputs (_("xdrrec_create: out of memory\n"), stderr);
  35394. mem_free (rstrm, sizeof (RECSTREAM));
  35395. mem_free (buf, sendsize + recvsize + BYTES_PER_XDR_UNIT);
  35396. /*
  35397. @@ -193,9 +177,7 @@
  35398. /*
  35399. * now the rest ...
  35400. */
  35401. - /* We have to add the const since the `struct xdr_ops' in `struct XDR'
  35402. - is not `const'. */
  35403. - xdrs->x_ops = (struct xdr_ops *) &xdrrec_ops;
  35404. + xdrs->x_ops = &xdrrec_ops;
  35405. xdrs->x_private = (caddr_t) rstrm;
  35406. rstrm->tcp_handle = tcp_handle;
  35407. rstrm->readit = readit;
  35408. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_reference.c uClibc-git/libc/inet/rpc/xdr_reference.c
  35409. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_reference.c 2012-05-15 09:20:09.000000000 +0200
  35410. +++ uClibc-git/libc/inet/rpc/xdr_reference.c 2014-02-03 12:32:56.000000000 +0100
  35411. @@ -40,20 +40,11 @@
  35412. * "pointers". See xdr.h for more info on the interface to xdr.
  35413. */
  35414. -#define __FORCE_GLIBC
  35415. -#include <features.h>
  35416. -
  35417. #include <stdio.h>
  35418. #include <string.h>
  35419. #include <rpc/types.h>
  35420. #include <rpc/xdr.h>
  35421. -
  35422. -#ifdef USE_IN_LIBIO
  35423. -# include <wchar.h>
  35424. -# include <libio/iolibio.h>
  35425. -# define fputs(s, f) _IO_fputs (s, f)
  35426. -#endif
  35427. -
  35428. +#include <libintl.h>
  35429. #define LASTUNSIGNED ((u_int)0-1)
  35430. @@ -82,13 +73,7 @@
  35431. *pp = loc = (caddr_t) mem_alloc (size);
  35432. if (loc == NULL)
  35433. {
  35434. -#ifdef USE_IN_LIBIO
  35435. - if (_IO_fwide (stderr, 0) > 0)
  35436. - (void) fwprintf (stderr, L"%s",
  35437. - _("xdr_reference: out of memory\n"));
  35438. - else
  35439. -#endif
  35440. - (void) fputs (_("xdr_reference: out of memory\n"), stderr);
  35441. + (void) fputs (_("xdr_reference: out of memory\n"), stderr);
  35442. return FALSE;
  35443. }
  35444. memset (loc, 0, (int) size);
  35445. diff -Nur uClibc-0.9.33.2/libc/inet/rpc/xdr_stdio.c uClibc-git/libc/inet/rpc/xdr_stdio.c
  35446. --- uClibc-0.9.33.2/libc/inet/rpc/xdr_stdio.c 2012-05-15 09:20:09.000000000 +0200
  35447. +++ uClibc-git/libc/inet/rpc/xdr_stdio.c 2014-02-03 12:32:56.000000000 +0100
  35448. @@ -41,15 +41,6 @@
  35449. #include <stdio.h>
  35450. #include <rpc/xdr.h>
  35451. -#ifdef USE_IN_LIBIO
  35452. -# include <libio/iolibio.h>
  35453. -# define fflush(s) _IO_fflush (s)
  35454. -# define fread(p, m, n, s) _IO_fread (p, m, n, s)
  35455. -# define ftell(s) _IO_ftell (s)
  35456. -# define fwrite(p, m, n, s) _IO_fwrite (p, m, n, s)
  35457. -#endif
  35458. -
  35459. -
  35460. static bool_t xdrstdio_getlong (XDR *, long *);
  35461. static bool_t xdrstdio_putlong (XDR *, const long *);
  35462. static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int);
  35463. @@ -87,9 +78,7 @@
  35464. xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op)
  35465. {
  35466. xdrs->x_op = op;
  35467. - /* We have to add the const since the `struct xdr_ops' in `struct XDR'
  35468. - is not `const'. */
  35469. - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops;
  35470. + xdrs->x_ops = &xdrstdio_ops;
  35471. xdrs->x_private = (caddr_t) file;
  35472. xdrs->x_handy = 0;
  35473. xdrs->x_base = 0;
  35474. diff -Nur uClibc-0.9.33.2/libc/inet/socketcalls.c uClibc-git/libc/inet/socketcalls.c
  35475. --- uClibc-0.9.33.2/libc/inet/socketcalls.c 2012-05-15 09:20:09.000000000 +0200
  35476. +++ uClibc-git/libc/inet/socketcalls.c 2014-02-03 12:32:56.000000000 +0100
  35477. @@ -4,15 +4,12 @@
  35478. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  35479. */
  35480. -#define __FORCE_GLIBC
  35481. -#include <features.h>
  35482. -#include <errno.h>
  35483. -#include <syscall.h>
  35484. +#include <stddef.h>
  35485. +#include <sys/syscall.h>
  35486. #include <sys/socket.h>
  35487. +#include <cancel.h>
  35488. #ifdef __NR_socketcall
  35489. -extern int __socketcall(int call, unsigned long *args) attribute_hidden;
  35490. -
  35491. /* Various socketcall numbers */
  35492. #define SYS_SOCKET 1
  35493. #define SYS_BIND 2
  35494. @@ -34,53 +31,24 @@
  35495. #define SYS_ACCEPT4 18
  35496. #endif
  35497. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35498. -#include <sysdep-cancel.h>
  35499. -#include <pthreadP.h>
  35500. -#else
  35501. -#define SINGLE_THREAD_P 1
  35502. -#endif
  35503. -
  35504. #ifdef L_accept
  35505. -extern __typeof(accept) __libc_accept;
  35506. -#ifdef __NR_accept
  35507. -#define __NR___sys_accept __NR_accept
  35508. -static
  35509. -_syscall3(int, __sys_accept, int, call, struct sockaddr *, addr, socklen_t *,addrlen)
  35510. -int __libc_accept(int s, struct sockaddr *addr, socklen_t * addrlen)
  35511. -{
  35512. - if (SINGLE_THREAD_P)
  35513. - return __sys_accept(s, addr, addrlen);
  35514. -
  35515. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35516. - int oldtype = LIBC_CANCEL_ASYNC ();
  35517. - int result = __sys_accept(s, addr, addrlen);
  35518. - LIBC_CANCEL_RESET (oldtype);
  35519. - return result;
  35520. -#endif
  35521. -}
  35522. -#elif defined(__NR_socketcall)
  35523. -int __libc_accept(int s, struct sockaddr *addr, socklen_t * addrlen)
  35524. +static int __NC(accept)(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
  35525. {
  35526. +# ifdef __NR_accept
  35527. + return INLINE_SYSCALL(accept, 3, sockfd, addr, addrlen);
  35528. +# else
  35529. unsigned long args[3];
  35530. - args[0] = s;
  35531. + args[0] = sockfd;
  35532. args[1] = (unsigned long) addr;
  35533. args[2] = (unsigned long) addrlen;
  35534. - if (SINGLE_THREAD_P)
  35535. - return __socketcall(SYS_ACCEPT, args);
  35536. -
  35537. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35538. - int oldtype = LIBC_CANCEL_ASYNC ();
  35539. - int result = __socketcall(SYS_ACCEPT, args);
  35540. - LIBC_CANCEL_RESET (oldtype);
  35541. - return result;
  35542. -#endif
  35543. + return __socketcall(SYS_ACCEPT, args);
  35544. +# endif
  35545. }
  35546. -#endif
  35547. -weak_alias(__libc_accept,accept)
  35548. -libc_hidden_weak(accept)
  35549. +CANCELLABLE_SYSCALL(int, accept, (int sockfd, struct sockaddr *addr, socklen_t *addrlen),
  35550. + (sockfd, addr, addrlen))
  35551. +lt_libc_hidden(accept)
  35552. #endif
  35553. #ifdef L_accept4
  35554. @@ -124,104 +92,81 @@
  35555. #endif
  35556. #ifdef L_bind
  35557. -#ifdef __NR_bind
  35558. -_syscall3(int, bind, int, sockfd, const struct sockaddr *, myaddr, socklen_t, addrlen)
  35559. -#elif defined(__NR_socketcall)
  35560. int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen)
  35561. {
  35562. +# ifdef __NR_bind
  35563. + return INLINE_SYSCALL(bind, 3, sockfd, myaddr, addrlen);
  35564. +# else
  35565. unsigned long args[3];
  35566. args[0] = sockfd;
  35567. args[1] = (unsigned long) myaddr;
  35568. args[2] = addrlen;
  35569. return __socketcall(SYS_BIND, args);
  35570. +# endif
  35571. }
  35572. -#endif
  35573. libc_hidden_def(bind)
  35574. #endif
  35575. #ifdef L_connect
  35576. -extern __typeof(connect) __libc_connect;
  35577. -#ifdef __NR_connect
  35578. -#define __NR___sys_connect __NR_connect
  35579. -static
  35580. -_syscall3(int, __sys_connect, int, sockfd, const struct sockaddr *, saddr, socklen_t, addrlen)
  35581. -int __libc_connect(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
  35582. -{
  35583. - if (SINGLE_THREAD_P)
  35584. - return __sys_connect(sockfd, saddr, addrlen);
  35585. -
  35586. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35587. - int oldtype = LIBC_CANCEL_ASYNC ();
  35588. - int result = __sys_connect(sockfd, saddr, addrlen);
  35589. - LIBC_CANCEL_RESET (oldtype);
  35590. - return result;
  35591. -#endif
  35592. -}
  35593. -#elif defined(__NR_socketcall)
  35594. -int __libc_connect(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
  35595. +static int __NC(connect)(int sockfd, const struct sockaddr *saddr, socklen_t addrlen)
  35596. {
  35597. +# ifdef __NR_connect
  35598. + return INLINE_SYSCALL(connect, 3, sockfd, saddr, addrlen);
  35599. +# else
  35600. unsigned long args[3];
  35601. args[0] = sockfd;
  35602. args[1] = (unsigned long) saddr;
  35603. args[2] = addrlen;
  35604. -
  35605. - if (SINGLE_THREAD_P)
  35606. - return __socketcall(SYS_CONNECT, args);
  35607. -
  35608. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35609. - int oldtype = LIBC_CANCEL_ASYNC ();
  35610. - int result = __socketcall(SYS_CONNECT, args);
  35611. - LIBC_CANCEL_RESET (oldtype);
  35612. - return result;
  35613. -#endif
  35614. + return __socketcall(SYS_CONNECT, args);
  35615. +# endif
  35616. }
  35617. -#endif
  35618. -weak_alias(__libc_connect,connect)
  35619. -libc_hidden_weak(connect)
  35620. +CANCELLABLE_SYSCALL(int, connect, (int sockfd, const struct sockaddr *saddr, socklen_t addrlen),
  35621. + (sockfd, saddr, addrlen))
  35622. +lt_libc_hidden(connect)
  35623. #endif
  35624. #ifdef L_getpeername
  35625. -#ifdef __NR_getpeername
  35626. -_syscall3(int, getpeername, int, sockfd, struct sockaddr *, addr, socklen_t *,paddrlen)
  35627. -#elif defined(__NR_socketcall)
  35628. -int getpeername(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
  35629. +int getpeername(int sockfd, struct sockaddr *addr, socklen_t *paddrlen)
  35630. {
  35631. +# ifdef __NR_getpeername
  35632. + return INLINE_SYSCALL(getpeername, 3, sockfd, addr, paddrlen);
  35633. +# else
  35634. unsigned long args[3];
  35635. args[0] = sockfd;
  35636. args[1] = (unsigned long) addr;
  35637. args[2] = (unsigned long) paddrlen;
  35638. return __socketcall(SYS_GETPEERNAME, args);
  35639. +# endif
  35640. }
  35641. #endif
  35642. -#endif
  35643. #ifdef L_getsockname
  35644. -#ifdef __NR_getsockname
  35645. -_syscall3(int, getsockname, int, sockfd, struct sockaddr *, addr, socklen_t *,paddrlen)
  35646. -#elif defined(__NR_socketcall)
  35647. int getsockname(int sockfd, struct sockaddr *addr, socklen_t * paddrlen)
  35648. {
  35649. +# ifdef __NR_getsockname
  35650. + return INLINE_SYSCALL(getsockname, 3, sockfd, addr, paddrlen);
  35651. +# else
  35652. unsigned long args[3];
  35653. args[0] = sockfd;
  35654. args[1] = (unsigned long) addr;
  35655. args[2] = (unsigned long) paddrlen;
  35656. return __socketcall(SYS_GETSOCKNAME, args);
  35657. +# endif
  35658. }
  35659. -#endif
  35660. libc_hidden_def(getsockname)
  35661. #endif
  35662. #ifdef L_getsockopt
  35663. -#ifdef __NR_getsockopt
  35664. -_syscall5(int, getsockopt, int, fd, int, level, int, optname, __ptr_t, optval, socklen_t *, optlen)
  35665. -#elif defined(__NR_socketcall)
  35666. -int getsockopt(int fd, int level, int optname, __ptr_t optval,
  35667. - socklen_t * optlen)
  35668. +int getsockopt(int fd, int level, int optname, void *optval,
  35669. + socklen_t *optlen)
  35670. {
  35671. +# ifdef __NR_getsockopt
  35672. + return INLINE_SYSCALL(getsockopt, 5, fd, level, optname, optval, optlen);
  35673. +# else
  35674. unsigned long args[5];
  35675. args[0] = fd;
  35676. @@ -230,101 +175,56 @@
  35677. args[3] = (unsigned long) optval;
  35678. args[4] = (unsigned long) optlen;
  35679. return (__socketcall(SYS_GETSOCKOPT, args));
  35680. +# endif
  35681. }
  35682. #endif
  35683. -#endif
  35684. #ifdef L_listen
  35685. -#ifdef __NR_listen
  35686. -_syscall2(int, listen, int, sockfd, int, backlog)
  35687. -#elif defined(__NR_socketcall)
  35688. int listen(int sockfd, int backlog)
  35689. {
  35690. +# ifdef __NR_listen
  35691. + return INLINE_SYSCALL(listen, 2, sockfd, backlog);
  35692. +# else
  35693. unsigned long args[2];
  35694. args[0] = sockfd;
  35695. args[1] = backlog;
  35696. return __socketcall(SYS_LISTEN, args);
  35697. +# endif
  35698. }
  35699. -#endif
  35700. libc_hidden_def(listen)
  35701. #endif
  35702. #ifdef L_recv
  35703. -extern __typeof(recv) __libc_recv;
  35704. -#ifdef __NR_recv
  35705. -#define __NR___sys_recv __NR_recv
  35706. -static
  35707. -_syscall4(ssize_t, __sys_recv, int, sockfd, __ptr_t, buffer, size_t, len,
  35708. - int, flags)
  35709. -ssize_t __libc_recv(int sockfd, __ptr_t buffer, size_t len, int flags)
  35710. -{
  35711. - if (SINGLE_THREAD_P)
  35712. - return __sys_recv(sockfd, buffer, len, flags);
  35713. -
  35714. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35715. - int oldtype = LIBC_CANCEL_ASYNC ();
  35716. - int result = __sys_recv(sockfd, buffer, len, flags);
  35717. - LIBC_CANCEL_RESET (oldtype);
  35718. - return result;
  35719. -#endif
  35720. -}
  35721. -#elif defined(__NR_socketcall)
  35722. -/* recv, recvfrom added by bir7@leland.stanford.edu */
  35723. -ssize_t __libc_recv(int sockfd, __ptr_t buffer, size_t len, int flags)
  35724. +static ssize_t __NC(recv)(int sockfd, void *buffer, size_t len, int flags)
  35725. {
  35726. +# ifdef __NR_recv
  35727. + return (ssize_t)INLINE_SYSCALL(recv, 4, sockfd, buffer, len, flags);
  35728. +# elif defined __NR_recvfrom && defined _syscall6
  35729. + return __NC(recvfrom)(sockfd, buffer, len, flags, NULL, NULL);
  35730. +# else
  35731. unsigned long args[4];
  35732. args[0] = sockfd;
  35733. args[1] = (unsigned long) buffer;
  35734. args[2] = len;
  35735. args[3] = flags;
  35736. -
  35737. - if (SINGLE_THREAD_P)
  35738. - return (__socketcall(SYS_RECV, args));
  35739. -
  35740. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35741. - int oldtype = LIBC_CANCEL_ASYNC ();
  35742. - int result = __socketcall(SYS_RECV, args);
  35743. - LIBC_CANCEL_RESET (oldtype);
  35744. - return result;
  35745. -#endif
  35746. -}
  35747. -#elif defined(__NR_recvfrom)
  35748. -ssize_t __libc_recv(int sockfd, __ptr_t buffer, size_t len, int flags)
  35749. -{
  35750. - return (recvfrom(sockfd, buffer, len, flags, NULL, NULL));
  35751. + return (ssize_t)__socketcall(SYS_RECV, args);
  35752. +# endif
  35753. }
  35754. -#endif
  35755. -weak_alias(__libc_recv,recv)
  35756. -libc_hidden_weak(recv)
  35757. +CANCELLABLE_SYSCALL(ssize_t, recv, (int sockfd, void *buffer, size_t len, int flags),
  35758. + (sockfd, buffer, len, flags))
  35759. +lt_libc_hidden(recv)
  35760. #endif
  35761. #ifdef L_recvfrom
  35762. -extern __typeof(recvfrom) __libc_recvfrom;
  35763. -#ifdef __NR_recvfrom
  35764. -#define __NR___sys_recvfrom __NR_recvfrom
  35765. -static
  35766. -_syscall6(ssize_t, __sys_recvfrom, int, sockfd, __ptr_t, buffer, size_t, len,
  35767. - int, flags, struct sockaddr *, to, socklen_t *, tolen)
  35768. -ssize_t __libc_recvfrom(int sockfd, __ptr_t buffer, size_t len, int flags,
  35769. - struct sockaddr *to, socklen_t * tolen)
  35770. -{
  35771. - if (SINGLE_THREAD_P)
  35772. - return __sys_recvfrom(sockfd, buffer, len, flags, to, tolen);
  35773. -
  35774. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35775. - int oldtype = LIBC_CANCEL_ASYNC ();
  35776. - int result = __sys_recvfrom(sockfd, buffer, len, flags, to, tolen);
  35777. - LIBC_CANCEL_RESET (oldtype);
  35778. - return result;
  35779. -#endif
  35780. -}
  35781. -#elif defined(__NR_socketcall)
  35782. -/* recv, recvfrom added by bir7@leland.stanford.edu */
  35783. -ssize_t __libc_recvfrom(int sockfd, __ptr_t buffer, size_t len, int flags,
  35784. - struct sockaddr *to, socklen_t * tolen)
  35785. +ssize_t __NC(recvfrom)(int sockfd, void *buffer, size_t len, int flags,
  35786. + struct sockaddr *to, socklen_t *tolen)
  35787. {
  35788. +# if defined __NR_recvfrom && defined _syscall6
  35789. + return (ssize_t)INLINE_SYSCALL(recvfrom, 6, sockfd, buffer, len,
  35790. + flags, to, tolen);
  35791. +# else
  35792. unsigned long args[6];
  35793. args[0] = sockfd;
  35794. @@ -333,180 +233,82 @@
  35795. args[3] = flags;
  35796. args[4] = (unsigned long) to;
  35797. args[5] = (unsigned long) tolen;
  35798. -
  35799. - if (SINGLE_THREAD_P)
  35800. - return (__socketcall(SYS_RECVFROM, args));
  35801. -
  35802. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35803. - int oldtype = LIBC_CANCEL_ASYNC ();
  35804. - int result = __socketcall(SYS_RECVFROM, args);
  35805. - LIBC_CANCEL_RESET (oldtype);
  35806. - return result;
  35807. -#endif
  35808. + return (ssize_t)__socketcall(SYS_RECVFROM, args);
  35809. +# endif
  35810. }
  35811. -#endif
  35812. -weak_alias(__libc_recvfrom,recvfrom)
  35813. -libc_hidden_weak(recvfrom)
  35814. +CANCELLABLE_SYSCALL(ssize_t, recvfrom, (int sockfd, void *buffer, size_t len,
  35815. + int flags, struct sockaddr *to, socklen_t *tolen),
  35816. + (sockfd, buffer, len, flags, to, tolen))
  35817. +lt_libc_hidden(recvfrom)
  35818. #endif
  35819. #ifdef L_recvmsg
  35820. -extern __typeof(recvmsg) __libc_recvmsg;
  35821. -#ifdef __NR_recvmsg
  35822. -#define __NR___sys_recvmsg __NR_recvmsg
  35823. -static
  35824. -_syscall3(ssize_t, __sys_recvmsg, int, sockfd, struct msghdr *, msg, int, flags)
  35825. -ssize_t __libc_recvmsg(int sockfd, struct msghdr *msg, int flags)
  35826. -{
  35827. - if (SINGLE_THREAD_P)
  35828. - return __sys_recvmsg(sockfd, msg, flags);
  35829. -
  35830. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35831. - int oldtype = LIBC_CANCEL_ASYNC ();
  35832. - int result = __sys_recvmsg(sockfd, msg, flags);
  35833. - LIBC_CANCEL_RESET (oldtype);
  35834. - return result;
  35835. -#endif
  35836. -}
  35837. -#elif defined(__NR_socketcall)
  35838. -ssize_t __libc_recvmsg(int sockfd, struct msghdr *msg, int flags)
  35839. +static ssize_t __NC(recvmsg)(int sockfd, struct msghdr *msg, int flags)
  35840. {
  35841. +# ifdef __NR_recvmsg
  35842. + return (ssize_t)INLINE_SYSCALL(recvmsg, 3, sockfd, msg, flags);
  35843. +# else
  35844. unsigned long args[3];
  35845. args[0] = sockfd;
  35846. args[1] = (unsigned long) msg;
  35847. args[2] = flags;
  35848. -
  35849. - if (SINGLE_THREAD_P)
  35850. - return (__socketcall(SYS_RECVMSG, args));
  35851. -
  35852. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35853. - int oldtype = LIBC_CANCEL_ASYNC ();
  35854. - int result = __socketcall(SYS_RECVMSG, args);
  35855. - LIBC_CANCEL_RESET (oldtype);
  35856. - return result;
  35857. -#endif
  35858. + return (ssize_t)__socketcall(SYS_RECVMSG, args);
  35859. +# endif
  35860. }
  35861. -#endif
  35862. -weak_alias(__libc_recvmsg,recvmsg)
  35863. -libc_hidden_weak(recvmsg)
  35864. +CANCELLABLE_SYSCALL(ssize_t, recvmsg, (int sockfd, struct msghdr *msg, int flags),
  35865. + (sockfd, msg, flags))
  35866. +lt_libc_hidden(recvmsg)
  35867. #endif
  35868. #ifdef L_send
  35869. -extern __typeof(send) __libc_send;
  35870. -#ifdef __NR_send
  35871. -#define __NR___sys_send __NR_send
  35872. -static
  35873. -_syscall4(ssize_t, __sys_send, int, sockfd, const void *, buffer, size_t, len, int, flags)
  35874. -ssize_t __libc_send(int sockfd, const void *buffer, size_t len, int flags)
  35875. -{
  35876. - if (SINGLE_THREAD_P)
  35877. - return __sys_send(sockfd, buffer, len, flags);
  35878. -
  35879. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35880. - int oldtype = LIBC_CANCEL_ASYNC ();
  35881. - int result = __sys_send(sockfd, buffer, len, flags);
  35882. - LIBC_CANCEL_RESET (oldtype);
  35883. - return result;
  35884. -#endif
  35885. -}
  35886. -#elif defined(__NR_socketcall)
  35887. -/* send, sendto added by bir7@leland.stanford.edu */
  35888. -ssize_t __libc_send(int sockfd, const void *buffer, size_t len, int flags)
  35889. +static ssize_t __NC(send)(int sockfd, const void *buffer, size_t len, int flags)
  35890. {
  35891. +# ifdef __NR_send
  35892. + return (ssize_t)INLINE_SYSCALL(send, 4, sockfd, buffer, len, flags);
  35893. +# elif defined __NR_sendto && defined _syscall6
  35894. + return __NC(sendto)(sockfd, buffer, len, flags, NULL, 0);
  35895. +# else
  35896. unsigned long args[4];
  35897. args[0] = sockfd;
  35898. args[1] = (unsigned long) buffer;
  35899. args[2] = len;
  35900. args[3] = flags;
  35901. -
  35902. - if (SINGLE_THREAD_P)
  35903. - return (__socketcall(SYS_SEND, args));
  35904. -
  35905. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35906. - int oldtype = LIBC_CANCEL_ASYNC ();
  35907. - int result = __socketcall(SYS_SEND, args);
  35908. - LIBC_CANCEL_RESET (oldtype);
  35909. - return result;
  35910. -#endif
  35911. -}
  35912. -
  35913. -#elif defined(__NR_sendto)
  35914. -ssize_t __libc_send(int sockfd, const void *buffer, size_t len, int flags)
  35915. -{
  35916. - return (sendto(sockfd, buffer, len, flags, NULL, 0));
  35917. + return (ssize_t)__socketcall(SYS_SEND, args);
  35918. +# endif
  35919. }
  35920. -#endif
  35921. -weak_alias(__libc_send,send)
  35922. -libc_hidden_weak(send)
  35923. +CANCELLABLE_SYSCALL(ssize_t, send, (int sockfd, const void *buffer, size_t len, int flags),
  35924. + (sockfd, buffer, len, flags))
  35925. +lt_libc_hidden(send)
  35926. #endif
  35927. #ifdef L_sendmsg
  35928. -extern __typeof(sendmsg) __libc_sendmsg;
  35929. -#ifdef __NR_sendmsg
  35930. -#define __NR___sys_sendmsg __NR_sendmsg
  35931. -static
  35932. -_syscall3(ssize_t, __sys_sendmsg, int, sockfd, const struct msghdr *, msg, int, flags)
  35933. -ssize_t __libc_sendmsg(int sockfd, const struct msghdr *msg, int flags)
  35934. -{
  35935. - if (SINGLE_THREAD_P)
  35936. - return __sys_sendmsg(sockfd, msg, flags);
  35937. -
  35938. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35939. - int oldtype = LIBC_CANCEL_ASYNC ();
  35940. - int result = __sys_sendmsg(sockfd, msg, flags);
  35941. - LIBC_CANCEL_RESET (oldtype);
  35942. - return result;
  35943. -#endif
  35944. -}
  35945. -#elif defined(__NR_socketcall)
  35946. -ssize_t __libc_sendmsg(int sockfd, const struct msghdr *msg, int flags)
  35947. +static ssize_t __NC(sendmsg)(int sockfd, const struct msghdr *msg, int flags)
  35948. {
  35949. +# ifdef __NR_sendmsg
  35950. + return (ssize_t)INLINE_SYSCALL(sendmsg, 3, sockfd, msg, flags);
  35951. +# else
  35952. unsigned long args[3];
  35953. args[0] = sockfd;
  35954. args[1] = (unsigned long) msg;
  35955. args[2] = flags;
  35956. -
  35957. - if (SINGLE_THREAD_P)
  35958. - return (__socketcall(SYS_SENDMSG, args));
  35959. -
  35960. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35961. - int oldtype = LIBC_CANCEL_ASYNC ();
  35962. - int result = __socketcall(SYS_SENDMSG, args);
  35963. - LIBC_CANCEL_RESET (oldtype);
  35964. - return result;
  35965. -#endif
  35966. + return (ssize_t)__socketcall(SYS_SENDMSG, args);
  35967. +# endif
  35968. }
  35969. -#endif
  35970. -weak_alias(__libc_sendmsg,sendmsg)
  35971. -libc_hidden_weak(sendmsg)
  35972. +CANCELLABLE_SYSCALL(ssize_t, sendmsg, (int sockfd, const struct msghdr *msg, int flags),
  35973. + (sockfd, msg, flags))
  35974. +lt_libc_hidden(sendmsg)
  35975. #endif
  35976. #ifdef L_sendto
  35977. -extern __typeof(sendto) __libc_sendto;
  35978. -#ifdef __NR_sendto
  35979. -#define __NR___sys_sendto __NR_sendto
  35980. -static
  35981. -_syscall6(ssize_t, __sys_sendto, int, sockfd, const void *, buffer,
  35982. - size_t, len, int, flags, const struct sockaddr *, to, socklen_t, tolen)
  35983. -ssize_t __libc_sendto(int sockfd, const void *buffer, size_t len, int flags,const struct sockaddr *to, socklen_t tolen)
  35984. -{
  35985. - if (SINGLE_THREAD_P)
  35986. - return __sys_sendto(sockfd, buffer, len, flags, to, tolen);
  35987. -
  35988. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  35989. - int oldtype = LIBC_CANCEL_ASYNC ();
  35990. - int result = __sys_sendto(sockfd, buffer, len, flags, to, tolen);
  35991. - LIBC_CANCEL_RESET (oldtype);
  35992. - return result;
  35993. -#endif
  35994. -}
  35995. -#elif defined(__NR_socketcall)
  35996. -/* send, sendto added by bir7@leland.stanford.edu */
  35997. -ssize_t __libc_sendto(int sockfd, const void *buffer, size_t len, int flags,
  35998. - const struct sockaddr *to, socklen_t tolen)
  35999. +ssize_t __NC(sendto)(int sockfd, const void *buffer, size_t len, int flags,
  36000. + const struct sockaddr *to, socklen_t tolen)
  36001. {
  36002. +# if defined __NR_sendto && defined _syscall6
  36003. + return (ssize_t)INLINE_SYSCALL(sendto, 6, sockfd, buffer, len, flags, to, tolen);
  36004. +# else
  36005. unsigned long args[6];
  36006. args[0] = sockfd;
  36007. @@ -515,30 +317,21 @@
  36008. args[3] = flags;
  36009. args[4] = (unsigned long) to;
  36010. args[5] = tolen;
  36011. -
  36012. - if (SINGLE_THREAD_P)
  36013. - return (__socketcall(SYS_SENDTO, args));
  36014. -
  36015. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  36016. - int oldtype = LIBC_CANCEL_ASYNC ();
  36017. - int result = __socketcall(SYS_SENDTO, args);
  36018. - LIBC_CANCEL_RESET (oldtype);
  36019. - return result;
  36020. -#endif
  36021. + return (ssize_t)__socketcall(SYS_SENDTO, args);
  36022. +# endif
  36023. }
  36024. -#endif
  36025. -weak_alias(__libc_sendto,sendto)
  36026. -libc_hidden_weak(sendto)
  36027. +CANCELLABLE_SYSCALL(ssize_t, sendto, (int sockfd, const void *buffer, size_t len,
  36028. + int flags, const struct sockaddr *to, socklen_t tolen),
  36029. + (sockfd, buffer, len, flags, to, tolen))
  36030. +lt_libc_hidden(sendto)
  36031. #endif
  36032. #ifdef L_setsockopt
  36033. -#ifdef __NR_setsockopt
  36034. -_syscall5(int, setsockopt, int, fd, int, level, int, optname, const void *, optval, socklen_t, optlen)
  36035. -#elif defined(__NR_socketcall)
  36036. -/* [sg]etsockoptions by bir7@leland.stanford.edu */
  36037. -int setsockopt(int fd, int level, int optname, const void *optval,
  36038. - socklen_t optlen)
  36039. +int setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)
  36040. {
  36041. +# ifdef __NR_setsockopt
  36042. + return INLINE_SYSCALL(setsockopt, 5, fd, level, optname, optval, optlen);
  36043. +# else
  36044. unsigned long args[5];
  36045. args[0] = fd;
  36046. @@ -546,51 +339,50 @@
  36047. args[2] = optname;
  36048. args[3] = (unsigned long) optval;
  36049. args[4] = optlen;
  36050. - return (__socketcall(SYS_SETSOCKOPT, args));
  36051. + return __socketcall(SYS_SETSOCKOPT, args);
  36052. +# endif
  36053. }
  36054. -#endif
  36055. libc_hidden_def(setsockopt)
  36056. #endif
  36057. #ifdef L_shutdown
  36058. -#ifdef __NR_shutdown
  36059. -_syscall2(int, shutdown, int, sockfd, int, how)
  36060. -#elif defined(__NR_socketcall)
  36061. -/* shutdown by bir7@leland.stanford.edu */
  36062. int shutdown(int sockfd, int how)
  36063. {
  36064. +# ifdef __NR_shutdown
  36065. + return INLINE_SYSCALL(shutdown, 2, sockfd, how);
  36066. +# else
  36067. unsigned long args[2];
  36068. args[0] = sockfd;
  36069. args[1] = how;
  36070. - return (__socketcall(SYS_SHUTDOWN, args));
  36071. + return __socketcall(SYS_SHUTDOWN, args);
  36072. +# endif
  36073. }
  36074. #endif
  36075. -#endif
  36076. #ifdef L_socket
  36077. -#ifdef __NR_socket
  36078. -_syscall3(int, socket, int, family, int, type, int, protocol)
  36079. -#elif defined(__NR_socketcall)
  36080. int socket(int family, int type, int protocol)
  36081. {
  36082. +# ifdef __NR_socket
  36083. + return INLINE_SYSCALL(socket, 3, family, type, protocol);
  36084. +# else
  36085. unsigned long args[3];
  36086. args[0] = family;
  36087. args[1] = type;
  36088. args[2] = (unsigned long) protocol;
  36089. return __socketcall(SYS_SOCKET, args);
  36090. +# endif
  36091. }
  36092. -#endif
  36093. libc_hidden_def(socket)
  36094. #endif
  36095. #ifdef L_socketpair
  36096. -#ifdef __NR_socketpair
  36097. -_syscall4(int, socketpair, int, family, int, type, int, protocol, int *, sockvec)
  36098. -#elif defined(__NR_socketcall)
  36099. int socketpair(int family, int type, int protocol, int sockvec[2])
  36100. {
  36101. +# ifdef __NR_socketpair
  36102. + return INLINE_SYSCALL(socketpair, 4, family, type, protocol, sockvec);
  36103. +# else
  36104. unsigned long args[4];
  36105. args[0] = family;
  36106. @@ -598,7 +390,6 @@
  36107. args[2] = protocol;
  36108. args[3] = (unsigned long) sockvec;
  36109. return __socketcall(SYS_SOCKETPAIR, args);
  36110. +# endif
  36111. }
  36112. #endif
  36113. -#endif
  36114. -
  36115. diff -Nur uClibc-0.9.33.2/libc/misc/assert/__assert.c uClibc-git/libc/misc/assert/__assert.c
  36116. --- uClibc-0.9.33.2/libc/misc/assert/__assert.c 2012-05-15 09:20:09.000000000 +0200
  36117. +++ uClibc-git/libc/misc/assert/__assert.c 2014-02-03 12:32:56.000000000 +0100
  36118. @@ -13,8 +13,8 @@
  36119. * Library General Public License for more details.
  36120. *
  36121. * You should have received a copy of the GNU Library General Public
  36122. - * License along with this library; if not, write to the Free
  36123. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  36124. + * License along with this library; if not, see
  36125. + * <http://www.gnu.org/licenses/>.
  36126. */
  36127. /* Oct 28, 2002
  36128. diff -Nur uClibc-0.9.33.2/libc/misc/assert/Makefile.in uClibc-git/libc/misc/assert/Makefile.in
  36129. --- uClibc-0.9.33.2/libc/misc/assert/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  36130. +++ uClibc-git/libc/misc/assert/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  36131. @@ -7,13 +7,13 @@
  36132. subdirs += libc/misc/assert
  36133. -CSRC := __assert.c
  36134. +CSRC-y := __assert.c
  36135. MISC_ASSERT_DIR := $(top_srcdir)libc/misc/assert
  36136. MISC_ASSERT_OUT := $(top_builddir)libc/misc/assert
  36137. -MISC_ASSERT_SRC := $(MISC_ASSERT_DIR)/__assert.c
  36138. -MISC_ASSERT_OBJ := $(MISC_ASSERT_OUT)/__assert.o
  36139. +MISC_ASSERT_SRC := $(patsubst %.c,$(MISC_ASSERT_DIR)/%.c,$(CSRC-y))
  36140. +MISC_ASSERT_OBJ := $(patsubst %.c,$(MISC_ASSERT_OUT)/%.o,$(CSRC-y))
  36141. libc-y += $(MISC_ASSERT_OBJ)
  36142. diff -Nur uClibc-0.9.33.2/libc/misc/ctype/ctype.c uClibc-git/libc/misc/ctype/ctype.c
  36143. --- uClibc-0.9.33.2/libc/misc/ctype/ctype.c 2012-05-15 09:20:09.000000000 +0200
  36144. +++ uClibc-git/libc/misc/ctype/ctype.c 2014-02-03 12:32:56.000000000 +0100
  36145. @@ -11,8 +11,8 @@
  36146. * Library General Public License for more details.
  36147. *
  36148. * You should have received a copy of the GNU Library General Public
  36149. - * License along with this library; if not, write to the Free
  36150. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  36151. + * License along with this library; if not, see
  36152. + * <http://www.gnu.org/licenses/>.
  36153. */
  36154. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  36155. @@ -36,10 +36,6 @@
  36156. #include <assert.h>
  36157. #include <locale.h>
  36158. -#ifdef __UCLIBC_HAS_XLOCALE__
  36159. -# include <xlocale.h>
  36160. -#endif
  36161. -
  36162. /**********************************************************************/
  36163. #ifdef __UCLIBC_HAS_CTYPE_TABLES__
  36164. diff -Nur uClibc-0.9.33.2/libc/misc/ctype/Makefile.in uClibc-git/libc/misc/ctype/Makefile.in
  36165. --- uClibc-0.9.33.2/libc/misc/ctype/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  36166. +++ uClibc-git/libc/misc/ctype/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  36167. @@ -8,31 +8,25 @@
  36168. subdirs += libc/misc/ctype
  36169. # multi source ctype.c
  36170. -COM_SRC := \
  36171. +COM_SRC-y := \
  36172. isalnum.c isalpha.c iscntrl.c isdigit.c \
  36173. isgraph.c islower.c isprint.c ispunct.c isspace.c \
  36174. isupper.c isxdigit.c tolower.c toupper.c \
  36175. isblank.c
  36176. -ifeq ($(UCLIBC_SUSV4_LEGACY),y)
  36177. -COM_SRC += isascii.c toascii.c
  36178. -endif
  36179. -CSRC := $(COM_SRC)
  36180. +COM_SRC-$(UCLIBC_SUSV4_LEGACY) += isascii.c toascii.c
  36181. +CSRC-y := $(COM_SRC-y)
  36182. -ifeq ($(UCLIBC_HAS_CTYPE_TABLES),y)
  36183. -CSRC += __C_ctype_b.c __C_ctype_tolower.c __C_ctype_toupper.c \
  36184. +CSRC-$(UCLIBC_HAS_CTYPE_TABLES) += \
  36185. + __C_ctype_b.c __C_ctype_tolower.c __C_ctype_toupper.c \
  36186. __ctype_b_loc.c __ctype_tolower_loc.c __ctype_toupper_loc.c \
  36187. __ctype_assert.c isctype.c
  36188. -endif
  36189. -
  36190. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  36191. -CSRC += $(patsubst %.c,%_l.c,$(COM_SRC))
  36192. -endif
  36193. +CSRC-$(UCLIBC_HAS_XLOCALE) += $(patsubst %.c,%_l.c,$(COM_SRC-y))
  36194. MISC_CTYPE_DIR := $(top_srcdir)libc/misc/ctype
  36195. MISC_CTYPE_OUT := $(top_builddir)libc/misc/ctype
  36196. -MISC_CTYPE_SRC := $(patsubst %.c,$(MISC_CTYPE_DIR)/%.c,$(CSRC))
  36197. -MISC_CTYPE_OBJ := $(patsubst %.c,$(MISC_CTYPE_OUT)/%.o,$(CSRC))
  36198. +MISC_CTYPE_SRC := $(patsubst %.c,$(MISC_CTYPE_DIR)/%.c,$(CSRC-y))
  36199. +MISC_CTYPE_OBJ := $(patsubst %.c,$(MISC_CTYPE_OUT)/%.o,$(CSRC-y))
  36200. libc-y += $(MISC_CTYPE_OBJ)
  36201. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/alphasort64.c uClibc-git/libc/misc/dirent/alphasort64.c
  36202. --- uClibc-0.9.33.2/libc/misc/dirent/alphasort64.c 2012-05-15 09:20:09.000000000 +0200
  36203. +++ uClibc-git/libc/misc/dirent/alphasort64.c 2014-02-03 12:32:56.000000000 +0100
  36204. @@ -5,12 +5,14 @@
  36205. */
  36206. #include <_lfs_64.h>
  36207. -
  36208. #include <dirent.h>
  36209. -#include <string.h>
  36210. -#include "dirstream.h"
  36211. +
  36212. +#if __WORDSIZE != 64
  36213. +# include <string.h>
  36214. +# include "dirstream.h"
  36215. int alphasort64(const struct dirent64 **a, const struct dirent64 **b)
  36216. {
  36217. - return strcmp((*a)->d_name, (*b)->d_name);
  36218. + return strcoll((*a)->d_name, (*b)->d_name);
  36219. }
  36220. +#endif
  36221. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/alphasort.c uClibc-git/libc/misc/dirent/alphasort.c
  36222. --- uClibc-0.9.33.2/libc/misc/dirent/alphasort.c 2012-05-15 09:20:09.000000000 +0200
  36223. +++ uClibc-git/libc/misc/dirent/alphasort.c 2014-02-03 12:32:56.000000000 +0100
  36224. @@ -10,6 +10,8 @@
  36225. int alphasort(const struct dirent **a, const struct dirent **b)
  36226. {
  36227. - return strcmp((*a)->d_name, (*b)->d_name);
  36228. + return strcoll((*a)->d_name, (*b)->d_name);
  36229. }
  36230. -
  36231. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  36232. +strong_alias_untyped(alphasort,alphasort64)
  36233. +#endif
  36234. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/dirstream.h uClibc-git/libc/misc/dirent/dirstream.h
  36235. --- uClibc-0.9.33.2/libc/misc/dirent/dirstream.h 2012-05-15 09:20:09.000000000 +0200
  36236. +++ uClibc-git/libc/misc/dirent/dirstream.h 2014-02-03 12:32:56.000000000 +0100
  36237. @@ -13,8 +13,7 @@
  36238. You should have received a copy of the GNU Library General Public
  36239. License along with the GNU C Library; see the file COPYING.LIB. If
  36240. -not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
  36241. -Cambridge, MA 02139, USA. */
  36242. +not, see <http://www.gnu.org/licenses/>. */
  36243. /*
  36244. * POSIX Standard: 5.1.2 Directory Operations <dirent.h>
  36245. @@ -29,18 +28,6 @@
  36246. #include <bits/uClibc_mutex.h>
  36247. -/* For now, syscall readdir () only supports one entry at a time. It
  36248. - * will be changed in the future.
  36249. -#define NUMENT 3
  36250. -*/
  36251. -#ifndef NUMENT
  36252. -#define NUMENT 1
  36253. -#endif
  36254. -
  36255. -#define SINGLE_READDIR 11
  36256. -#define MULTI_READDIR 12
  36257. -#define NEW_READDIR 13
  36258. -
  36259. /* Directory stream type. */
  36260. struct __dirstream {
  36261. /* file descriptor */
  36262. @@ -65,10 +52,4 @@
  36263. __UCLIBC_MUTEX(dd_lock);
  36264. }; /* stream data from opendir() */
  36265. -
  36266. -extern ssize_t __getdents(int fd, char *buf, size_t count) attribute_hidden;
  36267. -#ifdef __UCLIBC_HAS_LFS__
  36268. -extern ssize_t __getdents64 (int fd, char *buf, size_t count) attribute_hidden;
  36269. -#endif
  36270. -
  36271. #endif /* dirent.h */
  36272. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/Makefile.in uClibc-git/libc/misc/dirent/Makefile.in
  36273. --- uClibc-0.9.33.2/libc/misc/dirent/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  36274. +++ uClibc-git/libc/misc/dirent/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  36275. @@ -7,18 +7,18 @@
  36276. subdirs += libc/misc/dirent
  36277. -CSRC := alphasort.c closedir.c dirfd.c opendir.c readdir.c rewinddir.c \
  36278. - scandir.c seekdir.c telldir.c readdir_r.c versionsort.c
  36279. -
  36280. -ifeq ($(UCLIBC_HAS_LFS),y)
  36281. -CSRC += readdir64.c alphasort64.c scandir64.c readdir64_r.c versionsort64.c
  36282. -endif
  36283. +CSRC := alphasort.c readdir.c scandir.c versionsort.c
  36284. +CSRC_R := readdir_r.c
  36285. +CSRC-y := closedir.c dirfd.c opendir.c rewinddir.c seekdir.c telldir.c $(CSRC) \
  36286. + $(CSRC_R)
  36287. +CSRC-$(UCLIBC_HAS_LFS) += $(patsubst %.c,%64.c,$(CSRC))
  36288. +CSRC-$(UCLIBC_HAS_LFS) += $(patsubst %_r.c,%64_r.c,$(CSRC_R))
  36289. MISC_DIRENT_DIR := $(top_srcdir)libc/misc/dirent
  36290. MISC_DIRENT_OUT := $(top_builddir)libc/misc/dirent
  36291. -MISC_DIRENT_SRC := $(patsubst %.c,$(MISC_DIRENT_DIR)/%.c,$(CSRC))
  36292. -MISC_DIRENT_OBJ := $(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC))
  36293. +MISC_DIRENT_SRC := $(patsubst %.c,$(MISC_DIRENT_DIR)/%.c,$(CSRC-y))
  36294. +MISC_DIRENT_OBJ := $(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC-y))
  36295. libc-y += $(MISC_DIRENT_OBJ)
  36296. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir64.c uClibc-git/libc/misc/dirent/readdir64.c
  36297. --- uClibc-0.9.33.2/libc/misc/dirent/readdir64.c 2012-05-15 09:20:09.000000000 +0200
  36298. +++ uClibc-git/libc/misc/dirent/readdir64.c 2014-02-03 12:32:56.000000000 +0100
  36299. @@ -5,52 +5,12 @@
  36300. */
  36301. #include <_lfs_64.h>
  36302. -
  36303. -#include <errno.h>
  36304. -#include <stdlib.h>
  36305. -#include <string.h>
  36306. -#include <unistd.h>
  36307. #include <dirent.h>
  36308. -#include "dirstream.h"
  36309. -
  36310. -struct dirent64 *readdir64(DIR * dir)
  36311. -{
  36312. - ssize_t bytes;
  36313. - struct dirent64 *de;
  36314. -
  36315. - if (!dir) {
  36316. - __set_errno(EBADF);
  36317. - return NULL;
  36318. - }
  36319. -
  36320. - __UCLIBC_MUTEX_LOCK(dir->dd_lock);
  36321. -
  36322. - do {
  36323. - if (dir->dd_size <= dir->dd_nextloc) {
  36324. - /* read dir->dd_max bytes of directory entries. */
  36325. - bytes = __getdents64(dir->dd_fd, dir->dd_buf, dir->dd_max);
  36326. - if (bytes <= 0) {
  36327. - de = NULL;
  36328. - goto all_done;
  36329. - }
  36330. - dir->dd_size = bytes;
  36331. - dir->dd_nextloc = 0;
  36332. - }
  36333. -
  36334. - de = (struct dirent64 *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  36335. -
  36336. - /* Am I right? H.J. */
  36337. - dir->dd_nextloc += de->d_reclen;
  36338. -
  36339. - /* We have to save the next offset here. */
  36340. - dir->dd_nextoff = de->d_off;
  36341. -
  36342. - /* Skip deleted files. */
  36343. - } while (de->d_ino == 0);
  36344. -all_done:
  36345. - __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  36346. +#if __WORDSIZE != 64
  36347. +# define __READDIR readdir64
  36348. +# define __DIRENT_TYPE struct dirent64
  36349. +# define __GETDENTS __getdents64
  36350. - return de;
  36351. -}
  36352. -libc_hidden_def(readdir64)
  36353. +# include "readdir.c"
  36354. +#endif
  36355. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir64_r.c uClibc-git/libc/misc/dirent/readdir64_r.c
  36356. --- uClibc-0.9.33.2/libc/misc/dirent/readdir64_r.c 2012-05-15 09:20:09.000000000 +0200
  36357. +++ uClibc-git/libc/misc/dirent/readdir64_r.c 2014-02-03 12:32:56.000000000 +0100
  36358. @@ -5,62 +5,12 @@
  36359. */
  36360. #include <_lfs_64.h>
  36361. -
  36362. -#include <errno.h>
  36363. -#include <stdlib.h>
  36364. -#include <string.h>
  36365. -#include <unistd.h>
  36366. #include <dirent.h>
  36367. -#include "dirstream.h"
  36368. -
  36369. -
  36370. -int readdir64_r(DIR *dir, struct dirent64 *entry, struct dirent64 **result)
  36371. -{
  36372. - int ret;
  36373. - ssize_t bytes;
  36374. - struct dirent64 *de;
  36375. -
  36376. - if (!dir) {
  36377. - __set_errno(EBADF);
  36378. - return(EBADF);
  36379. - }
  36380. - de = NULL;
  36381. -
  36382. - __UCLIBC_MUTEX_LOCK(dir->dd_lock);
  36383. -
  36384. - do {
  36385. - if (dir->dd_size <= dir->dd_nextloc) {
  36386. - /* read dir->dd_max bytes of directory entries. */
  36387. - bytes = __getdents64(dir->dd_fd, dir->dd_buf, dir->dd_max);
  36388. - if (bytes <= 0) {
  36389. - *result = NULL;
  36390. - ret = (bytes==0)? 0 : errno;
  36391. - goto all_done;
  36392. - }
  36393. - dir->dd_size = bytes;
  36394. - dir->dd_nextloc = 0;
  36395. - }
  36396. -
  36397. - de = (struct dirent64 *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  36398. -
  36399. - /* Am I right? H.J. */
  36400. - dir->dd_nextloc += de->d_reclen;
  36401. -
  36402. - /* We have to save the next offset here. */
  36403. - dir->dd_nextoff = de->d_off;
  36404. - /* Skip deleted files. */
  36405. - } while (de->d_ino == 0);
  36406. -
  36407. - if (de == NULL) {
  36408. - *result = NULL;
  36409. - } else {
  36410. - *result = memcpy (entry, de, de->d_reclen);
  36411. - }
  36412. - ret = 0;
  36413. -all_done:
  36414. +#if __WORDSIZE != 64
  36415. +# define __READDIR_R readdir64_r
  36416. +# define __DIRENT_TYPE struct dirent64
  36417. +# define __GETDENTS __getdents64
  36418. - __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  36419. - return((de != NULL)? 0 : ret);
  36420. -}
  36421. -libc_hidden_def(readdir64_r)
  36422. +# include "readdir_r.c"
  36423. +#endif
  36424. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir.c uClibc-git/libc/misc/dirent/readdir.c
  36425. --- uClibc-0.9.33.2/libc/misc/dirent/readdir.c 2012-05-15 09:20:09.000000000 +0200
  36426. +++ uClibc-git/libc/misc/dirent/readdir.c 2014-02-03 12:32:56.000000000 +0100
  36427. @@ -4,20 +4,22 @@
  36428. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  36429. */
  36430. -#include <features.h>
  36431. -
  36432. -#include <errno.h>
  36433. -#include <stdlib.h>
  36434. -#include <string.h>
  36435. -#include <unistd.h>
  36436. #include <dirent.h>
  36437. +#include <errno.h>
  36438. +#define __need_NULL
  36439. +#include <stddef.h>
  36440. #include "dirstream.h"
  36441. +#ifndef __READDIR
  36442. +# define __READDIR readdir
  36443. +# define __DIRENT_TYPE struct dirent
  36444. +# define __GETDENTS __getdents
  36445. +#endif
  36446. -struct dirent *readdir(DIR * dir)
  36447. +__DIRENT_TYPE *__READDIR(DIR * dir)
  36448. {
  36449. ssize_t bytes;
  36450. - struct dirent *de;
  36451. + __DIRENT_TYPE *de;
  36452. if (!dir) {
  36453. __set_errno(EBADF);
  36454. @@ -29,7 +31,7 @@
  36455. do {
  36456. if (dir->dd_size <= dir->dd_nextloc) {
  36457. /* read dir->dd_max bytes of directory entries. */
  36458. - bytes = __getdents(dir->dd_fd, dir->dd_buf, dir->dd_max);
  36459. + bytes = __GETDENTS(dir->dd_fd, dir->dd_buf, dir->dd_max);
  36460. if (bytes <= 0) {
  36461. de = NULL;
  36462. goto all_done;
  36463. @@ -38,7 +40,7 @@
  36464. dir->dd_nextloc = 0;
  36465. }
  36466. - de = (struct dirent *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  36467. + de = (__DIRENT_TYPE *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  36468. /* Am I right? H.J. */
  36469. dir->dd_nextloc += de->d_reclen;
  36470. @@ -53,4 +55,8 @@
  36471. __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  36472. return de;
  36473. }
  36474. -libc_hidden_def(readdir)
  36475. +libc_hidden_def(__READDIR)
  36476. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  36477. +strong_alias_untyped(readdir,readdir64)
  36478. +libc_hidden_def(readdir64)
  36479. +#endif
  36480. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/readdir_r.c uClibc-git/libc/misc/dirent/readdir_r.c
  36481. --- uClibc-0.9.33.2/libc/misc/dirent/readdir_r.c 2012-05-15 09:20:09.000000000 +0200
  36482. +++ uClibc-git/libc/misc/dirent/readdir_r.c 2014-02-03 12:32:56.000000000 +0100
  36483. @@ -4,19 +4,24 @@
  36484. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  36485. */
  36486. +#include <dirent.h>
  36487. #include <errno.h>
  36488. -#include <stdlib.h>
  36489. #include <string.h>
  36490. -#include <unistd.h>
  36491. -#include <dirent.h>
  36492. +#define __need_NULL
  36493. +#include <stddef.h>
  36494. #include "dirstream.h"
  36495. +#ifndef __READDIR_R
  36496. +# define __READDIR_R readdir_r
  36497. +# define __DIRENT_TYPE struct dirent
  36498. +# define __GETDENTS __getdents
  36499. +#endif
  36500. -int readdir_r(DIR *dir, struct dirent *entry, struct dirent **result)
  36501. +int __READDIR_R(DIR *dir, __DIRENT_TYPE *entry, __DIRENT_TYPE **result)
  36502. {
  36503. int ret;
  36504. ssize_t bytes;
  36505. - struct dirent *de;
  36506. + __DIRENT_TYPE *de;
  36507. if (!dir) {
  36508. __set_errno(EBADF);
  36509. @@ -29,7 +34,7 @@
  36510. do {
  36511. if (dir->dd_size <= dir->dd_nextloc) {
  36512. /* read dir->dd_max bytes of directory entries. */
  36513. - bytes = __getdents(dir->dd_fd, dir->dd_buf, dir->dd_max);
  36514. + bytes = __GETDENTS(dir->dd_fd, dir->dd_buf, dir->dd_max);
  36515. if (bytes <= 0) {
  36516. *result = NULL;
  36517. ret = (bytes==0)? 0 : errno;
  36518. @@ -39,7 +44,7 @@
  36519. dir->dd_nextloc = 0;
  36520. }
  36521. - de = (struct dirent *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  36522. + de = (__DIRENT_TYPE *) (((char *) dir->dd_buf) + dir->dd_nextloc);
  36523. /* Am I right? H.J. */
  36524. dir->dd_nextloc += de->d_reclen;
  36525. @@ -61,4 +66,8 @@
  36526. __UCLIBC_MUTEX_UNLOCK(dir->dd_lock);
  36527. return((de != NULL)? 0 : ret);
  36528. }
  36529. -libc_hidden_def(readdir_r)
  36530. +libc_hidden_def(__READDIR_R)
  36531. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  36532. +strong_alias_untyped(readdir_r,readdir64_r)
  36533. +libc_hidden_def(readdir64_r)
  36534. +#endif
  36535. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/scandir64.c uClibc-git/libc/misc/dirent/scandir64.c
  36536. --- uClibc-0.9.33.2/libc/misc/dirent/scandir64.c 2012-05-15 09:20:09.000000000 +0200
  36537. +++ uClibc-git/libc/misc/dirent/scandir64.c 2014-02-03 12:32:56.000000000 +0100
  36538. @@ -1,111 +1,16 @@
  36539. -/* Copyright (C) 1992-1998, 2000 Free Software Foundation, Inc.
  36540. - This file is part of the GNU C Library.
  36541. -
  36542. - The GNU C Library is free software; you can redistribute it and/or
  36543. - modify it under the terms of the GNU Lesser General Public
  36544. - License as published by the Free Software Foundation; either
  36545. - version 2.1 of the License, or (at your option) any later version.
  36546. -
  36547. - The GNU C Library is distributed in the hope that it will be useful,
  36548. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  36549. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  36550. - Lesser General Public License for more details.
  36551. -
  36552. - You should have received a copy of the GNU Lesser General Public
  36553. - License along with the GNU C Library; if not, write to the Free
  36554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  36555. - 02111-1307 USA.
  36556. - */
  36557. -
  36558. -/* Modified for uClibc by Erik Andersen
  36559. - */
  36560. +/*
  36561. + * Copyright (C) 2000-2011 Erik Andersen <andersen@uclibc.org>
  36562. + *
  36563. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  36564. + */
  36565. #include <_lfs_64.h>
  36566. -
  36567. #include <dirent.h>
  36568. -#include <stdio.h>
  36569. -#include <string.h>
  36570. -#include <stdlib.h>
  36571. -#include <errno.h>
  36572. -#include <sys/types.h>
  36573. -#include "dirstream.h"
  36574. -
  36575. -int scandir64(const char *dir, struct dirent64 ***namelist,
  36576. - int (*selector) (const struct dirent64 *),
  36577. - int (*compar) (const struct dirent64 **, const struct dirent64 **))
  36578. -{
  36579. - DIR *dp = opendir (dir);
  36580. - struct dirent64 *current;
  36581. - struct dirent64 **names = NULL;
  36582. - size_t names_size = 0, pos;
  36583. - int save;
  36584. -
  36585. - if (dp == NULL)
  36586. - return -1;
  36587. -
  36588. - save = errno;
  36589. - __set_errno (0);
  36590. -
  36591. - pos = 0;
  36592. - while ((current = readdir64 (dp)) != NULL) {
  36593. - int use_it = selector == NULL;
  36594. -
  36595. - if (! use_it)
  36596. - {
  36597. - use_it = (*selector) (current);
  36598. - /* The selector function might have changed errno.
  36599. - * It was zero before and it need to be again to make
  36600. - * the latter tests work. */
  36601. - if (! use_it)
  36602. - __set_errno (0);
  36603. - }
  36604. - if (use_it)
  36605. - {
  36606. - struct dirent64 *vnew;
  36607. - size_t dsize;
  36608. -
  36609. - /* Ignore errors from selector or readdir64 */
  36610. - __set_errno (0);
  36611. -
  36612. - if (unlikely(pos == names_size))
  36613. - {
  36614. - struct dirent64 **new;
  36615. - if (names_size == 0)
  36616. - names_size = 10;
  36617. - else
  36618. - names_size *= 2;
  36619. - new = (struct dirent64 **) realloc (names,
  36620. - names_size * sizeof (struct dirent64 *));
  36621. - if (new == NULL)
  36622. - break;
  36623. - names = new;
  36624. - }
  36625. -
  36626. - dsize = &current->d_name[_D_ALLOC_NAMLEN(current)] - (char*)current;
  36627. - vnew = (struct dirent64 *) malloc (dsize);
  36628. - if (vnew == NULL)
  36629. - break;
  36630. -
  36631. - names[pos++] = (struct dirent64 *) memcpy (vnew, current, dsize);
  36632. - }
  36633. - }
  36634. - if (unlikely(errno != 0))
  36635. - {
  36636. - save = errno;
  36637. - closedir (dp);
  36638. - while (pos > 0)
  36639. - free (names[--pos]);
  36640. - free (names);
  36641. - __set_errno (save);
  36642. - return -1;
  36643. - }
  36644. - closedir (dp);
  36645. - __set_errno (save);
  36646. +#if __WORDSIZE != 64
  36647. +# define __SCANDIR scandir64
  36648. +# define __DIRENT_TYPE struct dirent64
  36649. +# define __READDIR readdir64
  36650. - /* Sort the list if we have a comparison function to sort with. */
  36651. - if (compar != NULL)
  36652. - qsort (names, pos, sizeof (struct dirent64 *), (comparison_fn_t) compar);
  36653. - *namelist = names;
  36654. - return pos;
  36655. -}
  36656. +# include "scandir.c"
  36657. +#endif
  36658. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/scandir.c uClibc-git/libc/misc/dirent/scandir.c
  36659. --- uClibc-0.9.33.2/libc/misc/dirent/scandir.c 2012-05-15 09:20:09.000000000 +0200
  36660. +++ uClibc-git/libc/misc/dirent/scandir.c 2014-02-03 12:32:56.000000000 +0100
  36661. @@ -1,24 +1,29 @@
  36662. +/* vi: set sw=4 ts=4: */
  36663. /*
  36664. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  36665. + * Copyright (C) 2000-2011 Erik Andersen <andersen@uclibc.org>
  36666. *
  36667. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  36668. */
  36669. #include <dirent.h>
  36670. -#include <stdio.h>
  36671. #include <string.h>
  36672. #include <stdlib.h>
  36673. #include <errno.h>
  36674. -#include <sys/types.h>
  36675. #include "dirstream.h"
  36676. -int scandir(const char *dir, struct dirent ***namelist,
  36677. - int (*selector) (const struct dirent *),
  36678. - int (*compar) (const struct dirent **, const struct dirent **))
  36679. +#ifndef __SCANDIR
  36680. +# define __SCANDIR scandir
  36681. +# define __DIRENT_TYPE struct dirent
  36682. +# define __READDIR readdir
  36683. +#endif
  36684. +
  36685. +int __SCANDIR(const char *dir, __DIRENT_TYPE ***namelist,
  36686. + int (*selector) (const __DIRENT_TYPE *),
  36687. + int (*compar) (const __DIRENT_TYPE **, const __DIRENT_TYPE **))
  36688. {
  36689. DIR *dp = opendir (dir);
  36690. - struct dirent *current;
  36691. - struct dirent **names = NULL;
  36692. + __DIRENT_TYPE *current;
  36693. + __DIRENT_TYPE **names = NULL;
  36694. size_t names_size = 0, pos;
  36695. int save;
  36696. @@ -29,7 +34,7 @@
  36697. __set_errno (0);
  36698. pos = 0;
  36699. - while ((current = readdir (dp)) != NULL) {
  36700. + while ((current = __READDIR (dp)) != NULL) {
  36701. int use_it = selector == NULL;
  36702. if (! use_it)
  36703. @@ -43,7 +48,7 @@
  36704. }
  36705. if (use_it)
  36706. {
  36707. - struct dirent *vnew;
  36708. + __DIRENT_TYPE *vnew;
  36709. size_t dsize;
  36710. /* Ignore errors from selector or readdir */
  36711. @@ -51,24 +56,24 @@
  36712. if (unlikely(pos == names_size))
  36713. {
  36714. - struct dirent **new;
  36715. + __DIRENT_TYPE **new;
  36716. if (names_size == 0)
  36717. names_size = 10;
  36718. else
  36719. names_size *= 2;
  36720. - new = (struct dirent **) realloc (names,
  36721. - names_size * sizeof (struct dirent *));
  36722. + new = (__DIRENT_TYPE **) realloc (names,
  36723. + names_size * sizeof (__DIRENT_TYPE *));
  36724. if (new == NULL)
  36725. break;
  36726. names = new;
  36727. }
  36728. dsize = &current->d_name[_D_ALLOC_NAMLEN(current)] - (char*)current;
  36729. - vnew = (struct dirent *) malloc (dsize);
  36730. + vnew = (__DIRENT_TYPE *) malloc (dsize);
  36731. if (vnew == NULL)
  36732. break;
  36733. - names[pos++] = (struct dirent *) memcpy (vnew, current, dsize);
  36734. + names[pos++] = (__DIRENT_TYPE *) memcpy (vnew, current, dsize);
  36735. }
  36736. }
  36737. @@ -88,7 +93,10 @@
  36738. /* Sort the list if we have a comparison function to sort with. */
  36739. if (compar != NULL)
  36740. - qsort (names, pos, sizeof (struct dirent *), (comparison_fn_t) compar);
  36741. + qsort (names, pos, sizeof (__DIRENT_TYPE *), (comparison_fn_t) compar);
  36742. *namelist = names;
  36743. return pos;
  36744. }
  36745. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  36746. +strong_alias_untyped(scandir,scandir64)
  36747. +#endif
  36748. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/versionsort64.c uClibc-git/libc/misc/dirent/versionsort64.c
  36749. --- uClibc-0.9.33.2/libc/misc/dirent/versionsort64.c 2012-05-15 09:20:09.000000000 +0200
  36750. +++ uClibc-git/libc/misc/dirent/versionsort64.c 2014-02-03 12:32:56.000000000 +0100
  36751. @@ -5,12 +5,14 @@
  36752. */
  36753. #include <_lfs_64.h>
  36754. -
  36755. #include <dirent.h>
  36756. -#include <string.h>
  36757. -#include "dirstream.h"
  36758. +
  36759. +#if __WORDSIZE != 64
  36760. +# include <string.h>
  36761. +# include "dirstream.h"
  36762. int versionsort64(const struct dirent64 **a, const struct dirent64 **b)
  36763. {
  36764. return strverscmp((*a)->d_name, (*b)->d_name);
  36765. }
  36766. +#endif
  36767. diff -Nur uClibc-0.9.33.2/libc/misc/dirent/versionsort.c uClibc-git/libc/misc/dirent/versionsort.c
  36768. --- uClibc-0.9.33.2/libc/misc/dirent/versionsort.c 2012-05-15 09:20:09.000000000 +0200
  36769. +++ uClibc-git/libc/misc/dirent/versionsort.c 2014-02-03 12:32:56.000000000 +0100
  36770. @@ -12,3 +12,6 @@
  36771. {
  36772. return strverscmp((*a)->d_name, (*b)->d_name);
  36773. }
  36774. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  36775. +strong_alias_untyped(versionsort,versionsort64)
  36776. +#endif
  36777. diff -Nur uClibc-0.9.33.2/libc/misc/elf/dl-iterate-phdr.c uClibc-git/libc/misc/elf/dl-iterate-phdr.c
  36778. --- uClibc-0.9.33.2/libc/misc/elf/dl-iterate-phdr.c 2012-05-15 09:20:09.000000000 +0200
  36779. +++ uClibc-git/libc/misc/elf/dl-iterate-phdr.c 2014-02-03 12:32:56.000000000 +0100
  36780. @@ -18,10 +18,7 @@
  36781. /* we want this in libc but nowhere else */
  36782. #ifdef __USE_GNU
  36783. -extern __typeof(dl_iterate_phdr) __dl_iterate_phdr;
  36784. -
  36785. -hidden_proto(__dl_iterate_phdr)
  36786. -int
  36787. +static int
  36788. __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), void *data)
  36789. {
  36790. int ret = 0;
  36791. @@ -41,7 +38,6 @@
  36792. #endif
  36793. return ret;
  36794. }
  36795. -hidden_def (__dl_iterate_phdr)
  36796. # ifdef SHARED
  36797. diff -Nur uClibc-0.9.33.2/libc/misc/elf/dl-support.c uClibc-git/libc/misc/elf/dl-support.c
  36798. --- uClibc-0.9.33.2/libc/misc/elf/dl-support.c 2012-05-15 09:20:09.000000000 +0200
  36799. +++ uClibc-git/libc/misc/elf/dl-support.c 2014-02-03 12:32:56.000000000 +0100
  36800. @@ -19,6 +19,7 @@
  36801. #include <ldsodefs.h>
  36802. #include <string.h>
  36803. #endif
  36804. +#include <bits/uClibc_page.h>
  36805. #if defined(USE_TLS) && USE_TLS
  36806. @@ -28,6 +29,7 @@
  36807. ElfW(Phdr) *_dl_phdr;
  36808. size_t _dl_phnum;
  36809. +size_t _dl_pagesize;
  36810. void internal_function _dl_aux_init (ElfW(auxv_t) *av);
  36811. void internal_function _dl_aux_init (ElfW(auxv_t) *av)
  36812. @@ -37,6 +39,9 @@
  36813. /* Get the number of program headers from the aux vect */
  36814. _dl_phnum = (size_t) av[AT_PHNUM].a_un.a_val;
  36815. +
  36816. + /* Get the pagesize from the aux vect */
  36817. + _dl_pagesize = (av[AT_PAGESZ].a_un.a_val) ? (size_t) av[AT_PAGESZ].a_un.a_val : PAGE_SIZE;
  36818. }
  36819. #if defined(USE_TLS) && USE_TLS
  36820. diff -Nur uClibc-0.9.33.2/libc/misc/error/err.c uClibc-git/libc/misc/error/err.c
  36821. --- uClibc-0.9.33.2/libc/misc/error/err.c 2012-05-15 09:20:09.000000000 +0200
  36822. +++ uClibc-git/libc/misc/error/err.c 2014-02-03 12:32:56.000000000 +0100
  36823. @@ -11,9 +11,6 @@
  36824. #include <stdarg.h>
  36825. #include <errno.h>
  36826. #include <err.h>
  36827. -#ifdef __UCLIBC_HAS_THREADS__
  36828. -#include <pthread.h>
  36829. -#endif
  36830. #ifdef __UCLIBC_MJN3_ONLY__
  36831. #warning REMINDER: Deal with wide oriented stderr case.
  36832. @@ -50,68 +47,68 @@
  36833. __STDIO_AUTO_THREADUNLOCK(stderr);
  36834. }
  36835. -void vwarn(const char *format, va_list args)
  36836. +static void __vwarn(const char *format, va_list args)
  36837. {
  36838. vwarn_work(format, args, 1);
  36839. }
  36840. -libc_hidden_def(vwarn)
  36841. +strong_alias(__vwarn,vwarn)
  36842. void warn(const char *format, ...)
  36843. {
  36844. va_list args;
  36845. va_start(args, format);
  36846. - vwarn(format, args);
  36847. + __vwarn(format, args);
  36848. va_end(args);
  36849. }
  36850. -void vwarnx(const char *format, va_list args)
  36851. +static void __vwarnx(const char *format, va_list args)
  36852. {
  36853. vwarn_work(format, args, 0);
  36854. }
  36855. -libc_hidden_def(vwarnx)
  36856. +strong_alias(__vwarnx,vwarnx)
  36857. void warnx(const char *format, ...)
  36858. {
  36859. va_list args;
  36860. va_start(args, format);
  36861. - vwarnx(format, args);
  36862. + __vwarnx(format, args);
  36863. va_end(args);
  36864. }
  36865. -void verr(int status, const char *format, va_list args)
  36866. +static void attribute_noreturn __verr(int status, const char *format, va_list args)
  36867. {
  36868. - vwarn(format, args);
  36869. + __vwarn(format, args);
  36870. exit(status);
  36871. }
  36872. -libc_hidden_def(verr)
  36873. +strong_alias(__verr,verr)
  36874. -void attribute_noreturn err(int status, const char *format, ...)
  36875. +void err(int status, const char *format, ...)
  36876. {
  36877. va_list args;
  36878. va_start(args, format);
  36879. - verr(status, format, args);
  36880. + __verr(status, format, args);
  36881. /* This should get optimized away. We'll leave it now for safety. */
  36882. /* The loop is added only to keep gcc happy. */
  36883. while(1)
  36884. va_end(args);
  36885. }
  36886. -void verrx(int status, const char *format, va_list args)
  36887. +static void attribute_noreturn __verrx(int status, const char *format, va_list args)
  36888. {
  36889. - vwarnx(format, args);
  36890. + __vwarnx(format, args);
  36891. exit(status);
  36892. }
  36893. -libc_hidden_def(verrx)
  36894. +strong_alias(__verrx,verrx)
  36895. -void attribute_noreturn errx(int status, const char *format, ...)
  36896. +void errx(int status, const char *format, ...)
  36897. {
  36898. va_list args;
  36899. va_start(args, format);
  36900. - verrx(status, format, args);
  36901. + __verrx(status, format, args);
  36902. /* This should get optimized away. We'll leave it now for safety. */
  36903. /* The loop is added only to keep gcc happy. */
  36904. while(1)
  36905. diff -Nur uClibc-0.9.33.2/libc/misc/error/error.c uClibc-git/libc/misc/error/error.c
  36906. --- uClibc-0.9.33.2/libc/misc/error/error.c 2012-05-15 09:20:09.000000000 +0200
  36907. +++ uClibc-git/libc/misc/error/error.c 2014-02-03 12:32:56.000000000 +0100
  36908. @@ -13,9 +13,8 @@
  36909. Lesser General Public License for more details.
  36910. You should have received a copy of the GNU Lesser General Public
  36911. - License along with the GNU C Library; if not, write to the Free
  36912. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  36913. - 02111-1307 USA. */
  36914. + License along with the GNU C Library; if not, see
  36915. + <http://www.gnu.org/licenses/>. */
  36916. /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
  36917. /* Adjusted slightly by Erik Andersen <andersen@uclibc.org> */
  36918. @@ -37,8 +36,7 @@
  36919. function without parameters instead. */
  36920. void (*error_print_progname) (void) = NULL;
  36921. -extern __typeof(error) __error attribute_hidden;
  36922. -void __error (int status, int errnum, const char *message, ...)
  36923. +void error (int status, int errnum, const char *message, ...)
  36924. {
  36925. va_list args;
  36926. @@ -60,11 +58,9 @@
  36927. if (status)
  36928. exit (status);
  36929. }
  36930. -weak_alias(__error,error)
  36931. -extern __typeof(error_at_line) __error_at_line attribute_hidden;
  36932. -void __error_at_line (int status, int errnum, const char *file_name,
  36933. - unsigned int line_number, const char *message, ...)
  36934. +void error_at_line (int status, int errnum, const char *file_name,
  36935. + unsigned int line_number, const char *message, ...)
  36936. {
  36937. va_list args;
  36938. @@ -103,4 +99,3 @@
  36939. if (status)
  36940. exit (status);
  36941. }
  36942. -weak_alias(__error_at_line,error_at_line)
  36943. diff -Nur uClibc-0.9.33.2/libc/misc/error/Makefile.in uClibc-git/libc/misc/error/Makefile.in
  36944. --- uClibc-0.9.33.2/libc/misc/error/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  36945. +++ uClibc-git/libc/misc/error/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  36946. @@ -7,19 +7,15 @@
  36947. subdirs += libc/misc/error
  36948. -CSRC :=
  36949. -ifeq ($(UCLIBC_HAS_BSD_ERR),y)
  36950. -CSRC += err.c
  36951. -endif
  36952. -ifeq ($(UCLIBC_HAS_GNU_ERROR),y)
  36953. -CSRC += error.c
  36954. -endif
  36955. +CSRC-y :=
  36956. +CSRC-$(UCLIBC_HAS_BSD_ERR) += err.c
  36957. +CSRC-$(UCLIBC_HAS_GNU_ERROR) += error.c
  36958. MISC_ERROR_DIR := $(top_srcdir)libc/misc/error
  36959. MISC_ERROR_OUT := $(top_builddir)libc/misc/error
  36960. -MISC_ERROR_SRC := $(patsubst %.c,$(MISC_ERROR_DIR)/%.c,$(CSRC))
  36961. -MISC_ERROR_OBJ := $(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC))
  36962. +MISC_ERROR_SRC := $(patsubst %.c,$(MISC_ERROR_DIR)/%.c,$(CSRC-y))
  36963. +MISC_ERROR_OBJ := $(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC-y))
  36964. libc-y += $(MISC_ERROR_OBJ)
  36965. diff -Nur uClibc-0.9.33.2/libc/misc/file/isfdtype.c uClibc-git/libc/misc/file/isfdtype.c
  36966. --- uClibc-0.9.33.2/libc/misc/file/isfdtype.c 1970-01-01 01:00:00.000000000 +0100
  36967. +++ uClibc-git/libc/misc/file/isfdtype.c 2014-02-03 12:32:56.000000000 +0100
  36968. @@ -0,0 +1,40 @@
  36969. +/* Determine whether descriptor has given property.
  36970. + Copyright (C) 1996-2013 Free Software Foundation, Inc.
  36971. + This file is part of the GNU C Library.
  36972. +
  36973. + The GNU C Library is free software; you can redistribute it and/or
  36974. + modify it under the terms of the GNU Lesser General Public
  36975. + License as published by the Free Software Foundation; either
  36976. + version 2.1 of the License, or (at your option) any later version.
  36977. +
  36978. + The GNU C Library is distributed in the hope that it will be useful,
  36979. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  36980. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  36981. + Lesser General Public License for more details.
  36982. +
  36983. + You should have received a copy of the GNU Lesser General Public
  36984. + License along with the GNU C Library; if not, see
  36985. + <http://www.gnu.org/licenses/>. */
  36986. +
  36987. +#include <errno.h>
  36988. +#include <sys/stat.h>
  36989. +#include <sys/socket.h>
  36990. +#include <sys/types.h>
  36991. +#ifdef __UCLIBC_HAS_LFS__
  36992. +# include <_lfs_64.h>
  36993. +#else
  36994. +# define stat64 stat
  36995. +# define fstat64 fstat
  36996. +#endif
  36997. +
  36998. +int
  36999. +isfdtype (int fildes, int fdtype)
  37000. +{
  37001. + struct stat64 st;
  37002. + int save_error = errno;
  37003. + int result = fstat64 (fildes, &st);
  37004. + __set_errno (save_error);
  37005. + if (result)
  37006. + return result;
  37007. + return (st.st_mode & S_IFMT) == (mode_t) fdtype;
  37008. +}
  37009. diff -Nur uClibc-0.9.33.2/libc/misc/file/lockf64.c uClibc-git/libc/misc/file/lockf64.c
  37010. --- uClibc-0.9.33.2/libc/misc/file/lockf64.c 2012-05-15 09:20:09.000000000 +0200
  37011. +++ uClibc-git/libc/misc/file/lockf64.c 2014-02-03 12:32:56.000000000 +0100
  37012. @@ -13,8 +13,7 @@
  37013. You should have received a copy of the GNU Library General Public
  37014. License along with the GNU C Library; see the file COPYING.LIB. If not,
  37015. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  37016. - Boston, MA 02111-1307, USA. */
  37017. + see <http://www.gnu.org/licenses/>. */
  37018. #include <_lfs_64.h>
  37019. @@ -90,4 +89,3 @@
  37020. return fcntl(fd, cmd, &fl);
  37021. }
  37022. -libc_hidden_def(lockf64)
  37023. diff -Nur uClibc-0.9.33.2/libc/misc/file/lockf.c uClibc-git/libc/misc/file/lockf.c
  37024. --- uClibc-0.9.33.2/libc/misc/file/lockf.c 2012-05-15 09:20:09.000000000 +0200
  37025. +++ uClibc-git/libc/misc/file/lockf.c 2014-02-03 12:32:56.000000000 +0100
  37026. @@ -13,19 +13,15 @@
  37027. You should have received a copy of the GNU Library General Public
  37028. License along with the GNU C Library; see the file COPYING.LIB. If not,
  37029. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  37030. - Boston, MA 02111-1307, USA. */
  37031. + see <http://www.gnu.org/licenses/>. */
  37032. #include <features.h>
  37033. -
  37034. #include <sys/types.h>
  37035. -#include <unistd.h>
  37036. #include <fcntl.h>
  37037. +#include <unistd.h>
  37038. #include <errno.h>
  37039. #include <string.h>
  37040. -
  37041. -
  37042. /* lockf is a simplified interface to fcntl's locking facilities. */
  37043. int lockf (int fd, int cmd, off_t len)
  37044. diff -Nur uClibc-0.9.33.2/libc/misc/file/Makefile.in uClibc-git/libc/misc/file/Makefile.in
  37045. --- uClibc-0.9.33.2/libc/misc/file/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37046. +++ uClibc-git/libc/misc/file/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37047. @@ -10,12 +10,12 @@
  37048. MISC_FILE_DIR := $(top_srcdir)libc/misc/file
  37049. MISC_FILE_OUT := $(top_builddir)libc/misc/file
  37050. -MISC_FILE_SRC := $(wildcard $(MISC_FILE_DIR)/*.c)
  37051. -ifneq ($(UCLIBC_HAS_LFS),y)
  37052. -MISC_FILE_SRC := $(filter-out $(MISC_FILE_DIR)/lockf64.c,$(MISC_FILE_SRC))
  37053. -endif
  37054. -MISC_FILE_OBJ := $(patsubst $(MISC_FILE_DIR)/%.c,$(MISC_FILE_OUT)/%.o,$(MISC_FILE_SRC))
  37055. +CSRC-y := $(wildcard $(MISC_FILE_DIR)/*.c)
  37056. +CSRC_LFS := $(wildcard $(MISC_FILE_DIR)/*64.c)
  37057. +CSRC-y := $(filter-out $(CSRC_LFS),$(CSRC-y))
  37058. +CSRC-$(UCLIBC_HAS_LFS) += $(CSRC_LFS)
  37059. +MISC_FILE_OBJ := $(patsubst $(MISC_FILE_DIR)/%.c,$(MISC_FILE_OUT)/%.o,$(CSRC-y))
  37060. libc-y += $(MISC_FILE_OBJ)
  37061. libc-nomulti-$(UCLIBC_HAS_LFS) += $(MISC_FILE_OUT)/lockf64.o
  37062. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch.c uClibc-git/libc/misc/fnmatch/fnmatch.c
  37063. --- uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch.c 2012-05-15 09:20:09.000000000 +0200
  37064. +++ uClibc-git/libc/misc/fnmatch/fnmatch.c 2014-02-03 12:32:56.000000000 +0100
  37065. @@ -13,9 +13,8 @@
  37066. Lesser General Public License for more details.
  37067. You should have received a copy of the GNU Lesser General Public
  37068. - License along with the GNU C Library; if not, write to the Free
  37069. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37070. - 02111-1307 USA. */
  37071. + License along with the GNU C Library; if not, see
  37072. + <http://www.gnu.org/licenses/>. */
  37073. #ifdef HAVE_CONFIG_H
  37074. # include <config.h>
  37075. @@ -54,10 +53,6 @@
  37076. # include <stdlib.h>
  37077. #endif
  37078. -#ifdef __UCLIBC__
  37079. -# define __memset memset
  37080. -#endif
  37081. -
  37082. /* For platform which support the ISO C amendement 1 functionality we
  37083. support user defined character classes. */
  37084. #if defined _LIBC || (defined HAVE_WCTYPE_H && defined HAVE_WCHAR_H)
  37085. @@ -347,7 +342,7 @@
  37086. wchar_t *wstring = NULL;
  37087. /* Convert the strings into wide characters. */
  37088. - __memset (&ps, '\0', sizeof (ps));
  37089. + memset (&ps, '\0', sizeof (ps));
  37090. p = pattern;
  37091. #ifdef _LIBC
  37092. n = strnlen (pattern, 1024);
  37093. @@ -364,7 +359,7 @@
  37094. already done? */
  37095. return -1;
  37096. if (p)
  37097. - __memset (&ps, '\0', sizeof (ps));
  37098. + memset (&ps, '\0', sizeof (ps));
  37099. }
  37100. if (__builtin_expect (p != NULL, 0))
  37101. {
  37102. @@ -396,7 +391,7 @@
  37103. already done? */
  37104. return -1;
  37105. if (p)
  37106. - __memset (&ps, '\0', sizeof (ps));
  37107. + memset (&ps, '\0', sizeof (ps));
  37108. }
  37109. if (__builtin_expect (p != NULL, 0))
  37110. {
  37111. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_loop.c uClibc-git/libc/misc/fnmatch/fnmatch_loop.c
  37112. --- uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_loop.c 2012-05-15 09:20:09.000000000 +0200
  37113. +++ uClibc-git/libc/misc/fnmatch/fnmatch_loop.c 2014-02-03 12:32:56.000000000 +0100
  37114. @@ -13,9 +13,8 @@
  37115. Lesser General Public License for more details.
  37116. You should have received a copy of the GNU Lesser General Public
  37117. - License along with the GNU C Library; if not, write to the Free
  37118. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37119. - 02111-1307 USA. */
  37120. + License along with the GNU C Library; if not, see
  37121. + <http://www.gnu.org/licenses/>. */
  37122. /* Match STRING against the filename pattern PATTERN, returning zero if
  37123. it matches, nonzero if not. */
  37124. @@ -508,7 +507,7 @@
  37125. if (symb_table[2 * elem] == hash
  37126. && (c1
  37127. == extra[symb_table[2 * elem + 1]])
  37128. - && __memcmp (str,
  37129. + && memcmp (str,
  37130. &extra[symb_table[2 * elem
  37131. + 1]
  37132. + 1], c1) == 0)
  37133. @@ -729,7 +728,7 @@
  37134. if (symb_table[2 * elem] == hash
  37135. && (c1
  37136. == extra[symb_table[2 * elem + 1]])
  37137. - && __memcmp (str,
  37138. + && memcmp (str,
  37139. &extra[symb_table[2 * elem + 1]
  37140. + 1], c1) == 0)
  37141. {
  37142. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_old.c uClibc-git/libc/misc/fnmatch/fnmatch_old.c
  37143. --- uClibc-0.9.33.2/libc/misc/fnmatch/fnmatch_old.c 2012-05-15 09:20:09.000000000 +0200
  37144. +++ uClibc-git/libc/misc/fnmatch/fnmatch_old.c 2014-02-03 12:32:56.000000000 +0100
  37145. @@ -12,8 +12,7 @@
  37146. You should have received a copy of the GNU Library General Public
  37147. License along with this library; see the file COPYING.LIB. If
  37148. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  37149. -Cambridge, MA 02139, USA. */
  37150. +not, see <http://www.gnu.org/licenses/>. */
  37151. #ifdef HAVE_CONFIG_H
  37152. # include <config.h>
  37153. diff -Nur uClibc-0.9.33.2/libc/misc/fnmatch/Makefile.in uClibc-git/libc/misc/fnmatch/Makefile.in
  37154. --- uClibc-0.9.33.2/libc/misc/fnmatch/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37155. +++ uClibc-git/libc/misc/fnmatch/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37156. @@ -7,17 +7,13 @@
  37157. subdirs += libc/misc/fnmatch
  37158. -ifeq ($(UCLIBC_HAS_FNMATCH_OLD),y)
  37159. -CSRC := fnmatch_old.c
  37160. -else
  37161. -CSRC := fnmatch.c
  37162. -endif
  37163. +CSRC-y := $(if $(UCLIBC_HAS_FNMATCH_OLD),fnmatch_old.c,fnmatch.c)
  37164. MISC_FNMATCH_DIR := $(top_srcdir)libc/misc/fnmatch
  37165. MISC_FNMATCH_OUT := $(top_builddir)libc/misc/fnmatch
  37166. -MISC_FNMATCH_SRC := $(patsubst %.c,$(MISC_FNMATCH_DIR)/%.c,$(CSRC))
  37167. -MISC_FNMATCH_OBJ := $(patsubst %.c,$(MISC_FNMATCH_OUT)/%.o,$(CSRC))
  37168. +MISC_FNMATCH_SRC := $(patsubst %.c,$(MISC_FNMATCH_DIR)/%.c,$(CSRC-y))
  37169. +MISC_FNMATCH_OBJ := $(patsubst %.c,$(MISC_FNMATCH_OUT)/%.o,$(CSRC-y))
  37170. libc-$(UCLIBC_HAS_FNMATCH) += $(MISC_FNMATCH_OBJ)
  37171. diff -Nur uClibc-0.9.33.2/libc/misc/fts/fts.c uClibc-git/libc/misc/fts/fts.c
  37172. --- uClibc-0.9.33.2/libc/misc/fts/fts.c 2012-05-15 09:20:09.000000000 +0200
  37173. +++ uClibc-git/libc/misc/fts/fts.c 2014-02-15 14:18:15.000000000 +0100
  37174. @@ -38,6 +38,7 @@
  37175. #include <unistd.h>
  37176. #ifdef __UCLIBC_HAS_LFS__
  37177. +/* this is wrong, either you include this header as first, or not at all */
  37178. # include <_lfs_64.h>
  37179. #else
  37180. # define stat64 stat
  37181. @@ -576,7 +577,7 @@
  37182. FTSENT *cur, *tail;
  37183. DIR *dirp;
  37184. void *oldaddr;
  37185. - int cderrno, descend, len, level, nlinks, saved_errno,
  37186. + int /*cderrno,*/ descend, len, level, nlinks, saved_errno,
  37187. nostat, doadjust;
  37188. size_t maxlen;
  37189. char *cp;
  37190. @@ -641,14 +642,14 @@
  37191. * needed sorted entries or stat information, they had better be
  37192. * checking FTS_NS on the returned nodes.
  37193. */
  37194. - cderrno = 0;
  37195. + /* cderrno = 0; */
  37196. if (nlinks || type == BREAD) {
  37197. if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) {
  37198. if (nlinks && type == BREAD)
  37199. cur->fts_errno = errno;
  37200. cur->fts_flags |= FTS_DONTCHDIR;
  37201. descend = 0;
  37202. - cderrno = errno;
  37203. + /* cderrno = errno; */
  37204. (void)closedir(dirp);
  37205. dirp = NULL;
  37206. } else
  37207. diff -Nur uClibc-0.9.33.2/libc/misc/fts/Makefile.in uClibc-git/libc/misc/fts/Makefile.in
  37208. --- uClibc-0.9.33.2/libc/misc/fts/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37209. +++ uClibc-git/libc/misc/fts/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37210. @@ -7,13 +7,13 @@
  37211. #
  37212. subdirs += libc/misc/fts
  37213. -CSRC := fts.c
  37214. +CSRC-y := fts.c
  37215. MISC_FTS_DIR := $(top_srcdir)libc/misc/fts
  37216. MISC_FTS_OUT := $(top_builddir)libc/misc/fts
  37217. -MISC_FTS_SRC := $(patsubst %.c,$(MISC_FTS_DIR)/%.c,$(CSRC))
  37218. -MISC_FTS_OBJ := $(patsubst %.c,$(MISC_FTS_OUT)/%.o,$(CSRC))
  37219. +MISC_FTS_SRC := $(patsubst %.c,$(MISC_FTS_DIR)/%.c,$(CSRC-y))
  37220. +MISC_FTS_OBJ := $(patsubst %.c,$(MISC_FTS_OUT)/%.o,$(CSRC-y))
  37221. libc-$(UCLIBC_HAS_FTS) += $(MISC_FTS_OBJ)
  37222. diff -Nur uClibc-0.9.33.2/libc/misc/ftw/ftw64.c uClibc-git/libc/misc/ftw/ftw64.c
  37223. --- uClibc-0.9.33.2/libc/misc/ftw/ftw64.c 2012-05-15 09:20:09.000000000 +0200
  37224. +++ uClibc-git/libc/misc/ftw/ftw64.c 2014-02-03 12:32:56.000000000 +0100
  37225. @@ -14,9 +14,8 @@
  37226. Lesser General Public License for more details.
  37227. You should have received a copy of the GNU Lesser General Public
  37228. - License along with the GNU C Library; if not, write to the Free
  37229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37230. - 02111-1307 USA. */
  37231. + License along with the GNU C Library; if not, see
  37232. + <http://www.gnu.org/licenses/>. */
  37233. #define FTW_NAME ftw64
  37234. #define NFTW_NAME nftw64
  37235. diff -Nur uClibc-0.9.33.2/libc/misc/ftw/ftw.c uClibc-git/libc/misc/ftw/ftw.c
  37236. --- uClibc-0.9.33.2/libc/misc/ftw/ftw.c 2012-05-15 09:20:09.000000000 +0200
  37237. +++ uClibc-git/libc/misc/ftw/ftw.c 2014-02-03 12:32:56.000000000 +0100
  37238. @@ -14,15 +14,16 @@
  37239. Lesser General Public License for more details.
  37240. You should have received a copy of the GNU Lesser General Public
  37241. - License along with the GNU C Library; if not, write to the Free
  37242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37243. - 02111-1307 USA. */
  37244. + License along with the GNU C Library; if not, see
  37245. + <http://www.gnu.org/licenses/>. */
  37246. #ifdef HAVE_CONFIG_H
  37247. # include <config.h>
  37248. #endif
  37249. #include <features.h>
  37250. +/* need errno.h before undefining _LIBC */
  37251. +#include <errno.h>
  37252. #ifdef __UCLIBC__
  37253. #undef _LIBC
  37254. #define HAVE_DIRENT_H 1
  37255. @@ -32,6 +33,7 @@
  37256. #endif
  37257. #if __GNUC__
  37258. +# undef alloca
  37259. # define alloca __builtin_alloca
  37260. #else
  37261. # if HAVE_ALLOCA_H
  37262. @@ -67,7 +69,6 @@
  37263. # endif
  37264. #endif
  37265. -#include <errno.h>
  37266. #include <ftw.h>
  37267. #include <limits.h>
  37268. #include <search.h>
  37269. @@ -77,11 +78,7 @@
  37270. #if HAVE_SYS_PARAM_H || defined _LIBC
  37271. # include <sys/param.h>
  37272. #endif
  37273. -#ifdef _LIBC
  37274. -# include <include/sys/stat.h>
  37275. -#else
  37276. -# include <sys/stat.h>
  37277. -#endif
  37278. +#include <sys/stat.h>
  37279. #if !defined _LIBC && !HAVE_DECL_STPCPY && !defined stpcpy
  37280. char *stpcpy ();
  37281. diff -Nur uClibc-0.9.33.2/libc/misc/ftw/Makefile.in uClibc-git/libc/misc/ftw/Makefile.in
  37282. --- uClibc-0.9.33.2/libc/misc/ftw/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37283. +++ uClibc-git/libc/misc/ftw/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37284. @@ -7,16 +7,14 @@
  37285. subdirs += libc/misc/ftw
  37286. -CSRC := ftw.c
  37287. -ifeq ($(UCLIBC_HAS_LFS),y)
  37288. -CSRC += ftw64.c
  37289. -endif
  37290. +CSRC-y := ftw.c
  37291. +CSRC-$(UCLIBC_HAS_LFS) += ftw64.c
  37292. MISC_FTW_DIR := $(top_srcdir)libc/misc/ftw
  37293. MISC_FTW_OUT := $(top_builddir)libc/misc/ftw
  37294. -MISC_FTW_SRC := $(patsubst %.c,$(MISC_FTW_DIR)/%.c,$(CSRC))
  37295. -MISC_FTW_OBJ := $(patsubst %.c,$(MISC_FTW_OUT)/%.o,$(CSRC))
  37296. +MISC_FTW_SRC := $(patsubst %.c,$(MISC_FTW_DIR)/%.c,$(CSRC-y))
  37297. +MISC_FTW_OBJ := $(patsubst %.c,$(MISC_FTW_OUT)/%.o,$(CSRC-y))
  37298. libc-$(findstring y,$(UCLIBC_HAS_FTW)$(UCLIBC_HAS_NFTW)) += $(MISC_FTW_OBJ)
  37299. diff -Nur uClibc-0.9.33.2/libc/misc/glob/glob.c uClibc-git/libc/misc/glob/glob.c
  37300. --- uClibc-0.9.33.2/libc/misc/glob/glob.c 2012-05-15 09:20:09.000000000 +0200
  37301. +++ uClibc-git/libc/misc/glob/glob.c 2014-02-03 12:32:56.000000000 +0100
  37302. @@ -12,9 +12,8 @@
  37303. Lesser General Public License for more details.
  37304. You should have received a copy of the GNU Lesser General Public
  37305. - License along with the GNU C Library; if not, write to the Free
  37306. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37307. - 02111-1307 USA. */
  37308. + License along with the GNU C Library; if not, see
  37309. + <http://www.gnu.org/licenses/>. */
  37310. #undef ENABLE_GLOB_BRACE_EXPANSION
  37311. #undef ENABLE_GLOB_TILDE_EXPANSION
  37312. diff -Nur uClibc-0.9.33.2/libc/misc/glob/Makefile.in uClibc-git/libc/misc/glob/Makefile.in
  37313. --- uClibc-0.9.33.2/libc/misc/glob/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37314. +++ uClibc-git/libc/misc/glob/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37315. @@ -7,23 +7,15 @@
  37316. subdirs += libc/misc/glob
  37317. -ifeq ($(UCLIBC_HAS_GNU_GLOB),y)
  37318. -CSRC := glob.c
  37319. -ifeq ($(UCLIBC_HAS_LFS),y)
  37320. -CSRC += glob64.c
  37321. -endif
  37322. -else
  37323. -CSRC := glob-susv3.c
  37324. -ifeq ($(UCLIBC_HAS_LFS),y)
  37325. -CSRC += glob64-susv3.c
  37326. -endif
  37327. -endif
  37328. +VARIANT := $(if $(UCLIBC_HAS_GNU_GLOB),,-susv3)
  37329. +CSRC-y := glob$(VARIANT).c
  37330. +CSRC-$(UCLIBC_HAS_LFS) += glob64$(VARIANT).c
  37331. MISC_GLOB_DIR := $(top_srcdir)libc/misc/glob
  37332. MISC_GLOB_OUT := $(top_builddir)libc/misc/glob
  37333. -MISC_GLOB_SRC := $(patsubst %.c,$(MISC_GLOB_DIR)/%.c,$(CSRC))
  37334. -MISC_GLOB_OBJ := $(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC))
  37335. +MISC_GLOB_SRC := $(patsubst %.c,$(MISC_GLOB_DIR)/%.c,$(CSRC-y))
  37336. +MISC_GLOB_OBJ := $(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC-y))
  37337. libc-$(UCLIBC_HAS_GLOB) += $(MISC_GLOB_OBJ)
  37338. diff -Nur uClibc-0.9.33.2/libc/misc/gnu/Makefile.in uClibc-git/libc/misc/gnu/Makefile.in
  37339. --- uClibc-0.9.33.2/libc/misc/gnu/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37340. +++ uClibc-git/libc/misc/gnu/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37341. @@ -7,13 +7,14 @@
  37342. subdirs += libc/misc/gnu
  37343. -CSRC := obstack.c
  37344. +CSRC-y :=
  37345. +CSRC-$(UCLIBC_HAS_OBSTACK) := obstack.c obprintf.c
  37346. MISC_GNU_DIR := $(top_srcdir)libc/misc/gnu
  37347. MISC_GNU_OUT := $(top_builddir)libc/misc/gnu
  37348. -MISC_GNU_SRC := $(MISC_GNU_DIR)/obstack.c
  37349. -MISC_GNU_OBJ := $(MISC_GNU_OUT)/obstack.o
  37350. +MISC_GNU_SRC := $(patsubst %.c,$(MISC_GNU_DIR)/%.c,$(CSRC-y))
  37351. +MISC_GNU_OBJ := $(patsubst %.c,$(MISC_GNU_OUT)/%.o,$(CSRC-y))
  37352. libc-y += $(MISC_GNU_OBJ)
  37353. diff -Nur uClibc-0.9.33.2/libc/misc/gnu/obprintf.c uClibc-git/libc/misc/gnu/obprintf.c
  37354. --- uClibc-0.9.33.2/libc/misc/gnu/obprintf.c 1970-01-01 01:00:00.000000000 +0100
  37355. +++ uClibc-git/libc/misc/gnu/obprintf.c 2014-02-03 12:32:56.000000000 +0100
  37356. @@ -0,0 +1,29 @@
  37357. +/* Copyright (C) 2013 Gentoo Foundation
  37358. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  37359. + */
  37360. +
  37361. +#include <stdio.h>
  37362. +#include <stdarg.h>
  37363. +#include <obstack.h>
  37364. +
  37365. +int
  37366. +obstack_vprintf (struct obstack *obstack, const char *format, va_list args)
  37367. +{
  37368. + int n;
  37369. + char *s;
  37370. + n = vasprintf(&s, format, args);
  37371. + obstack_grow(obstack, s, n);
  37372. + return n;
  37373. +}
  37374. +libc_hidden_def(obstack_vprintf)
  37375. +
  37376. +int
  37377. +obstack_printf (struct obstack *obstack, const char *format, ...)
  37378. +{
  37379. + int n;
  37380. + va_list ap;
  37381. + va_start (ap, format);
  37382. + n = obstack_vprintf (obstack, format, ap);
  37383. + va_end (ap);
  37384. + return n;
  37385. +}
  37386. diff -Nur uClibc-0.9.33.2/libc/misc/gnu/obstack.c uClibc-git/libc/misc/gnu/obstack.c
  37387. --- uClibc-0.9.33.2/libc/misc/gnu/obstack.c 2012-05-15 09:20:09.000000000 +0200
  37388. +++ uClibc-git/libc/misc/gnu/obstack.c 2014-02-03 12:32:56.000000000 +0100
  37389. @@ -14,9 +14,8 @@
  37390. Lesser General Public License for more details.
  37391. You should have received a copy of the GNU Lesser General Public
  37392. - License along with the GNU C Library; if not, write to the Free
  37393. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  37394. - Boston, MA 02110-1301, USA. */
  37395. + License along with the GNU C Library; if not, see
  37396. + <http://www.gnu.org/licenses/>. */
  37397. #ifdef HAVE_CONFIG_H
  37398. @@ -30,11 +29,6 @@
  37399. #else
  37400. # define HAVE_INTTYPES_H 1
  37401. # define HAVE_STDINT_H 1
  37402. -# define SHLIB_COMPAT(x,y,z) 0
  37403. -# undef libc_hidden_def
  37404. -# define libc_hidden_def(x)
  37405. -# undef strong_alias
  37406. -# define strong_alias(x,y)
  37407. #endif
  37408. #else
  37409. # include "obstack.h"
  37410. @@ -112,19 +106,19 @@
  37411. `print_and_abort'. */
  37412. static void print_and_abort (void);
  37413. static void (*__obstack_alloc_failed_handler) (void) = print_and_abort;
  37414. -weak_alias(__obstack_alloc_failed_handler,obstack_alloc_failed_handler)
  37415. +strong_alias(__obstack_alloc_failed_handler,obstack_alloc_failed_handler)
  37416. /* Exit value used when `print_and_abort' is used. */
  37417. # include <stdlib.h>
  37418. # ifdef _LIBC
  37419. static int __obstack_exit_failure = EXIT_FAILURE;
  37420. -weak_alias(__obstack_exit_failure,obstack_exit_failure)
  37421. +strong_alias(__obstack_exit_failure,obstack_exit_failure)
  37422. # else
  37423. # include "exitfail.h"
  37424. # define __obstack_exit_failure exit_failure
  37425. # endif
  37426. -# ifdef _LIBC
  37427. +# if 0
  37428. # if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
  37429. /* A looong time ago (before 1994, anyway; we're not sure) this global variable
  37430. was used by non-GNU-C macros to avoid multiple evaluation. The GNU C
  37431. @@ -328,9 +322,7 @@
  37432. /* The new chunk certainly contains no empty object yet. */
  37433. h->maybe_empty_object = 0;
  37434. }
  37435. -# ifdef _LIBC
  37436. -libc_hidden_def (_obstack_newchunk)
  37437. -# endif
  37438. +libc_hidden_def(_obstack_newchunk)
  37439. /* Return nonzero if object OBJ has been allocated from obstack H.
  37440. This is here for debugging.
  37441. @@ -393,7 +385,7 @@
  37442. abort ();
  37443. }
  37444. -# ifdef _LIBC
  37445. +# if 0
  37446. /* Older versions of libc used a function _obstack_free intended to be
  37447. called by non-GCC compilers. */
  37448. strong_alias (obstack_free, _obstack_free)
  37449. @@ -418,9 +410,6 @@
  37450. # else
  37451. # include "gettext.h"
  37452. # endif
  37453. -/* NLS: Disable gettext in obstack for now: */
  37454. -# undef _
  37455. -# define _(Str) (Str)
  37456. # ifndef _
  37457. # define _(msgid) gettext (msgid)
  37458. # endif
  37459. diff -Nur uClibc-0.9.33.2/libc/misc/internals/errno.c uClibc-git/libc/misc/internals/errno.c
  37460. --- uClibc-0.9.33.2/libc/misc/internals/errno.c 2012-05-15 09:20:09.000000000 +0200
  37461. +++ uClibc-git/libc/misc/internals/errno.c 2014-02-03 12:32:56.000000000 +0100
  37462. @@ -1,21 +1,14 @@
  37463. #include <features.h>
  37464. +#include <errno.h>
  37465. +#undef errno
  37466. #ifdef __UCLIBC_HAS_TLS__
  37467. __thread int errno;
  37468. -__thread int h_errno;
  37469. -
  37470. extern __thread int __libc_errno __attribute__ ((alias ("errno"))) attribute_hidden;
  37471. -extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno"))) attribute_hidden;
  37472. -#define h_errno __libc_h_errno
  37473. -
  37474. #else
  37475. -#include "internal_errno.h"
  37476. +extern int errno;
  37477. int errno = 0;
  37478. -int h_errno = 0;
  37479. -#ifdef __UCLIBC_HAS_THREADS__
  37480. -libc_hidden_def(errno)
  37481. -weak_alias(errno, _errno)
  37482. -libc_hidden_def(h_errno)
  37483. -weak_alias(h_errno, _h_errno)
  37484. -#endif
  37485. +# ifdef __UCLIBC_HAS_THREADS__
  37486. +strong_alias(errno,_errno)
  37487. +# endif
  37488. #endif
  37489. diff -Nur uClibc-0.9.33.2/libc/misc/internals/__errno_location.c uClibc-git/libc/misc/internals/__errno_location.c
  37490. --- uClibc-0.9.33.2/libc/misc/internals/__errno_location.c 2012-05-15 09:20:09.000000000 +0200
  37491. +++ uClibc-git/libc/misc/internals/__errno_location.c 2014-02-03 12:32:56.000000000 +0100
  37492. @@ -4,17 +4,16 @@
  37493. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  37494. */
  37495. -#include "internal_errno.h"
  37496. +#include <features.h>
  37497. +#include <errno.h>
  37498. -/* psm: moved to bits/errno.h: */
  37499. -int *
  37500. -#ifndef __UCLIBC_HAS_THREADS__
  37501. -weak_const_function
  37502. +#ifndef __UCLIBC_HAS_TLS__
  37503. +# undef errno
  37504. +extern int errno;
  37505. #endif
  37506. -__errno_location (void)
  37507. +
  37508. +int *__errno_location(void)
  37509. {
  37510. return &errno;
  37511. }
  37512. -#ifdef IS_IN_libc /* not really need, only to keep in sync w/ libc_hidden_proto */
  37513. libc_hidden_weak(__errno_location)
  37514. -#endif
  37515. diff -Nur uClibc-0.9.33.2/libc/misc/internals/h_errno.c uClibc-git/libc/misc/internals/h_errno.c
  37516. --- uClibc-0.9.33.2/libc/misc/internals/h_errno.c 1970-01-01 01:00:00.000000000 +0100
  37517. +++ uClibc-git/libc/misc/internals/h_errno.c 2014-02-03 12:32:56.000000000 +0100
  37518. @@ -0,0 +1,14 @@
  37519. +#include <features.h>
  37520. +#include <netdb.h>
  37521. +#undef h_errno
  37522. +
  37523. +#ifdef __UCLIBC_HAS_TLS__
  37524. +__thread int h_errno;
  37525. +extern __thread int __libc_h_errno __attribute__ ((alias ("h_errno"))) attribute_hidden;
  37526. +#else
  37527. +extern int h_errno;
  37528. +int h_errno = 0;
  37529. +# ifdef __UCLIBC_HAS_THREADS__
  37530. +strong_alias(h_errno,_h_errno)
  37531. +# endif
  37532. +#endif
  37533. diff -Nur uClibc-0.9.33.2/libc/misc/internals/__h_errno_location.c uClibc-git/libc/misc/internals/__h_errno_location.c
  37534. --- uClibc-0.9.33.2/libc/misc/internals/__h_errno_location.c 2012-05-15 09:20:09.000000000 +0200
  37535. +++ uClibc-git/libc/misc/internals/__h_errno_location.c 2014-02-03 12:32:56.000000000 +0100
  37536. @@ -4,9 +4,15 @@
  37537. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  37538. */
  37539. -#include "internal_errno.h"
  37540. +#include <features.h>
  37541. +#include <netdb.h>
  37542. -int * weak_const_function __h_errno_location (void)
  37543. +#ifndef __UCLIBC_HAS_TLS__
  37544. +# undef h_errno
  37545. +extern int h_errno;
  37546. +#endif
  37547. +
  37548. +int *__h_errno_location(void)
  37549. {
  37550. return &h_errno;
  37551. }
  37552. diff -Nur uClibc-0.9.33.2/libc/misc/internals/internal_errno.h uClibc-git/libc/misc/internals/internal_errno.h
  37553. --- uClibc-0.9.33.2/libc/misc/internals/internal_errno.h 2012-05-15 09:20:09.000000000 +0200
  37554. +++ uClibc-git/libc/misc/internals/internal_errno.h 1970-01-01 01:00:00.000000000 +0100
  37555. @@ -1,21 +0,0 @@
  37556. -/*
  37557. - *
  37558. - */
  37559. -
  37560. -#include <features.h>
  37561. -#include <errno.h>
  37562. -#include <netdb.h>
  37563. -
  37564. -#ifndef __UCLIBC_HAS_TLS__
  37565. -
  37566. -#undef errno
  37567. -#undef h_errno
  37568. -
  37569. -extern int h_errno;
  37570. -extern int errno;
  37571. -
  37572. -#ifdef __UCLIBC_HAS_THREADS__
  37573. -libc_hidden_proto(h_errno)
  37574. -libc_hidden_proto(errno)
  37575. -#endif
  37576. -#endif
  37577. diff -Nur uClibc-0.9.33.2/libc/misc/internals/Makefile.in uClibc-git/libc/misc/internals/Makefile.in
  37578. --- uClibc-0.9.33.2/libc/misc/internals/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37579. +++ uClibc-git/libc/misc/internals/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37580. @@ -7,14 +7,14 @@
  37581. subdirs += libc/misc/internals
  37582. -CSRC := tempname.c errno.c __errno_location.c __h_errno_location.c \
  37583. +CSRC-y := tempname.c errno.c h_errno.c __errno_location.c __h_errno_location.c \
  37584. parse_config.c
  37585. MISC_INTERNALS_DIR := $(top_srcdir)libc/misc/internals
  37586. MISC_INTERNALS_OUT := $(top_builddir)libc/misc/internals
  37587. -MISC_INTERNALS_SRC := $(patsubst %.c,$(MISC_INTERNALS_DIR)/%.c,$(CSRC))
  37588. -MISC_INTERNALS_OBJ := $(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC))
  37589. +MISC_INTERNALS_SRC := $(patsubst %.c,$(MISC_INTERNALS_DIR)/%.c,$(CSRC-y))
  37590. +MISC_INTERNALS_OBJ := $(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC-y))
  37591. CFLAGS-__uClibc_main.c := $(SSP_DISABLE_FLAGS)
  37592. diff -Nur uClibc-0.9.33.2/libc/misc/internals/parse_config.c uClibc-git/libc/misc/internals/parse_config.c
  37593. --- uClibc-0.9.33.2/libc/misc/internals/parse_config.c 2012-05-15 09:20:09.000000000 +0200
  37594. +++ uClibc-git/libc/misc/internals/parse_config.c 2014-02-03 12:32:56.000000000 +0100
  37595. @@ -129,7 +129,7 @@
  37596. return parser;
  37597. }
  37598. -parser_t attribute_hidden * FAST_FUNC config_open(const char *filename)
  37599. +parser_t * FAST_FUNC config_open(const char *filename)
  37600. {
  37601. return config_open2(filename, fopen_or_warn_stdin);
  37602. }
  37603. @@ -142,7 +142,7 @@
  37604. }
  37605. #endif
  37606. -void attribute_hidden FAST_FUNC config_close(parser_t *parser)
  37607. +void FAST_FUNC config_close(parser_t *parser)
  37608. {
  37609. if (parser) {
  37610. fclose(parser->fp);
  37611. @@ -176,7 +176,7 @@
  37612. (but more than 0) are found. Empty lines are always skipped (not warned about).
  37613. */
  37614. #undef config_read
  37615. -int attribute_hidden FAST_FUNC config_read(parser_t *parser, char ***tokens,
  37616. +int FAST_FUNC config_read(parser_t *parser, char ***tokens,
  37617. unsigned flags, const char *delims)
  37618. {
  37619. char *line;
  37620. diff -Nur uClibc-0.9.33.2/libc/misc/internals/tempname.c uClibc-git/libc/misc/internals/tempname.c
  37621. --- uClibc-0.9.33.2/libc/misc/internals/tempname.c 2012-05-15 09:20:09.000000000 +0200
  37622. +++ uClibc-git/libc/misc/internals/tempname.c 2014-02-03 12:32:56.000000000 +0100
  37623. @@ -13,8 +13,7 @@
  37624. You should have received a copy of the GNU Library General Public
  37625. License along with the GNU C Library; see the file COPYING.LIB. If not,
  37626. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  37627. - Boston, MA 02111-1307, USA. */
  37628. + see <http://www.gnu.org/licenses/>. */
  37629. /* March 11, 2002 Manuel Novoa III
  37630. *
  37631. @@ -58,7 +57,7 @@
  37632. for use with mk[s]temp. Will fail (-1) if DIR is non-null and
  37633. doesn't exist, none of the searched dirs exists, or there's not
  37634. enough space in TMPL. */
  37635. -int attribute_hidden ___path_search (char *tmpl, size_t tmpl_len, const char *dir,
  37636. +int ___path_search (char *tmpl, size_t tmpl_len, const char *dir,
  37637. const char *pfx /*, int try_tmpdir*/)
  37638. {
  37639. /*const char *d; */
  37640. diff -Nur uClibc-0.9.33.2/libc/misc/internals/__uClibc_main.c uClibc-git/libc/misc/internals/__uClibc_main.c
  37641. --- uClibc-0.9.33.2/libc/misc/internals/__uClibc_main.c 2012-05-15 09:20:09.000000000 +0200
  37642. +++ uClibc-git/libc/misc/internals/__uClibc_main.c 2014-02-03 12:32:56.000000000 +0100
  37643. @@ -15,9 +15,6 @@
  37644. */
  37645. #include <features.h>
  37646. -#ifndef __UCLIBC_HAS_THREADS_NATIVE__
  37647. -#define _ERRNO_H
  37648. -#endif
  37649. #include <unistd.h>
  37650. #include <stdlib.h>
  37651. #include <string.h>
  37652. @@ -25,20 +22,23 @@
  37653. #include <link.h>
  37654. #include <bits/uClibc_page.h>
  37655. #include <paths.h>
  37656. -#include <unistd.h>
  37657. -#include <asm/errno.h>
  37658. +#include <errno.h>
  37659. +#include <netdb.h>
  37660. +#include <stdio.h>
  37661. +#ifndef __ARCH_HAS_NO_LDSO__
  37662. #include <fcntl.h>
  37663. -#include <sys/stat.h>
  37664. -#include <sys/sysmacros.h>
  37665. +#endif
  37666. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  37667. -#include <errno.h>
  37668. #include <pthread-functions.h>
  37669. #include <not-cancel.h>
  37670. #include <atomic.h>
  37671. #endif
  37672. #ifdef __UCLIBC_HAS_THREADS__
  37673. #include <pthread.h>
  37674. -#endif
  37675. +#endif
  37676. +#ifdef __UCLIBC_HAS_LOCALE__
  37677. +#include <locale.h>
  37678. +#endif
  37679. #ifndef SHARED
  37680. void *__libc_stack_end = NULL;
  37681. @@ -116,12 +116,6 @@
  37682. /*
  37683. * Prototypes.
  37684. */
  37685. -extern int *weak_const_function __errno_location(void);
  37686. -extern int *weak_const_function __h_errno_location(void);
  37687. -extern void weak_function _stdio_init(void) attribute_hidden;
  37688. -#ifdef __UCLIBC_HAS_LOCALE__
  37689. -extern void weak_function _locale_init(void) attribute_hidden;
  37690. -#endif
  37691. #ifdef __UCLIBC_HAS_THREADS__
  37692. #if !defined (__UCLIBC_HAS_THREADS_NATIVE__) || defined (SHARED)
  37693. extern void weak_function __pthread_initialize_minimal(void);
  37694. @@ -146,18 +140,24 @@
  37695. # endif
  37696. #endif
  37697. -#if defined (__LDSO_STANDALONE_SUPPORT__) && defined (SHARED) && defined __sh__
  37698. -extern unsigned long _dl_skip_args;
  37699. +#ifdef SHARED
  37700. +extern int _dl_secure;
  37701. #endif
  37702. +extern size_t _dl_pagesize;
  37703. -attribute_hidden const char *__uclibc_progname = "";
  37704. -#ifdef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  37705. -const char *program_invocation_short_name = "";
  37706. -const char *program_invocation_name = "";
  37707. -#endif
  37708. -#ifdef __UCLIBC_HAS___PROGNAME__
  37709. -weak_alias (program_invocation_short_name, __progname)
  37710. -weak_alias (program_invocation_name, __progname_full)
  37711. +const char *__uclibc_progname = "";
  37712. +#if !defined __UCLIBC_HAS___PROGNAME__ && defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  37713. +# define __progname program_invocation_short_name
  37714. +# define __progname_full program_invocation_name
  37715. +#endif
  37716. +#if defined __UCLIBC_HAS___PROGNAME__ || (defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__)
  37717. +const char *__progname = "";
  37718. +/* psm: why have a visible __progname_full? */
  37719. +const char *__progname_full = "";
  37720. +# if defined __UCLIBC_HAS___PROGNAME__ && defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  37721. +weak_alias (__progname, program_invocation_short_name)
  37722. +weak_alias (__progname_full, program_invocation_name)
  37723. +# endif
  37724. #endif
  37725. /*
  37726. @@ -167,7 +167,6 @@
  37727. char **__environ = 0;
  37728. weak_alias(__environ, environ)
  37729. -/* TODO: don't export __pagesize; we cant now because libpthread uses it */
  37730. size_t __pagesize = 0;
  37731. #ifndef O_NOFOLLOW
  37732. @@ -192,6 +191,7 @@
  37733. }
  37734. }
  37735. +#ifndef SHARED
  37736. static int __check_suid(void)
  37737. {
  37738. uid_t uid, euid;
  37739. @@ -208,6 +208,7 @@
  37740. return 0; /* we are not suid */
  37741. }
  37742. #endif
  37743. +#endif
  37744. /* __uClibc_init completely initialize uClibc so it is ready to use.
  37745. *
  37746. @@ -222,8 +223,7 @@
  37747. * __uClibc_main.
  37748. */
  37749. -extern void __uClibc_init(void);
  37750. -libc_hidden_proto(__uClibc_init)
  37751. +extern void __uClibc_init(void) attribute_hidden;
  37752. void __uClibc_init(void)
  37753. {
  37754. /* Don't recurse */
  37755. @@ -276,7 +276,6 @@
  37756. _stdio_init();
  37757. }
  37758. -libc_hidden_def(__uClibc_init)
  37759. #ifdef __UCLIBC_CTOR_DTOR__
  37760. void attribute_hidden (*__app_fini)(void) = NULL;
  37761. @@ -284,8 +283,7 @@
  37762. void attribute_hidden (*__rtld_fini)(void) = NULL;
  37763. -extern void __uClibc_fini(void);
  37764. -libc_hidden_proto(__uClibc_fini)
  37765. +extern void __uClibc_fini(void) attribute_hidden;
  37766. void __uClibc_fini(void)
  37767. {
  37768. #ifdef __UCLIBC_CTOR_DTOR__
  37769. @@ -304,7 +302,6 @@
  37770. if (__rtld_fini != NULL)
  37771. (__rtld_fini)();
  37772. }
  37773. -libc_hidden_def(__uClibc_fini)
  37774. #ifndef SHARED
  37775. extern void __nptl_deallocate_tsd (void) __attribute ((weak));
  37776. @@ -323,7 +320,7 @@
  37777. char **argv, void (*app_init)(void), void (*app_fini)(void),
  37778. void (*rtld_fini)(void), void *stack_end attribute_unused)
  37779. {
  37780. -#ifndef __ARCH_HAS_NO_LDSO__
  37781. +#if !defined __ARCH_HAS_NO_LDSO__ && !defined SHARED
  37782. unsigned long *aux_dat;
  37783. ElfW(auxv_t) auxvt[AT_EGID + 1];
  37784. #endif
  37785. @@ -339,18 +336,6 @@
  37786. __rtld_fini = rtld_fini;
  37787. -#if defined __LDSO_STANDALONE_SUPPORT__ && defined SHARED && defined __sh__
  37788. - /*
  37789. - * Skip ld.so and its arguments
  37790. - * Other archs except for SH do this in _dl_start before passing
  37791. - * control to the application.
  37792. - * FIXME: align SH _dl_start to other archs and remove this from here,
  37793. - * so that we can keep the visibility hidden.
  37794. - */
  37795. - argc -= _dl_skip_args;
  37796. - argv += _dl_skip_args;
  37797. -#endif
  37798. -
  37799. /* The environment begins right after argv. */
  37800. __environ = &argv[argc + 1];
  37801. @@ -361,7 +346,7 @@
  37802. __environ = &argv[argc];
  37803. }
  37804. -#ifndef __ARCH_HAS_NO_LDSO__
  37805. +#if !defined __ARCH_HAS_NO_LDSO__ && !defined SHARED
  37806. /* Pull stuff from the ELF header when possible */
  37807. memset(auxvt, 0x00, sizeof(auxvt));
  37808. aux_dat = (unsigned long*)__environ;
  37809. @@ -376,13 +361,11 @@
  37810. }
  37811. aux_dat += 2;
  37812. }
  37813. -#ifndef SHARED
  37814. /* Get the program headers (_dl_phdr) from the aux vector
  37815. It will be used into __libc_setup_tls. */
  37816. _dl_aux_init (auxvt);
  37817. #endif
  37818. -#endif
  37819. /* We need to initialize uClibc. If we are dynamically linked this
  37820. * may have already been completed by the shared lib loader. We call
  37821. @@ -390,15 +373,20 @@
  37822. __uClibc_init();
  37823. #ifndef __ARCH_HAS_NO_LDSO__
  37824. - /* Make certain getpagesize() gives the correct answer */
  37825. - __pagesize = (auxvt[AT_PAGESZ].a_un.a_val)? auxvt[AT_PAGESZ].a_un.a_val : PAGE_SIZE;
  37826. + /* Make certain getpagesize() gives the correct answer.
  37827. + * _dl_pagesize is defined into ld.so if SHARED or into libc.a otherwise. */
  37828. + __pagesize = _dl_pagesize;
  37829. +#ifndef SHARED
  37830. /* Prevent starting SUID binaries where the stdin. stdout, and
  37831. * stderr file descriptors are not already opened. */
  37832. if ((auxvt[AT_UID].a_un.a_val == (size_t)-1 && __check_suid()) ||
  37833. (auxvt[AT_UID].a_un.a_val != (size_t)-1 &&
  37834. (auxvt[AT_UID].a_un.a_val != auxvt[AT_EUID].a_un.a_val ||
  37835. auxvt[AT_GID].a_un.a_val != auxvt[AT_EGID].a_un.a_val)))
  37836. +#else
  37837. + if (_dl_secure)
  37838. +#endif
  37839. {
  37840. __check_one_fd (STDIN_FILENO, O_RDONLY | O_NOFOLLOW);
  37841. __check_one_fd (STDOUT_FILENO, O_RDWR | O_NOFOLLOW);
  37842. @@ -407,14 +395,14 @@
  37843. #endif
  37844. __uclibc_progname = *argv;
  37845. -#ifdef __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__
  37846. +#if defined __UCLIBC_HAS___PROGNAME__ || (defined __USE_GNU && defined __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__)
  37847. if (*argv != NULL) {
  37848. - program_invocation_name = *argv;
  37849. - program_invocation_short_name = strrchr(*argv, '/');
  37850. - if (program_invocation_short_name != NULL)
  37851. - ++program_invocation_short_name;
  37852. + __progname_full = *argv;
  37853. + __progname = strrchr(*argv, '/');
  37854. + if (__progname != NULL)
  37855. + ++__progname;
  37856. else
  37857. - program_invocation_short_name = program_invocation_name;
  37858. + __progname = *argv;
  37859. }
  37860. #endif
  37861. diff -Nur uClibc-0.9.33.2/libc/misc/locale/locale.c uClibc-git/libc/misc/locale/locale.c
  37862. --- uClibc-0.9.33.2/libc/misc/locale/locale.c 2012-05-15 09:20:09.000000000 +0200
  37863. +++ uClibc-git/libc/misc/locale/locale.c 2014-02-03 12:32:56.000000000 +0100
  37864. @@ -11,8 +11,8 @@
  37865. * Library General Public License for more details.
  37866. *
  37867. * You should have received a copy of the GNU Library General Public
  37868. - * License along with this library; if not, write to the Free
  37869. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  37870. + * License along with this library; if not, see
  37871. + * <http://www.gnu.org/licenses/>.
  37872. */
  37873. /* Nov. 1, 2002
  37874. @@ -85,19 +85,17 @@
  37875. #endif
  37876. #endif
  37877. -/* Need to include this before locale.h and xlocale.h! */
  37878. +/* Need to include this before locale.h! */
  37879. #include <bits/uClibc_locale.h>
  37880. #undef CODESET_LIST
  37881. #define CODESET_LIST (__locale_mmap->codeset_list)
  37882. #ifdef __UCLIBC_HAS_XLOCALE__
  37883. -#include <xlocale.h>
  37884. #include <locale.h>
  37885. #else /* __UCLIBC_HAS_XLOCALE__ */
  37886. /* We need this internally... */
  37887. #define __UCLIBC_HAS_XLOCALE__ 1
  37888. -#include <xlocale.h>
  37889. #include <locale.h>
  37890. #undef __UCLIBC_HAS_XLOCALE__
  37891. #endif /* __UCLIBC_HAS_XLOCALE__ */
  37892. @@ -908,7 +906,6 @@
  37893. _locale_set_l((unsigned char*) C_LOCALE_SELECTOR, base);
  37894. }
  37895. -void _locale_init(void) attribute_hidden;
  37896. void _locale_init(void)
  37897. {
  37898. /* TODO: mmap the locale file */
  37899. @@ -1396,6 +1393,7 @@
  37900. {
  37901. return __curlocale_var; /* This is overriden by the thread version. */
  37902. }
  37903. +libc_hidden_weak(__curlocale)
  37904. __locale_t weak_function __curlocale_set(__locale_t newloc)
  37905. {
  37906. @@ -1404,6 +1402,7 @@
  37907. __curlocale_var = newloc;
  37908. return oldloc;
  37909. }
  37910. +libc_hidden_weak(__curlocale_set)
  37911. #endif
  37912. diff -Nur uClibc-0.9.33.2/libc/misc/locale/Makefile.in uClibc-git/libc/misc/locale/Makefile.in
  37913. --- uClibc-0.9.33.2/libc/misc/locale/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37914. +++ uClibc-git/libc/misc/locale/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37915. @@ -8,19 +8,16 @@
  37916. subdirs += libc/misc/locale
  37917. # multi source locale.c
  37918. -CSRC := setlocale.c localeconv.c _locale_init.c nl_langinfo.c
  37919. -ifeq ($(UCLIBC_HAS_LOCALE),y)
  37920. -CSRC += newlocale.c __locale_mbrtowc_l.c
  37921. -endif
  37922. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  37923. -CSRC += nl_langinfo_l.c duplocale.c freelocale.c uselocale.c __curlocale.c
  37924. -endif
  37925. +CSRC-y := setlocale.c localeconv.c _locale_init.c nl_langinfo.c
  37926. +CSRC-$(UCLIBC_HAS_LOCALE) += newlocale.c __locale_mbrtowc_l.c
  37927. +CSRC-$(UCLIBC_HAS_XLOCALE) += nl_langinfo_l.c duplocale.c freelocale.c \
  37928. + uselocale.c __curlocale.c
  37929. MISC_LOCALE_DIR := $(top_srcdir)libc/misc/locale
  37930. MISC_LOCALE_OUT := $(top_builddir)libc/misc/locale
  37931. -MISC_LOCALE_SRC := $(patsubst %.c,$(MISC_LOCALE_DIR)/%.c,$(CSRC))
  37932. -MISC_LOCALE_OBJ := $(patsubst %.c,$(MISC_LOCALE_OUT)/%.o,$(CSRC))
  37933. +MISC_LOCALE_SRC := $(patsubst %.c,$(MISC_LOCALE_DIR)/%.c,$(CSRC-y))
  37934. +MISC_LOCALE_OBJ := $(patsubst %.c,$(MISC_LOCALE_OUT)/%.o,$(CSRC-y))
  37935. libc-y += $(MISC_LOCALE_OBJ)
  37936. diff -Nur uClibc-0.9.33.2/libc/misc/mntent/Makefile.in uClibc-git/libc/misc/mntent/Makefile.in
  37937. --- uClibc-0.9.33.2/libc/misc/mntent/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37938. +++ uClibc-git/libc/misc/mntent/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37939. @@ -7,13 +7,13 @@
  37940. subdirs += libc/misc/mntent
  37941. -CSRC := mntent.c
  37942. +CSRC-y := mntent.c
  37943. MISC_MNTENT_DIR := $(top_srcdir)libc/misc/mntent
  37944. MISC_MNTENT_OUT := $(top_builddir)libc/misc/mntent
  37945. -MISC_MNTENT_SRC := $(MISC_MNTENT_DIR)/mntent.c
  37946. -MISC_MNTENT_OBJ := $(MISC_MNTENT_OUT)/mntent.o
  37947. +MISC_MNTENT_SRC := $(patsubst %.c,$(MISC_MNTENT_DIR)/%.c,$(CSRC-y))
  37948. +MISC_MNTENT_OBJ := $(patsubst %.c,$(MISC_MNTENT_OUT)/%.o,$(CSRC-y))
  37949. libc-y += $(MISC_MNTENT_OBJ)
  37950. diff -Nur uClibc-0.9.33.2/libc/misc/pthread/tsd.c uClibc-git/libc/misc/pthread/tsd.c
  37951. --- uClibc-0.9.33.2/libc/misc/pthread/tsd.c 2012-05-15 09:20:09.000000000 +0200
  37952. +++ uClibc-git/libc/misc/pthread/tsd.c 2014-02-03 12:32:56.000000000 +0100
  37953. @@ -1,5 +1,5 @@
  37954. /* libpthread sets _dl_error_catch_tsd to point to this function.
  37955. - We define it here instead of in libpthread so t here instead of in libpthread so that it doesn't
  37956. + We define it here instead of in libpthread so that it doesn't
  37957. need to have a TLS segment of its own just for this one pointer. */
  37958. void **__libc_dl_error_tsd(void) __attribute__ ((const));
  37959. diff -Nur uClibc-0.9.33.2/libc/misc/regex/Makefile.in uClibc-git/libc/misc/regex/Makefile.in
  37960. --- uClibc-0.9.33.2/libc/misc/regex/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  37961. +++ uClibc-git/libc/misc/regex/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  37962. @@ -7,17 +7,14 @@
  37963. subdirs += libc/misc/regex
  37964. -ifeq ($(UCLIBC_HAS_REGEX_OLD),y)
  37965. -CSRC := regex_old.c
  37966. -else
  37967. -CSRC := regex.c
  37968. -endif
  37969. +VARIANT := $(if $(UCLIBC_HAS_REGEX_OLD),_old)
  37970. +CSRC-y := regex$(VARIANT).c
  37971. MISC_REGEX_DIR := $(top_srcdir)libc/misc/regex
  37972. MISC_REGEX_OUT := $(top_builddir)libc/misc/regex
  37973. -MISC_REGEX_SRC := $(patsubst %.c,$(MISC_REGEX_DIR)/%.c,$(CSRC))
  37974. -MISC_REGEX_OBJ := $(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC))
  37975. +MISC_REGEX_SRC := $(patsubst %.c,$(MISC_REGEX_DIR)/%.c,$(CSRC-y))
  37976. +MISC_REGEX_OBJ := $(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC-y))
  37977. libc-$(UCLIBC_HAS_REGEX) += $(MISC_REGEX_OBJ)
  37978. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regcomp.c uClibc-git/libc/misc/regex/regcomp.c
  37979. --- uClibc-0.9.33.2/libc/misc/regex/regcomp.c 2012-05-15 09:20:09.000000000 +0200
  37980. +++ uClibc-git/libc/misc/regex/regcomp.c 2014-02-03 12:32:56.000000000 +0100
  37981. @@ -14,9 +14,8 @@
  37982. Lesser General Public License for more details.
  37983. You should have received a copy of the GNU Lesser General Public
  37984. - License along with the GNU C Library; if not, write to the Free
  37985. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  37986. - 02111-1307 USA. */
  37987. + License along with the GNU C Library; if not, see
  37988. + <http://www.gnu.org/licenses/>. */
  37989. static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
  37990. size_t length, reg_syntax_t syntax);
  37991. @@ -91,7 +90,7 @@
  37992. re_charset_t *mbcset,
  37993. int *equiv_class_alloc,
  37994. const unsigned char *name);
  37995. -static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
  37996. +static reg_errcode_t build_charclass (__RE_TRANSLATE_TYPE trans,
  37997. bitset_t sbcset,
  37998. re_charset_t *mbcset,
  37999. int *char_class_alloc,
  38000. @@ -100,13 +99,13 @@
  38001. #else /* not RE_ENABLE_I18N */
  38002. static reg_errcode_t build_equiv_class (bitset_t sbcset,
  38003. const unsigned char *name);
  38004. -static reg_errcode_t build_charclass (RE_TRANSLATE_TYPE trans,
  38005. +static reg_errcode_t build_charclass (__RE_TRANSLATE_TYPE trans,
  38006. bitset_t sbcset,
  38007. const unsigned char *class_name,
  38008. reg_syntax_t syntax);
  38009. #endif /* not RE_ENABLE_I18N */
  38010. static bin_tree_t *build_charclass_op (re_dfa_t *dfa,
  38011. - RE_TRANSLATE_TYPE trans,
  38012. + __RE_TRANSLATE_TYPE trans,
  38013. const unsigned char *class_name,
  38014. const unsigned char *extra,
  38015. int non_match, reg_errcode_t *err);
  38016. @@ -3414,11 +3413,11 @@
  38017. static reg_errcode_t
  38018. #ifdef RE_ENABLE_I18N
  38019. -build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38020. +build_charclass (__RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38021. re_charset_t *mbcset, int *char_class_alloc,
  38022. const unsigned char *class_name, reg_syntax_t syntax)
  38023. #else
  38024. -build_charclass (RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38025. +build_charclass (__RE_TRANSLATE_TYPE trans, bitset_t sbcset,
  38026. const unsigned char *class_name, reg_syntax_t syntax)
  38027. #endif
  38028. {
  38029. @@ -3496,7 +3495,7 @@
  38030. }
  38031. static bin_tree_t *
  38032. -build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans,
  38033. +build_charclass_op (re_dfa_t *dfa, __RE_TRANSLATE_TYPE trans,
  38034. const unsigned char *class_name,
  38035. const unsigned char *extra, int non_match,
  38036. reg_errcode_t *err)
  38037. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex.c uClibc-git/libc/misc/regex/regex.c
  38038. --- uClibc-0.9.33.2/libc/misc/regex/regex.c 2012-05-15 09:20:09.000000000 +0200
  38039. +++ uClibc-git/libc/misc/regex/regex.c 2014-02-03 12:32:56.000000000 +0100
  38040. @@ -14,9 +14,8 @@
  38041. Lesser General Public License for more details.
  38042. You should have received a copy of the GNU Lesser General Public
  38043. - License along with the GNU C Library; if not, write to the Free
  38044. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38045. - 02111-1307 USA. */
  38046. + License along with the GNU C Library; if not, see
  38047. + <http://www.gnu.org/licenses/>. */
  38048. #include <features.h>
  38049. @@ -30,7 +29,12 @@
  38050. # include <stdlib.h>
  38051. # ifdef __UCLIBC_HAS_WCHAR__
  38052. # define RE_ENABLE_I18N
  38053. +# define HAVE_WCHAR_H 1
  38054. +# define HAVE_WCRTOMB 1
  38055. +# define HAVE_MBRTOWC 1
  38056. +# define HAVE_WCSCOLL 1
  38057. # include <wchar.h>
  38058. +# define HAVE_WCTYPE_H 1
  38059. # include <wctype.h>
  38060. # define __iswctype iswctype
  38061. # define __wcrtomb wcrtomb
  38062. @@ -38,6 +42,9 @@
  38063. # define __wctype wctype
  38064. # endif
  38065. # include <ctype.h>
  38066. +# ifdef __UCLIBC_HAS_LOCALE__
  38067. +# define HAVE_LOCALE_H 1
  38068. +# endif
  38069. #endif
  38070. /* Make sure noone compiles this code with a C++ compiler. */
  38071. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regexec.c uClibc-git/libc/misc/regex/regexec.c
  38072. --- uClibc-0.9.33.2/libc/misc/regex/regexec.c 2012-05-15 09:20:09.000000000 +0200
  38073. +++ uClibc-git/libc/misc/regex/regexec.c 2014-02-03 12:32:56.000000000 +0100
  38074. @@ -14,9 +14,8 @@
  38075. Lesser General Public License for more details.
  38076. You should have received a copy of the GNU Lesser General Public
  38077. - License along with the GNU C Library; if not, write to the Free
  38078. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38079. - 02111-1307 USA. */
  38080. + License along with the GNU C Library; if not, see
  38081. + <http://www.gnu.org/licenses/>. */
  38082. static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
  38083. int n) internal_function;
  38084. @@ -564,7 +563,7 @@
  38085. re_match_context_t mctx;
  38086. char *fastmap = (preg->fastmap != NULL && preg->fastmap_accurate
  38087. && range && !preg->can_be_null) ? preg->fastmap : NULL;
  38088. - RE_TRANSLATE_TYPE t = preg->translate;
  38089. + __RE_TRANSLATE_TYPE t = preg->translate;
  38090. memset (&mctx, '\0', sizeof (re_match_context_t));
  38091. mctx.dfa = dfa;
  38092. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex_internal.c uClibc-git/libc/misc/regex/regex_internal.c
  38093. --- uClibc-0.9.33.2/libc/misc/regex/regex_internal.c 2012-05-15 09:20:09.000000000 +0200
  38094. +++ uClibc-git/libc/misc/regex/regex_internal.c 2014-02-03 12:32:56.000000000 +0100
  38095. @@ -14,13 +14,12 @@
  38096. Lesser General Public License for more details.
  38097. You should have received a copy of the GNU Lesser General Public
  38098. - License along with the GNU C Library; if not, write to the Free
  38099. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38100. - 02111-1307 USA. */
  38101. + License along with the GNU C Library; if not, see
  38102. + <http://www.gnu.org/licenses/>. */
  38103. static void re_string_construct_common (const char *str, int len,
  38104. re_string_t *pstr,
  38105. - RE_TRANSLATE_TYPE trans, int icase,
  38106. + __RE_TRANSLATE_TYPE trans, int icase,
  38107. const re_dfa_t *dfa) internal_function;
  38108. static re_dfastate_t *create_ci_newstate (const re_dfa_t *dfa,
  38109. const re_node_set *nodes,
  38110. @@ -38,7 +37,7 @@
  38111. static reg_errcode_t
  38112. internal_function
  38113. re_string_allocate (re_string_t *pstr, const char *str, int len, int init_len,
  38114. - RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38115. + __RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38116. {
  38117. reg_errcode_t ret;
  38118. int init_buf_len;
  38119. @@ -66,7 +65,7 @@
  38120. static reg_errcode_t
  38121. internal_function
  38122. re_string_construct (re_string_t *pstr, const char *str, int len,
  38123. - RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38124. + __RE_TRANSLATE_TYPE trans, int icase, const re_dfa_t *dfa)
  38125. {
  38126. reg_errcode_t ret;
  38127. memset (pstr, '\0', sizeof (re_string_t));
  38128. @@ -162,7 +161,7 @@
  38129. static void
  38130. internal_function
  38131. re_string_construct_common (const char *str, int len, re_string_t *pstr,
  38132. - RE_TRANSLATE_TYPE trans, int icase,
  38133. + __RE_TRANSLATE_TYPE trans, int icase,
  38134. const re_dfa_t *dfa)
  38135. {
  38136. pstr->raw_mbs = (const unsigned char *) str;
  38137. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex_internal.h uClibc-git/libc/misc/regex/regex_internal.h
  38138. --- uClibc-0.9.33.2/libc/misc/regex/regex_internal.h 2012-05-15 09:20:09.000000000 +0200
  38139. +++ uClibc-git/libc/misc/regex/regex_internal.h 2014-02-03 12:32:56.000000000 +0100
  38140. @@ -14,16 +14,14 @@
  38141. Lesser General Public License for more details.
  38142. You should have received a copy of the GNU Lesser General Public
  38143. - License along with the GNU C Library; if not, write to the Free
  38144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38145. - 02111-1307 USA. */
  38146. + License along with the GNU C Library; if not, see
  38147. + <http://www.gnu.org/licenses/>. */
  38148. #ifndef _REGEX_INTERNAL_H
  38149. #define _REGEX_INTERNAL_H 1
  38150. #include <assert.h>
  38151. #include <ctype.h>
  38152. -#include <stdio.h>
  38153. #include <stdlib.h>
  38154. #include <string.h>
  38155. @@ -315,7 +313,7 @@
  38156. the beginning of the input string. */
  38157. unsigned int tip_context;
  38158. /* The translation passed as a part of an argument of re_compile_pattern. */
  38159. - RE_TRANSLATE_TYPE trans;
  38160. + __RE_TRANSLATE_TYPE trans;
  38161. /* Copy of re_dfa_t's word_char. */
  38162. re_const_bitset_ptr_t word_char;
  38163. /* 1 if REG_ICASE. */
  38164. diff -Nur uClibc-0.9.33.2/libc/misc/regex/regex_old.c uClibc-git/libc/misc/regex/regex_old.c
  38165. --- uClibc-0.9.33.2/libc/misc/regex/regex_old.c 2012-05-15 09:20:09.000000000 +0200
  38166. +++ uClibc-git/libc/misc/regex/regex_old.c 2014-02-03 12:32:56.000000000 +0100
  38167. @@ -16,25 +16,25 @@
  38168. Lesser General Public License for more details.
  38169. You should have received a copy of the GNU Lesser General Public
  38170. - License along with the GNU C Library; if not, write to the Free
  38171. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38172. - 02111-1307 USA. */
  38173. + License along with the GNU C Library; if not, see
  38174. + <http://www.gnu.org/licenses/>. */
  38175. /* To exclude some unwanted junk.... */
  38176. #undef emacs
  38177. #include <features.h>
  38178. /* unistd.h must be included with _LIBC defined: we need smallint */
  38179. #include <unistd.h>
  38180. +#include <stdio.h>
  38181. #ifdef __UCLIBC__
  38182. # undef _LIBC
  38183. # define _REGEX_RE_COMP
  38184. # define STDC_HEADERS
  38185. -# define RE_TRANSLATE_TYPE char *
  38186. +# define __RE_TRANSLATE_TYPE char *
  38187. +# define RE_TRANSLATE_TYPE __RE_TRANSLATE_TYPE
  38188. #endif
  38189. #include <stdlib.h>
  38190. #include <stdint.h>
  38191. #include <string.h>
  38192. -#include <stdio.h>
  38193. /* AIX requires this to be the first thing in the file. */
  38194. #if defined _AIX && !defined REGEX_MALLOC
  38195. @@ -64,10 +64,9 @@
  38196. # include <wctype.h>
  38197. # endif
  38198. -# if defined _LIBC || defined __UCLIBC__
  38199. +# ifdef _LIBC
  38200. /* We have to keep the namespace clean. */
  38201. -# ifndef __UCLIBC__
  38202. # define btowc __btowc
  38203. /* We are also using some library internals. */
  38204. @@ -76,7 +75,6 @@
  38205. # include <langinfo.h>
  38206. # include <locale/coll-lookup.h>
  38207. # endif
  38208. -# endif
  38209. /* This is for other GNU distributions with internationalized messages. */
  38210. # if defined HAVE_LIBINTL_H || defined _LIBC
  38211. @@ -177,6 +175,7 @@
  38212. /* Get the interface, including the syntax bits. */
  38213. # include <regex.h>
  38214. +# define translate __REPB_PREFIX(translate)
  38215. /* isalpha etc. are used for the character classes. */
  38216. # include <ctype.h>
  38217. @@ -1896,7 +1895,7 @@
  38218. static reg_errcode_t wcs_compile_range (CHAR_T range_start,
  38219. const CHAR_T **p_ptr,
  38220. const CHAR_T *pend,
  38221. - char *translate,
  38222. + __RE_TRANSLATE_TYPE translate,
  38223. reg_syntax_t syntax,
  38224. UCHAR_T *b,
  38225. CHAR_T *char_set);
  38226. @@ -1905,7 +1904,7 @@
  38227. static reg_errcode_t byte_compile_range (unsigned int range_start,
  38228. const char **p_ptr,
  38229. const char *pend,
  38230. - char *translate,
  38231. + __RE_TRANSLATE_TYPE translate,
  38232. reg_syntax_t syntax,
  38233. unsigned char *b);
  38234. # endif /* WCHAR */
  38235. @@ -2338,7 +2337,7 @@
  38236. #endif /* WCHAR */
  38237. /* How to translate the characters in the pattern. */
  38238. - RE_TRANSLATE_TYPE translate = bufp->translate;
  38239. + __RE_TRANSLATE_TYPE translate = bufp->translate;
  38240. /* Address of the count-byte of the most recently inserted `exactn'
  38241. command. This makes it possible to tell if a new exact-match
  38242. @@ -4402,7 +4401,7 @@
  38243. wcs_compile_range (
  38244. CHAR_T range_start_char,
  38245. const CHAR_T **p_ptr, const CHAR_T *pend,
  38246. - RE_TRANSLATE_TYPE translate,
  38247. + __RE_TRANSLATE_TYPE translate,
  38248. reg_syntax_t syntax,
  38249. CHAR_T *b, CHAR_T *char_set)
  38250. {
  38251. @@ -4488,7 +4487,7 @@
  38252. byte_compile_range (
  38253. unsigned int range_start_char,
  38254. const char **p_ptr, const char *pend,
  38255. - RE_TRANSLATE_TYPE translate,
  38256. + __RE_TRANSLATE_TYPE translate,
  38257. reg_syntax_t syntax,
  38258. unsigned char *b)
  38259. {
  38260. @@ -5060,7 +5059,7 @@
  38261. {
  38262. int val;
  38263. register char *fastmap = bufp->fastmap;
  38264. - register RE_TRANSLATE_TYPE translate = bufp->translate;
  38265. + register __RE_TRANSLATE_TYPE translate = bufp->translate;
  38266. int total_size = size1 + size2;
  38267. int endpos = startpos + range;
  38268. #ifdef WCHAR
  38269. @@ -5477,7 +5476,7 @@
  38270. UCHAR_T *end,
  38271. PREFIX(register_info_type) *reg_info);
  38272. static int PREFIX(bcmp_translate) (const CHAR_T *s1, const CHAR_T *s2,
  38273. - int len, char *translate);
  38274. + int len, __RE_TRANSLATE_TYPE translate);
  38275. #else /* not INSIDE_RECURSION */
  38276. /* re_match_2 matches the compiled pattern in BUFP against the
  38277. @@ -5637,7 +5636,7 @@
  38278. UCHAR_T *just_past_start_mem = 0;
  38279. /* We use this to map every character in the string. */
  38280. - RE_TRANSLATE_TYPE translate = bufp->translate;
  38281. + __RE_TRANSLATE_TYPE translate = bufp->translate;
  38282. /* Failure point stack. Each place that can handle a failure further
  38283. down the line pushes a failure point on this stack. It consists of
  38284. @@ -7212,6 +7211,10 @@
  38285. POP_FAILURE_POINT (sdummy, pdummy,
  38286. dummy_low_reg, dummy_high_reg,
  38287. reg_dummy, reg_dummy, reg_info_dummy);
  38288. +
  38289. + /* Silence 'set but not used' warnings. */
  38290. + (void) pdummy;
  38291. + (void) sdummy;
  38292. }
  38293. /* Note fall through. */
  38294. @@ -7802,7 +7805,7 @@
  38295. PREFIX(bcmp_translate) (
  38296. const CHAR_T *s1, const CHAR_T *s2,
  38297. register int len,
  38298. - RE_TRANSLATE_TYPE translate)
  38299. + __RE_TRANSLATE_TYPE translate)
  38300. {
  38301. register const UCHAR_T *p1 = (const UCHAR_T *) s1;
  38302. register const UCHAR_T *p2 = (const UCHAR_T *) s2;
  38303. @@ -8002,8 +8005,8 @@
  38304. unsigned i;
  38305. preg->translate
  38306. - = (RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE
  38307. - * sizeof (*(RE_TRANSLATE_TYPE)0));
  38308. + = (__RE_TRANSLATE_TYPE) malloc (CHAR_SET_SIZE
  38309. + * sizeof (*(__RE_TRANSLATE_TYPE)0));
  38310. if (preg->translate == NULL)
  38311. return (int) REG_ESPACE;
  38312. diff -Nur uClibc-0.9.33.2/libc/misc/search/hsearch.c uClibc-git/libc/misc/search/hsearch.c
  38313. --- uClibc-0.9.33.2/libc/misc/search/hsearch.c 2012-05-15 09:20:09.000000000 +0200
  38314. +++ uClibc-git/libc/misc/search/hsearch.c 2014-02-03 12:32:56.000000000 +0100
  38315. @@ -13,9 +13,8 @@
  38316. Lesser General Public License for more details.
  38317. You should have received a copy of the GNU Lesser General Public
  38318. - License along with the GNU C Library; if not, write to the Free
  38319. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38320. - 02111-1307 USA. */
  38321. + License along with the GNU C Library; if not, see
  38322. + <http://www.gnu.org/licenses/>. */
  38323. #include <search.h>
  38324. diff -Nur uClibc-0.9.33.2/libc/misc/search/_hsearch_r.c uClibc-git/libc/misc/search/_hsearch_r.c
  38325. --- uClibc-0.9.33.2/libc/misc/search/_hsearch_r.c 2012-05-15 09:20:09.000000000 +0200
  38326. +++ uClibc-git/libc/misc/search/_hsearch_r.c 2014-02-03 12:32:56.000000000 +0100
  38327. @@ -13,12 +13,11 @@
  38328. Lesser General Public License for more details.
  38329. You should have received a copy of the GNU Lesser General Public
  38330. - License along with the GNU C Library; if not, write to the Free
  38331. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38332. - 02111-1307 USA. */
  38333. + License along with the GNU C Library; if not, see
  38334. + <http://www.gnu.org/licenses/>. */
  38335. #include <errno.h>
  38336. -#include <malloc.h>
  38337. +#include <stdlib.h>
  38338. #include <string.h>
  38339. #include <search.h>
  38340. diff -Nur uClibc-0.9.33.2/libc/misc/search/insremque.c uClibc-git/libc/misc/search/insremque.c
  38341. --- uClibc-0.9.33.2/libc/misc/search/insremque.c 2012-05-15 09:20:09.000000000 +0200
  38342. +++ uClibc-git/libc/misc/search/insremque.c 2014-02-03 12:32:56.000000000 +0100
  38343. @@ -13,8 +13,7 @@
  38344. You should have received a copy of the GNU Library General Public
  38345. License along with the GNU C Library; see the file COPYING.LIB. If not,
  38346. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  38347. - Boston, MA 02111-1307, USA. */
  38348. + see <http://www.gnu.org/licenses/>. */
  38349. #include <features.h>
  38350. #include <stddef.h>
  38351. @@ -27,12 +26,20 @@
  38352. void
  38353. insque (void *elem, void *prev)
  38354. {
  38355. - struct qelem *next = ((struct qelem *) prev)->q_forw;
  38356. - ((struct qelem *) prev)->q_forw = (struct qelem *) elem;
  38357. - if (next != NULL)
  38358. - next->q_back = (struct qelem *) elem;
  38359. - ((struct qelem *) elem)->q_forw = next;
  38360. - ((struct qelem *) elem)->q_back = (struct qelem *) prev;
  38361. + if (prev == NULL)
  38362. + {
  38363. + ((struct qelem *) elem)->q_forw = NULL;
  38364. + ((struct qelem *) elem)->q_back = NULL;
  38365. + }
  38366. + else
  38367. + {
  38368. + struct qelem *next = ((struct qelem *) prev)->q_forw;
  38369. + ((struct qelem *) prev)->q_forw = (struct qelem *) elem;
  38370. + if (next != NULL)
  38371. + next->q_back = (struct qelem *) elem;
  38372. + ((struct qelem *) elem)->q_forw = next;
  38373. + ((struct qelem *) elem)->q_back = (struct qelem *) prev;
  38374. + }
  38375. }
  38376. #endif
  38377. diff -Nur uClibc-0.9.33.2/libc/misc/search/Makefile.in uClibc-git/libc/misc/search/Makefile.in
  38378. --- uClibc-0.9.33.2/libc/misc/search/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38379. +++ uClibc-git/libc/misc/search/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38380. @@ -7,25 +7,25 @@
  38381. subdirs += libc/misc/search
  38382. -CSRC := hsearch.c
  38383. +CSRC-y := hsearch.c
  38384. # multi source _tsearch.c
  38385. -CSRC += tsearch.c tfind.c tdelete.c twalk.c tdestroy.c
  38386. +CSRC-y += tsearch.c tfind.c tdelete.c twalk.c tdestroy.c
  38387. # multi source _lsearch.c
  38388. -CSRC += lfind.c lsearch.c
  38389. +CSRC-y += lfind.c lsearch.c
  38390. # multi source insremque.c
  38391. -CSRC += insque.c remque.c
  38392. +CSRC-y += insque.c remque.c
  38393. # multi source _hsearch_r.c
  38394. -CSRC += hcreate_r.c hdestroy_r.c hsearch_r.c
  38395. +CSRC-y += hcreate_r.c hdestroy_r.c hsearch_r.c
  38396. MISC_SEARCH_DIR := $(top_srcdir)libc/misc/search
  38397. MISC_SEARCH_OUT := $(top_builddir)libc/misc/search
  38398. -MISC_SEARCH_SRC := $(patsubst %.c,$(MISC_SEARCH_DIR)/%.c,$(CSRC))
  38399. -MISC_SEARCH_OBJ := $(patsubst %.c,$(MISC_SEARCH_OUT)/%.o,$(CSRC))
  38400. +MISC_SEARCH_SRC := $(patsubst %.c,$(MISC_SEARCH_DIR)/%.c,$(CSRC-y))
  38401. +MISC_SEARCH_OBJ := $(patsubst %.c,$(MISC_SEARCH_OUT)/%.o,$(CSRC-y))
  38402. libc-y += $(MISC_SEARCH_OBJ)
  38403. diff -Nur uClibc-0.9.33.2/libc/misc/search/_tsearch.c uClibc-git/libc/misc/search/_tsearch.c
  38404. --- uClibc-0.9.33.2/libc/misc/search/_tsearch.c 2012-05-15 09:20:09.000000000 +0200
  38405. +++ uClibc-git/libc/misc/search/_tsearch.c 2014-02-03 12:32:56.000000000 +0100
  38406. @@ -13,8 +13,7 @@
  38407. You should have received a copy of the GNU Library General Public
  38408. License along with the GNU C Library; see the file COPYING.LIB. If
  38409. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  38410. -Cambridge, MA 02139, USA. */
  38411. +not, see <http://www.gnu.org/licenses/>. */
  38412. /*
  38413. * Tree search generalized from Knuth (6.2.2) Algorithm T just like
  38414. @@ -50,7 +49,7 @@
  38415. int (*compar)(); ordering function
  38416. */
  38417. -void *tsearch(__const void *key, void **vrootp, __compar_fn_t compar)
  38418. +void *tsearch(const void *key, void **vrootp, __compar_fn_t compar)
  38419. {
  38420. register node *q;
  38421. register node **rootp = (node **) vrootp;
  38422. @@ -80,7 +79,7 @@
  38423. #endif
  38424. #ifdef L_tfind
  38425. -void *tfind(__const void *key, void * __const *vrootp, __compar_fn_t compar)
  38426. +void *tfind(const void *key, void * const *vrootp, __compar_fn_t compar)
  38427. {
  38428. register node **rootp = (node **) vrootp;
  38429. @@ -107,7 +106,7 @@
  38430. register node **rootp; address of the root of tree
  38431. int (*compar)(); comparison function
  38432. */
  38433. -void *tdelete(__const void *key, void ** vrootp, __compar_fn_t compar)
  38434. +void *tdelete(const void *key, void ** vrootp, __compar_fn_t compar)
  38435. {
  38436. node *p;
  38437. register node *q;
  38438. @@ -157,7 +156,7 @@
  38439. register void (*action)(); Function to be called at each node
  38440. register int level;
  38441. */
  38442. -static void trecurse(__const void *vroot, __action_fn_t action, int level)
  38443. +static void trecurse(const void *vroot, __action_fn_t action, int level)
  38444. {
  38445. register node *root = (node *) vroot;
  38446. @@ -180,9 +179,9 @@
  38447. void (*action)(); Function to be called at each node
  38448. PTR
  38449. */
  38450. -void twalk(__const void *vroot, __action_fn_t action)
  38451. +void twalk(const void *vroot, __action_fn_t action)
  38452. {
  38453. - register __const node *root = (node *) vroot;
  38454. + register const node *root = (node *) vroot;
  38455. if (root != (node *)0 && action != (__action_fn_t) 0)
  38456. trecurse(root, action, 0);
  38457. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/fstatfs64.c uClibc-git/libc/misc/statfs/fstatfs64.c
  38458. --- uClibc-0.9.33.2/libc/misc/statfs/fstatfs64.c 2012-05-15 09:20:09.000000000 +0200
  38459. +++ uClibc-git/libc/misc/statfs/fstatfs64.c 2014-02-03 12:32:56.000000000 +0100
  38460. @@ -13,9 +13,8 @@
  38461. Lesser General Public License for more details.
  38462. You should have received a copy of the GNU Lesser General Public
  38463. - License along with the GNU C Library; if not, write to the Free
  38464. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38465. - 02111-1307 USA. */
  38466. + License along with the GNU C Library; if not, see
  38467. + <http://www.gnu.org/licenses/>. */
  38468. #include <_lfs_64.h>
  38469. @@ -23,8 +22,10 @@
  38470. #include <string.h>
  38471. #include <sys/statfs.h>
  38472. #include <sys/statvfs.h>
  38473. +#include <sys/syscall.h>
  38474. #include <stddef.h>
  38475. +#if defined __NR_fstatfs
  38476. extern __typeof(fstatfs) __libc_fstatfs;
  38477. /* Return information about the filesystem on which FD resides. */
  38478. @@ -43,9 +44,24 @@
  38479. buf->f_files = buf32.f_files;
  38480. buf->f_ffree = buf32.f_ffree;
  38481. buf->f_fsid = buf32.f_fsid;
  38482. +# ifdef _STATFS_F_FRSIZE
  38483. + buf->f_frsize = buf32.f_frsize;
  38484. +# endif
  38485. buf->f_namelen = buf32.f_namelen;
  38486. memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
  38487. return 0;
  38488. }
  38489. +#else
  38490. +/*
  38491. + * Use the fstatfs64 system call if fstatfs is not defined
  38492. + * This is for backwards compatibility and it should be
  38493. + * made default in the future
  38494. + */
  38495. +int fstatfs64(int fd, struct statfs64 *buf)
  38496. +{
  38497. + /* Signature has 2 arguments but syscalls wants 3 */
  38498. + return INLINE_SYSCALL(fstatfs64, 3, fd, sizeof(*buf), buf);
  38499. +}
  38500. +#endif
  38501. libc_hidden_def(fstatfs64)
  38502. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/fstatvfs64.c uClibc-git/libc/misc/statfs/fstatvfs64.c
  38503. --- uClibc-0.9.33.2/libc/misc/statfs/fstatvfs64.c 2012-05-15 09:20:09.000000000 +0200
  38504. +++ uClibc-git/libc/misc/statfs/fstatvfs64.c 2014-02-03 12:32:56.000000000 +0100
  38505. @@ -13,9 +13,8 @@
  38506. Lesser General Public License for more details.
  38507. You should have received a copy of the GNU Lesser General Public
  38508. - License along with the GNU C Library; if not, write to the Free
  38509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38510. - 02111-1307 USA. */
  38511. + License along with the GNU C Library; if not, see
  38512. + <http://www.gnu.org/licenses/>. */
  38513. #include <_lfs_64.h>
  38514. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/fstatvfs.c uClibc-git/libc/misc/statfs/fstatvfs.c
  38515. --- uClibc-0.9.33.2/libc/misc/statfs/fstatvfs.c 2012-05-15 09:20:09.000000000 +0200
  38516. +++ uClibc-git/libc/misc/statfs/fstatvfs.c 2014-02-03 12:32:56.000000000 +0100
  38517. @@ -13,9 +13,8 @@
  38518. Lesser General Public License for more details.
  38519. You should have received a copy of the GNU Lesser General Public
  38520. - License along with the GNU C Library; if not, write to the Free
  38521. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38522. - 02111-1307 USA. */
  38523. + License along with the GNU C Library; if not, see
  38524. + <http://www.gnu.org/licenses/>. */
  38525. #include <features.h>
  38526. #include <errno.h>
  38527. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/internal_statvfs.c uClibc-git/libc/misc/statfs/internal_statvfs.c
  38528. --- uClibc-0.9.33.2/libc/misc/statfs/internal_statvfs.c 2012-05-15 09:20:09.000000000 +0200
  38529. +++ uClibc-git/libc/misc/statfs/internal_statvfs.c 2014-02-03 12:32:56.000000000 +0100
  38530. @@ -13,14 +13,20 @@
  38531. Lesser General Public License for more details.
  38532. You should have received a copy of the GNU Lesser General Public
  38533. - License along with the GNU C Library; if not, write to the Free
  38534. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38535. - 02111-1307 USA. */
  38536. + License along with the GNU C Library; if not, see
  38537. + <http://www.gnu.org/licenses/>. */
  38538. +
  38539. +/* The kernel hints us if the f_flags is valid */
  38540. +#define ST_VALID 0x0020
  38541. /* Now fill in the fields we have information for. */
  38542. buf->f_bsize = fsbuf.f_bsize;
  38543. - /* Linux does not support f_frsize, so set it to the full block size. */
  38544. +#ifdef _STATFS_F_FRSIZE
  38545. + buf->f_frsize = fsbuf.f_frsize;
  38546. +#else
  38547. + /* No support for f_frsize so set it to the full block size. */
  38548. buf->f_frsize = fsbuf.f_bsize;
  38549. +#endif
  38550. buf->f_blocks = fsbuf.f_blocks;
  38551. buf->f_bfree = fsbuf.f_bfree;
  38552. buf->f_bavail = fsbuf.f_bavail;
  38553. @@ -28,7 +34,7 @@
  38554. buf->f_ffree = fsbuf.f_ffree;
  38555. if (sizeof (buf->f_fsid) == sizeof (fsbuf.f_fsid))
  38556. buf->f_fsid = (fsbuf.f_fsid.__val[0]
  38557. - | ((unsigned long int) fsbuf.f_fsid.__val[1]
  38558. + | ((unsigned long long int) fsbuf.f_fsid.__val[1]
  38559. << (8 * (sizeof (buf->f_fsid)
  38560. - sizeof (fsbuf.f_fsid.__val[0])))));
  38561. else
  38562. @@ -39,10 +45,7 @@
  38563. buf->__f_unused = 0;
  38564. #endif
  38565. buf->f_namemax = fsbuf.f_namelen;
  38566. - memset (buf->__f_spare, '\0', 6 * sizeof (int));
  38567. -
  38568. - /* What remains to do is to fill the fields f_favail and f_flag. */
  38569. -
  38570. + memset (buf->__f_spare, '\0', sizeof(buf->__f_spare));
  38571. /* XXX I have no idea how to compute f_favail. Any idea??? */
  38572. buf->f_favail = buf->f_ffree;
  38573. @@ -51,61 +54,63 @@
  38574. file. The way we can test for matching filesystem is using the
  38575. device number. */
  38576. buf->f_flag = 0;
  38577. - if (STAT (&st) >= 0)
  38578. - {
  38579. - int save_errno = errno;
  38580. - struct mntent mntbuf;
  38581. - FILE *mtab;
  38582. -
  38583. - mtab = setmntent ("/proc/mounts", "r");
  38584. - if (mtab == NULL)
  38585. - mtab = setmntent (_PATH_MOUNTED, "r");
  38586. -
  38587. - if (mtab != NULL)
  38588. - {
  38589. - char tmpbuf[1024];
  38590. -
  38591. - while (getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf)))
  38592. - {
  38593. - struct stat fsst;
  38594. -
  38595. - /* Find out about the device the current entry is for. */
  38596. - if (stat (mntbuf.mnt_dir, &fsst) >= 0
  38597. - && st.st_dev == fsst.st_dev)
  38598. - {
  38599. - /* Bingo, we found the entry for the device FD is on.
  38600. - Now interpret the option string. */
  38601. - char *cp = mntbuf.mnt_opts;
  38602. - char *opt;
  38603. -
  38604. - while ((opt = strsep (&cp, ",")) != NULL)
  38605. - if (strcmp (opt, "ro") == 0)
  38606. - buf->f_flag |= ST_RDONLY;
  38607. - else if (strcmp (opt, "nosuid") == 0)
  38608. - buf->f_flag |= ST_NOSUID;
  38609. + if (STAT (&st) >= 0
  38610. +#ifdef _STATFS_F_FLAGS
  38611. + && (fsbuf.f_flags & ST_VALID) == 0
  38612. +#endif
  38613. + ) {
  38614. + int save_errno = errno;
  38615. + struct mntent mntbuf;
  38616. + FILE *mtab;
  38617. +
  38618. + mtab = setmntent ("/proc/mounts", "r");
  38619. + if (mtab == NULL)
  38620. + mtab = setmntent (_PATH_MOUNTED, "r");
  38621. + if (mtab != NULL) {
  38622. + char tmpbuf[1024];
  38623. +
  38624. + while (getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf))) {
  38625. + struct stat fsst;
  38626. +
  38627. + /* Find out about the device the current entry is for. */
  38628. + if (stat (mntbuf.mnt_dir, &fsst) >= 0
  38629. + && st.st_dev == fsst.st_dev) {
  38630. + /* Bingo, we found the entry for the device FD is on.
  38631. + Now interpret the option string. */
  38632. + char *cp = mntbuf.mnt_opts;
  38633. + char *opt;
  38634. +
  38635. + while ((opt = strsep (&cp, ",")) != NULL)
  38636. + if (strcmp (opt, "ro") == 0)
  38637. + buf->f_flag |= ST_RDONLY;
  38638. + else if (strcmp (opt, "nosuid") == 0)
  38639. + buf->f_flag |= ST_NOSUID;
  38640. #ifdef __USE_GNU
  38641. - else if (strcmp (opt, "noexec") == 0)
  38642. - buf->f_flag |= ST_NOEXEC;
  38643. - else if (strcmp (opt, "nodev") == 0)
  38644. - buf->f_flag |= ST_NODEV;
  38645. - else if (strcmp (opt, "sync") == 0)
  38646. - buf->f_flag |= ST_SYNCHRONOUS;
  38647. - else if (strcmp (opt, "mand") == 0)
  38648. - buf->f_flag |= ST_MANDLOCK;
  38649. - else if (strcmp (opt, "noatime") == 0)
  38650. - buf->f_flag |= ST_NOATIME;
  38651. - else if (strcmp (opt, "nodiratime") == 0)
  38652. - buf->f_flag |= ST_NODIRATIME;
  38653. + else if (strcmp (opt, "noexec") == 0)
  38654. + buf->f_flag |= ST_NOEXEC;
  38655. + else if (strcmp (opt, "nodev") == 0)
  38656. + buf->f_flag |= ST_NODEV;
  38657. + else if (strcmp (opt, "sync") == 0)
  38658. + buf->f_flag |= ST_SYNCHRONOUS;
  38659. + else if (strcmp (opt, "mand") == 0)
  38660. + buf->f_flag |= ST_MANDLOCK;
  38661. + else if (strcmp (opt, "noatime") == 0)
  38662. + buf->f_flag |= ST_NOATIME;
  38663. + else if (strcmp (opt, "nodiratime") == 0)
  38664. + buf->f_flag |= ST_NODIRATIME;
  38665. + else if (strcmp (opt, "relatime") == 0)
  38666. + buf->f_flag |= ST_RELATIME;
  38667. #endif
  38668. -
  38669. - /* We can stop looking for more entries. */
  38670. - break;
  38671. + /* We can stop looking for more entries. */
  38672. + break;
  38673. + }
  38674. }
  38675. - }
  38676. -
  38677. - /* Close the file. */
  38678. - endmntent (mtab);
  38679. - }
  38680. -
  38681. - __set_errno (save_errno);
  38682. - }
  38683. + /* Close the file. */
  38684. + endmntent (mtab);
  38685. + }
  38686. + __set_errno (save_errno);
  38687. + }
  38688. +#ifdef _STATFS_F_FLAGS
  38689. + else
  38690. + buf->f_flag = fsbuf.f_flags ^ ST_VALID;
  38691. +#endif
  38692. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/Makefile.in uClibc-git/libc/misc/statfs/Makefile.in
  38693. --- uClibc-0.9.33.2/libc/misc/statfs/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38694. +++ uClibc-git/libc/misc/statfs/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38695. @@ -7,19 +7,16 @@
  38696. subdirs += libc/misc/statfs
  38697. -CSRC := statvfs.c fstatvfs.c
  38698. -ifeq ($(UCLIBC_HAS_LFS),y)
  38699. -ifeq ($(UCLIBC_LINUX_SPECIFIC),y)
  38700. -CSRC += fstatfs64.c statfs64.c
  38701. -endif
  38702. -CSRC += statvfs64.c fstatvfs64.c
  38703. -endif
  38704. +CSRC-y := statvfs.c fstatvfs.c
  38705. +CSRC-$(UCLIBC_HAS_LFS) += $(patsubst %.c,%64.c,$(CSRC-y))
  38706. +CSRC-$(if $(findstring yy,$(UCLIBC_HAS_LFS)$(UCLIBC_LINUX_SPECIFIC)),y) += \
  38707. + fstatfs64.c statfs64.c
  38708. MISC_STATFS_DIR := $(top_srcdir)libc/misc/statfs
  38709. MISC_STATFS_OUT := $(top_builddir)libc/misc/statfs
  38710. -MISC_STATFS_SRC := $(patsubst %.c,$(MISC_STATFS_DIR)/%.c,$(CSRC))
  38711. -MISC_STATFS_OBJ := $(patsubst %.c,$(MISC_STATFS_OUT)/%.o,$(CSRC))
  38712. +MISC_STATFS_SRC := $(patsubst %.c,$(MISC_STATFS_DIR)/%.c,$(CSRC-y))
  38713. +MISC_STATFS_OBJ := $(patsubst %.c,$(MISC_STATFS_OUT)/%.o,$(CSRC-y))
  38714. libc-y += $(MISC_STATFS_OBJ)
  38715. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/statfs64.c uClibc-git/libc/misc/statfs/statfs64.c
  38716. --- uClibc-0.9.33.2/libc/misc/statfs/statfs64.c 2012-05-15 09:20:09.000000000 +0200
  38717. +++ uClibc-git/libc/misc/statfs/statfs64.c 2014-02-03 12:32:56.000000000 +0100
  38718. @@ -13,18 +13,19 @@
  38719. Lesser General Public License for more details.
  38720. You should have received a copy of the GNU Lesser General Public
  38721. - License along with the GNU C Library; if not, write to the Free
  38722. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38723. - 02111-1307 USA. */
  38724. + License along with the GNU C Library; if not, see
  38725. + <http://www.gnu.org/licenses/>. */
  38726. #include <_lfs_64.h>
  38727. #include <string.h>
  38728. #include <stddef.h>
  38729. #include <sys/statfs.h>
  38730. +#include <sys/syscall.h>
  38731. extern __typeof(statfs) __libc_statfs;
  38732. +#if defined __NR_statfs
  38733. /* Return information about the filesystem on which FILE resides. */
  38734. int statfs64 (const char *file, struct statfs64 *buf)
  38735. {
  38736. @@ -42,8 +43,21 @@
  38737. buf->f_ffree = buf32.f_ffree;
  38738. buf->f_fsid = buf32.f_fsid;
  38739. buf->f_namelen = buf32.f_namelen;
  38740. +#ifdef _STATFS_F_FRSIZE
  38741. + buf->f_frsize = buf32.f_frsize;
  38742. +#endif
  38743. +#ifdef _STATFS_F_FLAGS
  38744. + buf->f_flags = buf32.f_flags;
  38745. +#endif
  38746. memcpy (buf->f_spare, buf32.f_spare, sizeof (buf32.f_spare));
  38747. return 0;
  38748. }
  38749. +#else
  38750. +int statfs64 (const char *file, struct statfs64 *buf)
  38751. +{
  38752. + return INLINE_SYSCALL(statfs64, 3, file, sizeof(*buf), buf);
  38753. +}
  38754. +#endif
  38755. +
  38756. libc_hidden_def(statfs64)
  38757. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/statvfs64.c uClibc-git/libc/misc/statfs/statvfs64.c
  38758. --- uClibc-0.9.33.2/libc/misc/statfs/statvfs64.c 2012-05-15 09:20:09.000000000 +0200
  38759. +++ uClibc-git/libc/misc/statfs/statvfs64.c 2014-02-03 12:32:56.000000000 +0100
  38760. @@ -13,9 +13,8 @@
  38761. Lesser General Public License for more details.
  38762. You should have received a copy of the GNU Lesser General Public
  38763. - License along with the GNU C Library; if not, write to the Free
  38764. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38765. - 02111-1307 USA. */
  38766. + License along with the GNU C Library; if not, see
  38767. + <http://www.gnu.org/licenses/>. */
  38768. #include <_lfs_64.h>
  38769. diff -Nur uClibc-0.9.33.2/libc/misc/statfs/statvfs.c uClibc-git/libc/misc/statfs/statvfs.c
  38770. --- uClibc-0.9.33.2/libc/misc/statfs/statvfs.c 2012-05-15 09:20:09.000000000 +0200
  38771. +++ uClibc-git/libc/misc/statfs/statvfs.c 2014-02-03 12:32:56.000000000 +0100
  38772. @@ -13,9 +13,8 @@
  38773. Lesser General Public License for more details.
  38774. You should have received a copy of the GNU Lesser General Public
  38775. - License along with the GNU C Library; if not, write to the Free
  38776. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38777. - 02111-1307 USA. */
  38778. + License along with the GNU C Library; if not, see
  38779. + <http://www.gnu.org/licenses/>. */
  38780. #include <features.h>
  38781. #include <errno.h>
  38782. diff -Nur uClibc-0.9.33.2/libc/misc/syslog/Makefile.in uClibc-git/libc/misc/syslog/Makefile.in
  38783. --- uClibc-0.9.33.2/libc/misc/syslog/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38784. +++ uClibc-git/libc/misc/syslog/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38785. @@ -7,13 +7,13 @@
  38786. subdirs += libc/misc/syslog
  38787. -CSRC := syslog.c
  38788. +CSRC-y := syslog.c
  38789. MISC_SYSLOG_DIR := $(top_srcdir)libc/misc/syslog
  38790. MISC_SYSLOG_OUT := $(top_builddir)libc/misc/syslog
  38791. -MISC_SYSLOG_SRC := $(patsubst %.c,$(MISC_SYSLOG_DIR)/%.c,$(CSRC))
  38792. -MISC_SYSLOG_OBJ := $(patsubst %.c,$(MISC_SYSLOG_OUT)/%.o,$(CSRC))
  38793. +MISC_SYSLOG_SRC := $(patsubst %.c,$(MISC_SYSLOG_DIR)/%.c,$(CSRC-y))
  38794. +MISC_SYSLOG_OBJ := $(patsubst %.c,$(MISC_SYSLOG_OUT)/%.o,$(CSRC-y))
  38795. ifeq ($(UCLIBC_HAS_SYSLOG),y)
  38796. libc-y += $(MISC_SYSLOG_OBJ)
  38797. diff -Nur uClibc-0.9.33.2/libc/misc/syslog/syslog.c uClibc-git/libc/misc/syslog/syslog.c
  38798. --- uClibc-0.9.33.2/libc/misc/syslog/syslog.c 2012-05-15 09:20:09.000000000 +0200
  38799. +++ uClibc-git/libc/misc/syslog/syslog.c 2014-02-03 12:32:56.000000000 +0100
  38800. @@ -58,8 +58,6 @@
  38801. * - Major code cleanup.
  38802. */
  38803. -#define __FORCE_GLIBC
  38804. -#include <features.h>
  38805. #include <sys/types.h>
  38806. #include <sys/socket.h>
  38807. #include <sys/file.h>
  38808. @@ -177,14 +175,17 @@
  38809. openlog_intern(ident, logstat, logfac);
  38810. __UCLIBC_MUTEX_UNLOCK(mylock);
  38811. }
  38812. -libc_hidden_def(openlog)
  38813. /*
  38814. * syslog, vsyslog --
  38815. * print message on log file; output is intended for syslogd(8).
  38816. */
  38817. +static
  38818. +#ifndef __USE_BSD
  38819. +__always_inline
  38820. +#endif
  38821. void
  38822. -vsyslog(int pri, const char *fmt, va_list ap)
  38823. +__vsyslog(int pri, const char *fmt, va_list ap)
  38824. {
  38825. register char *p;
  38826. char *last_chr, *head_end, *end, *stdp;
  38827. @@ -303,7 +304,9 @@
  38828. getout:
  38829. __UCLIBC_MUTEX_UNLOCK(mylock);
  38830. }
  38831. -libc_hidden_def(vsyslog)
  38832. +#ifdef __USE_BSD
  38833. +strong_alias(__vsyslog,vsyslog)
  38834. +#endif
  38835. void
  38836. syslog(int pri, const char *fmt, ...)
  38837. @@ -311,7 +314,7 @@
  38838. va_list ap;
  38839. va_start(ap, fmt);
  38840. - vsyslog(pri, fmt, ap);
  38841. + __vsyslog(pri, fmt, ap);
  38842. va_end(ap);
  38843. }
  38844. libc_hidden_def(syslog)
  38845. @@ -326,7 +329,6 @@
  38846. closelog_intern(0); /* 0: reset LogXXX globals to default */
  38847. __UCLIBC_MUTEX_UNLOCK(mylock);
  38848. }
  38849. -libc_hidden_def(closelog)
  38850. /* setlogmask -- set the log mask level */
  38851. int setlogmask(int pmask)
  38852. @@ -335,9 +337,9 @@
  38853. omask = LogMask;
  38854. if (pmask != 0) {
  38855. - __UCLIBC_MUTEX_LOCK(mylock);
  38856. +/* __UCLIBC_MUTEX_LOCK(mylock);*/
  38857. LogMask = pmask;
  38858. - __UCLIBC_MUTEX_UNLOCK(mylock);
  38859. +/* __UCLIBC_MUTEX_UNLOCK(mylock);*/
  38860. }
  38861. return omask;
  38862. }
  38863. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/ftok.c uClibc-git/libc/misc/sysvipc/ftok.c
  38864. --- uClibc-0.9.33.2/libc/misc/sysvipc/ftok.c 2012-05-15 09:20:09.000000000 +0200
  38865. +++ uClibc-git/libc/misc/sysvipc/ftok.c 2014-02-03 12:32:56.000000000 +0100
  38866. @@ -14,8 +14,7 @@
  38867. You should have received a copy of the GNU Library General Public
  38868. License along with the GNU C Library; see the file COPYING.LIB. If not,
  38869. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  38870. - Boston, MA 02111-1307, USA. */
  38871. + see <http://www.gnu.org/licenses/>. */
  38872. #include <sys/ipc.h>
  38873. #include <sys/stat.h>
  38874. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/ipc.h uClibc-git/libc/misc/sysvipc/ipc.h
  38875. --- uClibc-0.9.33.2/libc/misc/sysvipc/ipc.h 2012-05-15 09:20:09.000000000 +0200
  38876. +++ uClibc-git/libc/misc/sysvipc/ipc.h 2014-02-03 12:32:56.000000000 +0100
  38877. @@ -3,10 +3,14 @@
  38878. #include <syscall.h>
  38879. #include <bits/wordsize.h>
  38880. -#if __WORDSIZE == 32 || defined __alpha__ || defined __mips__
  38881. -# define __IPC_64 0x100
  38882. +#ifndef __ARCH_HAS_DEPRECATED_SYSCALLS__
  38883. +# define __IPC_64 0x0
  38884. #else
  38885. -# define __IPC_64 0x0
  38886. +# if __WORDSIZE == 32 || defined __alpha__ || defined __mips__
  38887. +# define __IPC_64 0x100
  38888. +# else
  38889. +# define __IPC_64 0x0
  38890. +# endif
  38891. #endif
  38892. #ifdef __NR_ipc
  38893. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/Makefile.in uClibc-git/libc/misc/sysvipc/Makefile.in
  38894. --- uClibc-0.9.33.2/libc/misc/sysvipc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38895. +++ uClibc-git/libc/misc/sysvipc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38896. @@ -7,22 +7,22 @@
  38897. subdirs += libc/misc/sysvipc
  38898. -CSRC := ftok.c __syscall_ipc.c
  38899. +CSRC-y := ftok.c __syscall_ipc.c
  38900. # multi source sem.c
  38901. -CSRC += semget.c semctl.c semop.c semtimedop.c
  38902. +CSRC-y += semget.c semctl.c semop.c semtimedop.c
  38903. # multi source shm.c
  38904. -CSRC += shmat.c shmctl.c shmdt.c shmget.c
  38905. +CSRC-y += shmat.c shmctl.c shmdt.c shmget.c
  38906. # multi source msgq.c
  38907. -CSRC += msgctl.c msgget.c msgrcv.c msgsnd.c
  38908. +CSRC-y += msgctl.c msgget.c msgrcv.c msgsnd.c
  38909. MISC_SYSVIPC_DIR := $(top_srcdir)libc/misc/sysvipc
  38910. MISC_SYSVIPC_OUT := $(top_builddir)libc/misc/sysvipc
  38911. -MISC_SYSVIPC_SRC := $(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(CSRC))
  38912. -MISC_SYSVIPC_OBJ := $(patsubst %.c,$(MISC_SYSVIPC_OUT)/%.o,$(CSRC))
  38913. +MISC_SYSVIPC_SRC := $(patsubst %.c,$(MISC_SYSVIPC_DIR)/%.c,$(CSRC-y))
  38914. +MISC_SYSVIPC_OBJ := $(patsubst %.c,$(MISC_SYSVIPC_OUT)/%.o,$(CSRC-y))
  38915. libc-y += $(MISC_SYSVIPC_OBJ)
  38916. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/sem.c uClibc-git/libc/misc/sysvipc/sem.c
  38917. --- uClibc-0.9.33.2/libc/misc/sysvipc/sem.c 2012-05-15 09:20:09.000000000 +0200
  38918. +++ uClibc-git/libc/misc/sysvipc/sem.c 2014-02-03 12:32:56.000000000 +0100
  38919. @@ -14,8 +14,7 @@
  38920. You should have received a copy of the GNU Library General Public
  38921. License along with the GNU C Library; see the file COPYING.LIB. If not,
  38922. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  38923. - Boston, MA 02111-1307, USA. */
  38924. + see <http://www.gnu.org/licenses/>. */
  38925. #include <errno.h>
  38926. #include <sys/sem.h>
  38927. diff -Nur uClibc-0.9.33.2/libc/misc/sysvipc/shm.c uClibc-git/libc/misc/sysvipc/shm.c
  38928. --- uClibc-0.9.33.2/libc/misc/sysvipc/shm.c 2012-05-15 09:20:09.000000000 +0200
  38929. +++ uClibc-git/libc/misc/sysvipc/shm.c 2014-02-03 12:32:56.000000000 +0100
  38930. @@ -14,8 +14,7 @@
  38931. You should have received a copy of the GNU Library General Public
  38932. License along with the GNU C Library; see the file COPYING.LIB. If not,
  38933. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  38934. - Boston, MA 02111-1307, USA. */
  38935. + see <http://www.gnu.org/licenses/>. */
  38936. /* SHMLBA uses it on most of the archs (not mips) */
  38937. #define __getpagesize getpagesize
  38938. @@ -54,13 +53,13 @@
  38939. #ifdef L_shmctl
  38940. /* Provide operations to control over shared memory segments. */
  38941. #ifdef __NR_shmctl
  38942. -#define __NR___libc_shmctl __NR_shmctl
  38943. -static __inline__ _syscall3(int, __libc_shmctl, int, shmid, int, cmd, struct shmid_ds *, buf)
  38944. +#define __NR___syscall_shmctl __NR_shmctl
  38945. +static __always_inline _syscall3(int, __syscall_shmctl, int, shmid, int, cmd, struct shmid_ds *, buf)
  38946. #endif
  38947. int shmctl(int shmid, int cmd, struct shmid_ds *buf)
  38948. {
  38949. #ifdef __NR_shmctl
  38950. - return __libc_shmctl(shmid, cmd | __IPC_64, buf);
  38951. + return __syscall_shmctl(shmid, cmd | __IPC_64, buf);
  38952. #else
  38953. return __syscall_ipc(IPCOP_shmctl, shmid, cmd | __IPC_64, 0, buf, 0);
  38954. #endif
  38955. diff -Nur uClibc-0.9.33.2/libc/misc/time/ftime.c uClibc-git/libc/misc/time/ftime.c
  38956. --- uClibc-0.9.33.2/libc/misc/time/ftime.c 2012-05-15 09:20:09.000000000 +0200
  38957. +++ uClibc-git/libc/misc/time/ftime.c 2014-02-03 12:32:56.000000000 +0100
  38958. @@ -12,9 +12,8 @@
  38959. Lesser General Public License for more details.
  38960. You should have received a copy of the GNU Lesser General Public
  38961. - License along with the GNU C Library; if not, write to the Free
  38962. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  38963. - 02111-1307 USA. */
  38964. + License along with the GNU C Library; if not, see
  38965. + <http://www.gnu.org/licenses/>. */
  38966. #include <sys/timeb.h>
  38967. #include <sys/time.h>
  38968. diff -Nur uClibc-0.9.33.2/libc/misc/time/Makefile.in uClibc-git/libc/misc/time/Makefile.in
  38969. --- uClibc-0.9.33.2/libc/misc/time/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  38970. +++ uClibc-git/libc/misc/time/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  38971. @@ -7,33 +7,24 @@
  38972. subdirs += libc/misc/time
  38973. -CSRC := adjtime.c
  38974. -ifeq ($(UCLIBC_SUSV3_LEGACY),y)
  38975. -CSRC += ftime.c
  38976. -endif
  38977. +CSRC-y := adjtime.c
  38978. +CSRC-$(UCLIBC_SUSV3_LEGACY) += ftime.c
  38979. # multi source time.c
  38980. -CSRC += asctime.c asctime_r.c clock.c ctime.c ctime_r.c gmtime.c gmtime_r.c \
  38981. +CSRC-y += asctime.c asctime_r.c clock.c ctime.c ctime_r.c gmtime.c gmtime_r.c \
  38982. localtime.c localtime_r.c mktime.c strftime.c strptime.c tzset.c \
  38983. _time_t2tm.c __time_tm.c _time_mktime.c dysize.c timegm.c \
  38984. _time_mktime_tzi.c _time_localtime_tzi.c
  38985. -ifeq ($(UCLIBC_HAS_FLOATS),y)
  38986. -CSRC += difftime.c
  38987. -endif
  38988. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  38989. -CSRC += strftime_l.c strptime_l.c
  38990. -endif
  38991. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  38992. -CSRC += wcsftime.c
  38993. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  38994. -CSRC += wcsftime_l.c
  38995. -endif
  38996. -endif
  38997. +CSRC-$(UCLIBC_HAS_FLOATS) += difftime.c
  38998. +CSRC-$(UCLIBC_HAS_XLOCALE) += strftime_l.c strptime_l.c
  38999. +CSRC-$(UCLIBC_HAS_WCHAR) += wcsftime.c
  39000. +CSRC-$(if $(findstring yy,$(UCLIBC_HAS_WCHAR)$(UCLIBC_HAS_XLOCALE)),y) += \
  39001. + wcsftime_l.c
  39002. MISC_TIME_DIR := $(top_srcdir)libc/misc/time
  39003. MISC_TIME_OUT := $(top_builddir)libc/misc/time
  39004. -MISC_TIME_SRC := $(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(CSRC))
  39005. -MISC_TIME_OBJ := $(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC))
  39006. +MISC_TIME_SRC := $(patsubst %.c,$(MISC_TIME_DIR)/%.c,$(CSRC-y))
  39007. +MISC_TIME_OBJ := $(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC-y))
  39008. libc-y += $(MISC_TIME_OBJ)
  39009. diff -Nur uClibc-0.9.33.2/libc/misc/time/time.c uClibc-git/libc/misc/time/time.c
  39010. --- uClibc-0.9.33.2/libc/misc/time/time.c 2012-05-15 09:20:09.000000000 +0200
  39011. +++ uClibc-git/libc/misc/time/time.c 2014-02-03 12:32:56.000000000 +0100
  39012. @@ -149,10 +149,6 @@
  39013. #ifdef __UCLIBC_HAS_WCHAR__
  39014. #include <wchar.h>
  39015. #endif
  39016. -#ifdef __UCLIBC_HAS_XLOCALE__
  39017. -#include <xlocale.h>
  39018. -#endif
  39019. -
  39020. #ifndef __isleap
  39021. #define __isleap(y) ( !((y) % 4) && ( ((y) % 100) || !((y) % 400) ) )
  39022. @@ -212,7 +208,7 @@
  39023. char tzname[TZNAME_MAX+1];
  39024. } rule_struct;
  39025. -__UCLIBC_MUTEX_EXTERN(_time_tzlock);
  39026. +__UCLIBC_MUTEX_EXTERN(_time_tzlock) attribute_hidden;
  39027. extern rule_struct _time_tzinfo[2] attribute_hidden;
  39028. @@ -605,11 +601,11 @@
  39029. } ll_tzname_item_t;
  39030. /* Structures form a list "UTC" -> "???" -> "tzname1" -> "tzname2"... */
  39031. -struct {
  39032. +static struct {
  39033. struct ll_tzname_item *next;
  39034. char tzname[4];
  39035. } ll_tzname_UNKNOWN = { NULL, "???" };
  39036. -const struct {
  39037. +static const struct {
  39038. struct ll_tzname_item *next;
  39039. char tzname[4];
  39040. } ll_tzname_UTC = { (void*)&ll_tzname_UNKNOWN, "UTC" };
  39041. @@ -671,7 +667,7 @@
  39042. isleap = __isleap(i);
  39043. --i;
  39044. day0 = (1
  39045. - + i /* Normal years increment 1 wday. */
  39046. + + i /* Normal years increment 1 wday. */
  39047. + (i/4)
  39048. - (i/100)
  39049. + (i/400) ) % 7;
  39050. @@ -684,20 +680,22 @@
  39051. }
  39052. } else if (r->rule_type == 'M') {
  39053. /* Find 0-based day number for 1st of the month. */
  39054. - day = 31*r->month - day_cor[r->month -1];
  39055. + day = 31 * r->month - day_cor[r->month - 1];
  39056. if (isleap && (day >= 59)) {
  39057. ++day;
  39058. }
  39059. - monlen = 31 + day_cor[r->month -1] - day_cor[r->month];
  39060. + monlen = 31 + day_cor[r->month - 1] - day_cor[r->month];
  39061. if (isleap && (r->month == 2)) {
  39062. ++monlen;
  39063. }
  39064. - /* Wweekday (0 is Sunday) of 1st of the month
  39065. + /* Weekday (0 is Sunday) of 1st of the month
  39066. * is (day0 + day) % 7. */
  39067. - if ((mday = r->day - ((day0 + day) % 7)) >= 0) {
  39068. - mday -= 7; /* Back up into prev month since r->week>0. */
  39069. + mday = r->day - ((day0 + day) % 7);
  39070. + if (mday >= 0) {
  39071. + mday -= 7; /* Back up into prev month since r->week > 0. */
  39072. }
  39073. - if ((mday += 7 * r->week) >= monlen) {
  39074. + mday += 7 * r->week;
  39075. + if (mday >= monlen) {
  39076. mday -= 7;
  39077. }
  39078. /* So, 0-based day number is... */
  39079. @@ -2100,7 +2098,8 @@
  39080. daylight = !!_time_tzinfo[1].tzname[0];
  39081. timezone = _time_tzinfo[0].gmt_offset;
  39082. -#if defined(__UCLIBC_HAS_TZ_FILE__) || defined(__UCLIBC_HAS_TZ_CACHING__)
  39083. +#if (defined(__UCLIBC_HAS_TZ_FILE__) && !defined(__UCLIBC_HAS_TZ_FILE_READ_MANY__)) || \
  39084. + defined(__UCLIBC_HAS_TZ_CACHING__)
  39085. FAST_DONE:
  39086. #endif
  39087. __UCLIBC_MUTEX_UNLOCK(_time_tzlock);
  39088. diff -Nur uClibc-0.9.33.2/libc/misc/ttyent/getttyent.c uClibc-git/libc/misc/ttyent/getttyent.c
  39089. --- uClibc-0.9.33.2/libc/misc/ttyent/getttyent.c 2012-05-15 09:20:09.000000000 +0200
  39090. +++ uClibc-git/libc/misc/ttyent/getttyent.c 2014-02-03 12:32:56.000000000 +0100
  39091. @@ -30,12 +30,11 @@
  39092. #include <features.h>
  39093. #include <ttyent.h>
  39094. #include <stdio.h>
  39095. -#include <stdio_ext.h>
  39096. #include <ctype.h>
  39097. #include <string.h>
  39098. #include <stdlib.h>
  39099. #ifdef __UCLIBC_HAS_THREADS__
  39100. -# include <pthread.h>
  39101. +# include <stdio_ext.h>
  39102. #endif
  39103. static char zapchar;
  39104. diff -Nur uClibc-0.9.33.2/libc/misc/ttyent/Makefile.in uClibc-git/libc/misc/ttyent/Makefile.in
  39105. --- uClibc-0.9.33.2/libc/misc/ttyent/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39106. +++ uClibc-git/libc/misc/ttyent/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39107. @@ -7,13 +7,13 @@
  39108. subdirs += libc/misc/ttyent
  39109. -CSRC := getttyent.c
  39110. +CSRC-y := getttyent.c
  39111. MISC_TTYENT_DIR := $(top_srcdir)libc/misc/ttyent
  39112. MISC_TTYENT_OUT := $(top_builddir)libc/misc/ttyent
  39113. -MISC_TTYENT_SRC := $(patsubst %.c,$(MISC_TTYENT_DIR)/%.c,$(CSRC))
  39114. -MISC_TTYENT_OBJ := $(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC))
  39115. +MISC_TTYENT_SRC := $(patsubst %.c,$(MISC_TTYENT_DIR)/%.c,$(CSRC-y))
  39116. +MISC_TTYENT_OBJ := $(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC-y))
  39117. libc-y += $(MISC_TTYENT_OBJ)
  39118. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/Makefile.in uClibc-git/libc/misc/utmp/Makefile.in
  39119. --- uClibc-0.9.33.2/libc/misc/utmp/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39120. +++ uClibc-git/libc/misc/utmp/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39121. @@ -7,17 +7,14 @@
  39122. subdirs += libc/misc/utmp
  39123. -CSRC := utent.c wtent.c
  39124. -
  39125. -ifeq ($(UCLIBC_HAS_UTMPX),y)
  39126. -CSRC += utxent.c
  39127. -endif
  39128. +CSRC-y := utent.c wtent.c
  39129. +CSRC-$(UCLIBC_HAS_UTMPX) += utxent.c
  39130. MISC_UTMP_DIR := $(top_srcdir)libc/misc/utmp
  39131. MISC_UTMP_OUT := $(top_builddir)libc/misc/utmp
  39132. -MISC_UTMP_SRC := $(patsubst %.c,$(MISC_UTMP_DIR)/%.c,$(CSRC))
  39133. -MISC_UTMP_OBJ := $(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC))
  39134. +MISC_UTMP_SRC := $(patsubst %.c,$(MISC_UTMP_DIR)/%.c,$(CSRC-y))
  39135. +MISC_UTMP_OBJ := $(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC-y))
  39136. libc-y += $(MISC_UTMP_OBJ)
  39137. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/utent.c uClibc-git/libc/misc/utmp/utent.c
  39138. --- uClibc-0.9.33.2/libc/misc/utmp/utent.c 2012-05-15 09:20:09.000000000 +0200
  39139. +++ uClibc-git/libc/misc/utmp/utent.c 2014-02-03 12:32:56.000000000 +0100
  39140. @@ -19,32 +19,22 @@
  39141. #include <errno.h>
  39142. #include <string.h>
  39143. #include <utmp.h>
  39144. +#ifdef __UCLIBC_HAS_UTMPX__
  39145. +# include <utmpx.h>
  39146. +#endif
  39147. #include <not-cancel.h>
  39148. #include <bits/uClibc_mutex.h>
  39149. __UCLIBC_MUTEX_STATIC(utmplock, PTHREAD_MUTEX_INITIALIZER);
  39150. -
  39151. -/* Do not create extra unlocked functions if no locking is needed */
  39152. -#if defined __UCLIBC_HAS_THREADS__
  39153. -# define static_if_threaded static
  39154. -#else
  39155. -# define static_if_threaded /* nothing */
  39156. -# define __setutent setutent
  39157. -# define __getutent getutent
  39158. -# define __getutid getutid
  39159. -#endif
  39160. -
  39161. -
  39162. /* Some global crap */
  39163. static int static_fd = -1;
  39164. static struct utmp static_utmp;
  39165. static const char default_file_name[] = _PATH_UTMP;
  39166. static const char *static_ut_name = default_file_name;
  39167. -
  39168. /* This function must be called with the LOCK held */
  39169. -static_if_threaded void __setutent(void)
  39170. +static void __setutent_unlocked(void)
  39171. {
  39172. if (static_fd < 0) {
  39173. static_fd = open_not_cancel_2(static_ut_name, O_RDWR | O_CLOEXEC);
  39174. @@ -63,17 +53,24 @@
  39175. lseek(static_fd, 0, SEEK_SET);
  39176. }
  39177. #if defined __UCLIBC_HAS_THREADS__
  39178. -void setutent(void)
  39179. +static void __setutent(void)
  39180. {
  39181. __UCLIBC_MUTEX_LOCK(utmplock);
  39182. - __setutent();
  39183. + __setutent_unlocked();
  39184. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39185. }
  39186. +#else
  39187. +static void __setutent(void);
  39188. +strong_alias(__setutent_unlocked,__setutent)
  39189. +#endif
  39190. +strong_alias(__setutent,setutent)
  39191. +
  39192. +#ifdef __UCLIBC_HAS_UTMPX__
  39193. +strong_alias(__setutent,setutxent)
  39194. #endif
  39195. -libc_hidden_def(setutent)
  39196. /* This function must be called with the LOCK held */
  39197. -static_if_threaded struct utmp *__getutent(void)
  39198. +static struct utmp *__getutent_unlocked(void)
  39199. {
  39200. if (static_fd < 0) {
  39201. __setutent();
  39202. @@ -89,19 +86,29 @@
  39203. return NULL;
  39204. }
  39205. #if defined __UCLIBC_HAS_THREADS__
  39206. -struct utmp *getutent(void)
  39207. +static struct utmp *__getutent(void)
  39208. {
  39209. struct utmp *ret;
  39210. __UCLIBC_MUTEX_LOCK(utmplock);
  39211. - ret = __getutent();
  39212. + ret = __getutent_unlocked();
  39213. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39214. return ret;
  39215. }
  39216. +#else
  39217. +static struct utmp *__getutent(void);
  39218. +strong_alias(__getutent_unlocked,__getutent)
  39219. +#endif
  39220. +strong_alias(__getutent,getutent)
  39221. +
  39222. +#ifdef __UCLIBC_HAS_UTMPX__
  39223. +struct utmpx *getutxent(void)
  39224. +{
  39225. + return (struct utmpx *) __getutent ();
  39226. +}
  39227. #endif
  39228. -libc_hidden_def(getutent)
  39229. -void endutent(void)
  39230. +static void __endutent(void)
  39231. {
  39232. __UCLIBC_MUTEX_LOCK(utmplock);
  39233. if (static_fd >= 0)
  39234. @@ -109,10 +116,14 @@
  39235. static_fd = -1;
  39236. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39237. }
  39238. -libc_hidden_def(endutent)
  39239. +strong_alias(__endutent,endutent)
  39240. +
  39241. +#ifdef __UCLIBC_HAS_UTMPX__
  39242. +strong_alias(__endutent,endutxent)
  39243. +#endif
  39244. /* This function must be called with the LOCK held */
  39245. -static_if_threaded struct utmp *__getutid(const struct utmp *utmp_entry)
  39246. +static struct utmp *__getutid_unlocked(const struct utmp *utmp_entry)
  39247. {
  39248. struct utmp *lutmp;
  39249. unsigned type;
  39250. @@ -122,7 +133,7 @@
  39251. type = utmp_entry->ut_type - 1;
  39252. type /= 4;
  39253. - while ((lutmp = __getutent()) != NULL) {
  39254. + while ((lutmp = __getutent_unlocked()) != NULL) {
  39255. if (type == 0 && lutmp->ut_type == utmp_entry->ut_type) {
  39256. /* one of RUN_LVL, BOOT_TIME, NEW_TIME, OLD_TIME */
  39257. return lutmp;
  39258. @@ -136,24 +147,34 @@
  39259. return NULL;
  39260. }
  39261. #if defined __UCLIBC_HAS_THREADS__
  39262. -struct utmp *getutid(const struct utmp *utmp_entry)
  39263. +static struct utmp *__getutid(const struct utmp *utmp_entry)
  39264. {
  39265. struct utmp *ret;
  39266. __UCLIBC_MUTEX_LOCK(utmplock);
  39267. - ret = __getutid(utmp_entry);
  39268. + ret = __getutid_unlocked(utmp_entry);
  39269. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39270. return ret;
  39271. }
  39272. +#else
  39273. +static struct utmp *__getutid(const struct utmp *utmp_entry);
  39274. +strong_alias(__getutid_unlocked,__getutid)
  39275. +#endif
  39276. +strong_alias(__getutid,getutid)
  39277. +
  39278. +#ifdef __UCLIBC_HAS_UTMPX__
  39279. +struct utmpx *getutxid(const struct utmpx *utmp_entry)
  39280. +{
  39281. + return (struct utmpx *) __getutid ((const struct utmp *) utmp_entry);
  39282. +}
  39283. #endif
  39284. -libc_hidden_def(getutid)
  39285. -struct utmp *getutline(const struct utmp *utmp_entry)
  39286. +static struct utmp *__getutline(const struct utmp *utmp_entry)
  39287. {
  39288. struct utmp *lutmp;
  39289. __UCLIBC_MUTEX_LOCK(utmplock);
  39290. - while ((lutmp = __getutent()) != NULL) {
  39291. + while ((lutmp = __getutent_unlocked()) != NULL) {
  39292. if (lutmp->ut_type == USER_PROCESS || lutmp->ut_type == LOGIN_PROCESS) {
  39293. if (strncmp(lutmp->ut_line, utmp_entry->ut_line, sizeof(lutmp->ut_line)) == 0) {
  39294. break;
  39295. @@ -163,16 +184,23 @@
  39296. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39297. return lutmp;
  39298. }
  39299. -libc_hidden_def(getutline)
  39300. +strong_alias(__getutline,getutline)
  39301. +
  39302. +#ifdef __UCLIBC_HAS_UTMPX__
  39303. +struct utmpx *getutxline(const struct utmpx *utmp_entry)
  39304. +{
  39305. + return (struct utmpx *) __getutline ((const struct utmp *) utmp_entry);
  39306. +}
  39307. +#endif
  39308. -struct utmp *pututline(const struct utmp *utmp_entry)
  39309. +static struct utmp *__pututline(const struct utmp *utmp_entry)
  39310. {
  39311. __UCLIBC_MUTEX_LOCK(utmplock);
  39312. /* Ignore the return value. That way, if they've already positioned
  39313. the file pointer where they want it, everything will work out. */
  39314. lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR);
  39315. - if (__getutid(utmp_entry) != NULL)
  39316. + if (__getutid_unlocked(utmp_entry) != NULL)
  39317. lseek(static_fd, (off_t) - sizeof(struct utmp), SEEK_CUR);
  39318. else
  39319. lseek(static_fd, (off_t) 0, SEEK_END);
  39320. @@ -182,9 +210,16 @@
  39321. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39322. return (struct utmp *)utmp_entry;
  39323. }
  39324. -libc_hidden_def(pututline)
  39325. +strong_alias(__pututline,pututline)
  39326. +
  39327. +#ifdef __UCLIBC_HAS_UTMPX__
  39328. +struct utmpx *pututxline (const struct utmpx *utmp_entry)
  39329. +{
  39330. + return (struct utmpx *) __pututline ((const struct utmp *) utmp_entry);
  39331. +}
  39332. +#endif
  39333. -int utmpname(const char *new_ut_name)
  39334. +static int __utmpname(const char *new_ut_name)
  39335. {
  39336. __UCLIBC_MUTEX_LOCK(utmplock);
  39337. if (new_ut_name != NULL) {
  39338. @@ -205,4 +240,8 @@
  39339. __UCLIBC_MUTEX_UNLOCK(utmplock);
  39340. return 0; /* or maybe return -(static_ut_name != new_ut_name)? */
  39341. }
  39342. -libc_hidden_def(utmpname)
  39343. +strong_alias(__utmpname,utmpname)
  39344. +
  39345. +#ifdef __UCLIBC_HAS_UTMPX__
  39346. +strong_alias(__utmpname,utmpxname)
  39347. +#endif
  39348. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/utxent.c uClibc-git/libc/misc/utmp/utxent.c
  39349. --- uClibc-0.9.33.2/libc/misc/utmp/utxent.c 2012-05-15 09:20:09.000000000 +0200
  39350. +++ uClibc-git/libc/misc/utmp/utxent.c 2014-02-03 12:32:56.000000000 +0100
  39351. @@ -13,6 +13,7 @@
  39352. #include <utmpx.h>
  39353. #include <utmp.h>
  39354. +#if 0 /* moved to utent.c */
  39355. void setutxent(void)
  39356. {
  39357. setutent ();
  39358. @@ -48,10 +49,12 @@
  39359. return utmpname (new_ut_name);
  39360. }
  39361. +/* moved to wtent.c */
  39362. void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)
  39363. {
  39364. updwtmp (wtmpx_file, (const struct utmp *) utmpx);
  39365. }
  39366. +#endif
  39367. /* Copy the information in UTMPX to UTMP. */
  39368. void getutmp (const struct utmpx *utmpx, struct utmp *utmp)
  39369. @@ -104,4 +107,3 @@
  39370. utmpx->ut_time = utmp->ut_time;
  39371. #endif
  39372. }
  39373. -
  39374. diff -Nur uClibc-0.9.33.2/libc/misc/utmp/wtent.c uClibc-git/libc/misc/utmp/wtent.c
  39375. --- uClibc-0.9.33.2/libc/misc/utmp/wtent.c 2012-05-15 09:20:09.000000000 +0200
  39376. +++ uClibc-git/libc/misc/utmp/wtent.c 2014-02-03 12:32:56.000000000 +0100
  39377. @@ -11,6 +11,9 @@
  39378. #include <time.h>
  39379. #include <unistd.h>
  39380. #include <utmp.h>
  39381. +#ifdef __UCLIBC_HAS_UTMPX__
  39382. +# include <utmpx.h>
  39383. +#endif
  39384. #include <fcntl.h>
  39385. #include <sys/file.h>
  39386. #include <not-cancel.h>
  39387. @@ -33,11 +36,11 @@
  39388. }
  39389. #endif
  39390. -void updwtmp(const char *wtmp_file, const struct utmp *lutmp)
  39391. +static void __updwtmp(const char *wtmp_file, const struct utmp *lutmp)
  39392. {
  39393. int fd;
  39394. - fd = open_not_cancel(wtmp_file, O_APPEND | O_WRONLY, 0);
  39395. + fd = open_not_cancel_2(wtmp_file, O_APPEND | O_WRONLY);
  39396. if (fd >= 0) {
  39397. if (lockf(fd, F_LOCK, 0) == 0) {
  39398. write_not_cancel(fd, lutmp, sizeof(struct utmp));
  39399. @@ -46,4 +49,11 @@
  39400. }
  39401. }
  39402. }
  39403. -libc_hidden_def(updwtmp)
  39404. +strong_alias(__updwtmp,updwtmp)
  39405. +
  39406. +#ifdef __UCLIBC_HAS_UTMPX__
  39407. +void updwtmpx (const char *wtmpx_file, const struct utmpx *utmpx)
  39408. +{
  39409. + __updwtmp (wtmpx_file, (const struct utmp *) utmpx);
  39410. +}
  39411. +#endif
  39412. diff -Nur uClibc-0.9.33.2/libc/misc/wchar/Makefile.in uClibc-git/libc/misc/wchar/Makefile.in
  39413. --- uClibc-0.9.33.2/libc/misc/wchar/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39414. +++ uClibc-git/libc/misc/wchar/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39415. @@ -19,19 +19,17 @@
  39416. subdirs += libc/misc/wchar
  39417. # multi source wchar.c
  39418. -CSRC := btowc.c wctob.c mbsinit.c mbrlen.c mbrtowc.c wcrtomb.c mbsrtowcs.c \
  39419. +CSRC-y := btowc.c wctob.c mbsinit.c mbrlen.c mbrtowc.c wcrtomb.c mbsrtowcs.c \
  39420. wcsrtombs.c _wchar_utf8sntowcs.c _wchar_wcsntoutf8s.c \
  39421. mbsnrtowcs.c wcsnrtombs.c wcwidth.c wcswidth.c
  39422. -ifeq ($(UCLIBC_HAS_LOCALE),y)
  39423. -CSRC += iconv.c
  39424. -endif
  39425. +CSRC-$(UCLIBC_HAS_LOCALE) += iconv.c
  39426. MISC_WCHAR_DIR := $(top_srcdir)libc/misc/wchar
  39427. MISC_WCHAR_OUT := $(top_builddir)libc/misc/wchar
  39428. -MISC_WCHAR_SRC := $(patsubst %.c,$(MISC_WCHAR_DIR)/%.c,$(CSRC))
  39429. -MISC_WCHAR_OBJ := $(patsubst %.c,$(MISC_WCHAR_OUT)/%.o,$(CSRC))
  39430. +MISC_WCHAR_SRC := $(patsubst %.c,$(MISC_WCHAR_DIR)/%.c,$(CSRC-y))
  39431. +MISC_WCHAR_OBJ := $(patsubst %.c,$(MISC_WCHAR_OUT)/%.o,$(CSRC-y))
  39432. libc-$(UCLIBC_HAS_WCHAR) += $(MISC_WCHAR_OBJ)
  39433. diff -Nur uClibc-0.9.33.2/libc/misc/wchar/wchar.c uClibc-git/libc/misc/wchar/wchar.c
  39434. --- uClibc-0.9.33.2/libc/misc/wchar/wchar.c 2012-05-15 09:20:09.000000000 +0200
  39435. +++ uClibc-git/libc/misc/wchar/wchar.c 2014-02-03 12:32:56.000000000 +0100
  39436. @@ -12,8 +12,8 @@
  39437. * Library General Public License for more details.
  39438. *
  39439. * You should have received a copy of the GNU Library General Public
  39440. - * License along with this library; if not, write to the Free
  39441. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  39442. + * License along with this library; if not, see
  39443. + * <http://www.gnu.org/licenses/>.
  39444. */
  39445. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  39446. @@ -1196,6 +1196,9 @@
  39447. #endif
  39448. #if defined L_iconv || defined L_iconv_main
  39449. +# ifdef L_iconv_main
  39450. +static
  39451. +# endif
  39452. const unsigned char __iconv_codesets[] =
  39453. "\x0a\xe0""WCHAR_T\x00" /* superset of UCS-4 but platform-endian */
  39454. #if __BYTE_ORDER == __BIG_ENDIAN
  39455. diff -Nur uClibc-0.9.33.2/libc/misc/wctype/Makefile.in uClibc-git/libc/misc/wctype/Makefile.in
  39456. --- uClibc-0.9.33.2/libc/misc/wctype/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39457. +++ uClibc-git/libc/misc/wctype/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39458. @@ -14,19 +14,15 @@
  39459. iswxdigit.c iswblank.c wctrans.c towctrans.c \
  39460. wctype.c iswctype.c towlower.c towupper.c
  39461. -CSRC :=
  39462. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  39463. -CSRC += $(COM_SRC)
  39464. -endif
  39465. -ifeq ($(UCLIBC_HAS_XLOCALE),y)
  39466. -CSRC += $(patsubst %.c,%_l.c,$(COM_SRC))
  39467. -endif
  39468. +CSRC-y :=
  39469. +CSRC-$(UCLIBC_HAS_WCHAR) += $(COM_SRC)
  39470. +CSRC-$(UCLIBC_HAS_XLOCALE) += $(patsubst %.c,%_l.c,$(COM_SRC))
  39471. MISC_WCTYPE_DIR := $(top_srcdir)libc/misc/wctype
  39472. MISC_WCTYPE_OUT := $(top_builddir)libc/misc/wctype
  39473. -MISC_WCTYPE_SRC := $(patsubst %.c,$(MISC_WCTYPE_DIR)/%.c,$(CSRC))
  39474. -MISC_WCTYPE_OBJ := $(patsubst %.c,$(MISC_WCTYPE_OUT)/%.o,$(CSRC))
  39475. +MISC_WCTYPE_SRC := $(patsubst %.c,$(MISC_WCTYPE_DIR)/%.c,$(CSRC-y))
  39476. +MISC_WCTYPE_OBJ := $(patsubst %.c,$(MISC_WCTYPE_OUT)/%.o,$(CSRC-y))
  39477. libc-y += $(MISC_WCTYPE_OBJ)
  39478. diff -Nur uClibc-0.9.33.2/libc/misc/wctype/_wctype.c uClibc-git/libc/misc/wctype/_wctype.c
  39479. --- uClibc-0.9.33.2/libc/misc/wctype/_wctype.c 2012-05-15 09:20:09.000000000 +0200
  39480. +++ uClibc-git/libc/misc/wctype/_wctype.c 2014-02-03 12:32:56.000000000 +0100
  39481. @@ -11,8 +11,8 @@
  39482. * Library General Public License for more details.
  39483. *
  39484. * You should have received a copy of the GNU Library General Public
  39485. - * License along with this library; if not, write to the Free
  39486. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  39487. + * License along with this library; if not, see
  39488. + * <http://www.gnu.org/licenses/>.
  39489. */
  39490. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  39491. @@ -41,10 +41,6 @@
  39492. # error xlocale functionality is not supported in stub locale mode.
  39493. #endif
  39494. -#ifdef __UCLIBC_HAS_XLOCALE__
  39495. -# include <xlocale.h>
  39496. -#endif
  39497. -
  39498. /* We know wide char support is enabled. We wouldn't be here otherwise. */
  39499. /* Define this if you want to unify the towupper and towlower code in the
  39500. diff -Nur uClibc-0.9.33.2/libc/misc/wordexp/Makefile.in uClibc-git/libc/misc/wordexp/Makefile.in
  39501. --- uClibc-0.9.33.2/libc/misc/wordexp/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39502. +++ uClibc-git/libc/misc/wordexp/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39503. @@ -7,13 +7,13 @@
  39504. subdirs += libc/misc/wordexp
  39505. -CSRC := wordexp.c
  39506. +CSRC-y := wordexp.c
  39507. MISC_WORDEXP_DIR := $(top_srcdir)libc/misc/wordexp
  39508. MISC_WORDEXP_OUT := $(top_builddir)libc/misc/wordexp
  39509. -MISC_WORDEXP_SRC := $(patsubst %.c,$(MISC_WORDEXP_DIR)/%.c,$(CSRC))
  39510. -MISC_WORDEXP_OBJ := $(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC))
  39511. +MISC_WORDEXP_SRC := $(patsubst %.c,$(MISC_WORDEXP_DIR)/%.c,$(CSRC-y))
  39512. +MISC_WORDEXP_OBJ := $(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC-y))
  39513. libc-$(UCLIBC_HAS_WORDEXP) += $(MISC_WORDEXP_OBJ)
  39514. diff -Nur uClibc-0.9.33.2/libc/misc/wordexp/wordexp.c uClibc-git/libc/misc/wordexp/wordexp.c
  39515. --- uClibc-0.9.33.2/libc/misc/wordexp/wordexp.c 2012-05-15 09:20:09.000000000 +0200
  39516. +++ uClibc-git/libc/misc/wordexp/wordexp.c 2014-02-03 12:32:56.000000000 +0100
  39517. @@ -16,11 +16,11 @@
  39518. You should have received a copy of the GNU Library General Public
  39519. License along with the GNU C Library; see the file COPYING.LIB. If not,
  39520. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  39521. - Boston, MA 02111-1307, USA. */
  39522. + see <http://www.gnu.org/licenses/>. */
  39523. #include <features.h>
  39524. #include <bits/kernel-features.h>
  39525. +#include <ctype.h>
  39526. #include <sys/types.h>
  39527. #include <sys/wait.h>
  39528. #include <fcntl.h>
  39529. @@ -36,6 +36,10 @@
  39530. #include <glob.h>
  39531. #include <wordexp.h>
  39532. +#ifndef __ARCH_USE_MMU__
  39533. +# define fork vfork
  39534. +#endif
  39535. +
  39536. #define __WORDEXP_FULL
  39537. /*
  39538. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/lckpwdf.c uClibc-git/libc/pwd_grp/lckpwdf.c
  39539. --- uClibc-0.9.33.2/libc/pwd_grp/lckpwdf.c 2012-05-15 09:20:09.000000000 +0200
  39540. +++ uClibc-git/libc/pwd_grp/lckpwdf.c 2014-02-03 12:32:56.000000000 +0100
  39541. @@ -15,9 +15,8 @@
  39542. Lesser General Public License for more details.
  39543. You should have received a copy of the GNU Lesser General Public
  39544. - License along with the GNU C Library; if not, write to the Free
  39545. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39546. - 02111-1307 USA. */
  39547. + License along with the GNU C Library; if not, see
  39548. + <http://www.gnu.org/licenses/>. */
  39549. #include <features.h>
  39550. #include <fcntl.h>
  39551. @@ -51,6 +50,7 @@
  39552. struct sigaction new_act; /* New signal action. */
  39553. struct flock fl; /* Information struct for locking. */
  39554. int result;
  39555. + int rv = -1;
  39556. if (lock_fd != -1)
  39557. /* Still locked by own process. */
  39558. @@ -111,11 +111,13 @@
  39559. if (result < 0) {
  39560. close(lock_fd);
  39561. lock_fd = -1;
  39562. + goto DONE;
  39563. }
  39564. + rv = 0;
  39565. DONE:
  39566. __UCLIBC_MUTEX_UNLOCK(mylock);
  39567. - return 0; /* TODO: return result? */
  39568. + return rv;
  39569. }
  39570. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/Makefile.in uClibc-git/libc/pwd_grp/Makefile.in
  39571. --- uClibc-0.9.33.2/libc/pwd_grp/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39572. +++ uClibc-git/libc/pwd_grp/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39573. @@ -10,20 +10,17 @@
  39574. PWDGRP_DIR := $(top_srcdir)libc/pwd_grp
  39575. PWDGRP_OUT := $(top_builddir)libc/pwd_grp
  39576. -CSRC := $(notdir $(wildcard $(PWDGRP_DIR)/*.c))
  39577. -CSRC := $(filter-out pwd_grp.c pwd_grp_internal.c,$(CSRC))
  39578. -
  39579. -ifneq ($(UCLIBC_HAS_SHADOW),y)
  39580. -SHADOW_CSRC := \
  39581. - fgetspent_r.c fgetspent.c getspent_r.c getspent.c \
  39582. +CSRC-y := $(notdir $(wildcard $(PWDGRP_DIR)/*.c))
  39583. +CSRC- := pwd_grp.c pwd_grp_internal.c # multi-source and helper
  39584. +CSRC-$(UCLIBC_HAS_SHADOW) += fgetspent_r.c fgetspent.c getspent_r.c getspent.c \
  39585. getspnam_r.c getspnam.c lckpwdf.c putspent.c \
  39586. sgetspent_r.c sgetspent.c __parsespent.c
  39587. # getspuid_r.c getspuid.c
  39588. -CSRC := $(filter-out $(SHADOW_CSRC),$(CSRC))
  39589. -endif
  39590. -PWDGRP_SRC := $(patsubst %.c,$(PWDGRP_DIR)/%.c,$(CSRC))
  39591. -PWDGRP_OBJ := $(patsubst %.c,$(PWDGRP_OUT)/%.o,$(CSRC))
  39592. +CSRC-y := $(filter-out $(CSRC-),$(CSRC-y))
  39593. +
  39594. +PWDGRP_SRC := $(patsubst %.c,$(PWDGRP_DIR)/%.c,$(CSRC-y))
  39595. +PWDGRP_OBJ := $(patsubst %.c,$(PWDGRP_OUT)/%.o,$(CSRC-y))
  39596. libc-y += $(PWDGRP_OBJ)
  39597. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/pwd_grp.c uClibc-git/libc/pwd_grp/pwd_grp.c
  39598. --- uClibc-0.9.33.2/libc/pwd_grp/pwd_grp.c 2012-05-15 09:20:09.000000000 +0200
  39599. +++ uClibc-git/libc/pwd_grp/pwd_grp.c 2014-02-03 12:32:56.000000000 +0100
  39600. @@ -354,6 +354,7 @@
  39601. getpwnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
  39602. return result;
  39603. }
  39604. +libc_hidden_def(getpwnam)
  39605. #endif
  39606. /**********************************************************************/
  39607. diff -Nur uClibc-0.9.33.2/libc/pwd_grp/pwd_grp_internal.c uClibc-git/libc/pwd_grp/pwd_grp_internal.c
  39608. --- uClibc-0.9.33.2/libc/pwd_grp/pwd_grp_internal.c 2012-05-15 09:20:09.000000000 +0200
  39609. +++ uClibc-git/libc/pwd_grp/pwd_grp_internal.c 2014-02-03 12:32:56.000000000 +0100
  39610. @@ -34,9 +34,6 @@
  39611. #ifdef __UCLIBC_HAS_SHADOW__
  39612. #include <shadow.h>
  39613. #endif
  39614. -#ifdef __UCLIBC_HAS_THREADS__
  39615. -#include <pthread.h>
  39616. -#endif
  39617. /**********************************************************************/
  39618. /* Sizes for statically allocated buffers. */
  39619. diff -Nur uClibc-0.9.33.2/libc/signal/allocrtsig.c uClibc-git/libc/signal/allocrtsig.c
  39620. --- uClibc-0.9.33.2/libc/signal/allocrtsig.c 2012-05-15 09:20:09.000000000 +0200
  39621. +++ uClibc-git/libc/signal/allocrtsig.c 2014-02-03 12:32:56.000000000 +0100
  39622. @@ -14,13 +14,11 @@
  39623. Lesser General Public License for more details.
  39624. You should have received a copy of the GNU Lesser General Public
  39625. - License along with the GNU C Library; if not, write to the Free
  39626. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39627. - 02111-1307 USA. */
  39628. + License along with the GNU C Library; if not, see
  39629. + <http://www.gnu.org/licenses/>. */
  39630. #include <features.h>
  39631. #include <signal.h>
  39632. -#include <sys/types.h>
  39633. #include <sys/syscall.h>
  39634. /* Only enable rt signals when it is supported at compile time */
  39635. @@ -34,6 +32,13 @@
  39636. #else
  39637. # ifdef __UCLIBC_HAS_THREADS_NATIVE__
  39638. static int current_rtmin = __SIGRTMIN + 2;
  39639. +# elif defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
  39640. +/* psm: might be good for LT old as well, do not want to break it for now */
  39641. +/* Sanity check */
  39642. +# if !defined __SIGRTMIN || (__SIGRTMAX - __SIGRTMIN) < 3
  39643. +# error "This must not happen"
  39644. +# endif
  39645. +static int current_rtmin = __SIGRTMIN + 3;
  39646. # else
  39647. static int current_rtmin = __SIGRTMIN;
  39648. # endif
  39649. @@ -52,6 +57,7 @@
  39650. return current_rtmax;
  39651. }
  39652. +#if 0
  39653. /* Allocate real-time signal with highest/lowest available
  39654. priority. Please note that we don't use a lock since we assume
  39655. this function to be called at program start. */
  39656. @@ -64,3 +70,4 @@
  39657. return high ? current_rtmin++ : current_rtmax--;
  39658. }
  39659. +#endif
  39660. diff -Nur uClibc-0.9.33.2/libc/signal/killpg.c uClibc-git/libc/signal/killpg.c
  39661. --- uClibc-0.9.33.2/libc/signal/killpg.c 2012-05-15 09:20:09.000000000 +0200
  39662. +++ uClibc-git/libc/signal/killpg.c 2014-02-03 12:32:56.000000000 +0100
  39663. @@ -12,14 +12,12 @@
  39664. Lesser General Public License for more details.
  39665. You should have received a copy of the GNU Lesser General Public
  39666. - License along with the GNU C Library; if not, write to the Free
  39667. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39668. - 02111-1307 USA. */
  39669. + License along with the GNU C Library; if not, see
  39670. + <http://www.gnu.org/licenses/>. */
  39671. #include <errno.h>
  39672. #include <signal.h>
  39673. -
  39674. /* Send SIG to all processes in process group PGRP.
  39675. If PGRP is zero, send SIG to all processes in
  39676. the current process's process group. */
  39677. diff -Nur uClibc-0.9.33.2/libc/signal/Makefile.in uClibc-git/libc/signal/Makefile.in
  39678. --- uClibc-0.9.33.2/libc/signal/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  39679. +++ uClibc-git/libc/signal/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  39680. @@ -8,20 +8,18 @@
  39681. subdirs += libc/signal
  39682. CSRC-y := allocrtsig.c killpg.c raise.c sigaction.c sigaddset.c sigandset.c \
  39683. - sigblock.c sigdelset.c sigempty.c sigfillset.c siggetmask.c \
  39684. + sigdelset.c sigempty.c sigfillset.c \
  39685. sigisempty.c sigismem.c sigjmp.c signal.c \
  39686. - sigorset.c sigsetmask.c sigsetops.c sigwait.c
  39687. + sigorset.c sigsetops.c sigwait.c
  39688. CSRC-$(UCLIBC_HAS_OBSOLETE_BSD_SIGNAL) += \
  39689. sighold.c sigignore.c sigrelse.c sigset.c
  39690. CSRC-$(UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL) += sysv_signal.c
  39691. CSRC-$(UCLIBC_SUSV4_LEGACY) += sigintr.c sigpause.c
  39692. -ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  39693. -CSRC-y:=$(filter-out raise.c,$(CSRC-y))
  39694. -endif
  39695. +CSRC-$(UCLIBC_HAS_THREADS_NATIVE):=$(filter-out raise.c,$(CSRC-y))
  39696. -ifneq ($(strip $(ARCH_OBJS)),)
  39697. -CSRC-y := $(filter-out $(notdir $(ARCH_OBJS:.o=.c)),$(CSRC-y))
  39698. +ifneq ($(strip $(ARCH_OBJS-y)),)
  39699. +CSRC-y := $(filter-out $(notdir $(ARCH_OBJS-y:.o=.c)),$(CSRC-y))
  39700. endif
  39701. ifneq ($(UCLIBC_HAS_BACKTRACE),)
  39702. diff -Nur uClibc-0.9.33.2/libc/signal/raise.c uClibc-git/libc/signal/raise.c
  39703. --- uClibc-0.9.33.2/libc/signal/raise.c 2012-05-15 09:20:09.000000000 +0200
  39704. +++ uClibc-git/libc/signal/raise.c 2014-02-03 12:32:56.000000000 +0100
  39705. @@ -3,9 +3,7 @@
  39706. */
  39707. #include <unistd.h>
  39708. -#include <string.h>
  39709. #include <signal.h>
  39710. -#include <sys/types.h>
  39711. int raise(int signo)
  39712. {
  39713. diff -Nur uClibc-0.9.33.2/libc/signal/sigaction.c uClibc-git/libc/signal/sigaction.c
  39714. --- uClibc-0.9.33.2/libc/signal/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  39715. +++ uClibc-git/libc/signal/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  39716. @@ -12,23 +12,12 @@
  39717. Lesser General Public License for more details.
  39718. You should have received a copy of the GNU Lesser General Public
  39719. - License along with the GNU C Library; if not, write to the Free
  39720. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39721. - 02111-1307 USA. */
  39722. + License along with the GNU C Library; if not, see
  39723. + <http://www.gnu.org/licenses/>. */
  39724. -#include <features.h>
  39725. -#include <errno.h>
  39726. #include <signal.h>
  39727. -#include <string.h>
  39728. #include <sys/syscall.h>
  39729. -#include <bits/kernel_sigaction.h>
  39730. -
  39731. -#ifndef LIBC_SIGACTION
  39732. -extern __typeof(sigaction) __libc_sigaction;
  39733. -#endif
  39734. -
  39735. -
  39736. #if defined __NR_rt_sigaction
  39737. /* If ACT is not NULL, change the action for SIG to *ACT.
  39738. @@ -47,6 +36,9 @@
  39739. }
  39740. #else
  39741. +# define __need_NULL
  39742. +# include <stddef.h>
  39743. +# include <bits/kernel_sigaction.h>
  39744. /* If ACT is not NULL, change the action for SIG to *ACT.
  39745. If OACT is not NULL, put the old action for SIG in *OACT. */
  39746. diff -Nur uClibc-0.9.33.2/libc/signal/sigaddset.c uClibc-git/libc/signal/sigaddset.c
  39747. --- uClibc-0.9.33.2/libc/signal/sigaddset.c 2012-05-15 09:20:09.000000000 +0200
  39748. +++ uClibc-git/libc/signal/sigaddset.c 2014-02-03 12:32:56.000000000 +0100
  39749. @@ -12,11 +12,13 @@
  39750. Lesser General Public License for more details.
  39751. You should have received a copy of the GNU Lesser General Public
  39752. - License along with the GNU C Library; if not, write to the Free
  39753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39754. - 02111-1307 USA. */
  39755. + License along with the GNU C Library; if not, see
  39756. + <http://www.gnu.org/licenses/>. */
  39757. -#include "sigsetops.h"
  39758. +#define __need_NULL
  39759. +#include <stddef.h>
  39760. +#include <signal.h>
  39761. +#include <errno.h>
  39762. /* Add SIGNO to SET. */
  39763. int
  39764. diff -Nur uClibc-0.9.33.2/libc/signal/sigandset.c uClibc-git/libc/signal/sigandset.c
  39765. --- uClibc-0.9.33.2/libc/signal/sigandset.c 2012-05-15 09:20:09.000000000 +0200
  39766. +++ uClibc-git/libc/signal/sigandset.c 2014-02-03 12:32:56.000000000 +0100
  39767. @@ -12,9 +12,8 @@
  39768. Lesser General Public License for more details.
  39769. You should have received a copy of the GNU Lesser General Public
  39770. - License along with the GNU C Library; if not, write to the Free
  39771. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39772. - 02111-1307 USA. */
  39773. + License along with the GNU C Library; if not, see
  39774. + <http://www.gnu.org/licenses/>. */
  39775. #include <errno.h>
  39776. #include <signal.h>
  39777. diff -Nur uClibc-0.9.33.2/libc/signal/sigblock.c uClibc-git/libc/signal/sigblock.c
  39778. --- uClibc-0.9.33.2/libc/signal/sigblock.c 2012-05-15 09:20:09.000000000 +0200
  39779. +++ uClibc-git/libc/signal/sigblock.c 2014-02-03 12:32:56.000000000 +0100
  39780. @@ -12,18 +12,16 @@
  39781. Lesser General Public License for more details.
  39782. You should have received a copy of the GNU Lesser General Public
  39783. - License along with the GNU C Library; if not, write to the Free
  39784. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39785. - 02111-1307 USA. */
  39786. + License along with the GNU C Library; if not, see
  39787. + <http://www.gnu.org/licenses/>. */
  39788. -#define __UCLIBC_HIDE_DEPRECATED__
  39789. -#include <errno.h>
  39790. +/*#define __UCLIBC_HIDE_DEPRECATED__*/
  39791. #include <signal.h>
  39792. #include "sigset-cvt-mask.h"
  39793. /* Block signals in MASK, returning the old mask. */
  39794. -int sigblock (int mask)
  39795. +static int sigblock (int mask)
  39796. {
  39797. sigset_t set, oset;
  39798. @@ -31,4 +29,3 @@
  39799. sigprocmask (SIG_BLOCK, &set, &oset); /* can't fail */
  39800. return sigset_get_old_mask (&oset);
  39801. }
  39802. -libc_hidden_def(sigblock)
  39803. diff -Nur uClibc-0.9.33.2/libc/signal/sigdelset.c uClibc-git/libc/signal/sigdelset.c
  39804. --- uClibc-0.9.33.2/libc/signal/sigdelset.c 2012-05-15 09:20:09.000000000 +0200
  39805. +++ uClibc-git/libc/signal/sigdelset.c 2014-02-03 12:32:56.000000000 +0100
  39806. @@ -12,11 +12,13 @@
  39807. Lesser General Public License for more details.
  39808. You should have received a copy of the GNU Lesser General Public
  39809. - License along with the GNU C Library; if not, write to the Free
  39810. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39811. - 02111-1307 USA. */
  39812. + License along with the GNU C Library; if not, see
  39813. + <http://www.gnu.org/licenses/>. */
  39814. -#include "sigsetops.h"
  39815. +#define __need_NULL
  39816. +#include <stddef.h>
  39817. +#include <signal.h>
  39818. +#include <errno.h>
  39819. /* Add SIGNO to SET. */
  39820. int sigdelset (sigset_t *set, int signo)
  39821. diff -Nur uClibc-0.9.33.2/libc/signal/sigempty.c uClibc-git/libc/signal/sigempty.c
  39822. --- uClibc-0.9.33.2/libc/signal/sigempty.c 2012-05-15 09:20:09.000000000 +0200
  39823. +++ uClibc-git/libc/signal/sigempty.c 2014-02-03 12:32:56.000000000 +0100
  39824. @@ -12,14 +12,15 @@
  39825. Lesser General Public License for more details.
  39826. You should have received a copy of the GNU Lesser General Public
  39827. - License along with the GNU C Library; if not, write to the Free
  39828. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39829. - 02111-1307 USA. */
  39830. + License along with the GNU C Library; if not, see
  39831. + <http://www.gnu.org/licenses/>. */
  39832. -#include <errno.h>
  39833. #include <signal.h>
  39834. -#include <string.h>
  39835. -
  39836. +#if 0
  39837. +#define __need_NULL
  39838. +#include <stddef.h>
  39839. +#include <errno.h>
  39840. +#endif
  39841. /* Clear all signals from SET. */
  39842. int sigemptyset (sigset_t *set)
  39843. @@ -36,4 +37,3 @@
  39844. return 0;
  39845. }
  39846. -libc_hidden_def(sigemptyset)
  39847. diff -Nur uClibc-0.9.33.2/libc/signal/sigfillset.c uClibc-git/libc/signal/sigfillset.c
  39848. --- uClibc-0.9.33.2/libc/signal/sigfillset.c 2012-05-15 09:20:09.000000000 +0200
  39849. +++ uClibc-git/libc/signal/sigfillset.c 2014-02-03 12:32:56.000000000 +0100
  39850. @@ -12,17 +12,18 @@
  39851. Lesser General Public License for more details.
  39852. You should have received a copy of the GNU Lesser General Public
  39853. - License along with the GNU C Library; if not, write to the Free
  39854. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39855. - 02111-1307 USA. */
  39856. + License along with the GNU C Library; if not, see
  39857. + <http://www.gnu.org/licenses/>. */
  39858. -#include <errno.h>
  39859. #include <signal.h>
  39860. -#include <string.h>
  39861. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  39862. # include <pthreadP.h> /* SIGCANCEL */
  39863. #endif
  39864. -
  39865. +#if 0
  39866. +#define __need_NULL
  39867. +#include <stddef.h>
  39868. +#include <errno.h>
  39869. +#endif
  39870. /* Set all signals in SET. */
  39871. int
  39872. @@ -49,4 +50,3 @@
  39873. return 0;
  39874. }
  39875. -libc_hidden_def(sigfillset)
  39876. diff -Nur uClibc-0.9.33.2/libc/signal/siggetmask.c uClibc-git/libc/signal/siggetmask.c
  39877. --- uClibc-0.9.33.2/libc/signal/siggetmask.c 2012-05-15 09:20:09.000000000 +0200
  39878. +++ uClibc-git/libc/signal/siggetmask.c 2014-02-03 12:32:56.000000000 +0100
  39879. @@ -13,14 +13,12 @@
  39880. Lesser General Public License for more details.
  39881. You should have received a copy of the GNU Lesser General Public
  39882. - License along with the GNU C Library; if not, write to the Free
  39883. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39884. - 02111-1307 USA. */
  39885. + License along with the GNU C Library; if not, see
  39886. + <http://www.gnu.org/licenses/>. */
  39887. #define __UCLIBC_HIDE_DEPRECATED__
  39888. #include <signal.h>
  39889. -
  39890. int
  39891. siggetmask (void)
  39892. {
  39893. diff -Nur uClibc-0.9.33.2/libc/signal/sighold.c uClibc-git/libc/signal/sighold.c
  39894. --- uClibc-0.9.33.2/libc/signal/sighold.c 2012-05-15 09:20:09.000000000 +0200
  39895. +++ uClibc-git/libc/signal/sighold.c 2014-02-03 12:32:56.000000000 +0100
  39896. @@ -14,15 +14,13 @@
  39897. Lesser General Public License for more details.
  39898. You should have received a copy of the GNU Lesser General Public
  39899. - License along with the GNU C Library; if not, write to the Free
  39900. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39901. - 02111-1307 USA. */
  39902. + License along with the GNU C Library; if not, see
  39903. + <http://www.gnu.org/licenses/>. */
  39904. #define __need_NULL
  39905. #include <stddef.h>
  39906. #include <signal.h>
  39907. -
  39908. int sighold (int sig)
  39909. {
  39910. sigset_t set;
  39911. diff -Nur uClibc-0.9.33.2/libc/signal/sigignore.c uClibc-git/libc/signal/sigignore.c
  39912. --- uClibc-0.9.33.2/libc/signal/sigignore.c 2012-05-15 09:20:09.000000000 +0200
  39913. +++ uClibc-git/libc/signal/sigignore.c 2014-02-03 12:32:56.000000000 +0100
  39914. @@ -14,16 +14,13 @@
  39915. Lesser General Public License for more details.
  39916. You should have received a copy of the GNU Lesser General Public
  39917. - License along with the GNU C Library; if not, write to the Free
  39918. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39919. - 02111-1307 USA. */
  39920. + License along with the GNU C Library; if not, see
  39921. + <http://www.gnu.org/licenses/>. */
  39922. -#include <errno.h>
  39923. #define __need_NULL
  39924. #include <stddef.h>
  39925. #include <signal.h>
  39926. -#include <string.h> /* For the real memset prototype. */
  39927. -
  39928. +#include <string.h>
  39929. int sigignore (int sig)
  39930. {
  39931. diff -Nur uClibc-0.9.33.2/libc/signal/sigintr.c uClibc-git/libc/signal/sigintr.c
  39932. --- uClibc-0.9.33.2/libc/signal/sigintr.c 2012-05-15 09:20:09.000000000 +0200
  39933. +++ uClibc-git/libc/signal/sigintr.c 2014-02-03 12:32:56.000000000 +0100
  39934. @@ -12,20 +12,19 @@
  39935. Lesser General Public License for more details.
  39936. You should have received a copy of the GNU Lesser General Public
  39937. - License along with the GNU C Library; if not, write to the Free
  39938. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39939. - 02111-1307 USA. */
  39940. + License along with the GNU C Library; if not, see
  39941. + <http://www.gnu.org/licenses/>. */
  39942. -#include <stddef.h>
  39943. #include <signal.h>
  39944. -#include <errno.h>
  39945. -
  39946. /* If INTERRUPT is nonzero, make signal SIG interrupt system calls
  39947. (causing them to fail with EINTR); if INTERRUPT is zero, make system
  39948. calls be restarted after signal SIG. */
  39949. #ifdef SA_RESTART
  39950. -extern sigset_t _sigintr attribute_hidden; /* Defined in signal.c. */
  39951. +# define __need_NULL
  39952. +# include <stddef.h>
  39953. +#else
  39954. +# include <errno.h>
  39955. #endif
  39956. int siginterrupt (int sig, int interrupt)
  39957. diff -Nur uClibc-0.9.33.2/libc/signal/sigisempty.c uClibc-git/libc/signal/sigisempty.c
  39958. --- uClibc-0.9.33.2/libc/signal/sigisempty.c 2012-05-15 09:20:09.000000000 +0200
  39959. +++ uClibc-git/libc/signal/sigisempty.c 2014-02-03 12:32:56.000000000 +0100
  39960. @@ -12,9 +12,8 @@
  39961. Lesser General Public License for more details.
  39962. You should have received a copy of the GNU Lesser General Public
  39963. - License along with the GNU C Library; if not, write to the Free
  39964. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39965. - 02111-1307 USA. */
  39966. + License along with the GNU C Library; if not, see
  39967. + <http://www.gnu.org/licenses/>. */
  39968. #include <errno.h>
  39969. #include <signal.h>
  39970. diff -Nur uClibc-0.9.33.2/libc/signal/sigismem.c uClibc-git/libc/signal/sigismem.c
  39971. --- uClibc-0.9.33.2/libc/signal/sigismem.c 2012-05-15 09:20:09.000000000 +0200
  39972. +++ uClibc-git/libc/signal/sigismem.c 2014-02-03 12:32:56.000000000 +0100
  39973. @@ -12,11 +12,13 @@
  39974. Lesser General Public License for more details.
  39975. You should have received a copy of the GNU Lesser General Public
  39976. - License along with the GNU C Library; if not, write to the Free
  39977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39978. - 02111-1307 USA. */
  39979. + License along with the GNU C Library; if not, see
  39980. + <http://www.gnu.org/licenses/>. */
  39981. -#include "sigsetops.h"
  39982. +#define __need_NULL
  39983. +#include <stddef.h>
  39984. +#include <signal.h>
  39985. +#include <errno.h>
  39986. /* Return 1 if SIGNO is in SET, 0 if not. */
  39987. int sigismember (const sigset_t *set, int signo)
  39988. diff -Nur uClibc-0.9.33.2/libc/signal/sigjmp.c uClibc-git/libc/signal/sigjmp.c
  39989. --- uClibc-0.9.33.2/libc/signal/sigjmp.c 2012-05-15 09:20:09.000000000 +0200
  39990. +++ uClibc-git/libc/signal/sigjmp.c 2014-02-03 12:32:56.000000000 +0100
  39991. @@ -12,21 +12,18 @@
  39992. Lesser General Public License for more details.
  39993. You should have received a copy of the GNU Lesser General Public
  39994. - License along with the GNU C Library; if not, write to the Free
  39995. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  39996. - 02111-1307 USA. */
  39997. + License along with the GNU C Library; if not, see
  39998. + <http://www.gnu.org/licenses/>. */
  39999. +#define __need_NULL
  40000. #include <stddef.h>
  40001. #include <setjmp.h>
  40002. #include <signal.h>
  40003. -#include <libc-internal.h>
  40004. -
  40005. /* This function is called by the `sigsetjmp' macro
  40006. before doing a `__setjmp' on ENV[0].__jmpbuf.
  40007. Always return zero. */
  40008. -int __sigjmp_save (sigjmp_buf env, int savemask) attribute_hidden;
  40009. int __sigjmp_save (sigjmp_buf env, int savemask)
  40010. {
  40011. env[0].__mask_was_saved = (savemask &&
  40012. diff -Nur uClibc-0.9.33.2/libc/signal/signal.c uClibc-git/libc/signal/signal.c
  40013. --- uClibc-0.9.33.2/libc/signal/signal.c 2012-05-15 09:20:09.000000000 +0200
  40014. +++ uClibc-git/libc/signal/signal.c 2014-02-03 12:32:56.000000000 +0100
  40015. @@ -14,15 +14,14 @@
  40016. Lesser General Public License for more details.
  40017. You should have received a copy of the GNU Lesser General Public
  40018. - License along with the GNU C Library; if not, write to the Free
  40019. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40020. - 02111-1307 USA. */
  40021. + License along with the GNU C Library; if not, see
  40022. + <http://www.gnu.org/licenses/>. */
  40023. #include <errno.h>
  40024. #include <signal.h>
  40025. #include <string.h> /* For the real memset prototype. */
  40026. -sigset_t _sigintr attribute_hidden; /* Set by siginterrupt. */
  40027. +sigset_t _sigintr; /* Set by siginterrupt. */
  40028. /* Set the handler for the signal SIG to HANDLER,
  40029. returning the old handler, or SIG_ERR on error. */
  40030. diff -Nur uClibc-0.9.33.2/libc/signal/sigorset.c uClibc-git/libc/signal/sigorset.c
  40031. --- uClibc-0.9.33.2/libc/signal/sigorset.c 2012-05-15 09:20:09.000000000 +0200
  40032. +++ uClibc-git/libc/signal/sigorset.c 2014-02-03 12:32:56.000000000 +0100
  40033. @@ -12,9 +12,8 @@
  40034. Lesser General Public License for more details.
  40035. You should have received a copy of the GNU Lesser General Public
  40036. - License along with the GNU C Library; if not, write to the Free
  40037. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40038. - 02111-1307 USA. */
  40039. + License along with the GNU C Library; if not, see
  40040. + <http://www.gnu.org/licenses/>. */
  40041. #include <errno.h>
  40042. #include <signal.h>
  40043. diff -Nur uClibc-0.9.33.2/libc/signal/sigpause.c uClibc-git/libc/signal/sigpause.c
  40044. --- uClibc-0.9.33.2/libc/signal/sigpause.c 2012-05-15 09:20:09.000000000 +0200
  40045. +++ uClibc-git/libc/signal/sigpause.c 2014-02-03 12:32:56.000000000 +0100
  40046. @@ -13,25 +13,19 @@
  40047. Lesser General Public License for more details.
  40048. You should have received a copy of the GNU Lesser General Public
  40049. - License along with the GNU C Library; if not, write to the Free
  40050. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40051. - 02111-1307 USA. */
  40052. -
  40053. -#define __UCLIBC_HIDE_DEPRECATED__
  40054. -/* psm: need the BSD version of sigpause here */
  40055. -#include <errno.h>
  40056. -#define __FAVOR_BSD
  40057. + License along with the GNU C Library; if not, see
  40058. + <http://www.gnu.org/licenses/>. */
  40059. +
  40060. #include <signal.h>
  40061. -#include <stddef.h> /* For NULL. */
  40062. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40063. -#include <sysdep-cancel.h>
  40064. -#endif
  40065. +#define __need_NULL
  40066. +#include <stddef.h>
  40067. +#include <cancel.h>
  40068. #include "sigset-cvt-mask.h"
  40069. /* Set the mask of blocked signals to MASK,
  40070. wait for a signal to arrive, and then restore the mask. */
  40071. -int __sigpause (int sig_or_mask, int is_sig)
  40072. +static int __sigpause (int sig_or_mask, int is_sig)
  40073. {
  40074. sigset_t set;
  40075. @@ -49,29 +43,21 @@
  40076. /* Note the sigpause() is a cancellation point. But since we call
  40077. sigsuspend() which itself is a cancellation point we do not have
  40078. to do anything here. */
  40079. - return sigsuspend (&set);
  40080. + /* uClibc note: not true on uClibc, we call the non-cancellable version */
  40081. + return __NC(sigsuspend)(&set);
  40082. }
  40083. -libc_hidden_def(__sigpause)
  40084. -#undef sigpause
  40085. +int __bsd_sigpause(int mask);
  40086. +int __bsd_sigpause(int mask)
  40087. +{
  40088. + return __sigpause(mask, 0);
  40089. +}
  40090. /* We have to provide a default version of this function since the
  40091. standards demand it. The version which is a bit more reasonable is
  40092. the BSD version. So make this the default. */
  40093. -int sigpause (int mask)
  40094. +static int __NC(sigpause)(int sig)
  40095. {
  40096. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40097. - if (SINGLE_THREAD_P)
  40098. - return __sigpause (mask, 0);
  40099. -
  40100. - int oldtype = LIBC_CANCEL_ASYNC ();
  40101. -
  40102. - int result = __sigpause (mask, 0);
  40103. -
  40104. - LIBC_CANCEL_RESET (oldtype);
  40105. -
  40106. - return result;
  40107. -#else
  40108. - return __sigpause (mask, 0);
  40109. -#endif
  40110. + return __sigpause(sig, 1);
  40111. }
  40112. +CANCELLABLE_SYSCALL(int, sigpause, (int sig), (sig))
  40113. diff -Nur uClibc-0.9.33.2/libc/signal/sigrelse.c uClibc-git/libc/signal/sigrelse.c
  40114. --- uClibc-0.9.33.2/libc/signal/sigrelse.c 2012-05-15 09:20:09.000000000 +0200
  40115. +++ uClibc-git/libc/signal/sigrelse.c 2014-02-03 12:32:56.000000000 +0100
  40116. @@ -14,15 +14,13 @@
  40117. Lesser General Public License for more details.
  40118. You should have received a copy of the GNU Lesser General Public
  40119. - License along with the GNU C Library; if not, write to the Free
  40120. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40121. - 02111-1307 USA. */
  40122. + License along with the GNU C Library; if not, see
  40123. + <http://www.gnu.org/licenses/>. */
  40124. #define __need_NULL
  40125. #include <stddef.h>
  40126. #include <signal.h>
  40127. -
  40128. int sigrelse (int sig)
  40129. {
  40130. sigset_t set;
  40131. diff -Nur uClibc-0.9.33.2/libc/signal/sigset.c uClibc-git/libc/signal/sigset.c
  40132. --- uClibc-0.9.33.2/libc/signal/sigset.c 2012-05-15 09:20:09.000000000 +0200
  40133. +++ uClibc-git/libc/signal/sigset.c 2014-02-03 12:32:56.000000000 +0100
  40134. @@ -12,16 +12,14 @@
  40135. Lesser General Public License for more details.
  40136. You should have received a copy of the GNU Lesser General Public
  40137. - License along with the GNU C Library; if not, write to the Free
  40138. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40139. - 02111-1307 USA. */
  40140. + License along with the GNU C Library; if not, see
  40141. + <http://www.gnu.org/licenses/>. */
  40142. #include <errno.h>
  40143. #define __need_NULL
  40144. #include <stddef.h>
  40145. #include <signal.h>
  40146. -#include <string.h> /* For the real memset prototype. */
  40147. -
  40148. +#include <string.h>
  40149. /* Set the disposition for SIG. */
  40150. __sighandler_t sigset (int sig, __sighandler_t disp)
  40151. diff -Nur uClibc-0.9.33.2/libc/signal/sigset-cvt-mask.h uClibc-git/libc/signal/sigset-cvt-mask.h
  40152. --- uClibc-0.9.33.2/libc/signal/sigset-cvt-mask.h 2012-05-15 09:20:09.000000000 +0200
  40153. +++ uClibc-git/libc/signal/sigset-cvt-mask.h 2014-02-03 12:32:56.000000000 +0100
  40154. @@ -15,9 +15,11 @@
  40155. Lesser General Public License for more details.
  40156. You should have received a copy of the GNU Lesser General Public
  40157. - License along with the GNU C Library; if not, write to the Free
  40158. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40159. - 02111-1307 USA. */
  40160. + License along with the GNU C Library; if not, see
  40161. + <http://www.gnu.org/licenses/>. */
  40162. +
  40163. +#ifndef _SIGSET_CVT_MASK_H
  40164. +#define _SIGSET_CVT_MASK_H
  40165. #include <string.h>
  40166. @@ -36,3 +38,5 @@
  40167. {
  40168. return (unsigned int) set->__val[0];
  40169. }
  40170. +
  40171. +#endif
  40172. diff -Nur uClibc-0.9.33.2/libc/signal/sigsetmask.c uClibc-git/libc/signal/sigsetmask.c
  40173. --- uClibc-0.9.33.2/libc/signal/sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  40174. +++ uClibc-git/libc/signal/sigsetmask.c 2014-02-03 12:32:56.000000000 +0100
  40175. @@ -12,18 +12,16 @@
  40176. Lesser General Public License for more details.
  40177. You should have received a copy of the GNU Lesser General Public
  40178. - License along with the GNU C Library; if not, write to the Free
  40179. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40180. - 02111-1307 USA. */
  40181. + License along with the GNU C Library; if not, see
  40182. + <http://www.gnu.org/licenses/>. */
  40183. -#define __UCLIBC_HIDE_DEPRECATED__
  40184. -#include <errno.h>
  40185. +/*#define __UCLIBC_HIDE_DEPRECATED__*/
  40186. #include <signal.h>
  40187. #include "sigset-cvt-mask.h"
  40188. /* Set the mask of blocked signals to MASK, returning the old mask. */
  40189. -int
  40190. +static int
  40191. sigsetmask (int mask)
  40192. {
  40193. sigset_t set, oset;
  40194. @@ -32,4 +30,3 @@
  40195. sigprocmask (SIG_SETMASK, &set, &oset); /* can't fail */
  40196. return sigset_get_old_mask (&oset);
  40197. }
  40198. -libc_hidden_def(sigsetmask)
  40199. diff -Nur uClibc-0.9.33.2/libc/signal/sigsetops.h uClibc-git/libc/signal/sigsetops.h
  40200. --- uClibc-0.9.33.2/libc/signal/sigsetops.h 2012-05-15 09:20:09.000000000 +0200
  40201. +++ uClibc-git/libc/signal/sigsetops.h 1970-01-01 01:00:00.000000000 +0100
  40202. @@ -1,33 +0,0 @@
  40203. -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
  40204. - This file is part of the GNU C Library.
  40205. -
  40206. - The GNU C Library is free software; you can redistribute it and/or
  40207. - modify it under the terms of the GNU Lesser General Public
  40208. - License as published by the Free Software Foundation; either
  40209. - version 2.1 of the License, or (at your option) any later version.
  40210. -
  40211. - The GNU C Library is distributed in the hope that it will be useful,
  40212. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  40213. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  40214. - Lesser General Public License for more details.
  40215. -
  40216. - You should have received a copy of the GNU Lesser General Public
  40217. - License along with the GNU C Library; if not, write to the Free
  40218. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40219. - 02111-1307 USA. */
  40220. -
  40221. -/* Definitions relevant to functions that operate on `sigset_t's. */
  40222. -
  40223. -#include <errno.h>
  40224. -#include <signal.h>
  40225. -#include <string.h>
  40226. -
  40227. -#define BITS (_NSIG - 1)
  40228. -#define ELT(signo) (((signo) - 1) / BITS)
  40229. -#define MASK(signo) (1 << (((signo) - 1) % BITS))
  40230. -
  40231. -#undef sigemptyset
  40232. -#undef sigfillset
  40233. -#undef sigaddset
  40234. -#undef sigdelset
  40235. -#undef sigismember
  40236. diff -Nur uClibc-0.9.33.2/libc/signal/sigwait.c uClibc-git/libc/signal/sigwait.c
  40237. --- uClibc-0.9.33.2/libc/signal/sigwait.c 2012-05-15 09:20:09.000000000 +0200
  40238. +++ uClibc-git/libc/signal/sigwait.c 2014-02-03 12:32:56.000000000 +0100
  40239. @@ -15,96 +15,42 @@
  40240. * Lesser General Public License for more details.
  40241. *
  40242. * You should have received a copy of the GNU Lesser General Public
  40243. - * License along with the GNU C Library; if not, write to the Free
  40244. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40245. - * 02111-1307 USA. */
  40246. -
  40247. -#include <errno.h>
  40248. + * License along with the GNU C Library; see the file COPYING.LIB. If
  40249. + * not, see <http://www.gnu.org/licenses/>.
  40250. + */
  40251. +
  40252. +#define __need_NULL
  40253. +#include <stddef.h>
  40254. +#include <sys/syscall.h>
  40255. #include <signal.h>
  40256. -#include <string.h>
  40257. -#include <unistd.h>
  40258. +#include <cancel.h>
  40259. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  40260. -# include <sysdep-cancel.h>
  40261. +#if defined __NR_rt_sigtimedwait && defined __UCLIBC_HAS_REALTIME__
  40262. -# ifdef __NR_rt_sigtimedwait
  40263. +#include <string.h>
  40264. /* Return any pending signal or wait for one for the given time. */
  40265. -static int do_sigwait(const sigset_t *set, int *sig)
  40266. +static int __NC(sigwait)(const sigset_t *set, int *sig)
  40267. {
  40268. int ret;
  40269. -# ifdef SIGCANCEL
  40270. - sigset_t tmpset;
  40271. - if (set != NULL
  40272. - && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  40273. -# ifdef SIGSETXID
  40274. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  40275. -# endif
  40276. - ))
  40277. - {
  40278. - /* Create a temporary mask without the bit for SIGCANCEL set. */
  40279. - // We are not copying more than we have to.
  40280. - memcpy(&tmpset, set, _NSIG / 8);
  40281. - __sigdelset(&tmpset, SIGCANCEL);
  40282. -# ifdef SIGSETXID
  40283. - __sigdelset(&tmpset, SIGSETXID);
  40284. -# endif
  40285. - set = &tmpset;
  40286. - }
  40287. -# endif
  40288. -
  40289. - /* XXX The size argument hopefully will have to be changed to the
  40290. - real size of the user-level sigset_t. */
  40291. - INTERNAL_SYSCALL_DECL(err);
  40292. do
  40293. - ret = INTERNAL_SYSCALL (rt_sigtimedwait, err, 4, set, NULL,
  40294. - NULL, _NSIG / 8);
  40295. - while (INTERNAL_SYSCALL_ERROR_P (ret, err)
  40296. - && INTERNAL_SYSCALL_ERRNO (ret, err) == EINTR);
  40297. - if (! INTERNAL_SYSCALL_ERROR_P (ret, err))
  40298. - {
  40299. + /* we might as well use sigtimedwait and do not care about cancellation */
  40300. + ret = __NC(sigtimedwait)(set, NULL, NULL);
  40301. + while (ret == -1 && errno == EINTR);
  40302. + if (ret != -1) {
  40303. *sig = ret;
  40304. ret = 0;
  40305. - }
  40306. -else
  40307. - ret = INTERNAL_SYSCALL_ERRNO (ret, err);
  40308. + } else
  40309. + ret = errno;
  40310. return ret;
  40311. }
  40312. -int sigwait (const sigset_t *set, int *sig)
  40313. -{
  40314. - if(SINGLE_THREAD_P)
  40315. - return do_sigwait(set, sig);
  40316. -
  40317. - int oldtype = LIBC_CANCEL_ASYNC();
  40318. -
  40319. - int result = do_sigwait(set, sig);
  40320. +#else /* __NR_rt_sigtimedwait */
  40321. - LIBC_CANCEL_RESET(oldtype);
  40322. -
  40323. - return result;
  40324. -}
  40325. -# else /* __NR_rt_sigtimedwait */
  40326. -# error We must have rt_sigtimedwait defined!!!
  40327. -# endif
  40328. -#else /* __UCLIBC_HAS_THREADS_NATIVE__ */
  40329. -
  40330. -# if defined __UCLIBC_HAS_REALTIME__
  40331. -
  40332. -int sigwait (const sigset_t *set, int *sig)
  40333. -{
  40334. - int ret = 1;
  40335. - if ((ret = sigwaitinfo(set, NULL)) != -1) {
  40336. - *sig = ret;
  40337. - return 0;
  40338. - }
  40339. - return 1;
  40340. -}
  40341. -
  40342. -# else /* __UCLIBC_HAS_REALTIME__ */
  40343. /* variant without REALTIME extensions */
  40344. +#include <unistd.h> /* smallint */
  40345. static smallint was_sig; /* obviously not thread-safe */
  40346. @@ -113,7 +59,7 @@
  40347. was_sig = sig;
  40348. }
  40349. -int sigwait (const sigset_t *set, int *sig)
  40350. +static int __NC(sigwait)(const sigset_t *set, int *sig)
  40351. {
  40352. sigset_t tmp_mask;
  40353. struct sigaction saved[NSIG];
  40354. @@ -147,7 +93,7 @@
  40355. }
  40356. /* Now we can wait for signals. */
  40357. - sigsuspend (&tmp_mask);
  40358. + __NC(sigsuspend)(&tmp_mask);
  40359. restore_handler:
  40360. save_errno = errno;
  40361. @@ -163,5 +109,6 @@
  40362. *sig = was_sig;
  40363. return was_sig == -1 ? -1 : 0;
  40364. }
  40365. -# endif /* __UCLIBC_HAS_REALTIME__ */
  40366. -#endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  40367. +#endif /* __NR_rt_sigtimedwait */
  40368. +
  40369. +CANCELLABLE_SYSCALL(int, sigwait, (const sigset_t *set, int *sig), (set, sig))
  40370. diff -Nur uClibc-0.9.33.2/libc/signal/sysv_signal.c uClibc-git/libc/signal/sysv_signal.c
  40371. --- uClibc-0.9.33.2/libc/signal/sysv_signal.c 2012-05-15 09:20:09.000000000 +0200
  40372. +++ uClibc-git/libc/signal/sysv_signal.c 2014-02-03 12:32:56.000000000 +0100
  40373. @@ -12,14 +12,11 @@
  40374. Lesser General Public License for more details.
  40375. You should have received a copy of the GNU Lesser General Public
  40376. - License along with the GNU C Library; if not, write to the Free
  40377. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  40378. - 02111-1307 USA. */
  40379. + License along with the GNU C Library; if not, see
  40380. + <http://www.gnu.org/licenses/>. */
  40381. #include <errno.h>
  40382. #include <signal.h>
  40383. -#include <string.h> /* For the real memset prototype. */
  40384. -
  40385. /* Tolerate non-threads versions of Posix */
  40386. #ifndef SA_ONESHOT
  40387. diff -Nur uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.c uClibc-git/libc/stdio/_fpmaxtostr.c
  40388. --- uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.c 2012-05-15 09:20:09.000000000 +0200
  40389. +++ uClibc-git/libc/stdio/_fpmaxtostr.c 2014-02-03 12:32:56.000000000 +0100
  40390. @@ -1,6 +1,7 @@
  40391. -/* Copyright (C) 2004 Manuel Novoa III <mjn3@codepoet.org>
  40392. +/*
  40393. + * Copyright (C) 2000,2001,2003,2004 Manuel Novoa III <mjn3@codepoet.org>
  40394. *
  40395. - * GNU Library General Public License (LGPL) version 2 or later.
  40396. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  40397. *
  40398. * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
  40399. */
  40400. @@ -9,15 +10,9 @@
  40401. #include <printf.h>
  40402. #include <float.h>
  40403. #include <locale.h>
  40404. -#include <bits/uClibc_fpmax.h>
  40405. +#include "_fpmaxtostr.h"
  40406. -
  40407. -typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
  40408. - intptr_t buf);
  40409. -
  40410. -
  40411. -/* Copyright (C) 2000, 2001, 2003 Manuel Novoa III
  40412. - *
  40413. +/*
  40414. * Function:
  40415. *
  40416. * ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  40417. @@ -40,7 +35,6 @@
  40418. * It should also be fairly portable, as no assumptions are made about the
  40419. * bit-layout of doubles. Of course, that does make it less efficient than
  40420. * it could be.
  40421. - *
  40422. */
  40423. /*****************************************************************************/
  40424. @@ -67,9 +61,6 @@
  40425. #define NUM_HEX_DIGITS ((FPMAX_MANT_DIG + 3)/ 4)
  40426. -/* WARNING: Adjust _fp_out_wide() below if this changes! */
  40427. -/* With 32 bit ints, we can get 9 decimal digits per block. */
  40428. -#define DIGITS_PER_BLOCK 9
  40429. #define HEX_DIGITS_PER_BLOCK 8
  40430. /* Maximum number of subcases to output double is...
  40431. @@ -87,15 +78,9 @@
  40432. /*****************************************************************************/
  40433. -#define NUM_DIGIT_BLOCKS ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)
  40434. #define NUM_HEX_DIGIT_BLOCKS \
  40435. ((NUM_HEX_DIGITS+HEX_DIGITS_PER_BLOCK-1)/HEX_DIGITS_PER_BLOCK)
  40436. -/* WARNING: Adjust _fp_out_wide() below if this changes! */
  40437. -
  40438. -/* extra space for '-', '.', 'e+###', and nul */
  40439. -#define BUF_SIZE ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK )
  40440. -
  40441. /*****************************************************************************/
  40442. static const char fmt[] = "inf\0INF\0nan\0NAN\0.\0,";
  40443. @@ -200,8 +185,6 @@
  40444. #define FPO_STR_PREC 'p'
  40445. ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  40446. - __fp_outfunc_t fp_outfunc) attribute_hidden;
  40447. -ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  40448. __fp_outfunc_t fp_outfunc)
  40449. {
  40450. #ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
  40451. @@ -219,8 +202,8 @@
  40452. #ifdef __UCLIBC_HAS_GLIBC_DIGIT_GROUPING__
  40453. int num_groups = 0;
  40454. int initial_group; /* This does not need to be initialized. */
  40455. - int tslen; /* This does not need to be initialized. */
  40456. - int nblk2; /* This does not need to be initialized. */
  40457. + int tslen; /* This does not need to be initialized. */
  40458. + int nblk2; /* This does not need to be initialized. */
  40459. const char *ts; /* This does not need to be initialized. */
  40460. #endif /* __UCLIBC_HAS_GLIBC_DIGIT_GROUPING__ */
  40461. int round, o_exp;
  40462. diff -Nur uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.h uClibc-git/libc/stdio/_fpmaxtostr.h
  40463. --- uClibc-0.9.33.2/libc/stdio/_fpmaxtostr.h 1970-01-01 01:00:00.000000000 +0100
  40464. +++ uClibc-git/libc/stdio/_fpmaxtostr.h 2014-02-03 12:32:56.000000000 +0100
  40465. @@ -0,0 +1,49 @@
  40466. +/* vi: set sw=4 ts=4: */
  40467. +/*
  40468. + * Copyright (C) 2000,2001,2003,2004 Manuel Novoa III <mjn3@codepoet.org>
  40469. + *
  40470. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  40471. + *
  40472. + * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
  40473. + */
  40474. +
  40475. +#ifndef _FPMAXTOSTR_H
  40476. +#define _FPMAXTOSTR_H 1
  40477. +
  40478. +#include <features.h>
  40479. +#ifdef __UCLIBC_HAS_FLOATS__
  40480. +
  40481. +#define __need_size_t
  40482. +#include <stddef.h>
  40483. +#include <stdint.h>
  40484. +#include <stdio.h>
  40485. +#include <printf.h>
  40486. +#include <sys/types.h>
  40487. +#include <float.h>
  40488. +#include <bits/uClibc_fpmax.h>
  40489. +
  40490. +/* WARNING: Adjust _fp_out_wide() in _vfprintf.c if this changes! */
  40491. +/* With 32 bit ints, we can get 9 decimal digits per block. */
  40492. +#define DIGITS_PER_BLOCK 9
  40493. +
  40494. +#define NUM_DIGIT_BLOCKS ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)
  40495. +
  40496. +/* WARNING: Adjust _fp_out_wide() in _vfprintf.c if this changes! */
  40497. +/* extra space for '-', '.', 'e+###', and nul */
  40498. +#define BUF_SIZE ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK )
  40499. +
  40500. +/* psm: why do these internals differ? */
  40501. +#ifdef __USE_OLD_VFPRINTF__
  40502. +typedef void (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len, intptr_t buf);
  40503. +
  40504. +extern size_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  40505. + __fp_outfunc_t fp_outfunc) attribute_hidden;
  40506. +#else
  40507. +typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len, intptr_t buf);
  40508. +
  40509. +extern ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  40510. + __fp_outfunc_t fp_outfunc) attribute_hidden;
  40511. +#endif
  40512. +
  40513. +#endif /* __UCLIBC_HAS_FLOATS__ */
  40514. +#endif /* _FPMAXTOSTR_H */
  40515. diff -Nur uClibc-0.9.33.2/libc/stdio/fputc.c uClibc-git/libc/stdio/fputc.c
  40516. --- uClibc-0.9.33.2/libc/stdio/fputc.c 2012-05-15 09:20:09.000000000 +0200
  40517. +++ uClibc-git/libc/stdio/fputc.c 2014-02-03 12:32:56.000000000 +0100
  40518. @@ -72,16 +72,13 @@
  40519. libc_hidden_def(__fputc_unlocked)
  40520. strong_alias(__fputc_unlocked,fputc_unlocked)
  40521. -libc_hidden_def(fputc_unlocked)
  40522. strong_alias(__fputc_unlocked,putc_unlocked)
  40523. -libc_hidden_def(putc_unlocked)
  40524. #ifndef __UCLIBC_HAS_THREADS__
  40525. strong_alias(__fputc_unlocked,fputc)
  40526. libc_hidden_def(fputc)
  40527. strong_alias(__fputc_unlocked,putc)
  40528. -libc_hidden_def(putc)
  40529. #endif
  40530. #elif defined __UCLIBC_HAS_THREADS__
  40531. @@ -101,6 +98,5 @@
  40532. libc_hidden_def(fputc)
  40533. strong_alias(fputc,putc)
  40534. -libc_hidden_def(putc)
  40535. #endif
  40536. diff -Nur uClibc-0.9.33.2/libc/stdio/fputwc.c uClibc-git/libc/stdio/fputwc.c
  40537. --- uClibc-0.9.33.2/libc/stdio/fputwc.c 2012-05-15 09:20:09.000000000 +0200
  40538. +++ uClibc-git/libc/stdio/fputwc.c 2014-02-03 12:32:56.000000000 +0100
  40539. @@ -19,6 +19,7 @@
  40540. strong_alias(fputwc_unlocked,putwc_unlocked)
  40541. #ifndef __UCLIBC_HAS_THREADS__
  40542. strong_alias(fputwc_unlocked,fputwc)
  40543. +libc_hidden_def(fputwc)
  40544. strong_alias(fputwc_unlocked,putwc)
  40545. #endif
  40546. @@ -37,6 +38,7 @@
  40547. return retval;
  40548. }
  40549. +libc_hidden_def(fputwc)
  40550. strong_alias(fputwc,putwc)
  40551. diff -Nur uClibc-0.9.33.2/libc/stdio/fseeko.c uClibc-git/libc/stdio/fseeko.c
  40552. --- uClibc-0.9.33.2/libc/stdio/fseeko.c 2012-05-15 09:20:09.000000000 +0200
  40553. +++ uClibc-git/libc/stdio/fseeko.c 2014-02-03 12:32:56.000000000 +0100
  40554. @@ -77,5 +77,5 @@
  40555. libc_hidden_def(fseeko64)
  40556. #else
  40557. libc_hidden_def(fseek)
  40558. -strong_alias(fseek,fseeko)
  40559. +strong_alias_untyped(fseek,fseeko)
  40560. #endif
  40561. diff -Nur uClibc-0.9.33.2/libc/stdio/ftello.c uClibc-git/libc/stdio/ftello.c
  40562. --- uClibc-0.9.33.2/libc/stdio/ftello.c 2012-05-15 09:20:09.000000000 +0200
  40563. +++ uClibc-git/libc/stdio/ftello.c 2014-02-03 12:32:56.000000000 +0100
  40564. @@ -53,5 +53,5 @@
  40565. libc_hidden_def(ftello64)
  40566. #else
  40567. libc_hidden_def(ftell)
  40568. -strong_alias(ftell,ftello)
  40569. +strong_alias_untyped(ftell,ftello)
  40570. #endif
  40571. diff -Nur uClibc-0.9.33.2/libc/stdio/_load_inttype.c uClibc-git/libc/stdio/_load_inttype.c
  40572. --- uClibc-0.9.33.2/libc/stdio/_load_inttype.c 2012-05-15 09:20:09.000000000 +0200
  40573. +++ uClibc-git/libc/stdio/_load_inttype.c 2014-02-03 12:32:56.000000000 +0100
  40574. @@ -8,7 +8,6 @@
  40575. #include "_stdio.h"
  40576. #include <printf.h>
  40577. -uintmax_t _load_inttype(int desttype, register const void *src, int uflag) attribute_hidden;
  40578. uintmax_t _load_inttype(int desttype, register const void *src, int uflag)
  40579. {
  40580. if (uflag >= 0) { /* unsigned */
  40581. diff -Nur uClibc-0.9.33.2/libc/stdio/Makefile.in uClibc-git/libc/stdio/Makefile.in
  40582. --- uClibc-0.9.33.2/libc/stdio/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  40583. +++ uClibc-git/libc/stdio/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  40584. @@ -11,7 +11,7 @@
  40585. subdirs += libc/stdio
  40586. # SUSv3 functions
  40587. -CSRC := \
  40588. +CSRC-y := \
  40589. fclose.c fcloseall.c fdopen.c fgetpos.c fopen.c freopen.c \
  40590. fseeko.c fsetpos.c ftello.c getdelim.c getline.c gets.c getw.c \
  40591. perror.c puts.c putw.c remove.c rewind.c setbuf.c setbuffer.c \
  40592. @@ -19,92 +19,80 @@
  40593. printf.c vprintf.c vsprintf.c fprintf.c snprintf.c dprintf.c \
  40594. asprintf.c sprintf.c vasprintf.c vdprintf.c vsnprintf.c \
  40595. tmpfile.c popen.c ctermid.c
  40596. +CSRC-$(UCLIBC_HAS_LFS) += fgetpos64.c fopen64.c freopen64.c \
  40597. + fseeko64.c fsetpos64.c ftello64.c
  40598. +CSRC-$(UCLIBC_SUSV4_LEGACY) += tmpnam.c tmpnam_r.c tempnam.c
  40599. -ifeq ($(UCLIBC_HAS_LFS),y)
  40600. -CSRC += fgetpos64.c fopen64.c freopen64.c fseeko64.c fsetpos64.c ftello64.c
  40601. -endif
  40602. -ifeq ($(UCLIBC_SUSV4_LEGACY),y)
  40603. -CSRC += tmpnam.c tmpnam_r.c tempnam.c
  40604. -endif
  40605. -
  40606. -# getc -> alias for fgetc
  40607. -# putc -> alias for fputc
  40608. -# rename is a syscall
  40609. -
  40610. -# Implementation support functions
  40611. -CSRC += \
  40612. +# internal support functions
  40613. +CSRC-y += \
  40614. _READ.c _WRITE.c _adjust_pos.c _fopen.c _fwrite.c \
  40615. _rfill.c _stdio.c _trans2r.c _trans2w.c _wcommit.c \
  40616. _cs_funcs.c _load_inttype.c _store_inttype.c _uintmaxtostr.c
  40617. -ifeq ($(UCLIBC_HAS_FLOATS),y)
  40618. -CSRC += _fpmaxtostr.c
  40619. -endif
  40620. +CSRC-$(UCLIBC_HAS_FLOATS) += _fpmaxtostr.c
  40621. # stdio_ext.h functions
  40622. -CSRC += \
  40623. +CSRC-y += \
  40624. __fbufsize.c __flbf.c __fpending.c __fpurge.c __freadable.c \
  40625. __freading.c __fsetlocking.c __fwritable.c __fwriting.c _flushlbf.c
  40626. # Other glibc extensions
  40627. -ifeq ($(UCLIBC_HAS_GLIBC_CUSTOM_STREAMS),y)
  40628. -CSRC += fopencookie.c fmemopen.c open_memstream.c
  40629. -endif
  40630. +CSRC-$(UCLIBC_HAS_GLIBC_CUSTOM_STREAMS) += fopencookie.c fmemopen.c \
  40631. + open_memstream.c
  40632. # pthread functions
  40633. -CSRC += flockfile.c ftrylockfile.c funlockfile.c
  40634. +CSRC-y += flockfile.c ftrylockfile.c funlockfile.c
  40635. # Functions with unlocked versions
  40636. -CUSRC := \
  40637. +CUSRC-y := \
  40638. clearerr.c feof.c ferror.c fflush.c fgetc.c fgets.c fileno.c \
  40639. fputc.c fputs.c fread.c fwrite.c getchar.c putchar.c
  40640. # getc_unlocked -> alias for fgetc_unlocked
  40641. # putc_unlocked -> alias for fputc_unlocked
  40642. # vfprintf and support functions
  40643. -ifneq ($(USE_OLD_VFPRINTF),y)
  40644. +ifeq ($(USE_OLD_VFPRINTF),y)
  40645. +VF_CSRC := old_vfprintf.c
  40646. +else
  40647. +# multi source _vfprintf.c
  40648. VF_CSRC := \
  40649. vfprintf.c \
  40650. _vfprintf_internal.c \
  40651. _ppfs_init.c _ppfs_prepargs.c _ppfs_setargs.c _ppfs_parsespec.c \
  40652. register_printf_function.c parse_printf_format.c
  40653. -CSRC += $(VF_CSRC)
  40654. -else
  40655. -CSRC += old_vfprintf.c
  40656. endif
  40657. +CSRC-y += $(VF_CSRC)
  40658. # vfscanf and support functions plus other *scanf funcs
  40659. -CSRC += \
  40660. +CSRC-y += \
  40661. vfscanf.c __scan_cookie.c __psfs_parse_spec.c __psfs_do_numeric.c \
  40662. scanf.c sscanf.c fscanf.c vscanf.c vsscanf.c
  40663. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  40664. -CSRC += _wfwrite.c fwprintf.c swprintf.c vswprintf.c vwprintf.c wprintf.c \
  40665. +CSRC-$(UCLIBC_HAS_WCHAR) += \
  40666. + _wfwrite.c fwprintf.c swprintf.c vswprintf.c vwprintf.c wprintf.c \
  40667. fwide.c ungetwc.c
  40668. -CUSRC += fgetwc.c getwchar.c fgetws.c fputwc.c putwchar.c fputws.c
  40669. +CUSRC-$(UCLIBC_HAS_WCHAR) += \
  40670. + fgetwc.c getwchar.c fgetws.c fputwc.c putwchar.c fputws.c
  40671. # getwc (fgetwc alias) getwc_unlocked (fgetwc_unlocked alias)
  40672. # putwc (fputwc alias) putwc_unlocked (fputwc_unlocked alias)
  40673. -CSRC += vfwprintf.c _vfwprintf_internal.c
  40674. -CSRC += wscanf.c swscanf.c fwscanf.c vwscanf.c vswscanf.c vfwscanf.c
  40675. -endif
  40676. -
  40677. -CUSRC_UNLOCKED := $(patsubst %.c,%_unlocked.c,$(CUSRC))
  40678. +CSRC-$(UCLIBC_HAS_WCHAR) += vfwprintf.c _vfwprintf_internal.c \
  40679. + wscanf.c swscanf.c fwscanf.c vwscanf.c vswscanf.c vfwscanf.c
  40680. -CSRC += $(CUSRC) $(CUSRC_UNLOCKED)
  40681. +CUSRC_UNLOCKED := $(patsubst %.c,%_unlocked.c,$(CUSRC-y))
  40682. +CSRC-y += $(CUSRC-y) $(CUSRC_UNLOCKED)
  40683. STDIO_DIR := $(top_srcdir)libc/stdio
  40684. STDIO_OUT := $(top_builddir)libc/stdio
  40685. -STDIO_SRC := $(patsubst %.c,$(STDIO_DIR)/%.c,$(CSRC))
  40686. -STDIO_OBJ := $(patsubst %.c,$(STDIO_OUT)/%.o,$(CSRC))
  40687. +STDIO_SRC := $(patsubst %.c,$(STDIO_DIR)/%.c,$(CSRC-y))
  40688. +STDIO_OBJ := $(patsubst %.c,$(STDIO_OUT)/%.o,$(CSRC-y))
  40689. libc-y += $(STDIO_OBJ)
  40690. ifneq ($(USE_OLD_VFPRINTF),y)
  40691. libc-nomulti-y += $(patsubst %.c,$(STDIO_OUT)/%.o,$(VF_CSRC))
  40692. endif
  40693. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  40694. -libc-nomulti-y += $(STDIO_OUT)/vfwprintf.o $(STDIO_OUT)/vfwscanf.o
  40695. -endif
  40696. +libc-nomulti-$(UCLIBC_HAS_WCHAR) += $(STDIO_OUT)/vfwprintf.o \
  40697. + $(STDIO_OUT)/vfwscanf.o
  40698. objclean-y += CLEAN_libc/stdio
  40699. diff -Nur uClibc-0.9.33.2/libc/stdio/old_vfprintf.c uClibc-git/libc/stdio/old_vfprintf.c
  40700. --- uClibc-0.9.33.2/libc/stdio/old_vfprintf.c 2012-05-15 09:20:09.000000000 +0200
  40701. +++ uClibc-git/libc/stdio/old_vfprintf.c 2014-02-03 12:32:56.000000000 +0100
  40702. @@ -127,9 +127,7 @@
  40703. /**************************************************************************/
  40704. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  40705. #include "_stdio.h"
  40706. -/* #include <stdio.h> */
  40707. #include <stdarg.h>
  40708. #include <limits.h>
  40709. #include <stdint.h>
  40710. @@ -137,14 +135,9 @@
  40711. #include <errno.h>
  40712. #include <ctype.h>
  40713. #include <bits/uClibc_uintmaxtostr.h>
  40714. -#include <printf.h>
  40715. -#ifdef __UCLIBC_HAS_THREADS__
  40716. -#include <pthread.h>
  40717. -#endif /* __UCLIBC_HAS_THREADS__ */
  40718. +#include "_fpmaxtostr.h"
  40719. -
  40720. -/* #undef __UCLIBC_HAS_FLOATS__ */
  40721. /* #undef WANT_FLOAT_ERROR */
  40722. /* #define WANT_FLOAT_ERROR 1 */
  40723. @@ -208,14 +201,6 @@
  40724. #endif /* __STDIO_BUFFERS */
  40725. #ifdef __UCLIBC_HAS_FLOATS__
  40726. -#include <float.h>
  40727. -#include <bits/uClibc_fpmax.h>
  40728. -
  40729. -typedef void (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
  40730. - intptr_t buf);
  40731. -
  40732. -extern size_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  40733. - __fp_outfunc_t fp_outfunc) attribute_hidden;
  40734. static void _charpad(FILE * __restrict stream, int padchar, size_t numpad)
  40735. {
  40736. @@ -259,9 +244,6 @@
  40737. /**********************************************************************/
  40738. -extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
  40739. -extern uintmax_t _load_inttype(int desttype, const void *src, int uflag) attribute_hidden;
  40740. -
  40741. /*
  40742. * In order to ease translation to what arginfo and _print_info._flags expect,
  40743. * we map: 0:int 1:char 2:longlong 4:long 8:short
  40744. diff -Nur uClibc-0.9.33.2/libc/stdio/open_memstream.c uClibc-git/libc/stdio/open_memstream.c
  40745. --- uClibc-0.9.33.2/libc/stdio/open_memstream.c 2012-05-15 09:20:09.000000000 +0200
  40746. +++ uClibc-git/libc/stdio/open_memstream.c 2014-02-03 12:32:56.000000000 +0100
  40747. @@ -128,7 +128,7 @@
  40748. * (ie replace the FILE buffer with the cookie buffer and update FILE bufstart,
  40749. * etc. whenever we seek). */
  40750. -FILE *open_memstream(char **__restrict bufloc, size_t *__restrict sizeloc)
  40751. +FILE *open_memstream(char **bufloc, size_t *sizeloc)
  40752. {
  40753. register __oms_cookie *cookie;
  40754. register FILE *fp;
  40755. diff -Nur uClibc-0.9.33.2/libc/stdio/popen.c uClibc-git/libc/stdio/popen.c
  40756. --- uClibc-0.9.33.2/libc/stdio/popen.c 2012-05-15 09:20:09.000000000 +0200
  40757. +++ uClibc-git/libc/stdio/popen.c 2014-02-03 12:32:56.000000000 +0100
  40758. @@ -26,15 +26,6 @@
  40759. #warning "hmm... susv3 says Pipe streams are byte-oriented."
  40760. #endif /* __UCLIBC_MJN3_ONLY__ */
  40761. -
  40762. -/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
  40763. -#include <sys/syscall.h>
  40764. -#if ! defined __NR_vfork
  40765. -# define vfork fork
  40766. -# define VFORK_LOCK ((void) 0)
  40767. -# define VFORK_UNLOCK ((void) 0)
  40768. -#endif
  40769. -
  40770. #ifndef VFORK_LOCK
  40771. __UCLIBC_MUTEX_STATIC(mylock, PTHREAD_MUTEX_INITIALIZER);
  40772. # define VFORK_LOCK __UCLIBC_MUTEX_LOCK(mylock)
  40773. @@ -138,7 +129,7 @@
  40774. int pclose(FILE *stream)
  40775. {
  40776. struct popen_list_item *p;
  40777. - int stat;
  40778. + int status;
  40779. pid_t pid;
  40780. /* First, find the list entry corresponding to stream and remove it
  40781. @@ -173,8 +164,8 @@
  40782. /* SUSv3 specificly requires that pclose not return before the child
  40783. * terminates, in order to disallow pclose from returning on EINTR. */
  40784. do {
  40785. - if (waitpid(pid, &stat, 0) >= 0) {
  40786. - return stat;
  40787. + if (waitpid(pid, &status, 0) >= 0) {
  40788. + return status;
  40789. }
  40790. if (errno != EINTR) {
  40791. break;
  40792. diff -Nur uClibc-0.9.33.2/libc/stdio/putwchar.c uClibc-git/libc/stdio/putwchar.c
  40793. --- uClibc-0.9.33.2/libc/stdio/putwchar.c 2012-05-15 09:20:09.000000000 +0200
  40794. +++ uClibc-git/libc/stdio/putwchar.c 2014-02-03 12:32:56.000000000 +0100
  40795. @@ -9,7 +9,6 @@
  40796. #ifdef __DO_UNLOCKED
  40797. -
  40798. wint_t putwchar_unlocked(wchar_t wc)
  40799. {
  40800. return fputwc_unlocked(wc, stdout);
  40801. @@ -21,11 +20,9 @@
  40802. #elif defined __UCLIBC_HAS_THREADS__
  40803. -/* psm: should this be fputwc? */
  40804. -
  40805. wint_t putwchar(wchar_t wc)
  40806. {
  40807. - return fputc(wc, stdout);
  40808. + return fputwc(wc, stdout);
  40809. }
  40810. #endif
  40811. diff -Nur uClibc-0.9.33.2/libc/stdio/_scanf.c uClibc-git/libc/stdio/_scanf.c
  40812. --- uClibc-0.9.33.2/libc/stdio/_scanf.c 2012-05-15 09:20:09.000000000 +0200
  40813. +++ uClibc-git/libc/stdio/_scanf.c 2014-02-03 12:32:56.000000000 +0100
  40814. @@ -11,8 +11,8 @@
  40815. * Library General Public License for more details.
  40816. *
  40817. * You should have received a copy of the GNU Library General Public
  40818. - * License along with this library; if not, write to the Free
  40819. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  40820. + * License along with this library; if not, see
  40821. + * <http://www.gnu.org/licenses/>.
  40822. */
  40823. /* Aug 1, 2003
  40824. @@ -43,7 +43,6 @@
  40825. * standards and from an official C standard defect report.
  40826. */
  40827. -#define _ISOC99_SOURCE /* for LLONG_MAX primarily... */
  40828. #include <features.h>
  40829. #include "_stdio.h"
  40830. #include <stdlib.h>
  40831. @@ -77,14 +76,6 @@
  40832. #include <bits/uClibc_fpmax.h>
  40833. #endif /* __UCLIBC_HAS_FLOATS__ */
  40834. -#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  40835. -#ifdef L_vfscanf
  40836. -/* only emit this once */
  40837. -#warning Forcing undef of __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ until implemented!
  40838. -#endif
  40839. -#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  40840. -#endif
  40841. -
  40842. #undef __STDIO_HAS_VSSCANF
  40843. #if defined(__STDIO_BUFFERS) || !defined(__UCLIBC_HAS_WCHAR__) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  40844. #define __STDIO_HAS_VSSCANF 1
  40845. @@ -99,8 +90,6 @@
  40846. #endif
  40847. -extern void _store_inttype(void *dest, int desttype, uintmax_t val);
  40848. -
  40849. #if defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX)
  40850. extern unsigned long long
  40851. @@ -209,7 +198,7 @@
  40852. #ifdef __STDIO_BUFFERS
  40853. -int vsscanf(__const char *sp, __const char *fmt, va_list ap)
  40854. +int vsscanf(const char *sp, const char *fmt, va_list ap)
  40855. {
  40856. FILE f;
  40857. @@ -253,7 +242,7 @@
  40858. #elif !defined(__UCLIBC_HAS_WCHAR__)
  40859. -int vsscanf(__const char *sp, __const char *fmt, va_list ap)
  40860. +int vsscanf(const char *sp, const char *fmt, va_list ap)
  40861. {
  40862. __FILE_vsscanf f;
  40863. @@ -292,7 +281,7 @@
  40864. #elif defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  40865. -int vsscanf(__const char *sp, __const char *fmt, va_list ap)
  40866. +int vsscanf(const char *sp, const char *fmt, va_list ap)
  40867. {
  40868. FILE *f;
  40869. int rv = EOF;
  40870. @@ -388,9 +377,9 @@
  40871. FILE f;
  40872. f.__bufstart =
  40873. - f.__bufpos = (char *) str;
  40874. + f.__bufpos = (unsigned char *) str;
  40875. f.__bufread =
  40876. - f.__bufend = (char *)(str + wcslen(str));
  40877. + f.__bufend = (unsigned char *)(str + wcslen(str));
  40878. __STDIO_STREAM_DISABLE_GETC(&f);
  40879. __STDIO_STREAM_DISABLE_PUTC(&f);
  40880. @@ -433,18 +422,19 @@
  40881. /* float layout 0123456789012345678901 repeat n for "l[" */
  40882. -#define SPEC_CHARS "npxXoudifFeEgGaACSncs["
  40883. -/* npxXoudif eEgG CS cs[ */
  40884. +#define SPEC_CHARS "npxXoudifFeEgGaACSnmcs["
  40885. +/* npxXoudif eEgG CS cs[ */
  40886. +/* NOTE: the 'm' flag must come before any convs that support it */
  40887. -/* NOTE: Ordering is important! In particular, CONV_LEFTBRACKET
  40888. - * must immediately precede CONV_c. */
  40889. +/* NOTE: Ordering is important! The CONV_{C,S,LEFTBRACKET} must map
  40890. + simply to their lowercase equivalents. */
  40891. enum {
  40892. CONV_n = 0,
  40893. CONV_p,
  40894. CONV_x, CONV_X, CONV_o, CONV_u, CONV_d, CONV_i,
  40895. CONV_f, CONV_F, CONV_e, CONV_E, CONV_g, CONV_G, CONV_a, CONV_A,
  40896. - CONV_C, CONV_S, CONV_LEFTBRACKET, CONV_c, CONV_s, CONV_leftbracket,
  40897. + CONV_C, CONV_S, CONV_LEFTBRACKET, CONV_m, CONV_c, CONV_s, CONV_leftbracket,
  40898. CONV_percent, CONV_whitespace /* not in SPEC_* and no flags */
  40899. };
  40900. @@ -474,7 +464,7 @@
  40901. FLAG_SURPRESS = 0x10, /* MUST BE 1ST!! See DO_FLAGS. */
  40902. FLAG_THOUSANDS = 0x20,
  40903. FLAG_I18N = 0x40, /* only works for d, i, u */
  40904. - FLAG_MALLOC = 0x80, /* only works for s, S, and [ (and l[)*/
  40905. + FLAG_MALLOC = 0x80, /* only works for c, s, S, and [ (and l[)*/
  40906. };
  40907. @@ -491,7 +481,7 @@
  40908. /* fFeEgGaA */ (0x0c|FLAG_SURPRESS|FLAG_THOUSANDS|FLAG_I18N), \
  40909. /* C */ ( 0|FLAG_SURPRESS), \
  40910. /* S and l[ */ ( 0|FLAG_SURPRESS|FLAG_MALLOC), \
  40911. - /* c */ (0x04|FLAG_SURPRESS), \
  40912. + /* c */ (0x04|FLAG_SURPRESS|FLAG_MALLOC), \
  40913. /* s and [ */ (0x04|FLAG_SURPRESS|FLAG_MALLOC), \
  40914. }
  40915. @@ -904,17 +894,17 @@
  40916. if (*psfs->fmt == *p) {
  40917. int p_m_spec_chars = p - spec_chars;
  40918. -#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  40919. -#error implement gnu a flag
  40920. - if ((*p == 'a')
  40921. - && ((psfs->fmt[1] == '[') || ((psfs->fmt[1]|0x20) == 's'))
  40922. - ) { /* Assumes ascii for 's' and 'S' test. */
  40923. - psfs->flags |= FLAG_MALLOC;
  40924. + if (*p == 'm' &&
  40925. + (psfs->fmt[1] == '[' || psfs->fmt[1] == 'c' ||
  40926. + /* Assumes ascii for 's' and 'S' test. */
  40927. + (psfs->fmt[1] | 0x20) == 's'))
  40928. + {
  40929. + if (psfs->store)
  40930. + psfs->flags |= FLAG_MALLOC;
  40931. ++psfs->fmt;
  40932. ++p;
  40933. - continue; /* The related conversions follow 'a'. */
  40934. + continue; /* The related conversions follow 'm'. */
  40935. }
  40936. -#endif /* __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ */
  40937. for (p = spec_ranges; p_m_spec_chars > *p ; ++p) {}
  40938. if (((psfs->dataargtype >> 8) | psfs->flags)
  40939. @@ -928,7 +918,7 @@
  40940. psfs->dataargtype = PA_FLAG_LONG;
  40941. } else if ((p_m_spec_chars >= CONV_c)
  40942. && (psfs->dataargtype & PA_FLAG_LONG)) {
  40943. - p_m_spec_chars -= 3; /* lc -> C, ls -> S, l[ -> ?? */
  40944. + p_m_spec_chars -= CONV_c - CONV_C; /* lc -> C, ls -> S, l[ -> ?? */
  40945. }
  40946. psfs->conv_num = p_m_spec_chars;
  40947. @@ -1265,12 +1255,6 @@
  40948. while (*wf && __isascii(*wf) && (b < buf + sizeof(buf) - 1)) {
  40949. *b++ = *wf++;
  40950. }
  40951. -#ifdef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
  40952. -#error this is wrong... we need to ched in __psfs_parse_spec instead since this checks last char in buffer and conversion my have stopped before it.
  40953. - if ((*b == 'a') && ((*wf == '[') || ((*wf|0x20) == 's'))) {
  40954. - goto DONE; /* Spec was excessively long. */
  40955. - }
  40956. -#endif /* __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__ */
  40957. *b = 0;
  40958. if (b == buf) { /* Bad conversion specifier! */
  40959. goto DONE;
  40960. @@ -1390,13 +1374,36 @@
  40961. }
  40962. if (psfs.conv_num == CONV_s) {
  40963. + /* We might have to handle the allocation ourselves */
  40964. + int len;
  40965. + /* With 'm', we actually got a pointer to a pointer */
  40966. + unsigned char **ptr = (void *)b;
  40967. +
  40968. + i = 0;
  40969. + if (psfs.flags & FLAG_MALLOC) {
  40970. + len = 0;
  40971. + b = NULL;
  40972. + } else
  40973. + len = -1;
  40974. +
  40975. /* Yes, believe it or not, a %s conversion can store nuls. */
  40976. while ((__scan_getc(&sc) >= 0) && !isspace(sc.cc)) {
  40977. zero_conversions = 0;
  40978. - *b = sc.cc;
  40979. - b += psfs.store;
  40980. + if (i == len) {
  40981. + /* Pick a size that won't trigger a lot of
  40982. + * mallocs early on ... */
  40983. + len += 256;
  40984. + b = realloc(b, len + 1);
  40985. + }
  40986. + b[i] = sc.cc;
  40987. + i += psfs.store;
  40988. fail = 0;
  40989. }
  40990. +
  40991. + if (psfs.flags & FLAG_MALLOC)
  40992. + *ptr = b;
  40993. + /* The code below takes care of terminating NUL */
  40994. + b += i;
  40995. } else {
  40996. #ifdef __UCLIBC_HAS_WCHAR__
  40997. assert((psfs.conv_num == CONV_LEFTBRACKET) || \
  40998. diff -Nur uClibc-0.9.33.2/libc/stdio/_stdio.c uClibc-git/libc/stdio/_stdio.c
  40999. --- uClibc-0.9.33.2/libc/stdio/_stdio.c 2012-05-15 09:20:09.000000000 +0200
  41000. +++ uClibc-git/libc/stdio/_stdio.c 2014-02-03 12:32:56.000000000 +0100
  41001. @@ -7,7 +7,6 @@
  41002. #include "_stdio.h"
  41003. -
  41004. /* This is pretty much straight from uClibc, but with one important
  41005. * difference.
  41006. *
  41007. @@ -185,7 +184,7 @@
  41008. /**********************************************************************/
  41009. /* We assume here that we are the only remaining thread. */
  41010. -void attribute_hidden _stdio_term(void)
  41011. +void _stdio_term(void)
  41012. {
  41013. #if defined(__STDIO_BUFFERS) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  41014. register FILE *ptr;
  41015. @@ -252,7 +251,7 @@
  41016. }
  41017. #if defined __STDIO_BUFFERS || !defined __UCLIBC__
  41018. -void attribute_hidden _stdio_init(void)
  41019. +void _stdio_init(void)
  41020. {
  41021. #ifdef __STDIO_BUFFERS
  41022. int old_errno = errno;
  41023. @@ -277,10 +276,6 @@
  41024. #error Assumption violated about __MASK_READING and __FLAG_UNGOT
  41025. #endif
  41026. -#ifdef __UCLIBC_HAS_THREADS__
  41027. -#include <pthread.h>
  41028. -#endif
  41029. -
  41030. #ifndef NDEBUG
  41031. void attribute_hidden _stdio_validate_FILE(const FILE *stream)
  41032. diff -Nur uClibc-0.9.33.2/libc/stdio/_stdio.h uClibc-git/libc/stdio/_stdio.h
  41033. --- uClibc-0.9.33.2/libc/stdio/_stdio.h 2012-05-15 09:20:09.000000000 +0200
  41034. +++ uClibc-git/libc/stdio/_stdio.h 2014-02-03 12:32:56.000000000 +0100
  41035. @@ -39,6 +39,9 @@
  41036. #ifdef __UCLIBC_HAS_THREADS__
  41037. +extern void __stdio_init_mutex(__UCLIBC_MUTEX_TYPE *m) attribute_hidden;
  41038. +
  41039. +extern volatile int _stdio_openlist_use_count attribute_hidden; /* _stdio_openlist_del_lock */
  41040. #define __STDIO_OPENLIST_INC_USE \
  41041. do { \
  41042. __STDIO_THREADLOCK_OPENLIST_DEL; \
  41043. @@ -51,6 +54,7 @@
  41044. #define __STDIO_OPENLIST_DEC_USE \
  41045. _stdio_openlist_dec_use()
  41046. +extern int _stdio_openlist_del_count attribute_hidden; /* _stdio_openlist_del_lock */
  41047. #define __STDIO_OPENLIST_INC_DEL_CNT \
  41048. do { \
  41049. __STDIO_THREADLOCK_OPENLIST_DEL; \
  41050. @@ -308,6 +312,9 @@
  41051. extern int __stdio_trans2r_o(FILE *__restrict stream, int oflag) attribute_hidden;
  41052. extern int __stdio_trans2w_o(FILE *__restrict stream, int oflag) attribute_hidden;
  41053. +extern uintmax_t _load_inttype(int desttype, register const void *src, int uflag) attribute_hidden;
  41054. +extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
  41055. +
  41056. /**********************************************************************/
  41057. #ifdef __STDIO_BUFFERS
  41058. diff -Nur uClibc-0.9.33.2/libc/stdio/_store_inttype.c uClibc-git/libc/stdio/_store_inttype.c
  41059. --- uClibc-0.9.33.2/libc/stdio/_store_inttype.c 2012-05-15 09:20:09.000000000 +0200
  41060. +++ uClibc-git/libc/stdio/_store_inttype.c 2014-02-03 12:32:56.000000000 +0100
  41061. @@ -28,7 +28,6 @@
  41062. /* We assume int may be short or long, but short and long are different. */
  41063. -void _store_inttype(register void *dest, int desttype, uintmax_t val) attribute_hidden;
  41064. void _store_inttype(register void *dest, int desttype, uintmax_t val)
  41065. {
  41066. if (desttype == __PA_FLAG_CHAR) { /* assume char not int */
  41067. diff -Nur uClibc-0.9.33.2/libc/stdio/tempnam.c uClibc-git/libc/stdio/tempnam.c
  41068. --- uClibc-0.9.33.2/libc/stdio/tempnam.c 2012-05-15 09:20:09.000000000 +0200
  41069. +++ uClibc-git/libc/stdio/tempnam.c 2014-02-03 12:32:56.000000000 +0100
  41070. @@ -13,8 +13,7 @@
  41071. You should have received a copy of the GNU Library General Public
  41072. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41073. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41074. - Boston, MA 02111-1307, USA. */
  41075. + see <http://www.gnu.org/licenses/>. */
  41076. #include <stdio.h>
  41077. #include <string.h>
  41078. diff -Nur uClibc-0.9.33.2/libc/stdio/tmpfile.c uClibc-git/libc/stdio/tmpfile.c
  41079. --- uClibc-0.9.33.2/libc/stdio/tmpfile.c 2012-05-15 09:20:09.000000000 +0200
  41080. +++ uClibc-git/libc/stdio/tmpfile.c 2014-02-03 12:32:56.000000000 +0100
  41081. @@ -13,8 +13,7 @@
  41082. You should have received a copy of the GNU Library General Public
  41083. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41084. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41085. - Boston, MA 02111-1307, USA. */
  41086. + see <http://www.gnu.org/licenses/>. */
  41087. #include <features.h>
  41088. #include <stdio.h>
  41089. diff -Nur uClibc-0.9.33.2/libc/stdio/tmpnam.c uClibc-git/libc/stdio/tmpnam.c
  41090. --- uClibc-0.9.33.2/libc/stdio/tmpnam.c 2012-05-15 09:20:09.000000000 +0200
  41091. +++ uClibc-git/libc/stdio/tmpnam.c 2014-02-03 12:32:56.000000000 +0100
  41092. @@ -12,9 +12,8 @@
  41093. Lesser General Public License for more details.
  41094. You should have received a copy of the GNU Lesser General Public
  41095. - License along with the GNU C Library; if not, write to the Free
  41096. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41097. - 02111-1307 USA. */
  41098. + License along with the GNU C Library; if not, see
  41099. + <http://www.gnu.org/licenses/>. */
  41100. #include <stdio.h>
  41101. #include <string.h>
  41102. diff -Nur uClibc-0.9.33.2/libc/stdio/tmpnam_r.c uClibc-git/libc/stdio/tmpnam_r.c
  41103. --- uClibc-0.9.33.2/libc/stdio/tmpnam_r.c 2012-05-15 09:20:09.000000000 +0200
  41104. +++ uClibc-git/libc/stdio/tmpnam_r.c 2014-02-03 12:32:56.000000000 +0100
  41105. @@ -13,8 +13,7 @@
  41106. You should have received a copy of the GNU Library General Public
  41107. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41108. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41109. - Boston, MA 02111-1307, USA. */
  41110. + see <http://www.gnu.org/licenses/>. */
  41111. #include <stdio.h>
  41112. #include "../misc/internals/tempname.h"
  41113. diff -Nur uClibc-0.9.33.2/libc/stdio/_uintmaxtostr.c uClibc-git/libc/stdio/_uintmaxtostr.c
  41114. --- uClibc-0.9.33.2/libc/stdio/_uintmaxtostr.c 2012-05-15 09:20:09.000000000 +0200
  41115. +++ uClibc-git/libc/stdio/_uintmaxtostr.c 2014-02-03 12:32:56.000000000 +0100
  41116. @@ -5,7 +5,6 @@
  41117. * Dedicated to Toni. See uClibc/DEDICATION.mjn3 for details.
  41118. */
  41119. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  41120. #include "_stdio.h"
  41121. #include <limits.h>
  41122. #include <locale.h>
  41123. diff -Nur uClibc-0.9.33.2/libc/stdio/_vfprintf.c uClibc-git/libc/stdio/_vfprintf.c
  41124. --- uClibc-0.9.33.2/libc/stdio/_vfprintf.c 2012-05-15 09:20:09.000000000 +0200
  41125. +++ uClibc-git/libc/stdio/_vfprintf.c 2014-02-03 12:32:56.000000000 +0100
  41126. @@ -12,8 +12,8 @@
  41127. * Library General Public License for more details.
  41128. *
  41129. * You should have received a copy of the GNU Library General Public
  41130. - * License along with this library; if not, write to the Free
  41131. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  41132. + * License along with this library; if not, see
  41133. + * <http://www.gnu.org/licenses/>.
  41134. */
  41135. /* This code needs a lot of clean up. Some of that is on hold until uClibc
  41136. @@ -88,7 +88,6 @@
  41137. * treats this as an error.
  41138. */
  41139. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  41140. #include <features.h>
  41141. #include "_stdio.h"
  41142. #include <stdlib.h>
  41143. @@ -101,7 +100,6 @@
  41144. #include <stdint.h>
  41145. #include <errno.h>
  41146. #include <locale.h>
  41147. -#include <printf.h>
  41148. #ifdef __UCLIBC_HAS_THREADS__
  41149. # include <stdio_ext.h>
  41150. @@ -126,30 +124,16 @@
  41151. /**********************************************************************/
  41152. /* These provide some control over printf's feature set */
  41153. -/* This is undefined below depeding on uClibc's configuration. */
  41154. -#define __STDIO_PRINTF_FLOAT 1
  41155. +/* Now controlled by uClibc_config.h. */
  41156. +/* #define __UCLIBC_HAS_FLOATS__ 1 */
  41157. -/* Now controlled by uClibc_stdio.h. */
  41158. +/* Now controlled by uClibc_config.h. */
  41159. /* #define __UCLIBC_HAS_PRINTF_M_SPEC__ */
  41160. /**********************************************************************/
  41161. -#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_FLOATS__)
  41162. -# undef __STDIO_PRINTF_FLOAT
  41163. -#endif
  41164. -
  41165. -#ifdef __BCC__
  41166. -# undef __STDIO_PRINTF_FLOAT
  41167. -#endif
  41168. -
  41169. -#ifdef __STDIO_PRINTF_FLOAT
  41170. -# include <float.h>
  41171. -# include <bits/uClibc_fpmax.h>
  41172. -#else
  41173. -# undef L__fpmaxtostr
  41174. -#endif
  41175. -
  41176. +#include "_fpmaxtostr.h"
  41177. #undef __STDIO_HAS_VSNPRINTF
  41178. #if defined(__STDIO_BUFFERS) || defined(__USE_OLD_VFPRINTF__) || defined(__UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__)
  41179. @@ -158,7 +142,7 @@
  41180. /**********************************************************************/
  41181. -/* Now controlled by uClibc_stdio.h. */
  41182. +/* Now controlled by uClibc_config.h. */
  41183. /* #define __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ */
  41184. #ifdef __UCLIBC_MJN3_ONLY__
  41185. @@ -361,7 +345,7 @@
  41186. # ifdef ULLONG_MAX
  41187. unsigned long long ull;
  41188. # endif
  41189. -# ifdef __STDIO_PRINTF_FLOAT
  41190. +# ifdef __UCLIBC_HAS_FLOATS__
  41191. double d;
  41192. long double ld;
  41193. # endif
  41194. @@ -398,22 +382,11 @@
  41195. /* TODO: fix printf to return 0 and set errno if format error. Standard says
  41196. only returns -1 if sets error indicator for the stream. */
  41197. -#ifdef __STDIO_PRINTF_FLOAT
  41198. -typedef size_t (__fp_outfunc_t)(FILE *fp, intptr_t type, intptr_t len,
  41199. - intptr_t buf);
  41200. -
  41201. -extern ssize_t _fpmaxtostr(FILE * fp, __fpmax_t x, struct printf_info *info,
  41202. - __fp_outfunc_t fp_outfunc) attribute_hidden;
  41203. -#endif
  41204. -
  41205. extern int _ppfs_init(ppfs_t *ppfs, const char *fmt0) attribute_hidden; /* validates */
  41206. extern void _ppfs_prepargs(ppfs_t *ppfs, va_list arg) attribute_hidden; /* sets posargptrs */
  41207. extern void _ppfs_setargs(ppfs_t *ppfs) attribute_hidden; /* sets argptrs for current spec */
  41208. extern int _ppfs_parsespec(ppfs_t *ppfs) attribute_hidden; /* parses specifier */
  41209. -extern void _store_inttype(void *dest, int desttype, uintmax_t val) attribute_hidden;
  41210. -extern uintmax_t _load_inttype(int desttype, const void *src, int uflag) attribute_hidden;
  41211. -
  41212. /**********************************************************************/
  41213. #ifdef L_parse_printf_format
  41214. @@ -564,7 +537,7 @@
  41215. ppfs->fmtpos = fmt0; /* rewind */
  41216. }
  41217. -#ifdef NL_MAX_ARG
  41218. +#ifdef NL_ARGMAX
  41219. /* If we have positional args, make sure we know all the types. */
  41220. {
  41221. register int *p = ppfs->argtype;
  41222. @@ -576,7 +549,7 @@
  41223. ++p;
  41224. }
  41225. }
  41226. -#endif /* NL_MAX_ARG */
  41227. +#endif /* NL_ARGMAX */
  41228. return 0;
  41229. }
  41230. @@ -653,7 +626,7 @@
  41231. /* we're assuming wchar_t is at least an int */
  41232. GET_VA_ARG(p,wc,wchar_t,ppfs->arg);
  41233. break;
  41234. -#ifdef __STDIO_PRINTF_FLOAT
  41235. +#ifdef __UCLIBC_HAS_FLOATS__
  41236. /* PA_FLOAT */
  41237. case PA_DOUBLE:
  41238. GET_VA_ARG(p,d,double,ppfs->arg);
  41239. @@ -661,12 +634,12 @@
  41240. case (PA_DOUBLE|PA_FLAG_LONG_DOUBLE):
  41241. GET_VA_ARG(p,ld,long double,ppfs->arg);
  41242. break;
  41243. -#else /* __STDIO_PRINTF_FLOAT */
  41244. +#else /* __UCLIBC_HAS_FLOATS__ */
  41245. case PA_DOUBLE:
  41246. case (PA_DOUBLE|PA_FLAG_LONG_DOUBLE):
  41247. assert(0);
  41248. continue;
  41249. -#endif /* __STDIO_PRINTF_FLOAT */
  41250. +#endif /* __UCLIBC_HAS_FLOATS__ */
  41251. default:
  41252. /* TODO -- really need to ensure this can't happen */
  41253. assert(ppfs->argtype[i-1] & PA_FLAG_PTR);
  41254. @@ -743,7 +716,7 @@
  41255. PA_INT|PA_FLAG_LONG,
  41256. PA_INT|PA_FLAG_LONG_LONG,
  41257. PA_WCHAR,
  41258. -#ifdef __STDIO_PRINTF_FLOAT
  41259. +#ifdef __UCLIBC_HAS_FLOATS__
  41260. /* PA_FLOAT, */
  41261. PA_DOUBLE,
  41262. PA_DOUBLE|PA_FLAG_LONG_DOUBLE,
  41263. @@ -766,7 +739,7 @@
  41264. PROMOTED_SIZE_OF(long), /* TODO -- is this correct? (above too) */
  41265. #endif
  41266. PROMOTED_SIZE_OF(wchar_t),
  41267. -#ifdef __STDIO_PRINTF_FLOAT
  41268. +#ifdef __UCLIBC_HAS_FLOATS__
  41269. /* PROMOTED_SIZE_OF(float), */
  41270. PROMOTED_SIZE_OF(double),
  41271. PROMOTED_SIZE_OF(long double),
  41272. @@ -1199,7 +1172,7 @@
  41273. #define _outnstr(stream, string, len) ((len > 0) ? __stdio_fwrite((const unsigned char *)(string), len, stream) : 0)
  41274. #define FP_OUT _fp_out_narrow
  41275. -#ifdef __STDIO_PRINTF_FLOAT
  41276. +#ifdef __UCLIBC_HAS_FLOATS__
  41277. static size_t _fp_out_narrow(FILE *fp, intptr_t type, intptr_t len, intptr_t buf)
  41278. {
  41279. @@ -1219,7 +1192,7 @@
  41280. return r + OUTNSTR(fp, (const char *) buf, len);
  41281. }
  41282. -#endif /* __STDIO_PRINTF_FLOAT */
  41283. +#endif /* __UCLIBC_HAS_FLOATS__ */
  41284. #else /* L__vfprintf_internal */
  41285. @@ -1229,7 +1202,7 @@
  41286. #define STRLEN wcslen
  41287. #define _PPFS_init _ppwfs_init
  41288. /* Pulls in fseek: */
  41289. -#define OUTPUT(F,S) fputws(S,F)
  41290. +#define OUTPUT(F,S) fputws_unlocked(S,F)
  41291. /* TODO: #define OUTPUT(F,S) _wstdio_fwrite((S),wcslen(S),(F)) */
  41292. #define _outnwcs(stream, wstring, len) _wstdio_fwrite((const wchar_t *)(wstring), len, stream)
  41293. #define FP_OUT _fp_out_wide
  41294. @@ -1261,16 +1234,7 @@
  41295. return wclen - todo;
  41296. }
  41297. -#ifdef __STDIO_PRINTF_FLOAT
  41298. -
  41299. -#ifdef __UCLIBC_MJN3_ONLY__
  41300. -#warning TODO: Move defines from _fpmaxtostr. Put them in a common header.
  41301. -#endif
  41302. -
  41303. -/* The following defines are from _fpmaxtostr.*/
  41304. -#define DIGITS_PER_BLOCK 9
  41305. -#define NUM_DIGIT_BLOCKS ((DECIMAL_DIG+DIGITS_PER_BLOCK-1)/DIGITS_PER_BLOCK)
  41306. -#define BUF_SIZE ( 3 + NUM_DIGIT_BLOCKS * DIGITS_PER_BLOCK )
  41307. +#ifdef __UCLIBC_HAS_FLOATS__
  41308. static size_t _fp_out_wide(FILE *fp, intptr_t type, intptr_t len, intptr_t buf)
  41309. {
  41310. @@ -1318,7 +1282,7 @@
  41311. return r;
  41312. }
  41313. -#endif /* __STDIO_PRINTF_FLOAT */
  41314. +#endif /* __UCLIBC_HAS_FLOATS__ */
  41315. static int _ppwfs_init(register ppfs_t *ppfs, const wchar_t *fmt0)
  41316. {
  41317. @@ -1608,7 +1572,7 @@
  41318. }
  41319. numfill = ((numfill > SLEN) ? numfill - SLEN : 0);
  41320. } else if (ppfs->conv_num <= CONV_A) { /* floating point */
  41321. -#ifdef __STDIO_PRINTF_FLOAT
  41322. +#ifdef __UCLIBC_HAS_FLOATS__
  41323. ssize_t nf;
  41324. nf = _fpmaxtostr(stream,
  41325. (__fpmax_t)
  41326. @@ -1622,7 +1586,7 @@
  41327. *count += nf;
  41328. return 0;
  41329. -#else /* __STDIO_PRINTF_FLOAT */
  41330. +#else /* __UCLIBC_HAS_FLOATS__ */
  41331. return -1; /* TODO -- try to continue? */
  41332. #endif
  41333. } else if (ppfs->conv_num <= CONV_S) { /* wide char or string */
  41334. diff -Nur uClibc-0.9.33.2/libc/stdlib/a64l.c uClibc-git/libc/stdlib/a64l.c
  41335. --- uClibc-0.9.33.2/libc/stdlib/a64l.c 2012-05-15 09:20:09.000000000 +0200
  41336. +++ uClibc-git/libc/stdlib/a64l.c 2014-02-03 12:32:56.000000000 +0100
  41337. @@ -13,9 +13,8 @@
  41338. Lesser General Public License for more details.
  41339. You should have received a copy of the GNU Lesser General Public
  41340. - License along with the GNU C Library; if not, write to the Free
  41341. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41342. - 02111-1307 USA. */
  41343. + License along with the GNU C Library; if not, see
  41344. + <http://www.gnu.org/licenses/>. */
  41345. #include <stdlib.h>
  41346. diff -Nur uClibc-0.9.33.2/libc/stdlib/abort.c uClibc-git/libc/stdlib/abort.c
  41347. --- uClibc-0.9.33.2/libc/stdlib/abort.c 2012-05-15 09:20:09.000000000 +0200
  41348. +++ uClibc-git/libc/stdlib/abort.c 2014-02-03 12:32:56.000000000 +0100
  41349. @@ -13,8 +13,7 @@
  41350. You should have received a copy of the GNU Library General Public
  41351. License along with the GNU C Library; see the file COPYING.LIB. If
  41352. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  41353. -Cambridge, MA 02139, USA. */
  41354. +not, see <http://www.gnu.org/licenses/>. */
  41355. /* Hacked up for uClibc by Erik Andersen */
  41356. @@ -47,9 +46,6 @@
  41357. # warning "no abort instruction defined for your arch"
  41358. #endif
  41359. -#ifdef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
  41360. -extern void weak_function _stdio_term(void) attribute_hidden;
  41361. -#endif
  41362. static smallint been_there_done_that = 0;
  41363. /* Be prepared in case multiple threads try to abort() */
  41364. diff -Nur uClibc-0.9.33.2/libc/stdlib/arc4random.c uClibc-git/libc/stdlib/arc4random.c
  41365. --- uClibc-0.9.33.2/libc/stdlib/arc4random.c 2012-05-15 09:20:09.000000000 +0200
  41366. +++ uClibc-git/libc/stdlib/arc4random.c 2014-02-03 12:32:56.000000000 +0100
  41367. @@ -1,24 +1,29 @@
  41368. -/* $$$: arc4random.c 2005/02/08 robert */
  41369. -/* $NetBSD: arc4random.c,v 1.5.2.1 2004/03/26 22:52:50 jmc Exp $ */
  41370. -/* $OpenBSD: arc4random.c,v 1.6 2001/06/05 05:05:38 pvalchev Exp $ */
  41371. -
  41372. /*
  41373. - * Arc4 random number generator for OpenBSD.
  41374. - * Copyright 1996 David Mazieres <dm@lcs.mit.edu>.
  41375. + * Copyright (c) 1996, David Mazieres <dm@uun.org>
  41376. *
  41377. - * Modification and redistribution in source and binary forms is
  41378. - * permitted provided that due credit is given to the author and the
  41379. - * OpenBSD project by leaving this copyright notice intact.
  41380. + * Permission to use, copy, modify, and distribute this software for any
  41381. + * purpose with or without fee is hereby granted, provided that the above
  41382. + * copyright notice and this permission notice appear in all copies.
  41383. + *
  41384. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  41385. + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  41386. + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  41387. + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  41388. + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  41389. + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  41390. + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  41391. */
  41392. /*
  41393. + * Arc4 random number generator for OpenBSD.
  41394. + *
  41395. * This code is derived from section 17.1 of Applied Cryptography,
  41396. * second edition, which describes a stream cipher allegedly
  41397. * compatible with RSA Labs "RC4" cipher (the actual description of
  41398. * which is a trade secret). The same algorithm is used as a stream
  41399. * cipher called "arcfour" in Tatu Ylonen's ssh package.
  41400. *
  41401. - * Here the stream cipher has been modified always to include the time
  41402. + * Here the stream cipher has been modified always to include entropy
  41403. * when initializing the state. That makes it impossible to
  41404. * regenerate the same random sequence twice, so this can't be used
  41405. * for encryption, but will generate good random numbers.
  41406. @@ -26,32 +31,26 @@
  41407. * RC4 is a registered trademark of RSA Laboratories.
  41408. */
  41409. +/* $OpenBSD: arc4random.c,v 1.16 2007/02/12 19:58:47 otto Exp $ */
  41410. +
  41411. #include <features.h>
  41412. +
  41413. #include <fcntl.h>
  41414. #include <stdlib.h>
  41415. #include <unistd.h>
  41416. #include <sys/types.h>
  41417. -#include <sys/param.h>
  41418. #include <sys/time.h>
  41419. -#ifdef __ARC4RANDOM_USE_ERANDOM__
  41420. -#include <sys/sysctl.h>
  41421. -#endif
  41422. -
  41423. struct arc4_stream {
  41424. - uint8_t i;
  41425. - uint8_t j;
  41426. - uint8_t s[256];
  41427. + u_int8_t i;
  41428. + u_int8_t j;
  41429. + u_int8_t s[256];
  41430. };
  41431. -static int rs_initialized;
  41432. +static smallint rs_initialized;
  41433. static struct arc4_stream rs;
  41434. -
  41435. -static __inline__ void arc4_init(struct arc4_stream *);
  41436. -static __inline__ void arc4_addrandom(struct arc4_stream *, u_char *, int);
  41437. -static void arc4_stir(struct arc4_stream *);
  41438. -static __inline__ uint8_t arc4_getbyte(struct arc4_stream *);
  41439. -static __inline__ uint32_t arc4_getword(struct arc4_stream *);
  41440. +static pid_t arc4_stir_pid;
  41441. +static int arc4_count;
  41442. static __inline__ void
  41443. arc4_init(struct arc4_stream *as)
  41444. @@ -64,11 +63,25 @@
  41445. as->j = 0;
  41446. }
  41447. +static __inline__ u_int8_t
  41448. +arc4_getbyte(struct arc4_stream *as)
  41449. +{
  41450. + u_int8_t si, sj;
  41451. +
  41452. + as->i = (as->i + 1);
  41453. + si = as->s[as->i];
  41454. + as->j = (as->j + si);
  41455. + sj = as->s[as->j];
  41456. + as->s[as->i] = sj;
  41457. + as->s[as->j] = si;
  41458. + return (as->s[(si + sj) & 0xff]);
  41459. +}
  41460. +
  41461. static __inline__ void
  41462. arc4_addrandom(struct arc4_stream *as, u_char *dat, int datlen)
  41463. {
  41464. int n;
  41465. - uint8_t si;
  41466. + u_int8_t si;
  41467. as->i--;
  41468. for (n = 0; n < 256; n++) {
  41469. @@ -84,71 +97,88 @@
  41470. static void
  41471. arc4_stir(struct arc4_stream *as)
  41472. {
  41473. - int fd;
  41474. - struct {
  41475. - struct timeval tv;
  41476. - uint rnd[(128 - sizeof(struct timeval)) / sizeof(uint)];
  41477. - } rdat;
  41478. int n;
  41479. + u_char rnd[128];
  41480. + struct timeval tv;
  41481. +
  41482. +#ifndef __ARC4RANDOM_USES_NODEV__
  41483. + int fd;
  41484. - gettimeofday(&rdat.tv, NULL);
  41485. fd = open("/dev/urandom", O_RDONLY);
  41486. if (fd != -1) {
  41487. - read(fd, rdat.rnd, sizeof(rdat.rnd));
  41488. + read(fd, rnd, sizeof(rnd));
  41489. close(fd);
  41490. }
  41491. -#ifdef __ARC4RANDOM_USE_ERANDOM__
  41492. + /* Did the pseudo-random device fail? Use gettimeofday(). */
  41493. + else
  41494. +#endif
  41495. + if (gettimeofday(&tv, NULL) != (-1)) {
  41496. +
  41497. + /* Initialize the first element so it's hopefully not '0',
  41498. + * to help out the next loop. Tossing in some prime numbers
  41499. + * probably can't hurt. */
  41500. + rnd[0] = (tv.tv_sec % 10000) * 3 + tv.tv_usec * 7 + \
  41501. + (getpid() % 1000) * 13;
  41502. +
  41503. + for (n = 1; n < 127 ; n++) {
  41504. +
  41505. + /* Take advantage of the stack space. Only initialize
  41506. + * elements equal to '0'. This will make the rnd[]
  41507. + * array much less vulnerable to timing attacks. Here
  41508. + * we'll stir getpid() into the value of the previous
  41509. + * element. Approximately 1 in 128 elements will still
  41510. + * become '0'. */
  41511. +
  41512. + if (rnd[n] == 0) {
  41513. + rnd[n] = ((rnd[n - 1] + n) ^ \
  41514. + ((getpid() % 1000) * 17));
  41515. + }
  41516. + }
  41517. + }
  41518. else {
  41519. - int mib[3];
  41520. - uint i;
  41521. - size_t len;
  41522. -
  41523. - /* Device could not be opened, we might be chrooted, take
  41524. - * randomness from sysctl. */
  41525. -
  41526. - mib[0] = CTL_KERN;
  41527. - mib[1] = KERN_RANDOM;
  41528. - mib[2] = RANDOM_ERANDOM;
  41529. -
  41530. - for (i = 0; i < sizeof(rdat.rnd) / sizeof(uint); i++) {
  41531. - len = sizeof(uint);
  41532. - if (sysctl(mib, 3, &rdat.rnd[i], &len, NULL, 0) == -1)
  41533. - break;
  41534. + /* gettimeofday() failed? Do the same thing as above, but only
  41535. + * with getpid(). */
  41536. +
  41537. + rnd[0] = (getpid() % 1000) * 19;
  41538. + for (n = 1; n < 127 ; n++) {
  41539. + if (rnd[n] == 0) {
  41540. + rnd[n] = ((rnd[n - 1] + n) ^ \
  41541. + ((getpid() % 1000) * 23));
  41542. + }
  41543. }
  41544. }
  41545. -#endif
  41546. - arc4_addrandom(as, (void *) &rdat, sizeof(rdat));
  41547. + arc4_stir_pid = getpid();
  41548. + arc4_addrandom(as, rnd, sizeof(rnd));
  41549. /*
  41550. - * Throw away the first N words of output, as suggested in the
  41551. - * paper "Weaknesses in the Key Scheduling Algorithm of RC4"
  41552. - * by Fluher, Mantin, and Shamir.
  41553. + * Discard early keystream, as per recommendations in:
  41554. * http://www.wisdom.weizmann.ac.il/~itsik/RC4/Papers/Rc4_ksa.ps
  41555. - * N = 256 in our case.
  41556. */
  41557. - for (n = 0; n < 256 * 4; n++)
  41558. - arc4_getbyte(as);
  41559. + for (n = 0; n < 256; n++)
  41560. + (void)arc4_getbyte(as);
  41561. + arc4_count = 1600000;
  41562. }
  41563. -static __inline__ uint8_t
  41564. -arc4_getbyte(struct arc4_stream *as)
  41565. +#if 0
  41566. +static void __arc4random_stir(void);
  41567. +/*
  41568. + * __arc4_getbyte() is a libc private function intended for use
  41569. + * with malloc.
  41570. + */
  41571. +u_int8_t
  41572. +__arc4_getbyte(void)
  41573. {
  41574. - uint8_t si, sj;
  41575. -
  41576. - as->i = (as->i + 1);
  41577. - si = as->s[as->i];
  41578. - as->j = (as->j + si);
  41579. - sj = as->s[as->j];
  41580. - as->s[as->i] = sj;
  41581. - as->s[as->j] = si;
  41582. - return (as->s[(si + sj) & 0xff]);
  41583. + if (--arc4_count == 0 || !rs_initialized)
  41584. + __arc4random_stir();
  41585. + return arc4_getbyte(&rs);
  41586. }
  41587. +#endif
  41588. -static __inline__ uint32_t
  41589. +static __inline__ u_int32_t
  41590. arc4_getword(struct arc4_stream *as)
  41591. {
  41592. - uint32_t val;
  41593. + u_int32_t val;
  41594. val = arc4_getbyte(as) << 24;
  41595. val |= arc4_getbyte(as) << 16;
  41596. val |= arc4_getbyte(as) << 8;
  41597. @@ -175,23 +205,11 @@
  41598. arc4_addrandom(&rs, dat, datlen);
  41599. }
  41600. -uint32_t
  41601. +u_int32_t
  41602. arc4random(void)
  41603. {
  41604. - if (!rs_initialized)
  41605. + arc4_count -= 4;
  41606. + if (arc4_count <= 0 || !rs_initialized || arc4_stir_pid != getpid())
  41607. __arc4random_stir();
  41608. return arc4_getword(&rs);
  41609. }
  41610. -
  41611. -#if 0
  41612. -/*-------- Test code --------*/
  41613. -#include <stdlib.h>
  41614. -#include <stdio.h>
  41615. -
  41616. -int main(void) {
  41617. - int random_number;
  41618. - random_number = arc4random() % 65536;
  41619. - printf("%d\n", random_number);
  41620. - return 0;
  41621. -}
  41622. -#endif
  41623. diff -Nur uClibc-0.9.33.2/libc/stdlib/_atexit.c uClibc-git/libc/stdlib/_atexit.c
  41624. --- uClibc-0.9.33.2/libc/stdlib/_atexit.c 2012-05-15 09:20:09.000000000 +0200
  41625. +++ uClibc-git/libc/stdlib/_atexit.c 2014-02-03 12:32:56.000000000 +0100
  41626. @@ -40,11 +40,12 @@
  41627. #include <features.h>
  41628. #include <unistd.h>
  41629. #include <stdlib.h>
  41630. +#include <stdio.h>
  41631. #include <errno.h>
  41632. #include <atomic.h>
  41633. #include <bits/uClibc_mutex.h>
  41634. -__UCLIBC_MUTEX_EXTERN(__atexit_lock);
  41635. +__UCLIBC_MUTEX_EXTERN(__atexit_lock) attribute_hidden;
  41636. @@ -240,6 +241,16 @@
  41637. __UCLIBC_MUTEX_LOCK(__atexit_lock);
  41638. + /*
  41639. + * Reuse free slots at the end of the list.
  41640. + * This avoids eating memory when dlopen and dlclose modules multiple times.
  41641. + */
  41642. + while (__exit_count > 0) {
  41643. + if (__exit_function_table[__exit_count-1].type == ef_free) {
  41644. + --__exit_count;
  41645. + } else break;
  41646. + }
  41647. +
  41648. #ifdef __UCLIBC_DYNAMIC_ATEXIT__
  41649. /* If we are out of function table slots, make some more */
  41650. if (__exit_slots < __exit_count+1) {
  41651. @@ -318,8 +329,7 @@
  41652. attribute_hidden void (*__exit_cleanup)(int) = 0;
  41653. __UCLIBC_MUTEX_INIT(__atexit_lock, PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP);
  41654. -extern void __uClibc_fini(void);
  41655. -libc_hidden_proto(__uClibc_fini)
  41656. +extern void __uClibc_fini(void) attribute_hidden;
  41657. /*
  41658. * Normal program termination
  41659. diff -Nur uClibc-0.9.33.2/libc/stdlib/bsd_getpt.c uClibc-git/libc/stdlib/bsd_getpt.c
  41660. --- uClibc-0.9.33.2/libc/stdlib/bsd_getpt.c 2012-05-15 09:20:09.000000000 +0200
  41661. +++ uClibc-git/libc/stdlib/bsd_getpt.c 2014-02-03 12:32:56.000000000 +0100
  41662. @@ -13,9 +13,8 @@
  41663. Lesser General Public License for more details.
  41664. You should have received a copy of the GNU Lesser General Public
  41665. - License along with the GNU C Library; if not, write to the Free
  41666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41667. - 02111-1307 USA. */
  41668. + License along with the GNU C Library; if not, see
  41669. + <http://www.gnu.org/licenses/>. */
  41670. #include <errno.h>
  41671. #include <fcntl.h>
  41672. @@ -40,7 +39,7 @@
  41673. const char __libc_ptyname2[] attribute_hidden = PTYNAME2;
  41674. /* Open a master pseudo terminal and return its file descriptor. */
  41675. -int
  41676. +static __inline__ int
  41677. __getpt (void)
  41678. {
  41679. char buf[sizeof (_PATH_PTY) + 2];
  41680. diff -Nur uClibc-0.9.33.2/libc/stdlib/drand48.c uClibc-git/libc/stdlib/drand48.c
  41681. --- uClibc-0.9.33.2/libc/stdlib/drand48.c 2012-05-15 09:20:09.000000000 +0200
  41682. +++ uClibc-git/libc/stdlib/drand48.c 2014-02-03 12:32:56.000000000 +0100
  41683. @@ -13,9 +13,8 @@
  41684. Lesser General Public License for more details.
  41685. You should have received a copy of the GNU Lesser General Public
  41686. - License along with the GNU C Library; if not, write to the Free
  41687. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41688. - 02111-1307 USA. */
  41689. + License along with the GNU C Library; if not, see
  41690. + <http://www.gnu.org/licenses/>. */
  41691. #include <stdlib.h>
  41692. diff -Nur uClibc-0.9.33.2/libc/stdlib/drand48-iter.c uClibc-git/libc/stdlib/drand48-iter.c
  41693. --- uClibc-0.9.33.2/libc/stdlib/drand48-iter.c 2012-05-15 09:20:09.000000000 +0200
  41694. +++ uClibc-git/libc/stdlib/drand48-iter.c 2014-02-03 12:32:56.000000000 +0100
  41695. @@ -13,9 +13,8 @@
  41696. Lesser General Public License for more details.
  41697. You should have received a copy of the GNU Lesser General Public
  41698. - License along with the GNU C Library; if not, write to the Free
  41699. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41700. - 02111-1307 USA. */
  41701. + License along with the GNU C Library; if not, see
  41702. + <http://www.gnu.org/licenses/>. */
  41703. #include <errno.h>
  41704. #include <stdlib.h>
  41705. diff -Nur uClibc-0.9.33.2/libc/stdlib/drand48_r.c uClibc-git/libc/stdlib/drand48_r.c
  41706. --- uClibc-0.9.33.2/libc/stdlib/drand48_r.c 2012-05-15 09:20:09.000000000 +0200
  41707. +++ uClibc-git/libc/stdlib/drand48_r.c 2014-02-03 12:32:56.000000000 +0100
  41708. @@ -13,9 +13,8 @@
  41709. Lesser General Public License for more details.
  41710. You should have received a copy of the GNU Lesser General Public
  41711. - License along with the GNU C Library; if not, write to the Free
  41712. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41713. - 02111-1307 USA. */
  41714. + License along with the GNU C Library; if not, see
  41715. + <http://www.gnu.org/licenses/>. */
  41716. #include <errno.h>
  41717. #include <math.h>
  41718. diff -Nur uClibc-0.9.33.2/libc/stdlib/erand48.c uClibc-git/libc/stdlib/erand48.c
  41719. --- uClibc-0.9.33.2/libc/stdlib/erand48.c 2012-05-15 09:20:09.000000000 +0200
  41720. +++ uClibc-git/libc/stdlib/erand48.c 2014-02-03 12:32:56.000000000 +0100
  41721. @@ -13,9 +13,8 @@
  41722. Lesser General Public License for more details.
  41723. You should have received a copy of the GNU Lesser General Public
  41724. - License along with the GNU C Library; if not, write to the Free
  41725. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41726. - 02111-1307 USA. */
  41727. + License along with the GNU C Library; if not, see
  41728. + <http://www.gnu.org/licenses/>. */
  41729. #include <stdlib.h>
  41730. diff -Nur uClibc-0.9.33.2/libc/stdlib/erand48_r.c uClibc-git/libc/stdlib/erand48_r.c
  41731. --- uClibc-0.9.33.2/libc/stdlib/erand48_r.c 2012-05-15 09:20:09.000000000 +0200
  41732. +++ uClibc-git/libc/stdlib/erand48_r.c 2014-02-03 12:32:56.000000000 +0100
  41733. @@ -13,9 +13,8 @@
  41734. Lesser General Public License for more details.
  41735. You should have received a copy of the GNU Lesser General Public
  41736. - License along with the GNU C Library; if not, write to the Free
  41737. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41738. - 02111-1307 USA. */
  41739. + License along with the GNU C Library; if not, see
  41740. + <http://www.gnu.org/licenses/>. */
  41741. #include <ieee754.h>
  41742. #include <stdlib.h>
  41743. diff -Nur uClibc-0.9.33.2/libc/stdlib/getpt.c uClibc-git/libc/stdlib/getpt.c
  41744. --- uClibc-0.9.33.2/libc/stdlib/getpt.c 2012-05-15 09:20:09.000000000 +0200
  41745. +++ uClibc-git/libc/stdlib/getpt.c 2014-02-03 12:32:56.000000000 +0100
  41746. @@ -13,9 +13,8 @@
  41747. Lesser General Public License for more details.
  41748. You should have received a copy of the GNU Lesser General Public
  41749. - License along with the GNU C Library; if not, write to the Free
  41750. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41751. - 02111-1307 USA. */
  41752. + License along with the GNU C Library; if not, see
  41753. + <http://www.gnu.org/licenses/>. */
  41754. #include <errno.h>
  41755. #include <fcntl.h>
  41756. @@ -43,12 +42,12 @@
  41757. #if !defined __UNIX98PTY_ONLY__ && defined __UCLIBC_HAS_GETPT__
  41758. /* Prototype for function that opens BSD-style master pseudo-terminals. */
  41759. -extern int __bsd_getpt (void) attribute_hidden;
  41760. +static __inline__ int __bsd_getpt (void);
  41761. #endif
  41762. /* Open a master pseudo terminal and return its file descriptor. */
  41763. -int
  41764. -posix_openpt (int flags)
  41765. +static int
  41766. +__posix_openpt (int flags)
  41767. {
  41768. #define have_no_dev_ptmx (1<<0)
  41769. #define devpts_mounted (1<<1)
  41770. @@ -112,14 +111,14 @@
  41771. #endif
  41772. return -1;
  41773. }
  41774. -libc_hidden_def(posix_openpt)
  41775. +strong_alias(__posix_openpt,posix_openpt)
  41776. #undef have_no_dev_ptmx
  41777. #undef devpts_mounted
  41778. #if defined __USE_GNU && defined __UCLIBC_HAS_GETPT__
  41779. int getpt (void)
  41780. {
  41781. - return posix_openpt(O_RDWR);
  41782. + return __posix_openpt(O_RDWR);
  41783. }
  41784. #if !defined __UNIX98PTY_ONLY__ && defined __UCLIBC_HAS_GETPT__
  41785. diff -Nur uClibc-0.9.33.2/libc/stdlib/grantpt.c uClibc-git/libc/stdlib/grantpt.c
  41786. --- uClibc-0.9.33.2/libc/stdlib/grantpt.c 2012-05-15 09:20:09.000000000 +0200
  41787. +++ uClibc-git/libc/stdlib/grantpt.c 2014-02-03 12:32:56.000000000 +0100
  41788. @@ -13,8 +13,7 @@
  41789. You should have received a copy of the GNU Library General Public
  41790. License along with the GNU C Library; see the file COPYING.LIB. If not,
  41791. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  41792. - Boston, MA 02111-1307, USA. */
  41793. + see <http://www.gnu.org/licenses/>. */
  41794. #include <limits.h>
  41795. #include <stdlib.h>
  41796. @@ -33,25 +32,18 @@
  41797. /* Prototype for function that changes ownership and access permission
  41798. for slave pseudo terminals that do not live on a `devpts'
  41799. filesystem. */
  41800. -int __unix_grantpt (int fd);
  41801. +static int __unix_grantpt (int fd);
  41802. /* Prototype for private function that gets the name of the slave
  41803. pseudo terminal in a safe way. */
  41804. static int pts_name (int fd, char **pts, size_t buf_len);
  41805. extern __typeof(statfs) __libc_statfs;
  41806. -#endif
  41807. /* Change the ownership and access permission of the slave pseudo
  41808. terminal associated with the master pseudo terminal specified
  41809. by FD. */
  41810. -int
  41811. -#if !defined __ASSUME_DEVPTS__
  41812. -grantpt (int fd)
  41813. -#else
  41814. -grantpt (attribute_unused int fd)
  41815. -#endif
  41816. +int grantpt (int fd)
  41817. {
  41818. -#if !defined __ASSUME_DEVPTS__
  41819. struct statfs fsbuf;
  41820. char _buf[PATH_MAX];
  41821. char *buf = _buf;
  41822. @@ -65,12 +57,19 @@
  41823. /* If the slave pseudo terminal lives on a `devpts' filesystem, the
  41824. ownership and access permission are already set. */
  41825. if (fsbuf.f_type != DEVPTS_SUPER_MAGIC && fsbuf.f_type != DEVFS_SUPER_MAGIC)
  41826. - return __unix_grantpt (fd);
  41827. -#endif
  41828. + return __unix_grantpt (fd);
  41829. +
  41830. return 0;
  41831. }
  41832. -#if !defined __ASSUME_DEVPTS__
  41833. # define grantpt __unix_grantpt
  41834. # include "unix_grantpt.c"
  41835. +
  41836. +#else
  41837. +
  41838. +int grantpt (attribute_unused int fd)
  41839. +{
  41840. + return 0;
  41841. +}
  41842. +
  41843. #endif
  41844. diff -Nur uClibc-0.9.33.2/libc/stdlib/jrand48.c uClibc-git/libc/stdlib/jrand48.c
  41845. --- uClibc-0.9.33.2/libc/stdlib/jrand48.c 2012-05-15 09:20:09.000000000 +0200
  41846. +++ uClibc-git/libc/stdlib/jrand48.c 2014-02-03 12:32:56.000000000 +0100
  41847. @@ -13,9 +13,8 @@
  41848. Lesser General Public License for more details.
  41849. You should have received a copy of the GNU Lesser General Public
  41850. - License along with the GNU C Library; if not, write to the Free
  41851. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41852. - 02111-1307 USA. */
  41853. + License along with the GNU C Library; if not, see
  41854. + <http://www.gnu.org/licenses/>. */
  41855. #include <stdlib.h>
  41856. diff -Nur uClibc-0.9.33.2/libc/stdlib/jrand48_r.c uClibc-git/libc/stdlib/jrand48_r.c
  41857. --- uClibc-0.9.33.2/libc/stdlib/jrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  41858. +++ uClibc-git/libc/stdlib/jrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  41859. @@ -13,9 +13,8 @@
  41860. Lesser General Public License for more details.
  41861. You should have received a copy of the GNU Lesser General Public
  41862. - License along with the GNU C Library; if not, write to the Free
  41863. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41864. - 02111-1307 USA. */
  41865. + License along with the GNU C Library; if not, see
  41866. + <http://www.gnu.org/licenses/>. */
  41867. #include <stdlib.h>
  41868. diff -Nur uClibc-0.9.33.2/libc/stdlib/l64a.c uClibc-git/libc/stdlib/l64a.c
  41869. --- uClibc-0.9.33.2/libc/stdlib/l64a.c 2012-05-15 09:20:09.000000000 +0200
  41870. +++ uClibc-git/libc/stdlib/l64a.c 2014-02-03 12:32:56.000000000 +0100
  41871. @@ -13,9 +13,8 @@
  41872. Lesser General Public License for more details.
  41873. You should have received a copy of the GNU Lesser General Public
  41874. - License along with the GNU C Library; if not, write to the Free
  41875. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41876. - 02111-1307 USA. */
  41877. + License along with the GNU C Library; if not, see
  41878. + <http://www.gnu.org/licenses/>. */
  41879. #include <stdlib.h>
  41880. diff -Nur uClibc-0.9.33.2/libc/stdlib/lcong48.c uClibc-git/libc/stdlib/lcong48.c
  41881. --- uClibc-0.9.33.2/libc/stdlib/lcong48.c 1970-01-01 01:00:00.000000000 +0100
  41882. +++ uClibc-git/libc/stdlib/lcong48.c 2014-02-03 12:32:56.000000000 +0100
  41883. @@ -0,0 +1,29 @@
  41884. +/* vi: set sw=4 ts=4: */
  41885. +/* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */
  41886. +
  41887. +#include <features.h>
  41888. +
  41889. +#if defined __USE_SVID || defined __USE_XOPEN
  41890. +#include <stdint.h>
  41891. +#include <stdlib.h>
  41892. +#include <string.h>
  41893. +
  41894. +static int __lcong48_r (unsigned short int param[7], struct drand48_data *buffer)
  41895. +{
  41896. + /* Store the given values. */
  41897. + memcpy (buffer->__x, &param[0], sizeof (buffer->__x));
  41898. + buffer->__a = ((uint64_t) param[5] << 32 | (uint32_t) param[4] << 16 | param[3]);
  41899. + buffer->__c = param[6];
  41900. + buffer->__init = 1;
  41901. +
  41902. + return 0;
  41903. +}
  41904. +# ifdef __USE_MISC
  41905. +strong_alias(__lcong48_r,lcong48_r)
  41906. +# endif
  41907. +
  41908. +void lcong48 (unsigned short int param[7])
  41909. +{
  41910. + (void) __lcong48_r (param, &__libc_drand48_data);
  41911. +}
  41912. +#endif
  41913. diff -Nur uClibc-0.9.33.2/libc/stdlib/ldiv.c uClibc-git/libc/stdlib/ldiv.c
  41914. --- uClibc-0.9.33.2/libc/stdlib/ldiv.c 2012-05-15 09:20:09.000000000 +0200
  41915. +++ uClibc-git/libc/stdlib/ldiv.c 2014-02-03 12:32:56.000000000 +0100
  41916. @@ -13,9 +13,8 @@
  41917. Lesser General Public License for more details.
  41918. You should have received a copy of the GNU Lesser General Public
  41919. - License along with the GNU C Library; if not, write to the Free
  41920. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41921. - 02111-1307 USA. */
  41922. + License along with the GNU C Library; if not, see
  41923. + <http://www.gnu.org/licenses/>. */
  41924. #include <features.h>
  41925. #include <stdlib.h>
  41926. diff -Nur uClibc-0.9.33.2/libc/stdlib/lldiv.c uClibc-git/libc/stdlib/lldiv.c
  41927. --- uClibc-0.9.33.2/libc/stdlib/lldiv.c 2012-05-15 09:20:09.000000000 +0200
  41928. +++ uClibc-git/libc/stdlib/lldiv.c 2014-02-03 12:32:56.000000000 +0100
  41929. @@ -13,9 +13,8 @@
  41930. Lesser General Public License for more details.
  41931. You should have received a copy of the GNU Lesser General Public
  41932. - License along with the GNU C Library; if not, write to the Free
  41933. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41934. - 02111-1307 USA. */
  41935. + License along with the GNU C Library; if not, see
  41936. + <http://www.gnu.org/licenses/>. */
  41937. #include <features.h>
  41938. #include <stdlib.h>
  41939. diff -Nur uClibc-0.9.33.2/libc/stdlib/lrand48.c uClibc-git/libc/stdlib/lrand48.c
  41940. --- uClibc-0.9.33.2/libc/stdlib/lrand48.c 2012-05-15 09:20:09.000000000 +0200
  41941. +++ uClibc-git/libc/stdlib/lrand48.c 2014-02-03 12:32:56.000000000 +0100
  41942. @@ -13,9 +13,8 @@
  41943. Lesser General Public License for more details.
  41944. You should have received a copy of the GNU Lesser General Public
  41945. - License along with the GNU C Library; if not, write to the Free
  41946. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41947. - 02111-1307 USA. */
  41948. + License along with the GNU C Library; if not, see
  41949. + <http://www.gnu.org/licenses/>. */
  41950. #include <stdlib.h>
  41951. diff -Nur uClibc-0.9.33.2/libc/stdlib/lrand48_r.c uClibc-git/libc/stdlib/lrand48_r.c
  41952. --- uClibc-0.9.33.2/libc/stdlib/lrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  41953. +++ uClibc-git/libc/stdlib/lrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  41954. @@ -13,9 +13,8 @@
  41955. Lesser General Public License for more details.
  41956. You should have received a copy of the GNU Lesser General Public
  41957. - License along with the GNU C Library; if not, write to the Free
  41958. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  41959. - 02111-1307 USA. */
  41960. + License along with the GNU C Library; if not, see
  41961. + <http://www.gnu.org/licenses/>. */
  41962. #include <stdlib.h>
  41963. diff -Nur uClibc-0.9.33.2/libc/stdlib/Makefile.in uClibc-git/libc/stdlib/Makefile.in
  41964. --- uClibc-0.9.33.2/libc/stdlib/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  41965. +++ uClibc-git/libc/stdlib/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  41966. @@ -12,16 +12,17 @@
  41967. include $(top_srcdir)libc/stdlib/malloc-standard/Makefile.in
  41968. CSRC-y := \
  41969. - abort.c getenv.c mkdtemp.c realpath.c canonicalize.c mkstemp.c \
  41970. + abort.c getenv.c mkdtemp.c realpath.c canonicalize.c mkstemp.c mkostemp.c \
  41971. rand.c random.c random_r.c setenv.c div.c ldiv.c lldiv.c \
  41972. getpt.c drand48-iter.c jrand48.c \
  41973. - jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \
  41974. + jrand48_r.c lcong48.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \
  41975. nrand48_r.c rand_r.c srand48.c srand48_r.c seed48.c seed48_r.c \
  41976. - valloc.c a64l.c l64a.c __uc_malloc.c
  41977. + a64l.c l64a.c __uc_malloc.c
  41978. +CSRC-$(UCLIBC_SUSV2_LEGACY) += valloc.c
  41979. CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_memalign.c
  41980. CSRC-$(UCLIBC_HAS_PTY) += grantpt.c unlockpt.c ptsname.c
  41981. CSRC-$(UCLIBC_HAS_ARC4RANDOM) += arc4random.c
  41982. -CSRC-$(UCLIBC_HAS_LFS) += mkstemp64.c
  41983. +CSRC-$(UCLIBC_HAS_LFS) += mkstemp64.c mkostemp64.c
  41984. CSRC-$(UCLIBC_HAS_FLOATS) += drand48.c drand48_r.c erand48.c erand48_r.c
  41985. CSRC-$(if $(findstring yy,$(UCLIBC_HAS_FLOATS)$(UCLIBC_SUSV3_LEGACY)),y) += \
  41986. gcvt.c
  41987. @@ -33,7 +34,7 @@
  41988. # multi source stdlib.c
  41989. CSRC-y += abs.c labs.c atoi.c atol.c strtol.c strtoul.c _stdlib_strto_l.c \
  41990. - qsort.c qsort_r.c bsearch.c \
  41991. + qsort.c qsort_r.c bsearch.c rpmatch.c \
  41992. llabs.c atoll.c strtoll.c strtoull.c _stdlib_strto_ll.c
  41993. # (aliases) strtoq.o strtouq.o
  41994. CSRC-$(UCLIBC_HAS_FLOATS) += atof.c
  41995. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/calloc.c uClibc-git/libc/stdlib/malloc/calloc.c
  41996. --- uClibc-0.9.33.2/libc/stdlib/malloc/calloc.c 2012-05-15 09:20:09.000000000 +0200
  41997. +++ uClibc-git/libc/stdlib/malloc/calloc.c 2014-02-03 12:32:56.000000000 +0100
  41998. @@ -14,8 +14,8 @@
  41999. * for more details.
  42000. *
  42001. * You should have received a copy of the GNU Library General Public License
  42002. - * along with this program; if not, write to the Free Software Foundation,
  42003. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  42004. + * along with this program; see the file COPYING.LIB. If not, see
  42005. + * <http://www.gnu.org/licenses/>.
  42006. */
  42007. #include <stdlib.h>
  42008. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/free.c uClibc-git/libc/stdlib/malloc/free.c
  42009. --- uClibc-0.9.33.2/libc/stdlib/malloc/free.c 2012-05-15 09:20:09.000000000 +0200
  42010. +++ uClibc-git/libc/stdlib/malloc/free.c 2014-02-03 12:32:56.000000000 +0100
  42011. @@ -28,7 +28,7 @@
  42012. static void
  42013. __free_to_heap (void *mem, struct heap_free_area **heap
  42014. #ifdef HEAP_USE_LOCKING
  42015. - , malloc_mutex_t *heap_lock
  42016. + , __UCLIBC_MUTEX_TYPE *heap_lock
  42017. #endif
  42018. )
  42019. {
  42020. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/heap.h uClibc-git/libc/stdlib/malloc/heap.h
  42021. --- uClibc-0.9.33.2/libc/stdlib/malloc/heap.h 2012-05-15 09:20:09.000000000 +0200
  42022. +++ uClibc-git/libc/stdlib/malloc/heap.h 2014-02-03 12:32:56.000000000 +0100
  42023. @@ -13,18 +13,13 @@
  42024. #include <features.h>
  42025. -
  42026. -/* On multi-threaded systems, the heap includes a lock. */
  42027. +#include <bits/uClibc_mutex.h>
  42028. #ifdef __UCLIBC_HAS_THREADS__
  42029. -# include <bits/uClibc_mutex.h>
  42030. # define HEAP_USE_LOCKING
  42031. -# define __heap_lock(heap_lock) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(*(heap_lock))
  42032. -# define __heap_unlock(heap_lock) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(*(heap_lock))
  42033. -#else
  42034. -# define __heap_lock(heap_lock)
  42035. -# define __heap_unlock(heap_lock)
  42036. #endif
  42037. +#define __heap_lock(heap_lock) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(*(heap_lock))
  42038. +#define __heap_unlock(heap_lock) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(*(heap_lock))
  42039. /* The heap allocates in multiples of, and aligned to, HEAP_GRANULARITY.
  42040. HEAP_GRANULARITY must be a power of 2. Malloc depends on this being the
  42041. @@ -35,11 +30,9 @@
  42042. -/* The HEAP_INIT macro can be used as a static initializer for a heap
  42043. - variable. The HEAP_INIT_WITH_FA variant is used to initialize a heap
  42044. +/* The HEAP_INIT_WITH_FA variant is used to initialize a heap
  42045. with an initial static free-area; its argument FA should be declared
  42046. using HEAP_DECLARE_STATIC_FREE_AREA. */
  42047. -# define HEAP_INIT 0
  42048. # define HEAP_INIT_WITH_FA(fa) &fa._fa
  42049. /* A free-list area `header'. These are actually stored at the _ends_ of
  42050. @@ -92,34 +85,21 @@
  42051. #define HEAP_MIN_FREE_AREA_SIZE \
  42052. HEAP_ADJUST_SIZE (sizeof (struct heap_free_area) + 32)
  42053. -
  42054. -/* branch-prediction macros; they may already be defined by libc. */
  42055. -#ifndef likely
  42056. -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
  42057. -#define likely(cond) __builtin_expect(!!(int)(cond), 1)
  42058. -#define unlikely(cond) __builtin_expect((int)(cond), 0)
  42059. -#else
  42060. -#define likely(cond) (cond)
  42061. -#define unlikely(cond) (cond)
  42062. -#endif
  42063. -#endif /* !likely */
  42064. -
  42065. -
  42066. /* Define HEAP_DEBUGGING to cause the heap routines to emit debugging info
  42067. to stderr when the variable __heap_debug is set to true. */
  42068. #ifdef HEAP_DEBUGGING
  42069. -extern int __heap_debug;
  42070. +extern int __heap_debug attribute_hidden;
  42071. #define HEAP_DEBUG(heap, str) (__heap_debug ? __heap_dump (heap, str) : 0)
  42072. #else
  42073. #define HEAP_DEBUG(heap, str) (void)0
  42074. #endif
  42075. /* Output a text representation of HEAP to stderr, labelling it with STR. */
  42076. -extern void __heap_dump (struct heap_free_area *heap, const char *str);
  42077. +extern void __heap_dump (struct heap_free_area *heap, const char *str) attribute_hidden;
  42078. /* Do some consistency checks on HEAP. If they fail, output an error
  42079. message to stderr, and exit. STR is printed with the failure message. */
  42080. -extern void __heap_check (struct heap_free_area *heap, const char *str);
  42081. +extern void __heap_check (struct heap_free_area *heap, const char *str) attribute_hidden;
  42082. /* Delete the free-area FA from HEAP. */
  42083. @@ -216,16 +196,16 @@
  42084. /* Allocate and return a block at least *SIZE bytes long from HEAP.
  42085. *SIZE is adjusted to reflect the actual amount allocated (which may be
  42086. greater than requested). */
  42087. -extern void *__heap_alloc (struct heap_free_area **heap, size_t *size);
  42088. +extern void *__heap_alloc (struct heap_free_area **heap, size_t *size) attribute_hidden;
  42089. /* Allocate SIZE bytes at address MEM in HEAP. Return the actual size
  42090. allocated, or 0 if we failed. */
  42091. -extern size_t __heap_alloc_at (struct heap_free_area **heap, void *mem, size_t size);
  42092. +extern size_t __heap_alloc_at (struct heap_free_area **heap, void *mem, size_t size) attribute_hidden;
  42093. /* Return the memory area MEM of size SIZE to HEAP.
  42094. Returns the heap free area into which the memory was placed. */
  42095. extern struct heap_free_area *__heap_free (struct heap_free_area **heap,
  42096. - void *mem, size_t size);
  42097. + void *mem, size_t size) attribute_hidden;
  42098. /* Return true if HEAP contains absolutely no memory. */
  42099. #define __heap_is_empty(heap) (! (heap))
  42100. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/Makefile.in uClibc-git/libc/stdlib/malloc/Makefile.in
  42101. --- uClibc-0.9.33.2/libc/stdlib/malloc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  42102. +++ uClibc-git/libc/stdlib/malloc/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  42103. @@ -9,12 +9,12 @@
  42104. subdirs += libc/stdlib/malloc
  42105. -CSRC := malloc.c calloc.c free.c realloc.c memalign.c \
  42106. +CSRC-y := malloc.c calloc.c free.c realloc.c memalign.c \
  42107. heap_alloc.c heap_alloc_at.c heap_free.c
  42108. # Turn on malloc debugging if requested
  42109. +CSRC-$(UCLIBC_MALLOC_DEBUGGING) += malloc_debug.c heap_debug.c
  42110. ifeq ($(UCLIBC_MALLOC_DEBUGGING),y)
  42111. -CSRC += malloc_debug.c heap_debug.c
  42112. CFLAGS += -DMALLOC_DEBUGGING -DHEAP_DEBUGGING
  42113. ifeq ($(UCLIBC_UCLINUX_BROKEN_MUNMAP),y)
  42114. CFLAGS += -DMALLOC_MMB_DEBUGGING
  42115. @@ -24,8 +24,8 @@
  42116. STDLIB_MALLOC_DIR := $(top_srcdir)libc/stdlib/malloc
  42117. STDLIB_MALLOC_OUT := $(top_builddir)libc/stdlib/malloc
  42118. -STDLIB_MALLOC_SRC := $(patsubst %.c,$(STDLIB_MALLOC_DIR)/%.c,$(CSRC))
  42119. -STDLIB_MALLOC_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC))
  42120. +STDLIB_MALLOC_SRC := $(patsubst %.c,$(STDLIB_MALLOC_DIR)/%.c,$(CSRC-y))
  42121. +STDLIB_MALLOC_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC-y))
  42122. libc-$(MALLOC) += $(STDLIB_MALLOC_OBJ)
  42123. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/malloc.c uClibc-git/libc/stdlib/malloc/malloc.c
  42124. --- uClibc-0.9.33.2/libc/stdlib/malloc/malloc.c 2012-05-15 09:20:09.000000000 +0200
  42125. +++ uClibc-git/libc/stdlib/malloc/malloc.c 2014-02-03 12:32:56.000000000 +0100
  42126. @@ -26,12 +26,12 @@
  42127. HEAP_DECLARE_STATIC_FREE_AREA (initial_fa, 256);
  42128. struct heap_free_area *__malloc_heap = HEAP_INIT_WITH_FA (initial_fa);
  42129. #ifdef HEAP_USE_LOCKING
  42130. -malloc_mutex_t __malloc_heap_lock = PTHREAD_MUTEX_INITIALIZER;
  42131. +__UCLIBC_MUTEX_INIT(__malloc_heap_lock,PTHREAD_MUTEX_INITIALIZER);
  42132. #endif
  42133. #if defined(MALLOC_USE_LOCKING) && defined(MALLOC_USE_SBRK)
  42134. /* A lock protecting our use of sbrk. */
  42135. -malloc_mutex_t __malloc_sbrk_lock;
  42136. +__UCLIBC_MUTEX(__malloc_sbrk_lock);
  42137. #endif /* MALLOC_USE_LOCKING && MALLOC_USE_SBRK */
  42138. @@ -46,7 +46,7 @@
  42139. HEAP_DECLARE_STATIC_FREE_AREA (initial_mmb_fa, 48); /* enough for 3 mmbs */
  42140. struct heap_free_area *__malloc_mmb_heap = HEAP_INIT_WITH_FA (initial_mmb_fa);
  42141. #ifdef HEAP_USE_LOCKING
  42142. -malloc_mutex_t __malloc_mmb_heap_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
  42143. +__UCLIBC_MUTEX_INIT(__malloc_mmb_heap_lock,PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP);
  42144. #endif
  42145. #endif /* __UCLIBC_UCLINUX_BROKEN_MUNMAP__ */
  42146. @@ -59,7 +59,7 @@
  42147. static void *
  42148. __malloc_from_heap (size_t size, struct heap_free_area **heap
  42149. #ifdef HEAP_USE_LOCKING
  42150. - , malloc_mutex_t *heap_lock
  42151. + , __UCLIBC_MUTEX_TYPE *heap_lock
  42152. #endif
  42153. )
  42154. {
  42155. @@ -124,7 +124,7 @@
  42156. MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
  42157. #else
  42158. block = mmap ((void *)0, block_size, PROT_READ | PROT_WRITE,
  42159. - MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZE, 0, 0);
  42160. + MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZED, 0, 0);
  42161. #endif
  42162. #endif /* MALLOC_USE_SBRK */
  42163. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/malloc.h uClibc-git/libc/stdlib/malloc/malloc.h
  42164. --- uClibc-0.9.33.2/libc/stdlib/malloc/malloc.h 2012-05-15 09:20:09.000000000 +0200
  42165. +++ uClibc-git/libc/stdlib/malloc/malloc.h 2014-02-03 12:32:56.000000000 +0100
  42166. @@ -20,8 +20,7 @@
  42167. (__alignof__ (double) > sizeof (size_t) ? __alignof__ (double) : sizeof (size_t))
  42168. /* The system pagesize... */
  42169. -extern size_t __pagesize;
  42170. -#define MALLOC_PAGE_SIZE __pagesize
  42171. +#define MALLOC_PAGE_SIZE sysconf(_SC_PAGESIZE)
  42172. /* The minimum size of block we request from the the system to extend the
  42173. heap for small allocations (we may request a bigger block if necessary to
  42174. @@ -128,69 +127,46 @@
  42175. /* Return the size of a malloc allocation, given the user address. */
  42176. #define MALLOC_SIZE(addr) (*(size_t *)MALLOC_BASE(addr))
  42177. +#include <bits/uClibc_mutex.h>
  42178. -/* Locking for multithreaded apps. */
  42179. #ifdef __UCLIBC_HAS_THREADS__
  42180. -
  42181. -# include <bits/uClibc_mutex.h>
  42182. -
  42183. # define MALLOC_USE_LOCKING
  42184. +#endif
  42185. -typedef __UCLIBC_MUTEX_TYPE malloc_mutex_t;
  42186. -# define MALLOC_MUTEX_INIT __UCLIBC_MUTEX_INITIALIZER
  42187. -
  42188. -# ifdef MALLOC_USE_SBRK
  42189. +#ifdef MALLOC_USE_SBRK
  42190. /* This lock is used to serialize uses of the `sbrk' function (in both
  42191. malloc and free, sbrk may be used several times in succession, and
  42192. things will break if these multiple calls are interleaved with another
  42193. thread's use of sbrk!). */
  42194. -extern malloc_mutex_t __malloc_sbrk_lock;
  42195. +__UCLIBC_MUTEX_EXTERN(__malloc_sbrk_lock) attribute_hidden;
  42196. # define __malloc_lock_sbrk() __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE (__malloc_sbrk_lock)
  42197. # define __malloc_unlock_sbrk() __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE (__malloc_sbrk_lock)
  42198. -# endif /* MALLOC_USE_SBRK */
  42199. -
  42200. -#else /* !__UCLIBC_HAS_THREADS__ */
  42201. -
  42202. -/* Without threads, mutex operations are a nop. */
  42203. +#else
  42204. # define __malloc_lock_sbrk() (void)0
  42205. # define __malloc_unlock_sbrk() (void)0
  42206. -
  42207. -#endif /* __UCLIBC_HAS_THREADS__ */
  42208. -
  42209. -
  42210. -/* branch-prediction macros; they may already be defined by libc. */
  42211. -#ifndef likely
  42212. -#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
  42213. -#define likely(cond) __builtin_expect(!!(int)(cond), 1)
  42214. -#define unlikely(cond) __builtin_expect((int)(cond), 0)
  42215. -#else
  42216. -#define likely(cond) (cond)
  42217. -#define unlikely(cond) (cond)
  42218. -#endif
  42219. -#endif /* !likely */
  42220. -
  42221. +#endif /* MALLOC_USE_SBRK */
  42222. /* Define MALLOC_DEBUGGING to cause malloc to emit debugging info to stderr
  42223. when the variable __malloc_debug is set to true. */
  42224. #ifdef MALLOC_DEBUGGING
  42225. -extern void __malloc_debug_init (void);
  42226. +extern void __malloc_debug_init (void) attribute_hidden;
  42227. /* The number of spaces in a malloc debug indent level. */
  42228. #define MALLOC_DEBUG_INDENT_SIZE 3
  42229. -extern int __malloc_debug, __malloc_check;
  42230. +extern int __malloc_debug attribute_hidden, __malloc_check attribute_hidden;
  42231. # define MALLOC_DEBUG(indent, fmt, args...) \
  42232. (__malloc_debug ? __malloc_debug_printf (indent, fmt , ##args) : 0)
  42233. # define MALLOC_DEBUG_INDENT(indent) \
  42234. (__malloc_debug ? __malloc_debug_indent (indent) : 0)
  42235. -extern int __malloc_debug_cur_indent;
  42236. +extern int __malloc_debug_cur_indent attribute_hidden;
  42237. /* Print FMT and args indented at the current debug print level, followed
  42238. by a newline, and change the level by INDENT. */
  42239. -extern void __malloc_debug_printf (int indent, const char *fmt, ...);
  42240. +extern void __malloc_debug_printf (int indent, const char *fmt, ...) attribute_hidden;
  42241. /* Change the current debug print level by INDENT, and return the value. */
  42242. #define __malloc_debug_indent(indent) (__malloc_debug_cur_indent += indent)
  42243. @@ -220,10 +196,18 @@
  42244. /* The malloc heap. */
  42245. -extern struct heap_free_area *__malloc_heap;
  42246. +extern struct heap_free_area *__malloc_heap attribute_hidden;
  42247. #ifdef __UCLIBC_HAS_THREADS__
  42248. -extern malloc_mutex_t __malloc_heap_lock;
  42249. -#ifdef __UCLIBC_UCLINUX_BROKEN_MUNMAP__
  42250. -extern malloc_mutex_t __malloc_mmb_heap_lock;
  42251. -#endif
  42252. +__UCLIBC_MUTEX_EXTERN(__malloc_heap_lock)
  42253. +# ifndef __LINUXTHREADS_OLD__
  42254. + attribute_hidden
  42255. +# endif
  42256. + ;
  42257. +# ifdef __UCLIBC_UCLINUX_BROKEN_MUNMAP__
  42258. +__UCLIBC_MUTEX_EXTERN(__malloc_mmb_heap_lock)
  42259. +# ifndef __LINUXTHREADS_OLD__
  42260. + attribute_hidden
  42261. +# endif
  42262. + ;
  42263. +# endif
  42264. #endif
  42265. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc/memalign.c uClibc-git/libc/stdlib/malloc/memalign.c
  42266. --- uClibc-0.9.33.2/libc/stdlib/malloc/memalign.c 2012-05-15 09:20:09.000000000 +0200
  42267. +++ uClibc-git/libc/stdlib/malloc/memalign.c 2014-02-03 12:32:56.000000000 +0100
  42268. @@ -14,7 +14,6 @@
  42269. #include <stdlib.h>
  42270. #include <unistd.h>
  42271. #include <sys/mman.h>
  42272. -#include <sys/param.h> /* MAX */
  42273. #include "malloc.h"
  42274. #include "heap.h"
  42275. @@ -30,6 +29,8 @@
  42276. */
  42277. void *memalign (size_t alignment, size_t size);
  42278. +/* XXX shadow outer malloc.h */
  42279. +libc_hidden_proto(memalign)
  42280. void *
  42281. memalign (size_t alignment, size_t size)
  42282. {
  42283. @@ -92,3 +93,4 @@
  42284. return MALLOC_SETUP (base, end_addr - (unsigned long)base);
  42285. }
  42286. +libc_hidden_def(memalign)
  42287. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-simple/alloc.c uClibc-git/libc/stdlib/malloc-simple/alloc.c
  42288. --- uClibc-0.9.33.2/libc/stdlib/malloc-simple/alloc.c 2012-05-15 09:20:09.000000000 +0200
  42289. +++ uClibc-git/libc/stdlib/malloc-simple/alloc.c 2014-02-03 12:32:56.000000000 +0100
  42290. @@ -17,6 +17,7 @@
  42291. #include <sys/mman.h>
  42292. #include <malloc.h>
  42293. +extern int weak_function __libc_free_aligned(void *ptr) attribute_hidden;
  42294. #ifdef L_malloc
  42295. void *malloc(size_t size)
  42296. @@ -36,7 +37,7 @@
  42297. #ifdef __ARCH_USE_MMU__
  42298. # define MMAP_FLAGS MAP_PRIVATE | MAP_ANONYMOUS
  42299. #else
  42300. -# define MMAP_FLAGS MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZE
  42301. +# define MMAP_FLAGS MAP_SHARED | MAP_ANONYMOUS | MAP_UNINITIALIZED
  42302. #endif
  42303. result = mmap((void *) 0, size + sizeof(size_t), PROT_READ | PROT_WRITE,
  42304. @@ -63,7 +64,7 @@
  42305. result = malloc(size);
  42306. #ifndef __ARCH_USE_MMU__
  42307. - /* mmap'd with MAP_UNINITIALIZE, we have to blank memory ourselves */
  42308. + /* mmap'd with MAP_UNINITIALIZED, we have to blank memory ourselves */
  42309. if (result != NULL) {
  42310. memset(result, 0, size);
  42311. }
  42312. @@ -95,7 +96,6 @@
  42313. #endif
  42314. #ifdef L_free
  42315. -extern int weak_function __libc_free_aligned(void *ptr);
  42316. void free(void *ptr)
  42317. {
  42318. if (unlikely(ptr == NULL))
  42319. @@ -123,7 +123,7 @@
  42320. __ptr_t aligned; /* The address that memaligned returned. */
  42321. __ptr_t exact; /* The address that malloc returned. */
  42322. };
  42323. -struct alignlist *_aligned_blocks;
  42324. +static struct alignlist *_aligned_blocks;
  42325. /* Return memory to the heap. */
  42326. int __libc_free_aligned(void *ptr)
  42327. @@ -182,4 +182,5 @@
  42328. return result;
  42329. }
  42330. +libc_hidden_def(memalign)
  42331. #endif
  42332. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-simple/Makefile.in uClibc-git/libc/stdlib/malloc-simple/Makefile.in
  42333. --- uClibc-0.9.33.2/libc/stdlib/malloc-simple/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  42334. +++ uClibc-git/libc/stdlib/malloc-simple/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  42335. @@ -10,11 +10,13 @@
  42336. STDLIB_MALLOC_SIMPLE_DIR := $(top_srcdir)libc/stdlib/malloc-simple
  42337. STDLIB_MALLOC_SIMPLE_OUT := $(top_builddir)libc/stdlib/malloc-simple
  42338. -CSRC := $(notdir $(wildcard $(STDLIB_MALLOC_SIMPLE_DIR)/*.c))
  42339. -CSRC := $(filter-out alloc.c,$(CSRC))
  42340. +CSRC-y := $(notdir $(wildcard $(STDLIB_MALLOC_SIMPLE_DIR)/*.c))
  42341. +# multi source alloc.c
  42342. +CSRC- := alloc.c
  42343. +CSRC-y := $(filter-out $(CSRC-),$(CSRC-y))
  42344. -STDLIB_MALLOC_SIMPLE_SRC := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_DIR)/%.c,$(CSRC))
  42345. -STDLIB_MALLOC_SIMPLE_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(CSRC))
  42346. +STDLIB_MALLOC_SIMPLE_SRC := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_DIR)/%.c,$(CSRC-y))
  42347. +STDLIB_MALLOC_SIMPLE_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(CSRC-y))
  42348. libc-$(MALLOC_SIMPLE) += $(STDLIB_MALLOC_SIMPLE_OBJ)
  42349. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/Makefile.in uClibc-git/libc/stdlib/malloc-standard/Makefile.in
  42350. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  42351. +++ uClibc-git/libc/stdlib/malloc-standard/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  42352. @@ -7,15 +7,13 @@
  42353. subdirs += libc/stdlib/malloc-standard
  42354. -# calloc.c can be found at uClibc/libc/stdlib/calloc.c
  42355. -# valloc.c can be found at uClibc/libc/stdlib/valloc.c
  42356. -CSRC := malloc.c calloc.c realloc.c free.c memalign.c mallopt.c mallinfo.c
  42357. -
  42358. STDLIB_MALLOC_STANDARD_DIR := $(top_srcdir)libc/stdlib/malloc-standard
  42359. STDLIB_MALLOC_STANDARD_OUT := $(top_builddir)libc/stdlib/malloc-standard
  42360. -STDLIB_MALLOC_STANDARD_SRC := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_DIR)/%.c,$(CSRC))
  42361. -STDLIB_MALLOC_STANDARD_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$(CSRC))
  42362. +CSRC-y := $(notdir $(wildcard $(STDLIB_MALLOC_STANDARD_DIR)/*.c))
  42363. +
  42364. +STDLIB_MALLOC_STANDARD_SRC := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_DIR)/%.c,$(CSRC-y))
  42365. +STDLIB_MALLOC_STANDARD_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$(CSRC-y))
  42366. libc-$(MALLOC_STANDARD) += $(STDLIB_MALLOC_STANDARD_OBJ)
  42367. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/mallinfo.c uClibc-git/libc/stdlib/malloc-standard/mallinfo.c
  42368. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/mallinfo.c 2012-05-15 09:20:09.000000000 +0200
  42369. +++ uClibc-git/libc/stdlib/malloc-standard/mallinfo.c 2014-02-03 12:32:56.000000000 +0100
  42370. @@ -15,6 +15,7 @@
  42371. */
  42372. #include "malloc.h"
  42373. +#include <stdio.h> /* fprintf */
  42374. /* ------------------------------ mallinfo ------------------------------ */
  42375. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/malloc.h uClibc-git/libc/stdlib/malloc-standard/malloc.h
  42376. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/malloc.h 2012-05-15 09:20:09.000000000 +0200
  42377. +++ uClibc-git/libc/stdlib/malloc-standard/malloc.h 2014-02-03 12:32:56.000000000 +0100
  42378. @@ -26,7 +26,11 @@
  42379. -__UCLIBC_MUTEX_EXTERN(__malloc_lock);
  42380. +__UCLIBC_MUTEX_EXTERN(__malloc_lock)
  42381. +#if defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
  42382. + attribute_hidden
  42383. +#endif
  42384. + ;
  42385. #define __MALLOC_LOCK __UCLIBC_MUTEX_LOCK(__malloc_lock)
  42386. #define __MALLOC_UNLOCK __UCLIBC_MUTEX_UNLOCK(__malloc_lock)
  42387. @@ -349,13 +353,13 @@
  42388. #endif
  42389. #ifdef __ARCH_USE_MMU__
  42390. -# define _MAP_UNINITIALIZE 0
  42391. +# define _MAP_UNINITIALIZED 0
  42392. #else
  42393. -# define _MAP_UNINITIALIZE MAP_UNINITIALIZE
  42394. +# define _MAP_UNINITIALIZED MAP_UNINITIALIZED
  42395. #endif
  42396. #define MMAP(addr, size, prot) \
  42397. - (mmap((addr), (size), (prot), MAP_PRIVATE|MAP_ANONYMOUS|_MAP_UNINITIALIZE, 0, 0))
  42398. + (mmap((addr), (size), (prot), MAP_PRIVATE|MAP_ANONYMOUS|_MAP_UNINITIALIZED, 0, 0))
  42399. /* ----------------------- Chunk representations ----------------------- */
  42400. @@ -910,7 +914,7 @@
  42401. malloc relies on the property that malloc_state is initialized to
  42402. all zeroes (as is true of C statics).
  42403. */
  42404. -extern struct malloc_state __malloc_state; /* never directly referenced */
  42405. +extern struct malloc_state __malloc_state attribute_hidden; /* never directly referenced */
  42406. /*
  42407. All uses of av_ are via get_malloc_state().
  42408. @@ -947,12 +951,12 @@
  42409. #define check_malloced_chunk(P,N) __do_check_malloced_chunk(P,N)
  42410. #define check_malloc_state() __do_check_malloc_state()
  42411. -extern void __do_check_chunk(mchunkptr p);
  42412. -extern void __do_check_free_chunk(mchunkptr p);
  42413. -extern void __do_check_inuse_chunk(mchunkptr p);
  42414. -extern void __do_check_remalloced_chunk(mchunkptr p, size_t s);
  42415. -extern void __do_check_malloced_chunk(mchunkptr p, size_t s);
  42416. -extern void __do_check_malloc_state(void);
  42417. +extern void __do_check_chunk(mchunkptr p) attribute_hidden;
  42418. +extern void __do_check_free_chunk(mchunkptr p) attribute_hidden;
  42419. +extern void __do_check_inuse_chunk(mchunkptr p) attribute_hidden;
  42420. +extern void __do_check_remalloced_chunk(mchunkptr p, size_t s) attribute_hidden;
  42421. +extern void __do_check_malloced_chunk(mchunkptr p, size_t s) attribute_hidden;
  42422. +extern void __do_check_malloc_state(void) attribute_hidden;
  42423. #include <assert.h>
  42424. diff -Nur uClibc-0.9.33.2/libc/stdlib/malloc-standard/memalign.c uClibc-git/libc/stdlib/malloc-standard/memalign.c
  42425. --- uClibc-0.9.33.2/libc/stdlib/malloc-standard/memalign.c 2012-05-15 09:20:09.000000000 +0200
  42426. +++ uClibc-git/libc/stdlib/malloc-standard/memalign.c 2014-02-03 12:32:56.000000000 +0100
  42427. @@ -127,4 +127,4 @@
  42428. __MALLOC_UNLOCK;
  42429. return retval;
  42430. }
  42431. -
  42432. +libc_hidden_def(memalign)
  42433. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkdtemp.c uClibc-git/libc/stdlib/mkdtemp.c
  42434. --- uClibc-0.9.33.2/libc/stdlib/mkdtemp.c 2012-05-15 09:20:09.000000000 +0200
  42435. +++ uClibc-git/libc/stdlib/mkdtemp.c 2014-02-03 12:32:56.000000000 +0100
  42436. @@ -14,8 +14,7 @@
  42437. You should have received a copy of the GNU Library General Public
  42438. License along with the GNU C Library; see the file COPYING.LIB. If not,
  42439. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  42440. - Boston, MA 02111-1307, USA. */
  42441. + see <http://www.gnu.org/licenses/>. */
  42442. #include <stdio.h>
  42443. #include <stdlib.h>
  42444. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkostemp64.c uClibc-git/libc/stdlib/mkostemp64.c
  42445. --- uClibc-0.9.33.2/libc/stdlib/mkostemp64.c 1970-01-01 01:00:00.000000000 +0100
  42446. +++ uClibc-git/libc/stdlib/mkostemp64.c 2014-02-03 12:32:56.000000000 +0100
  42447. @@ -0,0 +1,31 @@
  42448. +/* Copyright (C) 2000-2012 Free Software Foundation, Inc.
  42449. + This file is part of the GNU C Library.
  42450. +
  42451. + The GNU C Library is free software; you can redistribute it and/or
  42452. + modify it under the terms of the GNU Lesser General Public
  42453. + License as published by the Free Software Foundation; either
  42454. + version 2.1 of the License, or (at your option) any later version.
  42455. +
  42456. + The GNU C Library is distributed in the hope that it will be useful,
  42457. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  42458. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  42459. + Lesser General Public License for more details.
  42460. +
  42461. + You should have received a copy of the GNU Lesser General Public
  42462. + License along with the GNU C Library; if not, see
  42463. + <http://www.gnu.org/licenses/>. */
  42464. +
  42465. +#include <fcntl.h>
  42466. +#include <stdio.h>
  42467. +#include <stdlib.h>
  42468. +#include "../misc/internals/tempname.h"
  42469. +
  42470. +/* Generate a unique temporary file name from TEMPLATE.
  42471. + The last six characters of TEMPLATE must be "XXXXXX";
  42472. + they are replaced with a string that makes the filename unique.
  42473. + Then open the file and return a fd. */
  42474. +int
  42475. +mkostemp64 (char *template, int flags)
  42476. +{
  42477. + return __gen_tempname (template, __GT_BIGFILE, flags | O_LARGEFILE);
  42478. +}
  42479. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkostemp.c uClibc-git/libc/stdlib/mkostemp.c
  42480. --- uClibc-0.9.33.2/libc/stdlib/mkostemp.c 1970-01-01 01:00:00.000000000 +0100
  42481. +++ uClibc-git/libc/stdlib/mkostemp.c 2014-02-03 12:32:56.000000000 +0100
  42482. @@ -0,0 +1,30 @@
  42483. +/* Copyright (C) 1998-2012 Free Software Foundation, Inc.
  42484. + This file is part of the GNU C Library.
  42485. +
  42486. + The GNU C Library is free software; you can redistribute it and/or
  42487. + modify it under the terms of the GNU Lesser General Public
  42488. + License as published by the Free Software Foundation; either
  42489. + version 2.1 of the License, or (at your option) any later version.
  42490. +
  42491. + The GNU C Library is distributed in the hope that it will be useful,
  42492. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  42493. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  42494. + Lesser General Public License for more details.
  42495. +
  42496. + You should have received a copy of the GNU Lesser General Public
  42497. + License along with the GNU C Library; if not, see
  42498. + <http://www.gnu.org/licenses/>. */
  42499. +
  42500. +#include <stdio.h>
  42501. +#include <stdlib.h>
  42502. +#include "../misc/internals/tempname.h"
  42503. +
  42504. +/* Generate a unique temporary file name from TEMPLATE.
  42505. + The last six characters of TEMPLATE must be "XXXXXX";
  42506. + they are replaced with a string that makes the filename unique.
  42507. + Then open the file and return a fd. */
  42508. +int
  42509. +mkostemp (char *template, int flags)
  42510. +{
  42511. + return __gen_tempname (template, __GT_FILE, flags);
  42512. +}
  42513. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkstemp64.c uClibc-git/libc/stdlib/mkstemp64.c
  42514. --- uClibc-0.9.33.2/libc/stdlib/mkstemp64.c 2012-05-15 09:20:09.000000000 +0200
  42515. +++ uClibc-git/libc/stdlib/mkstemp64.c 2014-02-03 12:32:56.000000000 +0100
  42516. @@ -13,8 +13,7 @@
  42517. You should have received a copy of the GNU Library General Public
  42518. License along with the GNU C Library; see the file COPYING.LIB. If not,
  42519. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  42520. - Boston, MA 02111-1307, USA. */
  42521. + see <http://www.gnu.org/licenses/>. */
  42522. #include <stdio.h>
  42523. #include <stdlib.h>
  42524. diff -Nur uClibc-0.9.33.2/libc/stdlib/mkstemp.c uClibc-git/libc/stdlib/mkstemp.c
  42525. --- uClibc-0.9.33.2/libc/stdlib/mkstemp.c 2012-05-15 09:20:09.000000000 +0200
  42526. +++ uClibc-git/libc/stdlib/mkstemp.c 2014-02-03 12:32:56.000000000 +0100
  42527. @@ -13,8 +13,7 @@
  42528. You should have received a copy of the GNU Library General Public
  42529. License along with the GNU C Library; see the file COPYING.LIB. If not,
  42530. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  42531. - Boston, MA 02111-1307, USA. */
  42532. + see <http://www.gnu.org/licenses/>. */
  42533. #include <stdio.h>
  42534. #include <stdlib.h>
  42535. diff -Nur uClibc-0.9.33.2/libc/stdlib/mktemp.c uClibc-git/libc/stdlib/mktemp.c
  42536. --- uClibc-0.9.33.2/libc/stdlib/mktemp.c 2012-05-15 09:20:09.000000000 +0200
  42537. +++ uClibc-git/libc/stdlib/mktemp.c 2014-02-03 12:32:56.000000000 +0100
  42538. @@ -13,8 +13,7 @@
  42539. You should have received a copy of the GNU Library General Public
  42540. License along with the GNU C Library; see the file COPYING.LIB. If not,
  42541. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  42542. - Boston, MA 02111-1307, USA. */
  42543. + see <http://www.gnu.org/licenses/>. */
  42544. #include <stdio.h>
  42545. #include <stdlib.h>
  42546. diff -Nur uClibc-0.9.33.2/libc/stdlib/mrand48.c uClibc-git/libc/stdlib/mrand48.c
  42547. --- uClibc-0.9.33.2/libc/stdlib/mrand48.c 2012-05-15 09:20:09.000000000 +0200
  42548. +++ uClibc-git/libc/stdlib/mrand48.c 2014-02-03 12:32:56.000000000 +0100
  42549. @@ -13,9 +13,8 @@
  42550. Lesser General Public License for more details.
  42551. You should have received a copy of the GNU Lesser General Public
  42552. - License along with the GNU C Library; if not, write to the Free
  42553. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42554. - 02111-1307 USA. */
  42555. + License along with the GNU C Library; if not, see
  42556. + <http://www.gnu.org/licenses/>. */
  42557. #include <stdlib.h>
  42558. diff -Nur uClibc-0.9.33.2/libc/stdlib/mrand48_r.c uClibc-git/libc/stdlib/mrand48_r.c
  42559. --- uClibc-0.9.33.2/libc/stdlib/mrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42560. +++ uClibc-git/libc/stdlib/mrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42561. @@ -13,9 +13,8 @@
  42562. Lesser General Public License for more details.
  42563. You should have received a copy of the GNU Lesser General Public
  42564. - License along with the GNU C Library; if not, write to the Free
  42565. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42566. - 02111-1307 USA. */
  42567. + License along with the GNU C Library; if not, see
  42568. + <http://www.gnu.org/licenses/>. */
  42569. #include <stdlib.h>
  42570. diff -Nur uClibc-0.9.33.2/libc/stdlib/nrand48.c uClibc-git/libc/stdlib/nrand48.c
  42571. --- uClibc-0.9.33.2/libc/stdlib/nrand48.c 2012-05-15 09:20:09.000000000 +0200
  42572. +++ uClibc-git/libc/stdlib/nrand48.c 2014-02-03 12:32:56.000000000 +0100
  42573. @@ -13,9 +13,8 @@
  42574. Lesser General Public License for more details.
  42575. You should have received a copy of the GNU Lesser General Public
  42576. - License along with the GNU C Library; if not, write to the Free
  42577. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42578. - 02111-1307 USA. */
  42579. + License along with the GNU C Library; if not, see
  42580. + <http://www.gnu.org/licenses/>. */
  42581. #include <stdlib.h>
  42582. diff -Nur uClibc-0.9.33.2/libc/stdlib/nrand48_r.c uClibc-git/libc/stdlib/nrand48_r.c
  42583. --- uClibc-0.9.33.2/libc/stdlib/nrand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42584. +++ uClibc-git/libc/stdlib/nrand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42585. @@ -13,9 +13,8 @@
  42586. Lesser General Public License for more details.
  42587. You should have received a copy of the GNU Lesser General Public
  42588. - License along with the GNU C Library; if not, write to the Free
  42589. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42590. - 02111-1307 USA. */
  42591. + License along with the GNU C Library; if not, see
  42592. + <http://www.gnu.org/licenses/>. */
  42593. #include <stdlib.h>
  42594. diff -Nur uClibc-0.9.33.2/libc/stdlib/posix_memalign.c uClibc-git/libc/stdlib/posix_memalign.c
  42595. --- uClibc-0.9.33.2/libc/stdlib/posix_memalign.c 2012-05-15 09:20:09.000000000 +0200
  42596. +++ uClibc-git/libc/stdlib/posix_memalign.c 2014-02-03 12:32:56.000000000 +0100
  42597. @@ -15,9 +15,8 @@
  42598. * for more details.
  42599. *
  42600. * You should have received a copy of the GNU Library General Public License
  42601. - * along with this program; if not, write to the Free Software Foundation,
  42602. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  42603. - *
  42604. + * along with this program; see the file COPYING.LIB. If not, see
  42605. + * <http://www.gnu.org/licenses/>.
  42606. */
  42607. #include <stdlib.h>
  42608. diff -Nur uClibc-0.9.33.2/libc/stdlib/ptsname.c uClibc-git/libc/stdlib/ptsname.c
  42609. --- uClibc-0.9.33.2/libc/stdlib/ptsname.c 2012-05-15 09:20:09.000000000 +0200
  42610. +++ uClibc-git/libc/stdlib/ptsname.c 2014-02-03 12:32:56.000000000 +0100
  42611. @@ -13,9 +13,8 @@
  42612. Lesser General Public License for more details.
  42613. You should have received a copy of the GNU Lesser General Public
  42614. - License along with the GNU C Library; if not, write to the Free
  42615. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42616. - 02111-1307 USA. */
  42617. + License along with the GNU C Library; if not, see
  42618. + <http://www.gnu.org/licenses/>. */
  42619. #include <stdio.h>
  42620. #include <errno.h>
  42621. diff -Nur uClibc-0.9.33.2/libc/stdlib/pty-private.h uClibc-git/libc/stdlib/pty-private.h
  42622. --- uClibc-0.9.33.2/libc/stdlib/pty-private.h 2012-05-15 09:20:09.000000000 +0200
  42623. +++ uClibc-git/libc/stdlib/pty-private.h 2014-02-03 12:32:56.000000000 +0100
  42624. @@ -15,8 +15,7 @@
  42625. You should have received a copy of the GNU Library General Public
  42626. License along with the GNU C Library; see the file COPYING.LIB. If not,
  42627. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  42628. - Boston, MA 02111-1307, USA. */
  42629. + see <http://www.gnu.org/licenses/>. */
  42630. #ifndef _PTY_PRIVATE_H
  42631. #define _PTY_PRIVATE_H 1
  42632. diff -Nur uClibc-0.9.33.2/libc/stdlib/rand_r.c uClibc-git/libc/stdlib/rand_r.c
  42633. --- uClibc-0.9.33.2/libc/stdlib/rand_r.c 2012-05-15 09:20:09.000000000 +0200
  42634. +++ uClibc-git/libc/stdlib/rand_r.c 2014-02-03 12:32:56.000000000 +0100
  42635. @@ -14,9 +14,8 @@
  42636. Lesser General Public License for more details.
  42637. You should have received a copy of the GNU Lesser General Public
  42638. - License along with the GNU C Library; if not, write to the Free
  42639. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42640. - 02111-1307 USA. */
  42641. + License along with the GNU C Library; if not, see
  42642. + <http://www.gnu.org/licenses/>. */
  42643. #include <stdlib.h>
  42644. diff -Nur uClibc-0.9.33.2/libc/stdlib/rpmatch.c uClibc-git/libc/stdlib/rpmatch.c
  42645. --- uClibc-0.9.33.2/libc/stdlib/rpmatch.c 1970-01-01 01:00:00.000000000 +0100
  42646. +++ uClibc-git/libc/stdlib/rpmatch.c 2014-02-03 12:32:56.000000000 +0100
  42647. @@ -0,0 +1,7 @@
  42648. +/* Copyright (C) 2012 Bernhard Reutner-Fischer <uclibc@uclibc.org>
  42649. + *
  42650. + * Licensed under the LGPL v2.1+, see the file COPYING.LIB in this tarball.
  42651. + */
  42652. +
  42653. +#define L_rpmatch
  42654. +#include "stdlib.c"
  42655. diff -Nur uClibc-0.9.33.2/libc/stdlib/seed48.c uClibc-git/libc/stdlib/seed48.c
  42656. --- uClibc-0.9.33.2/libc/stdlib/seed48.c 2012-05-15 09:20:09.000000000 +0200
  42657. +++ uClibc-git/libc/stdlib/seed48.c 2014-02-03 12:32:56.000000000 +0100
  42658. @@ -13,9 +13,8 @@
  42659. Lesser General Public License for more details.
  42660. You should have received a copy of the GNU Lesser General Public
  42661. - License along with the GNU C Library; if not, write to the Free
  42662. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42663. - 02111-1307 USA. */
  42664. + License along with the GNU C Library; if not, see
  42665. + <http://www.gnu.org/licenses/>. */
  42666. #include <stdlib.h>
  42667. diff -Nur uClibc-0.9.33.2/libc/stdlib/seed48_r.c uClibc-git/libc/stdlib/seed48_r.c
  42668. --- uClibc-0.9.33.2/libc/stdlib/seed48_r.c 2012-05-15 09:20:09.000000000 +0200
  42669. +++ uClibc-git/libc/stdlib/seed48_r.c 2014-02-03 12:32:56.000000000 +0100
  42670. @@ -13,9 +13,8 @@
  42671. Lesser General Public License for more details.
  42672. You should have received a copy of the GNU Lesser General Public
  42673. - License along with the GNU C Library; if not, write to the Free
  42674. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42675. - 02111-1307 USA. */
  42676. + License along with the GNU C Library; if not, see
  42677. + <http://www.gnu.org/licenses/>. */
  42678. #include <stdlib.h>
  42679. #include <string.h>
  42680. diff -Nur uClibc-0.9.33.2/libc/stdlib/setenv.c uClibc-git/libc/stdlib/setenv.c
  42681. --- uClibc-0.9.33.2/libc/stdlib/setenv.c 2012-05-15 09:20:09.000000000 +0200
  42682. +++ uClibc-git/libc/stdlib/setenv.c 2014-02-03 12:32:56.000000000 +0100
  42683. @@ -12,9 +12,8 @@
  42684. Lesser General Public License for more details.
  42685. You should have received a copy of the GNU Lesser General Public
  42686. - License along with the GNU C Library; if not, write to the Free
  42687. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42688. - 02111-1307 USA.
  42689. + License along with the GNU C Library; see the file COPYING.LIB. If
  42690. + not, see <http://www.gnu.org/licenses/>.
  42691. modified for uClibc by Erik Andersen <andersen@codepoet.org>
  42692. */
  42693. diff -Nur uClibc-0.9.33.2/libc/stdlib/srand48.c uClibc-git/libc/stdlib/srand48.c
  42694. --- uClibc-0.9.33.2/libc/stdlib/srand48.c 2012-05-15 09:20:09.000000000 +0200
  42695. +++ uClibc-git/libc/stdlib/srand48.c 2014-02-03 12:32:56.000000000 +0100
  42696. @@ -13,9 +13,8 @@
  42697. Lesser General Public License for more details.
  42698. You should have received a copy of the GNU Lesser General Public
  42699. - License along with the GNU C Library; if not, write to the Free
  42700. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42701. - 02111-1307 USA. */
  42702. + License along with the GNU C Library; if not, see
  42703. + <http://www.gnu.org/licenses/>. */
  42704. #include <stdlib.h>
  42705. diff -Nur uClibc-0.9.33.2/libc/stdlib/srand48_r.c uClibc-git/libc/stdlib/srand48_r.c
  42706. --- uClibc-0.9.33.2/libc/stdlib/srand48_r.c 2012-05-15 09:20:09.000000000 +0200
  42707. +++ uClibc-git/libc/stdlib/srand48_r.c 2014-02-03 12:32:56.000000000 +0100
  42708. @@ -13,9 +13,8 @@
  42709. Lesser General Public License for more details.
  42710. You should have received a copy of the GNU Lesser General Public
  42711. - License along with the GNU C Library; if not, write to the Free
  42712. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  42713. - 02111-1307 USA. */
  42714. + License along with the GNU C Library; if not, see
  42715. + <http://www.gnu.org/licenses/>. */
  42716. #include <stdlib.h>
  42717. #include <limits.h>
  42718. diff -Nur uClibc-0.9.33.2/libc/stdlib/stdlib.c uClibc-git/libc/stdlib/stdlib.c
  42719. --- uClibc-0.9.33.2/libc/stdlib/stdlib.c 2012-05-15 09:20:09.000000000 +0200
  42720. +++ uClibc-git/libc/stdlib/stdlib.c 2014-02-03 12:32:56.000000000 +0100
  42721. @@ -12,8 +12,8 @@
  42722. * Library General Public License for more details.
  42723. *
  42724. * You should have received a copy of the GNU Library General Public
  42725. - * License along with this library; if not, write to the Free
  42726. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  42727. + * License along with this library; if not, see
  42728. + * <http://www.gnu.org/licenses/>.
  42729. */
  42730. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  42731. @@ -32,58 +32,8 @@
  42732. * Add wscto{inttype} functions.
  42733. */
  42734. -#define _ISOC99_SOURCE /* for ULLONG primarily... */
  42735. #include <limits.h>
  42736. #include <stdint.h>
  42737. -/* Work around gcc's refusal to create aliases.
  42738. - * TODO: Add in a define to disable the aliases? */
  42739. -
  42740. -#if UINT_MAX == ULONG_MAX
  42741. -#ifdef L_labs
  42742. -#define abs __ignore_abs
  42743. -#endif
  42744. -#ifdef L_atol
  42745. -#define atoi __ignore_atoi
  42746. -#endif
  42747. -#endif
  42748. -#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42749. -#ifdef L_labs
  42750. -#define llabs __ignore_llabs
  42751. -#endif
  42752. -#ifdef L_atol
  42753. -#define atoll __ignore_atoll
  42754. -#endif
  42755. -#ifdef L_strtol
  42756. -#define strtoll __ignore_strtoll
  42757. -#endif
  42758. -#ifdef L_strtoul
  42759. -#define strtoull __ignore_strtoull
  42760. -#endif
  42761. -#ifdef L_wcstol
  42762. -#define wcstoll __ignore_wcstoll
  42763. -#endif
  42764. -#ifdef L_wcstoul
  42765. -#define wcstoull __ignore_wcstoull
  42766. -#endif
  42767. -#ifdef L_strtol_l
  42768. -#define strtoll_l __ignore_strtoll_l
  42769. -#endif
  42770. -#ifdef L_strtoul_l
  42771. -#define strtoull_l __ignore_strtoull_l
  42772. -#endif
  42773. -#ifdef L_wcstol_l
  42774. -#define wcstoll_l __ignore_wcstoll_l
  42775. -#endif
  42776. -#ifdef L_wcstoul_l
  42777. -#define wcstoull_l __ignore_wcstoull_l
  42778. -#endif
  42779. -#endif
  42780. -#if defined(ULLONG_MAX) && (ULLONG_MAX == UINTMAX_MAX)
  42781. -#if defined L_labs || defined L_llabs
  42782. -#define imaxabs __ignore_imaxabs
  42783. -#endif
  42784. -#endif
  42785. -
  42786. #include <stdint.h>
  42787. #include <inttypes.h>
  42788. #include <ctype.h>
  42789. @@ -100,10 +50,6 @@
  42790. #include <wctype.h>
  42791. #include <bits/uClibc_uwchar.h>
  42792. -#ifdef __UCLIBC_HAS_XLOCALE__
  42793. -#include <xlocale.h>
  42794. -#endif /* __UCLIBC_HAS_XLOCALE__ */
  42795. -
  42796. /* TODO: clean up the following... */
  42797. #if WCHAR_MAX > 0xffffUL
  42798. @@ -226,21 +172,15 @@
  42799. }
  42800. #if UINT_MAX == ULONG_MAX
  42801. -#undef abs
  42802. -extern __typeof(labs) abs;
  42803. -strong_alias(labs,abs)
  42804. +strong_alias_untyped(labs,abs)
  42805. #endif
  42806. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42807. -#undef llabs
  42808. -extern __typeof(labs) llabs;
  42809. -strong_alias(labs,llabs)
  42810. +strong_alias_untyped(labs,llabs)
  42811. #endif
  42812. #if ULONG_MAX == UINTMAX_MAX
  42813. -#undef imaxabs
  42814. -extern __typeof(labs) imaxabs;
  42815. -strong_alias(labs,imaxabs)
  42816. +strong_alias_untyped(labs,imaxabs)
  42817. #endif
  42818. #endif
  42819. @@ -255,9 +195,7 @@
  42820. }
  42821. #if (ULLONG_MAX == UINTMAX_MAX)
  42822. -#undef imaxabs
  42823. -extern __typeof(llabs) imaxabs;
  42824. -strong_alias(llabs,imaxabs)
  42825. +strong_alias_untyped(llabs,imaxabs)
  42826. #endif
  42827. #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
  42828. @@ -288,18 +226,12 @@
  42829. }
  42830. #if UINT_MAX == ULONG_MAX
  42831. -#undef atoi
  42832. -extern __typeof(atol) atoi;
  42833. -/* the one in stdlib.h is not enough due to prototype mismatch */
  42834. -libc_hidden_proto(atoi)
  42835. -strong_alias(atol,atoi)
  42836. +strong_alias_untyped(atol,atoi)
  42837. libc_hidden_def(atoi)
  42838. #endif
  42839. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42840. -#undef atoll
  42841. -extern __typeof(atol) atoll;
  42842. -strong_alias(atol,atoll)
  42843. +strong_alias_untyped(atol,atoll)
  42844. #endif
  42845. #endif
  42846. @@ -318,9 +250,16 @@
  42847. #endif
  42848. /**********************************************************************/
  42849. +#ifdef L_rpmatch
  42850. +int rpmatch (const char *__response)
  42851. +{
  42852. + return (__response[0] == 'y' || __response[0] == 'Y') ? 1 :
  42853. + (__response[0] == 'n' || __response[0] == 'N') ? 0 : -1;
  42854. +}
  42855. +#endif
  42856. +/**********************************************************************/
  42857. #if defined(L_strtol) || defined(L_strtol_l)
  42858. -libc_hidden_proto(__XL_NPP(strtol))
  42859. long __XL_NPP(strtol)(const char * __restrict str, char ** __restrict endptr,
  42860. int base __LOCALE_PARAM)
  42861. {
  42862. @@ -333,17 +272,7 @@
  42863. #endif
  42864. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42865. -#ifdef L_strtol_l
  42866. -#undef strtoll_l
  42867. -#else
  42868. -#undef strtoll
  42869. -#endif
  42870. -extern __typeof(__XL_NPP(strtol)) __XL_NPP(strtoll);
  42871. -/* the one in stdlib.h is not enough due to prototype mismatch */
  42872. -#ifdef L_strtol
  42873. -libc_hidden_proto(__XL_NPP(strtoll))
  42874. -#endif
  42875. -strong_alias(__XL_NPP(strtol),__XL_NPP(strtoll))
  42876. +strong_alias_untyped(__XL_NPP(strtol),__XL_NPP(strtoll))
  42877. #ifdef L_strtol
  42878. libc_hidden_def(__XL_NPP(strtoll))
  42879. strong_alias(strtol,strtoq)
  42880. @@ -389,13 +318,7 @@
  42881. #endif
  42882. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42883. -#ifdef L_strtoul_l
  42884. -#undef strtoull_l
  42885. -#else
  42886. -#undef strtoull
  42887. -#endif
  42888. -extern __typeof(__XL_NPP(strtoul)) __XL_NPP(strtoull);
  42889. -strong_alias(__XL_NPP(strtoul),__XL_NPP(strtoull))
  42890. +strong_alias_untyped(__XL_NPP(strtoul),__XL_NPP(strtoull))
  42891. #if !defined(L_strtoul_l)
  42892. strong_alias(strtoul,strtouq)
  42893. #endif
  42894. @@ -744,16 +667,7 @@
  42895. #endif /* defined(ULLONG_MAX) && (LLONG_MAX > LONG_MAX) */
  42896. #endif
  42897. -/**********************************************************************/
  42898. -/* Made _Exit() an alias for _exit(), as per C99. */
  42899. -/* #ifdef L__Exit */
  42900. -/* void _Exit(int status) */
  42901. -/* { */
  42902. -/* _exit(status); */
  42903. -/* } */
  42904. -/* #endif */
  42905. -/**********************************************************************/
  42906. #ifdef L_bsearch
  42907. void *bsearch(const void *key, const void *base, size_t /* nmemb */ high,
  42908. @@ -1067,13 +981,7 @@
  42909. #endif
  42910. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42911. -#ifdef L_wcstol_l
  42912. -#undef wcstoll_l
  42913. -#else
  42914. -#undef wcstoll
  42915. -#endif
  42916. -extern __typeof(__XL_NPP(wcstol)) __XL_NPP(wcstoll);
  42917. -strong_alias(__XL_NPP(wcstol),__XL_NPP(wcstoll))
  42918. +strong_alias_untyped(__XL_NPP(wcstol),__XL_NPP(wcstoll))
  42919. #endif
  42920. #endif
  42921. @@ -1114,13 +1022,7 @@
  42922. #endif
  42923. #if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
  42924. -#ifdef L_wcstoul_l
  42925. -#undef wcstoull_l
  42926. -#else
  42927. -#undef wcstoull
  42928. -#endif
  42929. -extern __typeof(__XL_NPP(wcstoul)) __XL_NPP(wcstoull);
  42930. -strong_alias(__XL_NPP(wcstoul),__XL_NPP(wcstoull))
  42931. +strong_alias_untyped(__XL_NPP(wcstoul),__XL_NPP(wcstoull))
  42932. #endif
  42933. #endif
  42934. diff -Nur uClibc-0.9.33.2/libc/stdlib/_strtod.c uClibc-git/libc/stdlib/_strtod.c
  42935. --- uClibc-0.9.33.2/libc/stdlib/_strtod.c 2012-05-15 09:20:09.000000000 +0200
  42936. +++ uClibc-git/libc/stdlib/_strtod.c 2014-02-03 12:32:56.000000000 +0100
  42937. @@ -95,7 +95,6 @@
  42938. /**********************************************************************/
  42939. -#define _ISOC99_SOURCE 1
  42940. #include <stdlib.h>
  42941. #include <string.h>
  42942. #include <ctype.h>
  42943. @@ -112,10 +111,6 @@
  42944. # include <bits/uClibc_uwchar.h>
  42945. #endif
  42946. -#ifdef __UCLIBC_HAS_XLOCALE__
  42947. -# include <xlocale.h>
  42948. -#endif
  42949. -
  42950. /* Handle _STRTOD_HEXADECIMAL_FLOATS via uClibc config now. */
  42951. #undef _STRTOD_HEXADECIMAL_FLOATS
  42952. #ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
  42953. @@ -509,7 +504,6 @@
  42954. #endif
  42955. -libc_hidden_proto(__XL_NPP(strtof))
  42956. float __XL_NPP(strtof)(const Wchar *str, Wchar **endptr __LOCALE_PARAM )
  42957. {
  42958. #if FPMAX_TYPE == 1
  42959. @@ -526,7 +520,6 @@
  42960. return y;
  42961. #endif
  42962. }
  42963. -libc_hidden_def(__XL_NPP(strtof))
  42964. #endif
  42965. #endif
  42966. diff -Nur uClibc-0.9.33.2/libc/stdlib/system.c uClibc-git/libc/stdlib/system.c
  42967. --- uClibc-0.9.33.2/libc/stdlib/system.c 2012-05-15 09:20:09.000000000 +0200
  42968. +++ uClibc-git/libc/stdlib/system.c 2014-02-03 12:32:56.000000000 +0100
  42969. @@ -24,11 +24,6 @@
  42970. * need to figure out why still
  42971. */
  42972. #if !defined __UCLIBC_HAS_THREADS_NATIVE__ || defined __sparc__
  42973. -/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
  42974. -#include <sys/syscall.h>
  42975. -#ifndef __NR_vfork
  42976. -# define vfork fork
  42977. -#endif
  42978. int __libc_system(const char *command)
  42979. {
  42980. @@ -66,7 +61,7 @@
  42981. __printf("Waiting for child %d\n", pid);
  42982. #endif
  42983. - if (wait4(pid, &wait_val, 0, 0) == -1)
  42984. + if (__wait4_nocancel(pid, &wait_val, 0, 0) == -1)
  42985. wait_val = -1;
  42986. out:
  42987. diff -Nur uClibc-0.9.33.2/libc/stdlib/__uc_malloc.c uClibc-git/libc/stdlib/__uc_malloc.c
  42988. --- uClibc-0.9.33.2/libc/stdlib/__uc_malloc.c 2012-05-15 09:20:09.000000000 +0200
  42989. +++ uClibc-git/libc/stdlib/__uc_malloc.c 2014-02-03 12:32:56.000000000 +0100
  42990. @@ -13,8 +13,7 @@
  42991. You should have received a copy of the GNU Library General Public
  42992. License along with this library; see the file COPYING.LIB. If
  42993. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  42994. -Cambridge, MA 02139, USA.
  42995. +not, see <http://www.gnu.org/licenses/>.
  42996. */
  42997. diff -Nur uClibc-0.9.33.2/libc/stdlib/unix_grantpt.c uClibc-git/libc/stdlib/unix_grantpt.c
  42998. --- uClibc-0.9.33.2/libc/stdlib/unix_grantpt.c 2012-05-15 09:20:09.000000000 +0200
  42999. +++ uClibc-git/libc/stdlib/unix_grantpt.c 2014-02-03 12:32:56.000000000 +0100
  43000. @@ -14,8 +14,7 @@
  43001. You should have received a copy of the GNU Library General Public
  43002. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43003. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43004. - Boston, MA 02111-1307, USA. */
  43005. + see <http://www.gnu.org/licenses/>. */
  43006. #include <assert.h>
  43007. #include <errno.h>
  43008. @@ -31,12 +30,6 @@
  43009. #include "pty-private.h"
  43010. -/* uClinux-2.0 has vfork, but Linux 2.0 doesn't */
  43011. -#include <sys/syscall.h>
  43012. -#if ! defined __NR_vfork
  43013. -#define vfork fork
  43014. -#endif
  43015. -
  43016. /* Return the result of ptsname_r in the buffer pointed to by PTS,
  43017. which should be of length BUF_LEN. If it is too long to fit in
  43018. this buffer, a sufficiently long buffer is allocated using malloc,
  43019. diff -Nur uClibc-0.9.33.2/libc/stdlib/unlockpt.c uClibc-git/libc/stdlib/unlockpt.c
  43020. --- uClibc-0.9.33.2/libc/stdlib/unlockpt.c 2012-05-15 09:20:09.000000000 +0200
  43021. +++ uClibc-git/libc/stdlib/unlockpt.c 2014-02-03 12:32:56.000000000 +0100
  43022. @@ -14,8 +14,7 @@
  43023. You should have received a copy of the GNU Library General Public
  43024. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43025. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43026. - Boston, MA 02111-1307, USA. */
  43027. + see <http://www.gnu.org/licenses/>. */
  43028. #include <errno.h>
  43029. #include <stdlib.h>
  43030. diff -Nur uClibc-0.9.33.2/libc/stdlib/valloc.c uClibc-git/libc/stdlib/valloc.c
  43031. --- uClibc-0.9.33.2/libc/stdlib/valloc.c 2012-05-15 09:20:09.000000000 +0200
  43032. +++ uClibc-git/libc/stdlib/valloc.c 2014-02-03 12:32:56.000000000 +0100
  43033. @@ -14,8 +14,7 @@
  43034. You should have received a copy of the GNU Library General Public
  43035. License along with this library; see the file COPYING.LIB. If
  43036. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  43037. -Cambridge, MA 02139, USA.
  43038. +not, see <http://www.gnu.org/licenses/>.
  43039. The author may be reached (Email) at the address mike@@ai.mit.edu,
  43040. or (US mail) as Mike Haertel c/o Free Software Foundation. */
  43041. diff -Nur uClibc-0.9.33.2/libc/string/arc/Makefile uClibc-git/libc/string/arc/Makefile
  43042. --- uClibc-0.9.33.2/libc/string/arc/Makefile 1970-01-01 01:00:00.000000000 +0100
  43043. +++ uClibc-git/libc/string/arc/Makefile 2014-02-03 12:32:56.000000000 +0100
  43044. @@ -0,0 +1,13 @@
  43045. +# Makefile for uClibc
  43046. +#
  43047. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  43048. +#
  43049. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43050. +#
  43051. +
  43052. +top_srcdir:=../../../
  43053. +top_builddir:=../../../
  43054. +all: objs
  43055. +include $(top_builddir)Rules.mak
  43056. +include ../Makefile.in
  43057. +include $(top_srcdir)Makerules
  43058. diff -Nur uClibc-0.9.33.2/libc/string/arc/memcmp.S uClibc-git/libc/string/arc/memcmp.S
  43059. --- uClibc-0.9.33.2/libc/string/arc/memcmp.S 1970-01-01 01:00:00.000000000 +0100
  43060. +++ uClibc-git/libc/string/arc/memcmp.S 2014-02-03 12:32:56.000000000 +0100
  43061. @@ -0,0 +1,128 @@
  43062. +/*
  43063. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43064. + * Copyright (C) 2007 ARC International (UK) LTD
  43065. + *
  43066. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43067. + */
  43068. +
  43069. +#include <sysdep.h>
  43070. +#include <features.h>
  43071. +
  43072. +#ifdef __LITTLE_ENDIAN__
  43073. +#define WORD2 r2
  43074. +#define SHIFT r3
  43075. +#else /* BIG ENDIAN */
  43076. +#define WORD2 r3
  43077. +#define SHIFT r2
  43078. +#endif
  43079. +
  43080. +ENTRY(memcmp)
  43081. + or r12,r0,r1
  43082. + asl_s r12,r12,30
  43083. + sub r3,r2,1
  43084. + brls r2,r12,.Lbytewise
  43085. + ld r4,[r0,0]
  43086. + ld r5,[r1,0]
  43087. + lsr.f lp_count,r3,3
  43088. + lpne .Loop_end
  43089. + ld_s WORD2,[r0,4]
  43090. + ld_s r12,[r1,4]
  43091. + brne r4,r5,.Leven
  43092. + ld.a r4,[r0,8]
  43093. + ld.a r5,[r1,8]
  43094. + brne WORD2,r12,.Lodd
  43095. +.Loop_end:
  43096. + asl_s SHIFT,SHIFT,3
  43097. + bhs_s .Last_cmp
  43098. + brne r4,r5,.Leven
  43099. + ld r4,[r0,4]
  43100. + ld r5,[r1,4]
  43101. +#ifdef __LITTLE_ENDIAN__
  43102. + nop_s
  43103. + ; one more load latency cycle
  43104. +.Last_cmp:
  43105. + xor r0,r4,r5
  43106. + bset r0,r0,SHIFT
  43107. + sub_s r1,r0,1
  43108. + bic_s r1,r1,r0
  43109. + norm r1,r1
  43110. + b.d .Leven_cmp
  43111. + and r1,r1,24
  43112. +.Leven:
  43113. + xor r0,r4,r5
  43114. + sub_s r1,r0,1
  43115. + bic_s r1,r1,r0
  43116. + norm r1,r1
  43117. + ; slow track insn
  43118. + and r1,r1,24
  43119. +.Leven_cmp:
  43120. + asl r2,r4,r1
  43121. + asl r12,r5,r1
  43122. + lsr_s r2,r2,1
  43123. + lsr_s r12,r12,1
  43124. + j_s.d [blink]
  43125. + sub r0,r2,r12
  43126. + .balign 4
  43127. +.Lodd:
  43128. + xor r0,WORD2,r12
  43129. + sub_s r1,r0,1
  43130. + bic_s r1,r1,r0
  43131. + norm r1,r1
  43132. + ; slow track insn
  43133. + and r1,r1,24
  43134. + asl_s r2,r2,r1
  43135. + asl_s r12,r12,r1
  43136. + lsr_s r2,r2,1
  43137. + lsr_s r12,r12,1
  43138. + j_s.d [blink]
  43139. + sub r0,r2,r12
  43140. +#else /* BIG ENDIAN */
  43141. +.Last_cmp:
  43142. + neg_s SHIFT,SHIFT
  43143. + lsr r4,r4,SHIFT
  43144. + lsr r5,r5,SHIFT
  43145. + ; slow track insn
  43146. +.Leven:
  43147. + sub.f r0,r4,r5
  43148. + mov.ne r0,1
  43149. + j_s.d [blink]
  43150. + bset.cs r0,r0,31
  43151. +.Lodd:
  43152. + cmp_s WORD2,r12
  43153. + mov_s r0,1
  43154. + j_s.d [blink]
  43155. + bset.cs r0,r0,31
  43156. +#endif /* ENDIAN */
  43157. + .balign 4
  43158. +.Lbytewise:
  43159. + breq r2,0,.Lnil
  43160. + ldb r4,[r0,0]
  43161. + ldb r5,[r1,0]
  43162. + lsr.f lp_count,r3
  43163. + lpne .Lbyte_end
  43164. + ldb_s r3,[r0,1]
  43165. + ldb r12,[r1,1]
  43166. + brne r4,r5,.Lbyte_even
  43167. + ldb.a r4,[r0,2]
  43168. + ldb.a r5,[r1,2]
  43169. + brne r3,r12,.Lbyte_odd
  43170. +.Lbyte_end:
  43171. + bcc .Lbyte_even
  43172. + brne r4,r5,.Lbyte_even
  43173. + ldb_s r3,[r0,1]
  43174. + ldb_s r12,[r1,1]
  43175. +.Lbyte_odd:
  43176. + j_s.d [blink]
  43177. + sub r0,r3,r12
  43178. +.Lbyte_even:
  43179. + j_s.d [blink]
  43180. + sub r0,r4,r5
  43181. +.Lnil:
  43182. + j_s.d [blink]
  43183. + mov r0,0
  43184. +END(memcmp)
  43185. +libc_hidden_def(memcmp)
  43186. +
  43187. +#ifdef __UCLIBC_SUSV3_LEGACY__
  43188. +strong_alias(memcmp,bcmp)
  43189. +#endif
  43190. diff -Nur uClibc-0.9.33.2/libc/string/arc/memcpy.S uClibc-git/libc/string/arc/memcpy.S
  43191. --- uClibc-0.9.33.2/libc/string/arc/memcpy.S 1970-01-01 01:00:00.000000000 +0100
  43192. +++ uClibc-git/libc/string/arc/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  43193. @@ -0,0 +1,71 @@
  43194. +/*
  43195. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43196. + * Copyright (C) 2007 ARC International (UK) LTD
  43197. + *
  43198. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43199. + */
  43200. +
  43201. +#include <sysdep.h>
  43202. +
  43203. +/* This memcpy implementation does not support objects of 1GB or larger -
  43204. + the check for alignment does not work then. */
  43205. +/* We assume that most sources and destinations are aligned, and
  43206. + that also lengths are mostly a multiple of four, although to a lesser
  43207. + extent. */
  43208. +ENTRY(memcpy)
  43209. + or r3,r0,r1
  43210. + asl_s r3,r3,30
  43211. + mov_s r5,r0
  43212. + brls.d r2,r3,.Lcopy_bytewise
  43213. + sub.f r3,r2,1
  43214. + ld_s r12,[r1,0]
  43215. + asr.f lp_count,r3,3
  43216. + bbit0.d r3,2,.Lnox4
  43217. + bmsk_s r2,r2,1
  43218. + st.ab r12,[r5,4]
  43219. + ld.a r12,[r1,4]
  43220. +.Lnox4:
  43221. + lppnz .Lendloop
  43222. + ld_s r3,[r1,4]
  43223. + st.ab r12,[r5,4]
  43224. + ld.a r12,[r1,8]
  43225. + st.ab r3,[r5,4]
  43226. +.Lendloop:
  43227. + breq r2,0,.Last_store
  43228. + ld r3,[r5,0]
  43229. +#ifdef __LITTLE_ENDIAN__
  43230. + add3 r2,-1,r2
  43231. + ; uses long immediate
  43232. + xor_s r12,r12,r3
  43233. + bmsk r12,r12,r2
  43234. + xor_s r12,r12,r3
  43235. +#else /* BIG ENDIAN */
  43236. + sub3 r2,31,r2
  43237. + ; uses long immediate
  43238. + xor_s r3,r3,r12
  43239. + bmsk r3,r3,r2
  43240. + xor_s r12,r12,r3
  43241. +#endif /* ENDIAN */
  43242. +.Last_store:
  43243. + j_s.d [blink]
  43244. + st r12,[r5,0]
  43245. +
  43246. + .balign 4
  43247. +.Lcopy_bytewise:
  43248. + jcs [blink]
  43249. + ldb_s r12,[r1,0]
  43250. + lsr.f lp_count,r3
  43251. + bhs_s .Lnox1
  43252. + stb.ab r12,[r5,1]
  43253. + ldb.a r12,[r1,1]
  43254. +.Lnox1:
  43255. + lppnz .Lendbloop
  43256. + ldb_s r3,[r1,1]
  43257. + stb.ab r12,[r5,1]
  43258. + ldb.a r12,[r1,2]
  43259. + stb.ab r3,[r5,1]
  43260. +.Lendbloop:
  43261. + j_s.d [blink]
  43262. + stb r12,[r5,0]
  43263. +END(memcpy)
  43264. +libc_hidden_def(memcpy)
  43265. diff -Nur uClibc-0.9.33.2/libc/string/arc/memset.S uClibc-git/libc/string/arc/memset.S
  43266. --- uClibc-0.9.33.2/libc/string/arc/memset.S 1970-01-01 01:00:00.000000000 +0100
  43267. +++ uClibc-git/libc/string/arc/memset.S 2014-02-03 12:32:56.000000000 +0100
  43268. @@ -0,0 +1,51 @@
  43269. +/*
  43270. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43271. + * Copyright (C) 2007 ARC International (UK) LTD
  43272. + *
  43273. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43274. + */
  43275. +
  43276. +#include <sysdep.h>
  43277. +
  43278. +#define SMALL 7 /* Must be at least 6 to deal with alignment/loop issues. */
  43279. +
  43280. +ENTRY(memset)
  43281. +
  43282. + mov_s r4,r0
  43283. + or r12,r0,r2
  43284. + bmsk.f r12,r12,1
  43285. + extb_s r1,r1
  43286. + asl r3,r1,8
  43287. + beq.d .Laligned
  43288. + or_s r1,r1,r3
  43289. + brls r2,SMALL,.Ltiny
  43290. + add r3,r2,r0
  43291. + stb r1,[r3,-1]
  43292. + bclr_s r3,r3,0
  43293. + stw r1,[r3,-2]
  43294. + bmsk.f r12,r0,1
  43295. + add_s r2,r2,r12
  43296. + sub.ne r2,r2,4
  43297. + stb.ab r1,[r4,1]
  43298. + and r4,r4,-2
  43299. + stw.ab r1,[r4,2]
  43300. + and r4,r4,-4
  43301. +.Laligned: ; This code address should be aligned for speed.
  43302. + asl r3,r1,16
  43303. + lsr.f lp_count,r2,2
  43304. + or_s r1,r1,r3
  43305. + lpne .Loop_end
  43306. + st.ab r1,[r4,4]
  43307. +.Loop_end:
  43308. + j_s [blink]
  43309. +
  43310. +
  43311. + .balign 4
  43312. +.Ltiny:
  43313. + mov.f lp_count,r2
  43314. + lpne .Ltiny_end
  43315. + stb.ab r1,[r4,1]
  43316. +.Ltiny_end:
  43317. + j_s [blink]
  43318. +END(memset)
  43319. +libc_hidden_def(memset)
  43320. diff -Nur uClibc-0.9.33.2/libc/string/arc/strchr.S uClibc-git/libc/string/arc/strchr.S
  43321. --- uClibc-0.9.33.2/libc/string/arc/strchr.S 1970-01-01 01:00:00.000000000 +0100
  43322. +++ uClibc-git/libc/string/arc/strchr.S 2014-02-03 12:32:56.000000000 +0100
  43323. @@ -0,0 +1,138 @@
  43324. +/*
  43325. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43326. + * Copyright (C) 2007 ARC International (UK) LTD
  43327. + *
  43328. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43329. + */
  43330. +
  43331. +#include <sysdep.h>
  43332. +#include <features.h>
  43333. +
  43334. +/* ARC700 has a relatively long pipeline and branch prediction, so we want
  43335. + to avoid branches that are hard to predict. On the other hand, the
  43336. + presence of the norm instruction makes it easier to operate on whole
  43337. + words branch-free. */
  43338. +
  43339. +ENTRY(strchr)
  43340. + extb_s r1,r1
  43341. + asl r5,r1,8
  43342. + bmsk r2,r0,1
  43343. + or r5,r5,r1
  43344. + mov_s r3,0x01010101
  43345. + breq.d r2,r0,.Laligned
  43346. + asl r4,r5,16
  43347. + sub_s r0,r0,r2
  43348. + asl r7,r2,3
  43349. + ld_s r2,[r0]
  43350. +#ifdef __LITTLE_ENDIAN__
  43351. + asl r7,r3,r7
  43352. +#else
  43353. + lsr r7,r3,r7
  43354. +#endif
  43355. + or r5,r5,r4
  43356. + ror r4,r3
  43357. + sub r12,r2,r7
  43358. + bic_s r12,r12,r2
  43359. + and r12,r12,r4
  43360. + brne.d r12,0,.Lfound0_ua
  43361. + xor r6,r2,r5
  43362. + ld.a r2,[r0,4]
  43363. + sub r12,r6,r7
  43364. + bic r12,r12,r6
  43365. +#ifdef __LITTLE_ENDIAN__
  43366. + and r7,r12,r4
  43367. + breq r7,0,.Loop ; For speed, we want this branch to be unaligned.
  43368. + b .Lfound_char ; Likewise this one.
  43369. +#else
  43370. + and r12,r12,r4
  43371. + breq r12,0,.Loop ; For speed, we want this branch to be unaligned.
  43372. + lsr_s r12,r12,7
  43373. + bic r2,r7,r6
  43374. + b.d .Lfound_char_b
  43375. + and_s r2,r2,r12
  43376. +#endif
  43377. +; /* We require this code address to be unaligned for speed... */
  43378. +.Laligned:
  43379. + ld_s r2,[r0]
  43380. + or r5,r5,r4
  43381. + ror r4,r3
  43382. +; /* ... so that this code address is aligned, for itself and ... */
  43383. +.Loop:
  43384. + sub r12,r2,r3
  43385. + bic_s r12,r12,r2
  43386. + and r12,r12,r4
  43387. + brne.d r12,0,.Lfound0
  43388. + xor r6,r2,r5
  43389. + ld.a r2,[r0,4]
  43390. + sub r12,r6,r3
  43391. + bic r12,r12,r6
  43392. + and r7,r12,r4
  43393. + breq r7,0,.Loop /* ... so that this branch is unaligned. */
  43394. + ; Found searched-for character. r0 has already advanced to next word.
  43395. +#ifdef __LITTLE_ENDIAN__
  43396. +/* We only need the information about the first matching byte
  43397. + (i.e. the least significant matching byte) to be exact,
  43398. + hence there is no problem with carry effects. */
  43399. +.Lfound_char:
  43400. + sub r3,r7,1
  43401. + bic r3,r3,r7
  43402. + norm r2,r3
  43403. + sub_s r0,r0,1
  43404. + asr_s r2,r2,3
  43405. + j.d [blink]
  43406. + sub_s r0,r0,r2
  43407. +
  43408. + .balign 4
  43409. +.Lfound0_ua:
  43410. + mov r3,r7
  43411. +.Lfound0:
  43412. + sub r3,r6,r3
  43413. + bic r3,r3,r6
  43414. + and r2,r3,r4
  43415. + or_s r12,r12,r2
  43416. + sub_s r3,r12,1
  43417. + bic_s r3,r3,r12
  43418. + norm r3,r3
  43419. + add_s r0,r0,3
  43420. + asr_s r12,r3,3
  43421. + asl.f 0,r2,r3
  43422. + sub_s r0,r0,r12
  43423. + j_s.d [blink]
  43424. + mov.pl r0,0
  43425. +#else /* BIG ENDIAN */
  43426. +.Lfound_char:
  43427. + lsr r7,r7,7
  43428. +
  43429. + bic r2,r7,r6
  43430. +.Lfound_char_b:
  43431. + norm r2,r2
  43432. + sub_s r0,r0,4
  43433. + asr_s r2,r2,3
  43434. + j.d [blink]
  43435. + add_s r0,r0,r2
  43436. +
  43437. +.Lfound0_ua:
  43438. + mov_s r3,r7
  43439. +.Lfound0:
  43440. + asl_s r2,r2,7
  43441. + or r7,r6,r4
  43442. + bic_s r12,r12,r2
  43443. + sub r2,r7,r3
  43444. + or r2,r2,r6
  43445. + bic r12,r2,r12
  43446. + bic.f r3,r4,r12
  43447. + norm r3,r3
  43448. +
  43449. + add.pl r3,r3,1
  43450. + asr_s r12,r3,3
  43451. + asl.f 0,r2,r3
  43452. + add_s r0,r0,r12
  43453. + j_s.d [blink]
  43454. + mov.mi r0,0
  43455. +#endif /* ENDIAN */
  43456. +END(strchr)
  43457. +libc_hidden_def(strchr)
  43458. +
  43459. +#ifdef __UCLIBC_SUSV3_LEGACY__
  43460. +strong_alias(strchr,index)
  43461. +#endif
  43462. diff -Nur uClibc-0.9.33.2/libc/string/arc/strcmp.S uClibc-git/libc/string/arc/strcmp.S
  43463. --- uClibc-0.9.33.2/libc/string/arc/strcmp.S 1970-01-01 01:00:00.000000000 +0100
  43464. +++ uClibc-git/libc/string/arc/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  43465. @@ -0,0 +1,102 @@
  43466. +/*
  43467. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43468. + * Copyright (C) 2007 ARC International (UK) LTD
  43469. + *
  43470. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43471. + */
  43472. +
  43473. +#include <features.h>
  43474. +#include <sysdep.h>
  43475. +
  43476. +/* This is optimized primarily for the ARC700.
  43477. + It would be possible to speed up the loops by one cycle / word
  43478. + respective one cycle / byte by forcing double source 1 alignment, unrolling
  43479. + by a factor of two, and speculatively loading the second word / byte of
  43480. + source 1; however, that would increase the overhead for loop setup / finish,
  43481. + and strcmp might often terminate early. */
  43482. +
  43483. +ENTRY(strcmp)
  43484. + or r2,r0,r1
  43485. + bmsk_s r2,r2,1
  43486. + brne r2,0,.Lcharloop
  43487. + mov_s r12,0x01010101
  43488. + ror r5,r12
  43489. +.Lwordloop:
  43490. + ld.ab r2,[r0,4]
  43491. + ld.ab r3,[r1,4]
  43492. + nop_s
  43493. + sub r4,r2,r12
  43494. + bic r4,r4,r2
  43495. + and r4,r4,r5
  43496. + brne r4,0,.Lfound0
  43497. + breq r2,r3,.Lwordloop
  43498. +#ifdef __LITTLE_ENDIAN__
  43499. + xor r0,r2,r3 ; mask for difference
  43500. + sub_s r1,r0,1
  43501. + bic_s r0,r0,r1 ; mask for least significant difference bit
  43502. + sub r1,r5,r0
  43503. + xor r0,r5,r1 ; mask for least significant difference byte
  43504. + and_s r2,r2,r0
  43505. + and_s r3,r3,r0
  43506. +#endif /* LITTLE ENDIAN */
  43507. + cmp_s r2,r3
  43508. + mov_s r0,1
  43509. + j_s.d [blink]
  43510. + bset.lo r0,r0,31
  43511. +
  43512. + .balign 4
  43513. +#ifdef __LITTLE_ENDIAN__
  43514. +.Lfound0:
  43515. + xor r0,r2,r3 ; mask for difference
  43516. + or r0,r0,r4 ; or in zero indicator
  43517. + sub_s r1,r0,1
  43518. + bic_s r0,r0,r1 ; mask for least significant difference bit
  43519. + sub r1,r5,r0
  43520. + xor r0,r5,r1 ; mask for least significant difference byte
  43521. + and_s r2,r2,r0
  43522. + and_s r3,r3,r0
  43523. + sub.f r0,r2,r3
  43524. + mov.hi r0,1
  43525. + j_s.d [blink]
  43526. + bset.lo r0,r0,31
  43527. +#else /* BIG ENDIAN */
  43528. + /* The zero-detection above can mis-detect 0x01 bytes as zeroes
  43529. + because of carry-propagateion from a lower significant zero byte.
  43530. + We can compensate for this by checking that bit0 is zero.
  43531. + This compensation is not necessary in the step where we
  43532. + get a low estimate for r2, because in any affected bytes
  43533. + we already have 0x00 or 0x01, which will remain unchanged
  43534. + when bit 7 is cleared. */
  43535. + .balign 4
  43536. +.Lfound0:
  43537. + lsr r0,r4,8
  43538. + lsr_s r1,r2
  43539. + bic_s r2,r2,r0 ; get low estimate for r2 and get ...
  43540. + bic_s r0,r0,r1 ; <this is the adjusted mask for zeros>
  43541. + or_s r3,r3,r0 ; ... high estimate r3 so that r2 > r3 will ...
  43542. + cmp_s r3,r2 ; ... be independent of trailing garbage
  43543. + or_s r2,r2,r0 ; likewise for r3 > r2
  43544. + bic_s r3,r3,r0
  43545. + rlc r0,0 ; r0 := r2 > r3 ? 1 : 0
  43546. + cmp_s r2,r3
  43547. + j_s.d [blink]
  43548. + bset.lo r0,r0,31
  43549. +#endif /* ENDIAN */
  43550. +
  43551. + .balign 4
  43552. +.Lcharloop:
  43553. + ldb.ab r2,[r0,1]
  43554. + ldb.ab r3,[r1,1]
  43555. + nop_s
  43556. + breq r2,0,.Lcmpend
  43557. + breq r2,r3,.Lcharloop
  43558. +.Lcmpend:
  43559. + j_s.d [blink]
  43560. + sub r0,r2,r3
  43561. +END(strcmp)
  43562. +libc_hidden_def(strcmp)
  43563. +
  43564. +#ifndef __UCLIBC_HAS_LOCALE__
  43565. +strong_alias(strcmp,strcoll)
  43566. +libc_hidden_def(strcoll)
  43567. +#endif
  43568. diff -Nur uClibc-0.9.33.2/libc/string/arc/strcpy.S uClibc-git/libc/string/arc/strcpy.S
  43569. --- uClibc-0.9.33.2/libc/string/arc/strcpy.S 1970-01-01 01:00:00.000000000 +0100
  43570. +++ uClibc-git/libc/string/arc/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  43571. @@ -0,0 +1,71 @@
  43572. +/*
  43573. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43574. + * Copyright (C) 2007 ARC International (UK) LTD
  43575. + *
  43576. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43577. + */
  43578. +
  43579. +
  43580. +#include <sysdep.h>
  43581. +
  43582. +/* If dst and src are 4 byte aligned, copy 8 bytes at a time.
  43583. + If the src is 4, but not 8 byte aligned, we first read 4 bytes to get
  43584. + it 8 byte aligned. Thus, we can do a little read-ahead, without
  43585. + dereferencing a cache line that we should not touch.
  43586. + Note that short and long instructions have been scheduled to avoid
  43587. + branch stalls.
  43588. + The beq_s to r3z could be made unaligned & long to avoid a stall
  43589. + there, but the it is not likely to be taken often, and it
  43590. + would also be likey to cost an unaligned mispredict at the next call. */
  43591. +
  43592. +ENTRY(strcpy)
  43593. + or r2,r0,r1
  43594. + bmsk_s r2,r2,1
  43595. + brne.d r2,0,charloop
  43596. + mov_s r10,r0
  43597. + ld_s r3,[r1,0]
  43598. + mov r8,0x01010101
  43599. + bbit0.d r1,2,loop_start
  43600. + ror r12,r8
  43601. + sub r2,r3,r8
  43602. + bic_s r2,r2,r3
  43603. + tst_s r2,r12
  43604. + bne r3z
  43605. + mov_s r4,r3
  43606. + .balign 4
  43607. +loop:
  43608. + ld.a r3,[r1,4]
  43609. + st.ab r4,[r10,4]
  43610. +loop_start:
  43611. + ld.a r4,[r1,4]
  43612. + sub r2,r3,r8
  43613. + bic_s r2,r2,r3
  43614. + tst_s r2,r12
  43615. + bne_s r3z
  43616. + st.ab r3,[r10,4]
  43617. + sub r2,r4,r8
  43618. + bic r2,r2,r4
  43619. + tst r2,r12
  43620. + beq loop
  43621. + mov_s r3,r4
  43622. +#ifdef __LITTLE_ENDIAN__
  43623. +r3z: bmsk.f r1,r3,7
  43624. + lsr_s r3,r3,8
  43625. +#else
  43626. +r3z: lsr.f r1,r3,24
  43627. + asl_s r3,r3,8
  43628. +#endif
  43629. + bne.d r3z
  43630. + stb.ab r1,[r10,1]
  43631. + j_s [blink]
  43632. +
  43633. + .balign 4
  43634. +charloop:
  43635. + ldb.ab r3,[r1,1]
  43636. +
  43637. +
  43638. + brne.d r3,0,charloop
  43639. + stb.ab r3,[r10,1]
  43640. + j [blink]
  43641. +END(strcpy)
  43642. +libc_hidden_def(strcpy)
  43643. diff -Nur uClibc-0.9.33.2/libc/string/arc/strlen.S uClibc-git/libc/string/arc/strlen.S
  43644. --- uClibc-0.9.33.2/libc/string/arc/strlen.S 1970-01-01 01:00:00.000000000 +0100
  43645. +++ uClibc-git/libc/string/arc/strlen.S 2014-02-03 12:32:56.000000000 +0100
  43646. @@ -0,0 +1,84 @@
  43647. +/*
  43648. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  43649. + * Copyright (C) 2007 ARC International (UK) LTD
  43650. + *
  43651. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  43652. + */
  43653. +
  43654. +
  43655. +#include <sysdep.h>
  43656. +
  43657. +ENTRY(strlen)
  43658. + or r3,r0,7
  43659. + ld r2,[r3,-7]
  43660. + ld.a r6,[r3,-3]
  43661. + mov r4,0x01010101
  43662. + ; uses long immediate
  43663. +#ifdef __LITTLE_ENDIAN__
  43664. + asl_s r1,r0,3
  43665. + btst_s r0,2
  43666. + asl r7,r4,r1
  43667. + ror r5,r4
  43668. + sub r1,r2,r7
  43669. + bic_s r1,r1,r2
  43670. + mov.eq r7,r4
  43671. + sub r12,r6,r7
  43672. + bic r12,r12,r6
  43673. + or.eq r12,r12,r1
  43674. + and r12,r12,r5
  43675. + brne r12,0,.Learly_end
  43676. +#else /* BIG ENDIAN */
  43677. + ror r5,r4
  43678. + btst_s r0,2
  43679. + mov_s r1,31
  43680. + sub3 r7,r1,r0
  43681. + sub r1,r2,r4
  43682. + bic_s r1,r1,r2
  43683. + bmsk r1,r1,r7
  43684. + sub r12,r6,r4
  43685. + bic r12,r12,r6
  43686. + bmsk.ne r12,r12,r7
  43687. + or.eq r12,r12,r1
  43688. + and r12,r12,r5
  43689. + brne r12,0,.Learly_end
  43690. +#endif /* ENDIAN */
  43691. +
  43692. +.Loop:
  43693. + ld_s r2,[r3,4]
  43694. + ld.a r6,[r3,8]
  43695. + ; stall for load result
  43696. + sub r1,r2,r4
  43697. + bic_s r1,r1,r2
  43698. + sub r12,r6,r4
  43699. + bic r12,r12,r6
  43700. + or r12,r12,r1
  43701. + and r12,r12,r5
  43702. + breq r12,0,.Loop
  43703. +.Lend:
  43704. + and.f r1,r1,r5
  43705. + sub.ne r3,r3,4
  43706. + mov.eq r1,r12
  43707. +#ifdef __LITTLE_ENDIAN__
  43708. + sub_s r2,r1,1
  43709. + bic_s r2,r2,r1
  43710. + norm r1,r2
  43711. + sub_s r0,r0,3
  43712. + lsr_s r1,r1,3
  43713. + sub r0,r3,r0
  43714. + j_s.d [blink]
  43715. + sub r0,r0,r1
  43716. +#else /* BIG ENDIAN */
  43717. + lsr_s r1,r1,7
  43718. + mov.eq r2,r6
  43719. + bic_s r1,r1,r2
  43720. + norm r1,r1
  43721. + sub r0,r3,r0
  43722. + lsr_s r1,r1,3
  43723. + j_s.d [blink]
  43724. + add r0,r0,r1
  43725. +#endif /* ENDIAN */
  43726. +.Learly_end:
  43727. + b.d .Lend
  43728. + sub_s.ne r1,r1,r1
  43729. +END(strlen)
  43730. +libc_hidden_def(strlen)
  43731. diff -Nur uClibc-0.9.33.2/libc/string/arm/memset.S uClibc-git/libc/string/arm/memset.S
  43732. --- uClibc-0.9.33.2/libc/string/arm/memset.S 2012-05-15 09:20:09.000000000 +0200
  43733. +++ uClibc-git/libc/string/arm/memset.S 2014-02-03 12:32:56.000000000 +0100
  43734. @@ -13,9 +13,8 @@
  43735. Lesser General Public License for more details.
  43736. You should have received a copy of the GNU Lesser General Public
  43737. - License along with the GNU C Library; if not, write to the Free
  43738. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43739. - 02111-1307 USA. */
  43740. + License along with the GNU C Library; if not, see
  43741. + <http://www.gnu.org/licenses/>. */
  43742. #include <features.h>
  43743. #include <sys/syscall.h>
  43744. diff -Nur uClibc-0.9.33.2/libc/string/arm/strlen.S uClibc-git/libc/string/arm/strlen.S
  43745. --- uClibc-0.9.33.2/libc/string/arm/strlen.S 2012-05-15 09:20:09.000000000 +0200
  43746. +++ uClibc-git/libc/string/arm/strlen.S 2014-02-03 12:32:56.000000000 +0100
  43747. @@ -13,9 +13,8 @@
  43748. Lesser General Public License for more details.
  43749. You should have received a copy of the GNU Lesser General Public
  43750. - License along with the GNU C Library; if not, write to the Free
  43751. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43752. - 02111-1307 USA. */
  43753. + License along with the GNU C Library; if not, see
  43754. + <http://www.gnu.org/licenses/>. */
  43755. #include <features.h>
  43756. #include <endian.h>
  43757. diff -Nur uClibc-0.9.33.2/libc/string/avr32/Makefile uClibc-git/libc/string/avr32/Makefile
  43758. --- uClibc-0.9.33.2/libc/string/avr32/Makefile 2012-05-15 09:20:09.000000000 +0200
  43759. +++ uClibc-git/libc/string/avr32/Makefile 2014-02-03 12:32:56.000000000 +0100
  43760. @@ -13,8 +13,7 @@
  43761. # details.
  43762. #
  43763. # You should have received a copy of the GNU Library General Public License
  43764. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  43765. -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  43766. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  43767. top_srcdir := ../../../
  43768. top_builddir := ../../../
  43769. diff -Nur uClibc-0.9.33.2/libc/string/basename.c uClibc-git/libc/string/basename.c
  43770. --- uClibc-0.9.33.2/libc/string/basename.c 2012-05-15 09:20:09.000000000 +0200
  43771. +++ uClibc-git/libc/string/basename.c 2014-02-03 12:32:56.000000000 +0100
  43772. @@ -5,7 +5,7 @@
  43773. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  43774. */
  43775. -#include "_string.h"
  43776. +#include <string.h>
  43777. #ifdef __USE_GNU
  43778. @@ -24,5 +24,4 @@
  43779. return (char *) p;
  43780. }
  43781. -libc_hidden_def(basename)
  43782. #endif
  43783. diff -Nur uClibc-0.9.33.2/libc/string/bcopy.c uClibc-git/libc/string/bcopy.c
  43784. --- uClibc-0.9.33.2/libc/string/bcopy.c 2012-05-15 09:20:09.000000000 +0200
  43785. +++ uClibc-git/libc/string/bcopy.c 2014-02-03 12:32:56.000000000 +0100
  43786. @@ -5,11 +5,9 @@
  43787. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  43788. */
  43789. -#include "_string.h"
  43790. +#include <string.h>
  43791. #ifdef __UCLIBC_SUSV3_LEGACY__
  43792. -
  43793. -
  43794. void bcopy(const void *s2, void *s1, size_t n)
  43795. {
  43796. #if 1
  43797. diff -Nur uClibc-0.9.33.2/libc/string/bzero.c uClibc-git/libc/string/bzero.c
  43798. --- uClibc-0.9.33.2/libc/string/bzero.c 2012-05-15 09:20:09.000000000 +0200
  43799. +++ uClibc-git/libc/string/bzero.c 2014-02-03 12:32:56.000000000 +0100
  43800. @@ -5,7 +5,7 @@
  43801. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  43802. */
  43803. -#include "_string.h"
  43804. +#include <string.h>
  43805. #ifdef __UCLIBC_SUSV3_LEGACY__
  43806. void bzero(void *s, size_t n)
  43807. diff -Nur uClibc-0.9.33.2/libc/string/_collate.c uClibc-git/libc/string/_collate.c
  43808. --- uClibc-0.9.33.2/libc/string/_collate.c 2012-05-15 09:20:09.000000000 +0200
  43809. +++ uClibc-git/libc/string/_collate.c 2014-02-03 12:32:56.000000000 +0100
  43810. @@ -159,7 +159,7 @@
  43811. #define N (1)
  43812. #else /* WANT_WIDE */
  43813. wchar_t WC;
  43814. - size_t n0, nx;
  43815. + size_t n0, nx = 0;
  43816. #define N n0
  43817. #endif /* WANT_WIDE */
  43818. diff -Nur uClibc-0.9.33.2/libc/string/cris/memcopy.h uClibc-git/libc/string/cris/memcopy.h
  43819. --- uClibc-0.9.33.2/libc/string/cris/memcopy.h 2012-05-15 09:20:09.000000000 +0200
  43820. +++ uClibc-git/libc/string/cris/memcopy.h 2014-02-03 12:32:56.000000000 +0100
  43821. @@ -16,8 +16,7 @@
  43822. You should have received a copy of the GNU Library General Public
  43823. License along with the GNU C Library; see the file COPYING.LIB. If not,
  43824. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  43825. - Boston, MA 02111-1307, USA. */
  43826. + see <http://www.gnu.org/licenses/>. */
  43827. #include "../generic/memcopy.h"
  43828. diff -Nur uClibc-0.9.33.2/libc/string/cris/memmove.c uClibc-git/libc/string/cris/memmove.c
  43829. --- uClibc-0.9.33.2/libc/string/cris/memmove.c 2012-05-15 09:20:09.000000000 +0200
  43830. +++ uClibc-git/libc/string/cris/memmove.c 2014-02-03 12:32:56.000000000 +0100
  43831. @@ -18,9 +18,8 @@
  43832. Lesser General Public License for more details.
  43833. You should have received a copy of the GNU Lesser General Public
  43834. - License along with the GNU C Library; if not, write to the Free
  43835. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43836. - 02111-1307 USA. */
  43837. + License along with the GNU C Library; if not, see
  43838. + <http://www.gnu.org/licenses/>. */
  43839. #include <string.h>
  43840. diff -Nur uClibc-0.9.33.2/libc/string/dirname.c uClibc-git/libc/string/dirname.c
  43841. --- uClibc-0.9.33.2/libc/string/dirname.c 2012-05-15 09:20:09.000000000 +0200
  43842. +++ uClibc-git/libc/string/dirname.c 2014-02-03 12:32:56.000000000 +0100
  43843. @@ -5,7 +5,8 @@
  43844. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  43845. */
  43846. -#include "_string.h"
  43847. +#define __need_NULL
  43848. +#include <stddef.h>
  43849. #include <libgen.h>
  43850. char *dirname(char *path)
  43851. diff -Nur uClibc-0.9.33.2/libc/string/ffsll.c uClibc-git/libc/string/ffsll.c
  43852. --- uClibc-0.9.33.2/libc/string/ffsll.c 2012-05-15 09:20:09.000000000 +0200
  43853. +++ uClibc-git/libc/string/ffsll.c 2014-02-03 12:32:56.000000000 +0100
  43854. @@ -13,9 +13,8 @@
  43855. Lesser General Public License for more details.
  43856. You should have received a copy of the GNU Lesser General Public
  43857. - License along with the GNU C Library; if not, write to the Free
  43858. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43859. - 02111-1307 USA. */
  43860. + License along with the GNU C Library; if not, see
  43861. + <http://www.gnu.org/licenses/>. */
  43862. #include <limits.h>
  43863. #include <string.h>
  43864. diff -Nur uClibc-0.9.33.2/libc/string/frv/memcpy.S uClibc-git/libc/string/frv/memcpy.S
  43865. --- uClibc-0.9.33.2/libc/string/frv/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  43866. +++ uClibc-git/libc/string/frv/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  43867. @@ -14,8 +14,8 @@
  43868. * Library General Public License for more details.
  43869. *
  43870. * You should have received a copy of the GNU Library General Public
  43871. - * License along with this library; if not, write to the Free
  43872. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  43873. + * License along with this library; if not, see
  43874. + * <http://www.gnu.org/licenses/>.
  43875. */
  43876. #include <features.h>
  43877. diff -Nur uClibc-0.9.33.2/libc/string/frv/memset.S uClibc-git/libc/string/frv/memset.S
  43878. --- uClibc-0.9.33.2/libc/string/frv/memset.S 2012-05-15 09:20:09.000000000 +0200
  43879. +++ uClibc-git/libc/string/frv/memset.S 2014-02-03 12:32:56.000000000 +0100
  43880. @@ -14,8 +14,8 @@
  43881. * Library General Public License for more details.
  43882. *
  43883. * You should have received a copy of the GNU Library General Public
  43884. - * License along with this library; if not, write to the Free
  43885. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  43886. + * License along with this library; if not, see
  43887. + * <http://www.gnu.org/licenses/>.
  43888. */
  43889. #include <features.h>
  43890. diff -Nur uClibc-0.9.33.2/libc/string/generic/memchr.c uClibc-git/libc/string/generic/memchr.c
  43891. --- uClibc-0.9.33.2/libc/string/generic/memchr.c 2012-05-15 09:20:09.000000000 +0200
  43892. +++ uClibc-git/libc/string/generic/memchr.c 2014-02-03 12:32:56.000000000 +0100
  43893. @@ -17,9 +17,8 @@
  43894. Lesser General Public License for more details.
  43895. You should have received a copy of the GNU Lesser General Public
  43896. - License along with the GNU C Library; if not, write to the Free
  43897. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43898. - 02111-1307 USA. */
  43899. + License along with the GNU C Library; if not, see
  43900. + <http://www.gnu.org/licenses/>. */
  43901. #include <string.h>
  43902. #include <stdlib.h>
  43903. diff -Nur uClibc-0.9.33.2/libc/string/generic/memcmp.c uClibc-git/libc/string/generic/memcmp.c
  43904. --- uClibc-0.9.33.2/libc/string/generic/memcmp.c 2012-05-15 09:20:09.000000000 +0200
  43905. +++ uClibc-git/libc/string/generic/memcmp.c 2014-02-03 12:32:56.000000000 +0100
  43906. @@ -14,9 +14,8 @@
  43907. Lesser General Public License for more details.
  43908. You should have received a copy of the GNU Lesser General Public
  43909. - License along with the GNU C Library; if not, write to the Free
  43910. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43911. - 02111-1307 USA. */
  43912. + License along with the GNU C Library; if not, see
  43913. + <http://www.gnu.org/licenses/>. */
  43914. #include <string.h>
  43915. #include "memcopy.h"
  43916. diff -Nur uClibc-0.9.33.2/libc/string/generic/memcopy.h uClibc-git/libc/string/generic/memcopy.h
  43917. --- uClibc-0.9.33.2/libc/string/generic/memcopy.h 2012-05-15 09:20:09.000000000 +0200
  43918. +++ uClibc-git/libc/string/generic/memcopy.h 2014-02-03 12:32:56.000000000 +0100
  43919. @@ -14,9 +14,8 @@
  43920. Lesser General Public License for more details.
  43921. You should have received a copy of the GNU Lesser General Public
  43922. - License along with the GNU C Library; if not, write to the Free
  43923. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43924. - 02111-1307 USA. */
  43925. + License along with the GNU C Library; if not, see
  43926. + <http://www.gnu.org/licenses/>. */
  43927. /* The strategy of the memory functions is:
  43928. diff -Nur uClibc-0.9.33.2/libc/string/generic/memcpy.c uClibc-git/libc/string/generic/memcpy.c
  43929. --- uClibc-0.9.33.2/libc/string/generic/memcpy.c 2012-05-15 09:20:09.000000000 +0200
  43930. +++ uClibc-git/libc/string/generic/memcpy.c 2014-02-03 12:32:56.000000000 +0100
  43931. @@ -15,9 +15,8 @@
  43932. Lesser General Public License for more details.
  43933. You should have received a copy of the GNU Lesser General Public
  43934. - License along with the GNU C Library; if not, write to the Free
  43935. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43936. - 02111-1307 USA. */
  43937. + License along with the GNU C Library; if not, see
  43938. + <http://www.gnu.org/licenses/>. */
  43939. #include <string.h>
  43940. #include "memcopy.h"
  43941. diff -Nur uClibc-0.9.33.2/libc/string/generic/memmem.c uClibc-git/libc/string/generic/memmem.c
  43942. --- uClibc-0.9.33.2/libc/string/generic/memmem.c 2012-05-15 09:20:09.000000000 +0200
  43943. +++ uClibc-git/libc/string/generic/memmem.c 2014-02-03 12:32:56.000000000 +0100
  43944. @@ -12,9 +12,8 @@
  43945. Lesser General Public License for more details.
  43946. You should have received a copy of the GNU Lesser General Public
  43947. - License along with the GNU C Library; if not, write to the Free
  43948. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43949. - 02111-1307 USA. */
  43950. + License along with the GNU C Library; if not, see
  43951. + <http://www.gnu.org/licenses/>. */
  43952. #include <string.h>
  43953. #include <stddef.h>
  43954. diff -Nur uClibc-0.9.33.2/libc/string/generic/memmove.c uClibc-git/libc/string/generic/memmove.c
  43955. --- uClibc-0.9.33.2/libc/string/generic/memmove.c 2012-05-15 09:20:09.000000000 +0200
  43956. +++ uClibc-git/libc/string/generic/memmove.c 2014-02-03 12:32:56.000000000 +0100
  43957. @@ -15,9 +15,8 @@
  43958. Lesser General Public License for more details.
  43959. You should have received a copy of the GNU Lesser General Public
  43960. - License along with the GNU C Library; if not, write to the Free
  43961. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43962. - 02111-1307 USA. */
  43963. + License along with the GNU C Library; if not, see
  43964. + <http://www.gnu.org/licenses/>. */
  43965. #include <string.h>
  43966. diff -Nur uClibc-0.9.33.2/libc/string/generic/memrchr.c uClibc-git/libc/string/generic/memrchr.c
  43967. --- uClibc-0.9.33.2/libc/string/generic/memrchr.c 2012-05-15 09:20:09.000000000 +0200
  43968. +++ uClibc-git/libc/string/generic/memrchr.c 2014-02-03 12:32:56.000000000 +0100
  43969. @@ -18,9 +18,8 @@
  43970. Lesser General Public License for more details.
  43971. You should have received a copy of the GNU Lesser General Public
  43972. - License along with the GNU C Library; if not, write to the Free
  43973. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43974. - 02111-1307 USA. */
  43975. + License along with the GNU C Library; if not, see
  43976. + <http://www.gnu.org/licenses/>. */
  43977. #include <string.h>
  43978. #include <stdlib.h>
  43979. diff -Nur uClibc-0.9.33.2/libc/string/generic/memset.c uClibc-git/libc/string/generic/memset.c
  43980. --- uClibc-0.9.33.2/libc/string/generic/memset.c 2012-05-15 09:20:09.000000000 +0200
  43981. +++ uClibc-git/libc/string/generic/memset.c 2014-02-03 12:32:56.000000000 +0100
  43982. @@ -12,9 +12,8 @@
  43983. Lesser General Public License for more details.
  43984. You should have received a copy of the GNU Lesser General Public
  43985. - License along with the GNU C Library; if not, write to the Free
  43986. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  43987. - 02111-1307 USA. */
  43988. + License along with the GNU C Library; if not, see
  43989. + <http://www.gnu.org/licenses/>. */
  43990. #include <string.h>
  43991. #include "memcopy.h"
  43992. diff -Nur uClibc-0.9.33.2/libc/string/generic/pagecopy.h uClibc-git/libc/string/generic/pagecopy.h
  43993. --- uClibc-0.9.33.2/libc/string/generic/pagecopy.h 2012-05-15 09:20:09.000000000 +0200
  43994. +++ uClibc-git/libc/string/generic/pagecopy.h 2014-02-03 12:32:56.000000000 +0100
  43995. @@ -13,9 +13,8 @@
  43996. Lesser General Public License for more details.
  43997. You should have received a copy of the GNU Lesser General Public
  43998. - License along with the GNU C Library; if not, write to the Free
  43999. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44000. - 02111-1307 USA. */
  44001. + License along with the GNU C Library; if not, see
  44002. + <http://www.gnu.org/licenses/>. */
  44003. /* This file defines the macro:
  44004. diff -Nur uClibc-0.9.33.2/libc/string/generic/rawmemchr.c uClibc-git/libc/string/generic/rawmemchr.c
  44005. --- uClibc-0.9.33.2/libc/string/generic/rawmemchr.c 2012-05-15 09:20:09.000000000 +0200
  44006. +++ uClibc-git/libc/string/generic/rawmemchr.c 2014-02-03 12:32:56.000000000 +0100
  44007. @@ -17,9 +17,8 @@
  44008. Lesser General Public License for more details.
  44009. You should have received a copy of the GNU Lesser General Public
  44010. - License along with the GNU C Library; if not, write to the Free
  44011. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44012. - 02111-1307 USA. */
  44013. + License along with the GNU C Library; if not, see
  44014. + <http://www.gnu.org/licenses/>. */
  44015. #include <string.h>
  44016. #include <stdlib.h>
  44017. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcat.c uClibc-git/libc/string/generic/strcat.c
  44018. --- uClibc-0.9.33.2/libc/string/generic/strcat.c 2012-05-15 09:20:09.000000000 +0200
  44019. +++ uClibc-git/libc/string/generic/strcat.c 2014-02-03 12:32:56.000000000 +0100
  44020. @@ -12,9 +12,8 @@
  44021. Lesser General Public License for more details.
  44022. You should have received a copy of the GNU Lesser General Public
  44023. - License along with the GNU C Library; if not, write to the Free
  44024. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44025. - 02111-1307 USA. */
  44026. + License along with the GNU C Library; if not, see
  44027. + <http://www.gnu.org/licenses/>. */
  44028. #include <string.h>
  44029. #include "memcopy.h"
  44030. diff -Nur uClibc-0.9.33.2/libc/string/generic/strchr.c uClibc-git/libc/string/generic/strchr.c
  44031. --- uClibc-0.9.33.2/libc/string/generic/strchr.c 2012-05-15 09:20:09.000000000 +0200
  44032. +++ uClibc-git/libc/string/generic/strchr.c 2014-02-03 12:32:56.000000000 +0100
  44033. @@ -17,9 +17,8 @@
  44034. Lesser General Public License for more details.
  44035. You should have received a copy of the GNU Lesser General Public
  44036. - License along with the GNU C Library; if not, write to the Free
  44037. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44038. - 02111-1307 USA. */
  44039. + License along with the GNU C Library; if not, see
  44040. + <http://www.gnu.org/licenses/>. */
  44041. #include <string.h>
  44042. #include <stdlib.h>
  44043. diff -Nur uClibc-0.9.33.2/libc/string/generic/strchrnul.c uClibc-git/libc/string/generic/strchrnul.c
  44044. --- uClibc-0.9.33.2/libc/string/generic/strchrnul.c 2012-05-15 09:20:09.000000000 +0200
  44045. +++ uClibc-git/libc/string/generic/strchrnul.c 2014-02-03 12:32:56.000000000 +0100
  44046. @@ -17,9 +17,8 @@
  44047. Lesser General Public License for more details.
  44048. You should have received a copy of the GNU Lesser General Public
  44049. - License along with the GNU C Library; if not, write to the Free
  44050. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44051. - 02111-1307 USA. */
  44052. + License along with the GNU C Library; if not, see
  44053. + <http://www.gnu.org/licenses/>. */
  44054. #include <string.h>
  44055. #include <stdlib.h>
  44056. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcmp.c uClibc-git/libc/string/generic/strcmp.c
  44057. --- uClibc-0.9.33.2/libc/string/generic/strcmp.c 2012-05-15 09:20:09.000000000 +0200
  44058. +++ uClibc-git/libc/string/generic/strcmp.c 2014-02-03 12:32:56.000000000 +0100
  44059. @@ -12,9 +12,8 @@
  44060. Lesser General Public License for more details.
  44061. You should have received a copy of the GNU Lesser General Public
  44062. - License along with the GNU C Library; if not, write to the Free
  44063. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44064. - 02111-1307 USA. */
  44065. + License along with the GNU C Library; if not, see
  44066. + <http://www.gnu.org/licenses/>. */
  44067. #include <string.h>
  44068. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcpy.c uClibc-git/libc/string/generic/strcpy.c
  44069. --- uClibc-0.9.33.2/libc/string/generic/strcpy.c 2012-05-15 09:20:09.000000000 +0200
  44070. +++ uClibc-git/libc/string/generic/strcpy.c 2014-02-03 12:32:56.000000000 +0100
  44071. @@ -12,9 +12,8 @@
  44072. Lesser General Public License for more details.
  44073. You should have received a copy of the GNU Lesser General Public
  44074. - License along with the GNU C Library; if not, write to the Free
  44075. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44076. - 02111-1307 USA. */
  44077. + License along with the GNU C Library; if not, see
  44078. + <http://www.gnu.org/licenses/>. */
  44079. #include <string.h>
  44080. diff -Nur uClibc-0.9.33.2/libc/string/generic/strcspn.c uClibc-git/libc/string/generic/strcspn.c
  44081. --- uClibc-0.9.33.2/libc/string/generic/strcspn.c 2012-05-15 09:20:09.000000000 +0200
  44082. +++ uClibc-git/libc/string/generic/strcspn.c 2014-02-03 12:32:56.000000000 +0100
  44083. @@ -12,9 +12,8 @@
  44084. Lesser General Public License for more details.
  44085. You should have received a copy of the GNU Lesser General Public
  44086. - License along with the GNU C Library; if not, write to the Free
  44087. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44088. - 02111-1307 USA. */
  44089. + License along with the GNU C Library; if not, see
  44090. + <http://www.gnu.org/licenses/>. */
  44091. #include <string.h>
  44092. diff -Nur uClibc-0.9.33.2/libc/string/generic/strlen.c uClibc-git/libc/string/generic/strlen.c
  44093. --- uClibc-0.9.33.2/libc/string/generic/strlen.c 2012-05-15 09:20:09.000000000 +0200
  44094. +++ uClibc-git/libc/string/generic/strlen.c 2014-02-03 12:32:56.000000000 +0100
  44095. @@ -15,9 +15,8 @@
  44096. Lesser General Public License for more details.
  44097. You should have received a copy of the GNU Lesser General Public
  44098. - License along with the GNU C Library; if not, write to the Free
  44099. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44100. - 02111-1307 USA. */
  44101. + License along with the GNU C Library; if not, see
  44102. + <http://www.gnu.org/licenses/>. */
  44103. #include <string.h>
  44104. #include <stdlib.h>
  44105. diff -Nur uClibc-0.9.33.2/libc/string/generic/strncat.c uClibc-git/libc/string/generic/strncat.c
  44106. --- uClibc-0.9.33.2/libc/string/generic/strncat.c 2012-05-15 09:20:09.000000000 +0200
  44107. +++ uClibc-git/libc/string/generic/strncat.c 2014-02-03 12:32:56.000000000 +0100
  44108. @@ -12,9 +12,8 @@
  44109. Lesser General Public License for more details.
  44110. You should have received a copy of the GNU Lesser General Public
  44111. - License along with the GNU C Library; if not, write to the Free
  44112. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44113. - 02111-1307 USA. */
  44114. + License along with the GNU C Library; if not, see
  44115. + <http://www.gnu.org/licenses/>. */
  44116. #include <string.h>
  44117. diff -Nur uClibc-0.9.33.2/libc/string/generic/strncmp.c uClibc-git/libc/string/generic/strncmp.c
  44118. --- uClibc-0.9.33.2/libc/string/generic/strncmp.c 2012-05-15 09:20:09.000000000 +0200
  44119. +++ uClibc-git/libc/string/generic/strncmp.c 2014-02-03 12:32:56.000000000 +0100
  44120. @@ -12,9 +12,8 @@
  44121. Lesser General Public License for more details.
  44122. You should have received a copy of the GNU Lesser General Public
  44123. - License along with the GNU C Library; if not, write to the Free
  44124. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44125. - 02111-1307 USA. */
  44126. + License along with the GNU C Library; if not, see
  44127. + <http://www.gnu.org/licenses/>. */
  44128. #include <string.h>
  44129. #include "memcopy.h"
  44130. diff -Nur uClibc-0.9.33.2/libc/string/generic/strncpy.c uClibc-git/libc/string/generic/strncpy.c
  44131. --- uClibc-0.9.33.2/libc/string/generic/strncpy.c 2012-05-15 09:20:09.000000000 +0200
  44132. +++ uClibc-git/libc/string/generic/strncpy.c 2014-02-03 12:32:56.000000000 +0100
  44133. @@ -12,9 +12,8 @@
  44134. Lesser General Public License for more details.
  44135. You should have received a copy of the GNU Lesser General Public
  44136. - License along with the GNU C Library; if not, write to the Free
  44137. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44138. - 02111-1307 USA. */
  44139. + License along with the GNU C Library; if not, see
  44140. + <http://www.gnu.org/licenses/>. */
  44141. #include <string.h>
  44142. #include "memcopy.h"
  44143. diff -Nur uClibc-0.9.33.2/libc/string/generic/strnlen.c uClibc-git/libc/string/generic/strnlen.c
  44144. --- uClibc-0.9.33.2/libc/string/generic/strnlen.c 2012-05-15 09:20:09.000000000 +0200
  44145. +++ uClibc-git/libc/string/generic/strnlen.c 2014-02-03 12:32:56.000000000 +0100
  44146. @@ -17,9 +17,8 @@
  44147. Lesser General Public License for more details.
  44148. You should have received a copy of the GNU Lesser General Public
  44149. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  44150. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  44151. - Boston, MA 02111-1307, USA. */
  44152. + License along with the GNU C Library; see the file COPYING.LIB. If
  44153. + not, see <http://www.gnu.org/licenses/>. */
  44154. #include <string.h>
  44155. #include <stdlib.h>
  44156. diff -Nur uClibc-0.9.33.2/libc/string/generic/strrchr.c uClibc-git/libc/string/generic/strrchr.c
  44157. --- uClibc-0.9.33.2/libc/string/generic/strrchr.c 2012-05-15 09:20:09.000000000 +0200
  44158. +++ uClibc-git/libc/string/generic/strrchr.c 2014-02-03 12:32:56.000000000 +0100
  44159. @@ -12,9 +12,8 @@
  44160. Lesser General Public License for more details.
  44161. You should have received a copy of the GNU Lesser General Public
  44162. - License along with the GNU C Library; if not, write to the Free
  44163. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44164. - 02111-1307 USA. */
  44165. + License along with the GNU C Library; if not, see
  44166. + <http://www.gnu.org/licenses/>. */
  44167. #include <string.h>
  44168. diff -Nur uClibc-0.9.33.2/libc/string/generic/strsep.c uClibc-git/libc/string/generic/strsep.c
  44169. --- uClibc-0.9.33.2/libc/string/generic/strsep.c 2012-05-15 09:20:09.000000000 +0200
  44170. +++ uClibc-git/libc/string/generic/strsep.c 2014-02-03 12:32:56.000000000 +0100
  44171. @@ -12,9 +12,8 @@
  44172. Lesser General Public License for more details.
  44173. You should have received a copy of the GNU Lesser General Public
  44174. - License along with the GNU C Library; if not, write to the Free
  44175. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44176. - 02111-1307 USA. */
  44177. + License along with the GNU C Library; if not, see
  44178. + <http://www.gnu.org/licenses/>. */
  44179. #include <string.h>
  44180. diff -Nur uClibc-0.9.33.2/libc/string/generic/strspn.c uClibc-git/libc/string/generic/strspn.c
  44181. --- uClibc-0.9.33.2/libc/string/generic/strspn.c 2012-05-15 09:20:09.000000000 +0200
  44182. +++ uClibc-git/libc/string/generic/strspn.c 2014-02-03 12:32:56.000000000 +0100
  44183. @@ -12,9 +12,8 @@
  44184. Lesser General Public License for more details.
  44185. You should have received a copy of the GNU Lesser General Public
  44186. - License along with the GNU C Library; if not, write to the Free
  44187. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44188. - 02111-1307 USA. */
  44189. + License along with the GNU C Library; if not, see
  44190. + <http://www.gnu.org/licenses/>. */
  44191. #include <string.h>
  44192. diff -Nur uClibc-0.9.33.2/libc/string/generic/strstr.c uClibc-git/libc/string/generic/strstr.c
  44193. --- uClibc-0.9.33.2/libc/string/generic/strstr.c 2012-05-15 09:20:09.000000000 +0200
  44194. +++ uClibc-git/libc/string/generic/strstr.c 2014-02-03 12:32:56.000000000 +0100
  44195. @@ -13,9 +13,8 @@
  44196. Lesser General Public License for more details.
  44197. You should have received a copy of the GNU Lesser General Public
  44198. - License along with the GNU C Library; if not, write to the Free
  44199. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44200. - 02111-1307 USA. */
  44201. + License along with the GNU C Library; if not, see
  44202. + <http://www.gnu.org/licenses/>. */
  44203. /*
  44204. * My personal strstr() implementation that beats most other algorithms.
  44205. diff -Nur uClibc-0.9.33.2/libc/string/generic/strtok_r.c uClibc-git/libc/string/generic/strtok_r.c
  44206. --- uClibc-0.9.33.2/libc/string/generic/strtok_r.c 2012-05-15 09:20:09.000000000 +0200
  44207. +++ uClibc-git/libc/string/generic/strtok_r.c 2014-02-03 12:32:56.000000000 +0100
  44208. @@ -13,9 +13,8 @@
  44209. Lesser General Public License for more details.
  44210. You should have received a copy of the GNU Lesser General Public
  44211. - License along with the GNU C Library; if not, write to the Free
  44212. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44213. - 02111-1307 USA. */
  44214. + License along with the GNU C Library; if not, see
  44215. + <http://www.gnu.org/licenses/>. */
  44216. #include <string.h>
  44217. diff -Nur uClibc-0.9.33.2/libc/string/__glibc_strerror_r.c uClibc-git/libc/string/__glibc_strerror_r.c
  44218. --- uClibc-0.9.33.2/libc/string/__glibc_strerror_r.c 2012-05-15 09:20:09.000000000 +0200
  44219. +++ uClibc-git/libc/string/__glibc_strerror_r.c 2014-02-03 12:32:56.000000000 +0100
  44220. @@ -5,9 +5,13 @@
  44221. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  44222. */
  44223. +/* get rid of REDIRECT */
  44224. +#define strerror_r __hide_strerror_r
  44225. +
  44226. #include <features.h>
  44227. #include <string.h>
  44228. +#undef strerror_r
  44229. char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)
  44230. {
  44231. @@ -16,3 +20,6 @@
  44232. return strerrbuf;
  44233. }
  44234. libc_hidden_def(__glibc_strerror_r)
  44235. +#if !defined __USE_XOPEN2K || defined __USE_GNU
  44236. +strong_alias(__glibc_strerror_r,strerror_r)
  44237. +#endif
  44238. diff -Nur uClibc-0.9.33.2/libc/string/ia64/bcopy.S uClibc-git/libc/string/ia64/bcopy.S
  44239. --- uClibc-0.9.33.2/libc/string/ia64/bcopy.S 2012-05-15 09:20:09.000000000 +0200
  44240. +++ uClibc-git/libc/string/ia64/bcopy.S 2014-02-03 12:32:56.000000000 +0100
  44241. @@ -1,4 +1,4 @@
  44242. -#include "sysdep.h"
  44243. +#include <sysdep.h>
  44244. #ifdef __UCLIBC_SUSV3_LEGACY__
  44245. diff -Nur uClibc-0.9.33.2/libc/string/ia64/bzero.S uClibc-git/libc/string/ia64/bzero.S
  44246. --- uClibc-0.9.33.2/libc/string/ia64/bzero.S 2012-05-15 09:20:09.000000000 +0200
  44247. +++ uClibc-git/libc/string/ia64/bzero.S 2014-02-03 12:32:56.000000000 +0100
  44248. @@ -15,9 +15,8 @@
  44249. Lesser General Public License for more details.
  44250. You should have received a copy of the GNU Lesser General Public
  44251. - License along with the GNU C Library; if not, write to the Free
  44252. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44253. - 02111-1307 USA. */
  44254. + License along with the GNU C Library; if not, see
  44255. + <http://www.gnu.org/licenses/>. */
  44256. /* Return: dest
  44257. @@ -32,7 +31,7 @@
  44258. Since a stf.spill f0 can store 16B in one go, we use this instruction
  44259. to get peak speed. */
  44260. -#include "sysdep.h"
  44261. +#include <sysdep.h>
  44262. #ifdef __UCLIBC_SUSV3_LEGACY__
  44263. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memccpy.S uClibc-git/libc/string/ia64/memccpy.S
  44264. --- uClibc-0.9.33.2/libc/string/ia64/memccpy.S 2012-05-15 09:20:09.000000000 +0200
  44265. +++ uClibc-git/libc/string/ia64/memccpy.S 2014-02-03 12:32:56.000000000 +0100
  44266. @@ -14,9 +14,8 @@
  44267. Lesser General Public License for more details.
  44268. You should have received a copy of the GNU Lesser General Public
  44269. - License along with the GNU C Library; if not, write to the Free
  44270. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44271. - 02111-1307 USA. */
  44272. + License along with the GNU C Library; if not, see
  44273. + <http://www.gnu.org/licenses/>. */
  44274. /* Return: a pointer to the next byte after char in dest or NULL
  44275. @@ -31,7 +30,7 @@
  44276. This implementation assumes that it is safe to do read ahead
  44277. in the src block, without getting beyond its limit. */
  44278. -#include "sysdep.h"
  44279. +#include <sysdep.h>
  44280. #undef ret
  44281. #define OP_T_THRES 16
  44282. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memchr.S uClibc-git/libc/string/ia64/memchr.S
  44283. --- uClibc-0.9.33.2/libc/string/ia64/memchr.S 2012-05-15 09:20:09.000000000 +0200
  44284. +++ uClibc-git/libc/string/ia64/memchr.S 2014-02-03 12:32:56.000000000 +0100
  44285. @@ -14,9 +14,8 @@
  44286. Lesser General Public License for more details.
  44287. You should have received a copy of the GNU Lesser General Public
  44288. - License along with the GNU C Library; if not, write to the Free
  44289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44290. - 02111-1307 USA. */
  44291. + License along with the GNU C Library; if not, see
  44292. + <http://www.gnu.org/licenses/>. */
  44293. /* Return: the address of the first occurence of chr in str or NULL
  44294. @@ -40,7 +39,7 @@
  44295. All the loops in this function could have had the internal branch removed
  44296. if br.ctop and br.cloop could be predicated :-(. */
  44297. -#include "sysdep.h"
  44298. +#include <sysdep.h>
  44299. #undef ret
  44300. #define saved_pr r15
  44301. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memcmp.S uClibc-git/libc/string/ia64/memcmp.S
  44302. --- uClibc-0.9.33.2/libc/string/ia64/memcmp.S 2012-05-15 09:20:09.000000000 +0200
  44303. +++ uClibc-git/libc/string/ia64/memcmp.S 2014-02-03 12:32:56.000000000 +0100
  44304. @@ -14,9 +14,8 @@
  44305. Lesser General Public License for more details.
  44306. You should have received a copy of the GNU Lesser General Public
  44307. - License along with the GNU C Library; if not, write to the Free
  44308. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44309. - 02111-1307 USA. */
  44310. + License along with the GNU C Library; if not, see
  44311. + <http://www.gnu.org/licenses/>. */
  44312. /* Return: the result of the comparison
  44313. @@ -33,7 +32,7 @@
  44314. and all the mux1 instructions should be replaced by plain mov's. */
  44315. -#include "sysdep.h"
  44316. +#include <sysdep.h>
  44317. #undef ret
  44318. #define OP_T_THRES 16
  44319. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memcpy.S uClibc-git/libc/string/ia64/memcpy.S
  44320. --- uClibc-0.9.33.2/libc/string/ia64/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  44321. +++ uClibc-git/libc/string/ia64/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  44322. @@ -15,9 +15,8 @@
  44323. Lesser General Public License for more details.
  44324. You should have received a copy of the GNU Lesser General Public
  44325. - License along with the GNU C Library; if not, write to the Free
  44326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44327. - 02111-1307 USA. */
  44328. + License along with the GNU C Library; if not, see
  44329. + <http://www.gnu.org/licenses/>. */
  44330. /* Return: dest
  44331. @@ -37,7 +36,7 @@
  44332. #define USE_LFETCH
  44333. #define USE_FLP
  44334. -#include "sysdep.h"
  44335. +#include <sysdep.h>
  44336. #undef ret
  44337. #define LFETCH_DIST 500
  44338. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memmove.S uClibc-git/libc/string/ia64/memmove.S
  44339. --- uClibc-0.9.33.2/libc/string/ia64/memmove.S 2012-05-15 09:20:09.000000000 +0200
  44340. +++ uClibc-git/libc/string/ia64/memmove.S 2014-02-03 12:32:56.000000000 +0100
  44341. @@ -14,9 +14,8 @@
  44342. Lesser General Public License for more details.
  44343. You should have received a copy of the GNU Lesser General Public
  44344. - License along with the GNU C Library; if not, write to the Free
  44345. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44346. - 02111-1307 USA. */
  44347. + License along with the GNU C Library; if not, see
  44348. + <http://www.gnu.org/licenses/>. */
  44349. /* Return: dest
  44350. @@ -33,7 +32,7 @@
  44351. sh1 must be computed using an extra instruction: sub sh1 = 64, sh1
  44352. or the UM.be bit should be cleared at the beginning and set at the end. */
  44353. -#include "sysdep.h"
  44354. +#include <sysdep.h>
  44355. #undef ret
  44356. #define OP_T_THRES 16
  44357. diff -Nur uClibc-0.9.33.2/libc/string/ia64/memset.S uClibc-git/libc/string/ia64/memset.S
  44358. --- uClibc-0.9.33.2/libc/string/ia64/memset.S 2012-05-15 09:20:09.000000000 +0200
  44359. +++ uClibc-git/libc/string/ia64/memset.S 2014-02-03 12:32:56.000000000 +0100
  44360. @@ -15,9 +15,8 @@
  44361. Lesser General Public License for more details.
  44362. You should have received a copy of the GNU Lesser General Public
  44363. - License along with the GNU C Library; if not, write to the Free
  44364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44365. - 02111-1307 USA. */
  44366. + License along with the GNU C Library; if not, see
  44367. + <http://www.gnu.org/licenses/>. */
  44368. /* Return: dest
  44369. @@ -33,7 +32,7 @@
  44370. Since a stf.spill f0 can store 16B in one go, we use this instruction
  44371. to get peak speed when value = 0. */
  44372. -#include "sysdep.h"
  44373. +#include <sysdep.h>
  44374. #undef ret
  44375. #define dest in0
  44376. diff -Nur uClibc-0.9.33.2/libc/string/ia64/softpipe.h uClibc-git/libc/string/ia64/softpipe.h
  44377. --- uClibc-0.9.33.2/libc/string/ia64/softpipe.h 2012-05-15 09:20:09.000000000 +0200
  44378. +++ uClibc-git/libc/string/ia64/softpipe.h 2014-02-03 12:32:56.000000000 +0100
  44379. @@ -12,9 +12,8 @@
  44380. Lesser General Public License for more details.
  44381. You should have received a copy of the GNU Lesser General Public
  44382. - License along with the GNU C Library; if not, write to the Free
  44383. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44384. - 02111-1307 USA. */
  44385. + License along with the GNU C Library; if not, see
  44386. + <http://www.gnu.org/licenses/>. */
  44387. /* The latency of a memory load assumed by the assembly implementation
  44388. of the mem and str functions. Since we don't have any clue about
  44389. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strchr.S uClibc-git/libc/string/ia64/strchr.S
  44390. --- uClibc-0.9.33.2/libc/string/ia64/strchr.S 2012-05-15 09:20:09.000000000 +0200
  44391. +++ uClibc-git/libc/string/ia64/strchr.S 2014-02-03 12:32:56.000000000 +0100
  44392. @@ -14,9 +14,8 @@
  44393. Lesser General Public License for more details.
  44394. You should have received a copy of the GNU Lesser General Public
  44395. - License along with the GNU C Library; if not, write to the Free
  44396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44397. - 02111-1307 USA. */
  44398. + License along with the GNU C Library; if not, see
  44399. + <http://www.gnu.org/licenses/>. */
  44400. /* Return: the address of the first occurence of chr in str or NULL
  44401. @@ -30,7 +29,7 @@
  44402. This implementation assumes little endian mode. For big endian mode,
  44403. the instruction czx1.r should be replaced by czx1.l. */
  44404. -#include "sysdep.h"
  44405. +#include <sysdep.h>
  44406. #undef ret
  44407. #define saved_lc r18
  44408. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strcmp.S uClibc-git/libc/string/ia64/strcmp.S
  44409. --- uClibc-0.9.33.2/libc/string/ia64/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  44410. +++ uClibc-git/libc/string/ia64/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  44411. @@ -14,9 +14,8 @@
  44412. Lesser General Public License for more details.
  44413. You should have received a copy of the GNU Lesser General Public
  44414. - License along with the GNU C Library; if not, write to the Free
  44415. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44416. - 02111-1307 USA. */
  44417. + License along with the GNU C Library; if not, see
  44418. + <http://www.gnu.org/licenses/>. */
  44419. /* Return: the result of the comparison
  44420. @@ -27,7 +26,7 @@
  44421. Unlike memcmp(), this function is optimized for mismatches within the
  44422. first few characters. */
  44423. -#include "sysdep.h"
  44424. +#include <sysdep.h>
  44425. #undef ret
  44426. #define s1 in0
  44427. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strcpy.S uClibc-git/libc/string/ia64/strcpy.S
  44428. --- uClibc-0.9.33.2/libc/string/ia64/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  44429. +++ uClibc-git/libc/string/ia64/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  44430. @@ -14,9 +14,8 @@
  44431. Lesser General Public License for more details.
  44432. You should have received a copy of the GNU Lesser General Public
  44433. - License along with the GNU C Library; if not, write to the Free
  44434. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44435. - 02111-1307 USA. */
  44436. + License along with the GNU C Library; if not, see
  44437. + <http://www.gnu.org/licenses/>. */
  44438. /* Return: dest
  44439. @@ -31,7 +30,7 @@
  44440. shr.u tmp = r[0], sh2 // tmp = w1 >> sh2
  44441. */
  44442. -#include "sysdep.h"
  44443. +#include <sysdep.h>
  44444. #undef ret
  44445. #define saved_lc r15
  44446. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strlen.S uClibc-git/libc/string/ia64/strlen.S
  44447. --- uClibc-0.9.33.2/libc/string/ia64/strlen.S 2012-05-15 09:20:09.000000000 +0200
  44448. +++ uClibc-git/libc/string/ia64/strlen.S 2014-02-03 12:32:56.000000000 +0100
  44449. @@ -14,9 +14,8 @@
  44450. Lesser General Public License for more details.
  44451. You should have received a copy of the GNU Lesser General Public
  44452. - License along with the GNU C Library; if not, write to the Free
  44453. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44454. - 02111-1307 USA. */
  44455. + License along with the GNU C Library; if not, see
  44456. + <http://www.gnu.org/licenses/>. */
  44457. /* Return: the length of the input string
  44458. @@ -33,7 +32,7 @@
  44459. This implementation assumes little endian mode. For big endian mode,
  44460. the instruction czx1.r should be replaced by czx1.l. */
  44461. -#include "sysdep.h"
  44462. +#include <sysdep.h>
  44463. #undef ret
  44464. #define saved_lc r18
  44465. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strncmp.S uClibc-git/libc/string/ia64/strncmp.S
  44466. --- uClibc-0.9.33.2/libc/string/ia64/strncmp.S 2012-05-15 09:20:09.000000000 +0200
  44467. +++ uClibc-git/libc/string/ia64/strncmp.S 2014-02-03 12:32:56.000000000 +0100
  44468. @@ -14,9 +14,8 @@
  44469. Lesser General Public License for more details.
  44470. You should have received a copy of the GNU Lesser General Public
  44471. - License along with the GNU C Library; if not, write to the Free
  44472. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44473. - 02111-1307 USA. */
  44474. + License along with the GNU C Library; if not, see
  44475. + <http://www.gnu.org/licenses/>. */
  44476. /* Return: the result of the comparison
  44477. @@ -28,7 +27,7 @@
  44478. Unlike memcmp(), this function is optimized for mismatches within the
  44479. first few characters. */
  44480. -#include "sysdep.h"
  44481. +#include <sysdep.h>
  44482. #undef ret
  44483. #define s1 in0
  44484. diff -Nur uClibc-0.9.33.2/libc/string/ia64/strncpy.S uClibc-git/libc/string/ia64/strncpy.S
  44485. --- uClibc-0.9.33.2/libc/string/ia64/strncpy.S 2012-05-15 09:20:09.000000000 +0200
  44486. +++ uClibc-git/libc/string/ia64/strncpy.S 2014-02-03 12:32:56.000000000 +0100
  44487. @@ -15,9 +15,8 @@
  44488. Lesser General Public License for more details.
  44489. You should have received a copy of the GNU Lesser General Public
  44490. - License along with the GNU C Library; if not, write to the Free
  44491. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44492. - 02111-1307 USA. */
  44493. + License along with the GNU C Library; if not, see
  44494. + <http://www.gnu.org/licenses/>. */
  44495. /* Return: dest
  44496. @@ -29,7 +28,7 @@
  44497. In this form, it assumes little endian mode.
  44498. */
  44499. -#include "sysdep.h"
  44500. +#include <sysdep.h>
  44501. #undef ret
  44502. #define saved_lc r15
  44503. diff -Nur uClibc-0.9.33.2/libc/string/ia64/sysdep.h uClibc-git/libc/string/ia64/sysdep.h
  44504. --- uClibc-0.9.33.2/libc/string/ia64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  44505. +++ uClibc-git/libc/string/ia64/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  44506. @@ -1,168 +0,0 @@
  44507. -/* Copyright (C) 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
  44508. - This file is part of the GNU C Library.
  44509. - Written by Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
  44510. - Based on code originally written by David Mosberger-Tang
  44511. -
  44512. - The GNU C Library is free software; you can redistribute it and/or
  44513. - modify it under the terms of the GNU Lesser General Public
  44514. - License as published by the Free Software Foundation; either
  44515. - version 2.1 of the License, or (at your option) any later version.
  44516. -
  44517. - The GNU C Library is distributed in the hope that it will be useful,
  44518. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  44519. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  44520. - Lesser General Public License for more details.
  44521. -
  44522. - You should have received a copy of the GNU Lesser General Public
  44523. - License along with the GNU C Library; if not, write to the Free
  44524. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  44525. - 02111-1307 USA. */
  44526. -
  44527. -#ifndef _LINUX_IA64_SYSDEP_H
  44528. -#define _LINUX_IA64_SYSDEP_H 1
  44529. -
  44530. -#include <features.h>
  44531. -#include <asm/unistd.h>
  44532. -
  44533. -#ifdef __ASSEMBLER__
  44534. -
  44535. -/* Macros to help writing .prologue directives in assembly code. */
  44536. -#define ASM_UNW_PRLG_RP 0x8
  44537. -#define ASM_UNW_PRLG_PFS 0x4
  44538. -#define ASM_UNW_PRLG_PSP 0x2
  44539. -#define ASM_UNW_PRLG_PR 0x1
  44540. -#define ASM_UNW_PRLG_GRSAVE(ninputs) (32+(ninputs))
  44541. -
  44542. -#ifdef __STDC__
  44543. -#define C_LABEL(name) name :
  44544. -#else
  44545. -#define C_LABEL(name) name/**/:
  44546. -#endif
  44547. -
  44548. -#define CALL_MCOUNT
  44549. -
  44550. -#define ENTRY(name) \
  44551. - .text; \
  44552. - .align 32; \
  44553. - .proc C_SYMBOL_NAME(name); \
  44554. - .global C_SYMBOL_NAME(name); \
  44555. - C_LABEL(name) \
  44556. - CALL_MCOUNT
  44557. -
  44558. -#define LEAF(name) \
  44559. - .text; \
  44560. - .align 32; \
  44561. - .proc C_SYMBOL_NAME(name); \
  44562. - .global name; \
  44563. - C_LABEL(name)
  44564. -
  44565. -/* Mark the end of function SYM. */
  44566. -#undef END
  44567. -#define END(sym) .endp C_SYMBOL_NAME(sym)
  44568. -
  44569. -/* For Linux we can use the system call table in the header file
  44570. - /usr/include/asm/unistd.h
  44571. - of the kernel. But these symbols do not follow the SYS_* syntax
  44572. - so we have to redefine the `SYS_ify' macro here. */
  44573. -#undef SYS_ify
  44574. -#ifdef __STDC__
  44575. -# define SYS_ify(syscall_name) __NR_##syscall_name
  44576. -#else
  44577. -# define SYS_ify(syscall_name) __NR_/**/syscall_name
  44578. -#endif
  44579. -
  44580. -/* Linux uses a negative return value to indicate syscall errors, unlike
  44581. - most Unices, which use the condition codes' carry flag.
  44582. -
  44583. - Since version 2.1 the return value of a system call might be negative
  44584. - even if the call succeeded. E.g., the `lseek' system call might return
  44585. - a large offset. Therefore we must not anymore test for < 0, but test
  44586. - for a real error by making sure the value in %d0 is a real error
  44587. - number. Linus said he will make sure the no syscall returns a value
  44588. - in -1 .. -4095 as a valid result so we can savely test with -4095. */
  44589. -
  44590. -/* We don't want the label for the error handler to be visible in the symbol
  44591. - table when we define it here. */
  44592. -#define SYSCALL_ERROR_LABEL __syscall_error
  44593. -
  44594. -#undef PSEUDO
  44595. -#define PSEUDO(name, syscall_name, args) \
  44596. - ENTRY(name) \
  44597. - DO_CALL (SYS_ify(syscall_name)); \
  44598. - cmp.eq p6,p0=-1,r10; \
  44599. -(p6) br.cond.spnt.few __syscall_error;
  44600. -
  44601. -#define DO_CALL_VIA_BREAK(num) \
  44602. - mov r15=num; \
  44603. - break __BREAK_SYSCALL
  44604. -
  44605. -#ifdef IA64_USE_NEW_STUB
  44606. -# ifdef SHARED
  44607. -# define DO_CALL(num) \
  44608. - .prologue; \
  44609. - adds r2 = SYSINFO_OFFSET, r13;; \
  44610. - ld8 r2 = [r2]; \
  44611. - .save ar.pfs, r11; \
  44612. - mov r11 = ar.pfs;; \
  44613. - .body; \
  44614. - mov r15 = num; \
  44615. - mov b7 = r2; \
  44616. - br.call.sptk.many b6 = b7;; \
  44617. - .restore sp; \
  44618. - mov ar.pfs = r11; \
  44619. - .prologue; \
  44620. - .body
  44621. -# else /* !SHARED */
  44622. -# define DO_CALL(num) \
  44623. - .prologue; \
  44624. - mov r15 = num; \
  44625. - movl r2 = _dl_sysinfo;; \
  44626. - ld8 r2 = [r2]; \
  44627. - .save ar.pfs, r11; \
  44628. - mov r11 = ar.pfs;; \
  44629. - .body; \
  44630. - mov b7 = r2; \
  44631. - br.call.sptk.many b6 = b7;; \
  44632. - .restore sp; \
  44633. - mov ar.pfs = r11; \
  44634. - .prologue; \
  44635. - .body
  44636. -# endif
  44637. -#else
  44638. -# define DO_CALL(num) DO_CALL_VIA_BREAK(num)
  44639. -#endif
  44640. -
  44641. -#undef PSEUDO_END
  44642. -#define PSEUDO_END(name) .endp C_SYMBOL_NAME(name);
  44643. -
  44644. -#undef PSEUDO_NOERRNO
  44645. -#define PSEUDO_NOERRNO(name, syscall_name, args) \
  44646. - ENTRY(name) \
  44647. - DO_CALL (SYS_ify(syscall_name));
  44648. -
  44649. -#undef PSEUDO_END_NOERRNO
  44650. -#define PSEUDO_END_NOERRNO(name) .endp C_SYMBOL_NAME(name);
  44651. -
  44652. -#undef PSEUDO_ERRVAL
  44653. -#define PSEUDO_ERRVAL(name, syscall_name, args) \
  44654. - ENTRY(name) \
  44655. - DO_CALL (SYS_ify(syscall_name)); \
  44656. - cmp.eq p6,p0=-1,r10; \
  44657. -(p6) mov r10=r8;
  44658. -
  44659. -
  44660. -#undef PSEUDO_END_ERRVAL
  44661. -#define PSEUDO_END_ERRVAL(name) .endp C_SYMBOL_NAME(name);
  44662. -
  44663. -#undef END
  44664. -#define END(name) \
  44665. - .size C_SYMBOL_NAME(name), . - C_SYMBOL_NAME(name) ; \
  44666. - .endp C_SYMBOL_NAME(name)
  44667. -
  44668. -#define ret br.ret.sptk.few b0
  44669. -#define ret_NOERRNO ret
  44670. -#define ret_ERRVAL ret
  44671. -
  44672. -#endif /* not __ASSEMBLER__ */
  44673. -
  44674. -#endif /* linux/ia64/sysdep.h */
  44675. diff -Nur uClibc-0.9.33.2/libc/string/memmove.c uClibc-git/libc/string/memmove.c
  44676. --- uClibc-0.9.33.2/libc/string/memmove.c 2012-05-15 09:20:09.000000000 +0200
  44677. +++ uClibc-git/libc/string/memmove.c 2014-02-03 12:32:56.000000000 +0100
  44678. @@ -34,5 +34,5 @@
  44679. }
  44680. #ifndef WANT_WIDE
  44681. -libc_hidden_def(Wmemmove)
  44682. +libc_hidden_def(memmove)
  44683. #endif
  44684. diff -Nur uClibc-0.9.33.2/libc/string/metag/Makefile uClibc-git/libc/string/metag/Makefile
  44685. --- uClibc-0.9.33.2/libc/string/metag/Makefile 1970-01-01 01:00:00.000000000 +0100
  44686. +++ uClibc-git/libc/string/metag/Makefile 2014-02-03 12:32:56.000000000 +0100
  44687. @@ -0,0 +1,13 @@
  44688. +# Makefile for uClibc
  44689. +#
  44690. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  44691. +#
  44692. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44693. +#
  44694. +
  44695. +top_srcdir:=../../../
  44696. +top_builddir:=../../../
  44697. +all: objs
  44698. +include $(top_builddir)Rules.mak
  44699. +include ../Makefile.in
  44700. +include $(top_srcdir)Makerules
  44701. diff -Nur uClibc-0.9.33.2/libc/string/metag/memchr.S uClibc-git/libc/string/metag/memchr.S
  44702. --- uClibc-0.9.33.2/libc/string/metag/memchr.S 1970-01-01 01:00:00.000000000 +0100
  44703. +++ uClibc-git/libc/string/metag/memchr.S 2014-02-03 12:32:56.000000000 +0100
  44704. @@ -0,0 +1,156 @@
  44705. +! Copyright (C) 2013 Imagination Technologies Ltd.
  44706. +!
  44707. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44708. +
  44709. + .text
  44710. + .global _memchr
  44711. + .type _memchr,function
  44712. +! D0Ar6 src
  44713. +! D0Ar2 c
  44714. +! D1Ar3 n
  44715. +_memchr:
  44716. + CMP D1Ar3, #0
  44717. + BEQ $Lexit_fail
  44718. + !! convert c to unsigned char
  44719. + AND D0Ar2,D0Ar2,#0xff
  44720. + MOV D0Ar6, D1Ar1
  44721. + MOV D1Ar5, D0Ar6
  44722. + !! test alignment
  44723. + AND D1Ar5, D1Ar5, #7
  44724. + CMP D1Ar5, #0
  44725. + BNZ $Lunaligned_loop
  44726. + !! length must be greater than or equal to 8 for aligned loop
  44727. + CMP D1Ar3, #8
  44728. + BGE $Laligned_setup
  44729. +$Lunaligned_loop:
  44730. + !! get 1 char from s
  44731. + GETB D0Re0, [D0Ar6++]
  44732. + !! increase alignment counter
  44733. + ADD D1Ar5, D1Ar5, #1
  44734. + !! decrement n
  44735. + SUB D1Ar3, D1Ar3, #1
  44736. + !! exit if we have a match
  44737. + CMP D0Re0, D0Ar2
  44738. + BZ $Lexit_success1
  44739. + !! exit if we have hit the end of the string
  44740. + CMP D1Ar3, #0
  44741. + BZ $Lexit_fail
  44742. + !! fall through if the buffer is aligned now
  44743. + CMP D1Ar5, #8
  44744. + BNE $Lunaligned_loop
  44745. + !! fall through if there is more than 8 bytes left
  44746. + CMP D1Ar3, #8
  44747. + BLT $Lunaligned_loop
  44748. +$Laligned_setup:
  44749. + !! fill the c into 4 bytes
  44750. + MOV D0Ar4, D0Ar2
  44751. + LSL D0Ar4, D0Ar4, #8
  44752. + ADD D0Ar4, D0Ar4, D0Ar2
  44753. + LSL D0Ar4, D0Ar4, #8
  44754. + ADD D0Ar4, D0Ar4, D0Ar2
  44755. + LSL D0Ar4, D0Ar4, #8
  44756. + ADD D0Ar4, D0Ar4, D0Ar2
  44757. + !! divide n by 8
  44758. + MOV D1Ar5, D1Ar3
  44759. + LSR D1Ar5, D1Ar5, #3
  44760. +$Laligned_loop:
  44761. + !! get 8 chars from s
  44762. + GETL D0Re0, D1Re0, [D0Ar6++]
  44763. + !! decrement loop counter
  44764. + SUB D1Ar5, D1Ar5, #1
  44765. + !! test first 4 chars
  44766. + XOR D0Re0, D0Re0, D0Ar4
  44767. + !! test second 4 chars
  44768. + MOV D0Ar2, D1Re0
  44769. + XOR D1Re0, D0Ar2, D0Ar4
  44770. + !! check for matches in the first 4 chars
  44771. + MOV D0Ar2, D0Re0
  44772. + ADDT D0Re0, D0Re0, #HI(0xfefefeff)
  44773. + ADD D0Re0, D0Re0, #LO(0xfefefeff)
  44774. + XOR D0Ar2, D0Ar2, #-1
  44775. + AND D0Re0, D0Re0, D0Ar2
  44776. + ANDMT D0Re0, D0Re0, #HI(0x80808080)
  44777. + ANDMB D0Re0, D0Re0, #LO(0x80808080)
  44778. + CMP D0Re0, #0
  44779. + BNZ $Lmatch_word1
  44780. + !! check for matches in the second 4 chars
  44781. + MOV D1Ar1, D1Re0
  44782. + ADDT D1Re0, D1Re0, #HI(0xfefefeff)
  44783. + ADD D1Re0, D1Re0, #LO(0xfefefeff)
  44784. + XOR D1Ar1, D1Ar1, #-1
  44785. + AND D1Re0, D1Re0, D1Ar1
  44786. + ANDMT D1Re0, D1Re0, #HI(0x80808080)
  44787. + ANDMB D1Re0, D1Re0, #LO(0x80808080)
  44788. + CMP D1Re0, #0
  44789. + BNZ $Lmatch_word2
  44790. + !! check if we have reached the end of the buffer
  44791. + CMP D1Ar5, #0
  44792. + BNE $Laligned_loop
  44793. + !! exit if there are no chars left to check
  44794. + AND D1Ar3, D1Ar3, #7
  44795. + CMP D1Ar3, #0
  44796. + BZ $Lexit_fail
  44797. + !! recover c
  44798. + AND D0Ar2, D0Ar4, #0xff
  44799. +$Lbyte_loop:
  44800. + !! get 1 char from s
  44801. + GETB D0Re0, [D0Ar6++]
  44802. + !! decrement n
  44803. + SUB D1Ar3, D1Ar3, #1
  44804. + !! exit if we have a match
  44805. + CMP D0Re0, D0Ar2
  44806. + BZ $Lexit_success1
  44807. + !! fall through if we have run out of chars
  44808. + CMP D1Ar3, #0
  44809. + BNE $Lbyte_loop
  44810. +
  44811. +$Lexit_fail:
  44812. + MOV D0Re0, #0
  44813. + B $Lend
  44814. +
  44815. +$Lmatch_word1:
  44816. + !! move the match word into D1Re0
  44817. + MOV D1Re0, D0Re0
  44818. + !! roll back the buffer pointer by 4 chars
  44819. + SUB D0Ar6, D0Ar6, #4
  44820. +$Lmatch_word2:
  44821. + !! roll back the buffer pointer by 4 chars
  44822. + SUB D0Ar6, D0Ar6, #4
  44823. + !! exit if lowest byte is 0
  44824. + MOV D1Ar1, D1Re0
  44825. + AND D1Ar1, D1Ar1, #0xff
  44826. + CMP D1Ar1, #0
  44827. + BNE $Lexit_success2
  44828. + !! advance buffer pointer to the next char
  44829. + ADD D0Ar6, D0Ar6, #1
  44830. + !! shift in the next lowest byte
  44831. + LSR D1Re0, D1Re0, #8
  44832. + !! exit if lowest byte is 0
  44833. + MOV D1Ar1, D1Re0
  44834. + AND D1Ar1, D1Ar1, #0xff
  44835. + CMP D1Ar1, #0
  44836. + BNE $Lexit_success2
  44837. + !! advance buffer pointer to the next char
  44838. + ADD D0Ar6, D0Ar6, #1
  44839. + !! shift in the next lowest byte
  44840. + LSR D1Re0, D1Re0, #8
  44841. + !! exit if lowest byte is 0
  44842. + MOV D1Ar1, D1Re0
  44843. + AND D1Ar1, D1Ar1, #0xff
  44844. + CMP D1Ar1, #0
  44845. + BNE $Lexit_success2
  44846. + !! the match must be in the last byte, exit
  44847. + ADD D0Ar6, D0Ar6, #1
  44848. + B $Lexit_success2
  44849. +
  44850. +$Lexit_success1:
  44851. + SUB D0Ar6, D0Ar6, #1
  44852. +$Lexit_success2:
  44853. + !! return the buffer pointer
  44854. + MOV D0Re0, D0Ar6
  44855. +$Lend:
  44856. + MOV PC, D1RtP
  44857. +
  44858. + .size _memchr,.-_memchr
  44859. +
  44860. +libc_hidden_def(memchr)
  44861. diff -Nur uClibc-0.9.33.2/libc/string/metag/memcpy.S uClibc-git/libc/string/metag/memcpy.S
  44862. --- uClibc-0.9.33.2/libc/string/metag/memcpy.S 1970-01-01 01:00:00.000000000 +0100
  44863. +++ uClibc-git/libc/string/metag/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  44864. @@ -0,0 +1,189 @@
  44865. +! Copyright (C) 2013 Imagination Technologies Ltd.
  44866. +
  44867. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  44868. +
  44869. + .text
  44870. + .global _memcpy
  44871. + .type _memcpy,function
  44872. +! D1Ar1 dst
  44873. +! D0Ar2 src
  44874. +! D1Ar3 cnt
  44875. +! D0Re0 dst
  44876. +_memcpy:
  44877. + CMP D1Ar3, #16
  44878. + MOV A1.2, D0Ar2 ! source pointer
  44879. + MOV A0.2, D1Ar1 ! destination pointer
  44880. + MOV A0.3, D1Ar1 ! for return value
  44881. +! If there are less than 16 bytes to copy use the byte copy loop
  44882. + BGE $Llong_copy
  44883. +
  44884. +$Lbyte_copy:
  44885. +! Simply copy a byte at a time
  44886. + SUBS TXRPT, D1Ar3, #1
  44887. + BLT $Lend
  44888. +$Lloop_byte:
  44889. + GETB D1Re0, [A1.2++]
  44890. + SETB [A0.2++], D1Re0
  44891. + BR $Lloop_byte
  44892. +
  44893. +$Lend:
  44894. +! Finally set return value and return
  44895. + MOV D0Re0, A0.3
  44896. + MOV PC, D1RtP
  44897. +
  44898. +$Llong_copy:
  44899. + ANDS D1Ar5, D1Ar1, #7 ! test destination alignment
  44900. + BZ $Laligned_dst
  44901. +
  44902. +! The destination address is not 8 byte aligned. We will copy bytes from
  44903. +! the source to the destination until the remaining data has an 8 byte
  44904. +! destination address alignment (i.e we should never copy more than 7
  44905. +! bytes here).
  44906. +$Lalign_dst:
  44907. + GETB D0Re0, [A1.2++]
  44908. + ADD D1Ar5, D1Ar5, #1 ! dest is aligned when D1Ar5 reaches #8
  44909. + SUB D1Ar3, D1Ar3, #1 ! decrement count of remaining bytes
  44910. + SETB [A0.2++], D0Re0
  44911. + CMP D1Ar5, #8
  44912. + BNE $Lalign_dst
  44913. +
  44914. +! We have at least (16 - 7) = 9 bytes to copy - calculate the number of 8 byte
  44915. +! blocks, then jump to the unaligned copy loop or fall through to the aligned
  44916. +! copy loop as appropriate.
  44917. +$Laligned_dst:
  44918. + MOV D0Ar4, A1.2
  44919. + LSR D1Ar5, D1Ar3, #3 ! D1Ar5 = number of 8 byte blocks
  44920. + ANDS D0Ar4, D0Ar4, #7 ! test source alignment
  44921. + BNZ $Lunaligned_copy ! if unaligned, use unaligned copy loop
  44922. +
  44923. +! Both source and destination are 8 byte aligned - the easy case.
  44924. +$Laligned_copy:
  44925. + LSRS D1Ar5, D1Ar3, #5 ! D1Ar5 = number of 32 byte blocks
  44926. + BZ $Lbyte_copy
  44927. + SUB TXRPT, D1Ar5, #1
  44928. +
  44929. +$Laligned_32:
  44930. + GETL D0Re0, D1Re0, [A1.2++]
  44931. + GETL D0Ar6, D1Ar5, [A1.2++]
  44932. + SETL [A0.2++], D0Re0, D1Re0
  44933. + SETL [A0.2++], D0Ar6, D1Ar5
  44934. + GETL D0Re0, D1Re0, [A1.2++]
  44935. + GETL D0Ar6, D1Ar5, [A1.2++]
  44936. + SETL [A0.2++], D0Re0, D1Re0
  44937. + SETL [A0.2++], D0Ar6, D1Ar5
  44938. + BR $Laligned_32
  44939. +
  44940. +! If there are any remaining bytes use the byte copy loop, otherwise we are done
  44941. + ANDS D1Ar3, D1Ar3, #0x1f
  44942. + BNZ $Lbyte_copy
  44943. + B $Lend
  44944. +
  44945. +! The destination is 8 byte aligned but the source is not, and there are 8
  44946. +! or more bytes to be copied.
  44947. +$Lunaligned_copy:
  44948. +! Adjust the source pointer (A1.2) to the 8 byte boundary before its
  44949. +! current value
  44950. + MOV D0Ar4, A1.2
  44951. + MOV D0Ar6, A1.2
  44952. + ANDMB D0Ar4, D0Ar4, #0xfff8
  44953. + MOV A1.2, D0Ar4
  44954. +! Save the number of bytes of mis-alignment in D0Ar4 for use later
  44955. + SUBS D0Ar6, D0Ar6, D0Ar4
  44956. + MOV D0Ar4, D0Ar6
  44957. +! if there is no mis-alignment after all, use the aligned copy loop
  44958. + BZ $Laligned_copy
  44959. +
  44960. +! prefetch 8 bytes
  44961. + GETL D0Re0, D1Re0, [A1.2]
  44962. +
  44963. + SUB TXRPT, D1Ar5, #1
  44964. +
  44965. +! There are 3 mis-alignment cases to be considered. Less than 4 bytes, exactly
  44966. +! 4 bytes, and more than 4 bytes.
  44967. + CMP D0Ar6, #4
  44968. + BLT $Lunaligned_1_2_3 ! use 1-3 byte mis-alignment loop
  44969. + BZ $Lunaligned_4 ! use 4 byte mis-alignment loop
  44970. +
  44971. +! The mis-alignment is more than 4 bytes
  44972. +$Lunaligned_5_6_7:
  44973. + SUB D0Ar6, D0Ar6, #4
  44974. +! Calculate the bit offsets required for the shift operations necesssary
  44975. +! to align the data.
  44976. +! D0Ar6 = bit offset, D1Ar5 = (32 - bit offset)
  44977. + MULW D0Ar6, D0Ar6, #8
  44978. + MOV D1Ar5, #32
  44979. + SUB D1Ar5, D1Ar5, D0Ar6
  44980. +! Move data 4 bytes before we enter the main loop
  44981. + MOV D0Re0, D1Re0
  44982. +
  44983. +$Lloop_5_6_7:
  44984. + GETL D0Ar2, D1Ar1, [++A1.2]
  44985. +! form 64-bit data in D0Re0, D1Re0
  44986. + LSR D0Re0, D0Re0, D0Ar6
  44987. + MOV D1Re0, D0Ar2
  44988. + LSL D1Re0, D1Re0, D1Ar5
  44989. + ADD D0Re0, D0Re0, D1Re0
  44990. +
  44991. + LSR D0Ar2, D0Ar2, D0Ar6
  44992. + LSL D1Re0, D1Ar1, D1Ar5
  44993. + ADD D1Re0, D1Re0, D0Ar2
  44994. +
  44995. + SETL [A0.2++], D0Re0, D1Re0
  44996. + MOV D0Re0, D1Ar1
  44997. + BR $Lloop_5_6_7
  44998. +
  44999. + B $Lunaligned_end
  45000. +
  45001. +$Lunaligned_1_2_3:
  45002. +! Calculate the bit offsets required for the shift operations necesssary
  45003. +! to align the data.
  45004. +! D0Ar6 = bit offset, D1Ar5 = (32 - bit offset)
  45005. + MULW D0Ar6, D0Ar6, #8
  45006. + MOV D1Ar5, #32
  45007. + SUB D1Ar5, D1Ar5, D0Ar6
  45008. +
  45009. +$Lloop_1_2_3:
  45010. +! form 64-bit data in D0Re0,D1Re0
  45011. + LSR D0Re0, D0Re0, D0Ar6
  45012. + LSL D1Ar1, D1Re0, D1Ar5
  45013. + ADD D0Re0, D0Re0, D1Ar1
  45014. + MOV D0Ar2, D1Re0
  45015. + LSR D0FrT, D0Ar2, D0Ar6
  45016. + GETL D0Ar2, D1Ar1, [++A1.2]
  45017. +
  45018. + MOV D1Re0, D0Ar2
  45019. + LSL D1Re0, D1Re0, D1Ar5
  45020. + ADD D1Re0, D1Re0, D0FrT
  45021. +
  45022. + SETL [A0.2++], D0Re0, D1Re0
  45023. + MOV D0Re0, D0Ar2
  45024. + MOV D1Re0, D1Ar1
  45025. + BR $Lloop_1_2_3
  45026. +
  45027. + B $Lunaligned_end
  45028. +
  45029. +! The 4 byte mis-alignment case - this does not require any shifting, just a
  45030. +! shuffling of registers.
  45031. +$Lunaligned_4:
  45032. + MOV D0Re0, D1Re0
  45033. +$Lloop_4:
  45034. + GETL D0Ar2, D1Ar1, [++A1.2]
  45035. + MOV D1Re0, D0Ar2
  45036. + SETL [A0.2++], D0Re0, D1Re0
  45037. + MOV D0Re0, D1Ar1
  45038. + BR $Lloop_4
  45039. +
  45040. +$Lunaligned_end:
  45041. +! If there are no remaining bytes to copy, we are done.
  45042. + ANDS D1Ar3, D1Ar3, #7
  45043. + BZ $Lend
  45044. +! Re-adjust the source pointer (A1.2) back to the actual (unaligned) byte
  45045. +! address of the remaining bytes, and fall through to the byte copy loop.
  45046. + MOV D0Ar6, A1.2
  45047. + ADD D1Ar5, D0Ar4, D0Ar6
  45048. + MOV A1.2, D1Ar5
  45049. + B $Lbyte_copy
  45050. +
  45051. + .size _memcpy,.-_memcpy
  45052. +
  45053. +libc_hidden_def(memcpy)
  45054. diff -Nur uClibc-0.9.33.2/libc/string/metag/memmove.S uClibc-git/libc/string/metag/memmove.S
  45055. --- uClibc-0.9.33.2/libc/string/metag/memmove.S 1970-01-01 01:00:00.000000000 +0100
  45056. +++ uClibc-git/libc/string/metag/memmove.S 2014-02-03 12:32:56.000000000 +0100
  45057. @@ -0,0 +1,350 @@
  45058. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45059. +
  45060. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45061. +
  45062. +
  45063. + .text
  45064. + .global _memmove
  45065. + .type _memmove,function
  45066. +! D1Ar1 dst
  45067. +! D0Ar2 src
  45068. +! D1Ar3 cnt
  45069. +! D0Re0 dst
  45070. +_memmove:
  45071. + CMP D1Ar3, #0
  45072. + MOV D0Re0, D1Ar1
  45073. + BZ $LEND2
  45074. + MSETL [A0StP], D0.5, D0.6, D0.7
  45075. + MOV D1Ar5, D0Ar2
  45076. + CMP D1Ar1, D1Ar5
  45077. + BLT $Lforwards_copy
  45078. + SUB D0Ar4, D1Ar1, D1Ar3
  45079. + ADD D0Ar4, D0Ar4, #1
  45080. + CMP D0Ar2, D0Ar4
  45081. + BLT $Lforwards_copy
  45082. + ! should copy backwards
  45083. + MOV D1Re0, D0Ar2
  45084. + ! adjust pointer to the end of mem
  45085. + ADD D0Ar2, D1Re0, D1Ar3
  45086. + ADD D1Ar1, D1Ar1, D1Ar3
  45087. +
  45088. + MOV A1.2, D0Ar2
  45089. + MOV A0.2, D1Ar1
  45090. + CMP D1Ar3, #8
  45091. + BLT $Lbbyte_loop
  45092. +
  45093. + MOV D0Ar4, D0Ar2
  45094. + MOV D1Ar5, D1Ar1
  45095. +
  45096. + ! test 8 byte alignment
  45097. + ANDS D1Ar5, D1Ar5, #7
  45098. + BNE $Lbdest_unaligned
  45099. +
  45100. + ANDS D0Ar4, D0Ar4, #7
  45101. + BNE $Lbsrc_unaligned
  45102. +
  45103. + LSR D1Ar5, D1Ar3, #3
  45104. +
  45105. +$Lbaligned_loop:
  45106. + GETL D0Re0, D1Re0, [--A1.2]
  45107. + SETL [--A0.2], D0Re0, D1Re0
  45108. + SUBS D1Ar5, D1Ar5, #1
  45109. + BNE $Lbaligned_loop
  45110. +
  45111. + ANDS D1Ar3, D1Ar3, #7
  45112. + BZ $Lbbyte_loop_exit
  45113. +$Lbbyte_loop:
  45114. + GETB D1Re0, [--A1.2]
  45115. + SETB [--A0.2], D1Re0
  45116. + SUBS D1Ar3, D1Ar3, #1
  45117. + BNE $Lbbyte_loop
  45118. +$Lbbyte_loop_exit:
  45119. + MOV D0Re0, A0.2
  45120. +$LEND:
  45121. + SUB A0.2, A0StP, #24
  45122. + MGETL D0.5, D0.6, D0.7, [A0.2]
  45123. + SUB A0StP, A0StP, #24
  45124. +$LEND2:
  45125. + MOV PC, D1RtP
  45126. +
  45127. +$Lbdest_unaligned:
  45128. + GETB D0Re0, [--A1.2]
  45129. + SETB [--A0.2], D0Re0
  45130. + SUBS D1Ar5, D1Ar5, #1
  45131. + SUB D1Ar3, D1Ar3, #1
  45132. + BNE $Lbdest_unaligned
  45133. + CMP D1Ar3, #8
  45134. + BLT $Lbbyte_loop
  45135. +$Lbsrc_unaligned:
  45136. + LSR D1Ar5, D1Ar3, #3
  45137. + ! adjust A1.2
  45138. + MOV D0Ar4, A1.2
  45139. + ! save original address
  45140. + MOV D0Ar6, A1.2
  45141. +
  45142. + ADD D0Ar4, D0Ar4, #7
  45143. + ANDMB D0Ar4, D0Ar4, #0xfff8
  45144. + ! new address is the 8-byte aligned one above the original
  45145. + MOV A1.2, D0Ar4
  45146. +
  45147. + ! A0.2 dst 64-bit is aligned
  45148. + ! measure the gap size
  45149. + SUB D0Ar6, D0Ar4, D0Ar6
  45150. + MOVS D0Ar4, D0Ar6
  45151. + ! keep this information for the later adjustment
  45152. + ! both aligned
  45153. + BZ $Lbaligned_loop
  45154. +
  45155. + ! prefetch
  45156. + GETL D0Re0, D1Re0, [--A1.2]
  45157. +
  45158. + CMP D0Ar6, #4
  45159. + BLT $Lbunaligned_1_2_3
  45160. + ! 32-bit aligned
  45161. + BZ $Lbaligned_4
  45162. +
  45163. + SUB D0Ar6, D0Ar6, #4
  45164. + ! D1.6 stores the gap size in bits
  45165. + MULW D1.6, D0Ar6, #8
  45166. + MOV D0.6, #32
  45167. + ! D0.6 stores the complement of the gap size
  45168. + SUB D0.6, D0.6, D1.6
  45169. +
  45170. +$Lbunaligned_5_6_7:
  45171. + GETL D0.7, D1.7, [--A1.2]
  45172. + ! form 64-bit data in D0Re0, D1Re0
  45173. + MOV D1Re0, D0Re0
  45174. + ! D1Re0 << gap-size
  45175. + LSL D1Re0, D1Re0, D1.6
  45176. + MOV D0Re0, D1.7
  45177. + ! D0Re0 >> complement
  45178. + LSR D0Re0, D0Re0, D0.6
  45179. + MOV D1.5, D0Re0
  45180. + ! combine the both
  45181. + ADD D1Re0, D1Re0, D1.5
  45182. +
  45183. + MOV D1.5, D1.7
  45184. + LSL D1.5, D1.5, D1.6
  45185. + MOV D0Re0, D0.7
  45186. + LSR D0Re0, D0Re0, D0.6
  45187. + MOV D0.5, D1.5
  45188. + ADD D0Re0, D0Re0, D0.5
  45189. +
  45190. + SETL [--A0.2], D0Re0, D1Re0
  45191. + MOV D0Re0, D0.7
  45192. + MOV D1Re0, D1.7
  45193. + SUBS D1Ar5, D1Ar5, #1
  45194. + BNE $Lbunaligned_5_6_7
  45195. +
  45196. + ANDS D1Ar3, D1Ar3, #7
  45197. + BZ $Lbbyte_loop_exit
  45198. + ! Adjust A1.2
  45199. + ! A1.2 <- A1.2 +8 - gapsize
  45200. + ADD A1.2, A1.2, #8
  45201. + SUB A1.2, A1.2, D0Ar4
  45202. + B $Lbbyte_loop
  45203. +
  45204. +$Lbunaligned_1_2_3:
  45205. + MULW D1.6, D0Ar6, #8
  45206. + MOV D0.6, #32
  45207. + SUB D0.6, D0.6, D1.6
  45208. +
  45209. +$Lbunaligned_1_2_3_loop:
  45210. + GETL D0.7, D1.7, [--A1.2]
  45211. + ! form 64-bit data in D0Re0, D1Re0
  45212. + LSL D1Re0, D1Re0, D1.6
  45213. + ! save D0Re0 for later use
  45214. + MOV D0.5, D0Re0
  45215. + LSR D0Re0, D0Re0, D0.6
  45216. + MOV D1.5, D0Re0
  45217. + ADD D1Re0, D1Re0, D1.5
  45218. +
  45219. + ! orignal data in D0Re0
  45220. + MOV D1.5, D0.5
  45221. + LSL D1.5, D1.5, D1.6
  45222. + MOV D0Re0, D1.7
  45223. + LSR D0Re0, D0Re0, D0.6
  45224. + MOV D0.5, D1.5
  45225. + ADD D0Re0, D0Re0, D0.5
  45226. +
  45227. + SETL [--A0.2], D0Re0, D1Re0
  45228. + MOV D0Re0, D0.7
  45229. + MOV D1Re0, D1.7
  45230. + SUBS D1Ar5, D1Ar5, #1
  45231. + BNE $Lbunaligned_1_2_3_loop
  45232. +
  45233. + ANDS D1Ar3, D1Ar3, #7
  45234. + BZ $Lbbyte_loop_exit
  45235. + ! Adjust A1.2
  45236. + ADD A1.2, A1.2, #8
  45237. + SUB A1.2, A1.2, D0Ar4
  45238. + B $Lbbyte_loop
  45239. +
  45240. +$Lbaligned_4:
  45241. + GETL D0.7, D1.7, [--A1.2]
  45242. + MOV D1Re0, D0Re0
  45243. + MOV D0Re0, D1.7
  45244. + SETL [--A0.2], D0Re0, D1Re0
  45245. + MOV D0Re0, D0.7
  45246. + MOV D1Re0, D1.7
  45247. + SUBS D1Ar5, D1Ar5, #1
  45248. + BNE $Lbaligned_4
  45249. + ANDS D1Ar3, D1Ar3, #7
  45250. + BZ $Lbbyte_loop_exit
  45251. + ! Adjust A1.2
  45252. + ADD A1.2, A1.2, #8
  45253. + SUB A1.2, A1.2, D0Ar4
  45254. + B $Lbbyte_loop
  45255. +
  45256. +$Lforwards_copy:
  45257. + MOV A1.2, D0Ar2
  45258. + MOV A0.2, D1Ar1
  45259. + CMP D1Ar3, #8
  45260. + BLT $Lfbyte_loop
  45261. +
  45262. + MOV D0Ar4, D0Ar2
  45263. + MOV D1Ar5, D1Ar1
  45264. +
  45265. + ANDS D1Ar5, D1Ar5, #7
  45266. + BNE $Lfdest_unaligned
  45267. +
  45268. + ANDS D0Ar4, D0Ar4, #7
  45269. + BNE $Lfsrc_unaligned
  45270. +
  45271. + LSR D1Ar5, D1Ar3, #3
  45272. +
  45273. +$Lfaligned_loop:
  45274. + GETL D0Re0, D1Re0, [A1.2++]
  45275. + SUBS D1Ar5, D1Ar5, #1
  45276. + SETL [A0.2++], D0Re0, D1Re0
  45277. + BNE $Lfaligned_loop
  45278. +
  45279. + ANDS D1Ar3, D1Ar3, #7
  45280. + BZ $Lfbyte_loop_exit
  45281. +$Lfbyte_loop:
  45282. + GETB D1Re0, [A1.2++]
  45283. + SETB [A0.2++], D1Re0
  45284. + SUBS D1Ar3, D1Ar3, #1
  45285. + BNE $Lfbyte_loop
  45286. +$Lfbyte_loop_exit:
  45287. + MOV D0Re0, D1Ar1
  45288. + B $LEND
  45289. +
  45290. +$Lfdest_unaligned:
  45291. + GETB D0Re0, [A1.2++]
  45292. + ADD D1Ar5, D1Ar5, #1
  45293. + SUB D1Ar3, D1Ar3, #1
  45294. + SETB [A0.2++], D0Re0
  45295. + CMP D1Ar5, #8
  45296. + BNE $Lfdest_unaligned
  45297. + CMP D1Ar3, #8
  45298. + BLT $Lfbyte_loop
  45299. +$Lfsrc_unaligned:
  45300. + ! adjust A1.2
  45301. + LSR D1Ar5, D1Ar3, #3
  45302. +
  45303. + MOV D0Ar4, A1.2
  45304. + MOV D0Ar6, A1.2
  45305. + ANDMB D0Ar4, D0Ar4, #0xfff8
  45306. + MOV A1.2, D0Ar4
  45307. +
  45308. + ! A0.2 dst 64-bit is aligned
  45309. + SUB D0Ar6, D0Ar6, D0Ar4
  45310. + ! keep the information for the later adjustment
  45311. + MOVS D0Ar4, D0Ar6
  45312. +
  45313. + ! both aligned
  45314. + BZ $Lfaligned_loop
  45315. +
  45316. + ! prefetch
  45317. + GETL D0Re0, D1Re0, [A1.2]
  45318. +
  45319. + CMP D0Ar6, #4
  45320. + BLT $Lfunaligned_1_2_3
  45321. + BZ $Lfaligned_4
  45322. +
  45323. + SUB D0Ar6, D0Ar6, #4
  45324. + MULW D0.6, D0Ar6, #8
  45325. + MOV D1.6, #32
  45326. + SUB D1.6, D1.6, D0.6
  45327. +
  45328. +$Lfunaligned_5_6_7:
  45329. + GETL D0.7, D1.7, [++A1.2]
  45330. + ! form 64-bit data in D0Re0, D1Re0
  45331. + MOV D0Re0, D1Re0
  45332. + LSR D0Re0, D0Re0, D0.6
  45333. + MOV D1Re0, D0.7
  45334. + LSL D1Re0, D1Re0, D1.6
  45335. + MOV D0.5, D1Re0
  45336. + ADD D0Re0, D0Re0, D0.5
  45337. +
  45338. + MOV D0.5, D0.7
  45339. + LSR D0.5, D0.5, D0.6
  45340. + MOV D1Re0, D1.7
  45341. + LSL D1Re0, D1Re0, D1.6
  45342. + MOV D1.5, D0.5
  45343. + ADD D1Re0, D1Re0, D1.5
  45344. +
  45345. + SETL [A0.2++], D0Re0, D1Re0
  45346. + MOV D0Re0, D0.7
  45347. + MOV D1Re0, D1.7
  45348. + SUBS D1Ar5, D1Ar5, #1
  45349. + BNE $Lfunaligned_5_6_7
  45350. +
  45351. + ANDS D1Ar3, D1Ar3, #7
  45352. + BZ $Lfbyte_loop_exit
  45353. + ! Adjust A1.2
  45354. + ADD A1.2, A1.2, D0Ar4
  45355. + B $Lfbyte_loop
  45356. +
  45357. +$Lfunaligned_1_2_3:
  45358. + MULW D0.6, D0Ar6, #8
  45359. + MOV D1.6, #32
  45360. + SUB D1.6, D1.6, D0.6
  45361. +
  45362. +$Lfunaligned_1_2_3_loop:
  45363. + GETL D0.7, D1.7, [++A1.2]
  45364. + ! form 64-bit data in D0Re0, D1Re0
  45365. + LSR D0Re0, D0Re0, D0.6
  45366. + MOV D1.5, D1Re0
  45367. + LSL D1Re0, D1Re0, D1.6
  45368. + MOV D0.5, D1Re0
  45369. + ADD D0Re0, D0Re0, D0.5
  45370. +
  45371. + MOV D0.5, D1.5
  45372. + LSR D0.5, D0.5, D0.6
  45373. + MOV D1Re0, D0.7
  45374. + LSL D1Re0, D1Re0, D1.6
  45375. + MOV D1.5, D0.5
  45376. + ADD D1Re0, D1Re0, D1.5
  45377. +
  45378. + SETL [A0.2++], D0Re0, D1Re0
  45379. + MOV D0Re0, D0.7
  45380. + MOV D1Re0, D1.7
  45381. + SUBS D1Ar5, D1Ar5, #1
  45382. + BNE $Lfunaligned_1_2_3_loop
  45383. +
  45384. + ANDS D1Ar3, D1Ar3, #7
  45385. + BZ $Lfbyte_loop_exit
  45386. + ! Adjust A1.2
  45387. + ADD A1.2, A1.2, D0Ar4
  45388. + B $Lfbyte_loop
  45389. +
  45390. +$Lfaligned_4:
  45391. + GETL D0.7, D1.7, [++A1.2]
  45392. + MOV D0Re0, D1Re0
  45393. + MOV D1Re0, D0.7
  45394. + SETL [A0.2++], D0Re0, D1Re0
  45395. + MOV D0Re0, D0.7
  45396. + MOV D1Re0, D1.7
  45397. + SUBS D1Ar5, D1Ar5, #1
  45398. + BNE $Lfaligned_4
  45399. + ANDS D1Ar3, D1Ar3, #7
  45400. + BZ $Lfbyte_loop_exit
  45401. + ! Adjust A1.2
  45402. + ADD A1.2, A1.2, D0Ar4
  45403. + B $Lfbyte_loop
  45404. +
  45405. + .size _memmove,.-_memmove
  45406. +
  45407. +libc_hidden_def(memmove)
  45408. diff -Nur uClibc-0.9.33.2/libc/string/metag/memset.S uClibc-git/libc/string/metag/memset.S
  45409. --- uClibc-0.9.33.2/libc/string/metag/memset.S 1970-01-01 01:00:00.000000000 +0100
  45410. +++ uClibc-git/libc/string/metag/memset.S 2014-02-03 12:32:56.000000000 +0100
  45411. @@ -0,0 +1,90 @@
  45412. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45413. +
  45414. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45415. +
  45416. +
  45417. + .text
  45418. + .global _memset
  45419. + .type _memset,function
  45420. +! D1Ar1 dst
  45421. +! D0Ar2 c
  45422. +! D1Ar3 cnt
  45423. +! D0Re0 dst
  45424. +_memset:
  45425. + AND D0Ar2,D0Ar2,#0xFF ! Ensure a byte input value
  45426. + MULW D0Ar2,D0Ar2,#0x0101 ! Duplicate byte value into 0-15
  45427. + ANDS D0Ar4,D1Ar1,#7 ! Extract bottom LSBs of dst
  45428. + LSL D0Re0,D0Ar2,#16 ! Duplicate byte value into 16-31
  45429. + ADD A0.2,D0Ar2,D0Re0 ! Duplicate byte value into 4 (A0.2)
  45430. + MOV D0Re0,D1Ar1 ! Return dst
  45431. + BZ $LLongStub ! if start address is aligned
  45432. + ! start address is not aligned on an 8 byte boundary, so we
  45433. + ! need the number of bytes up to the next 8 byte address
  45434. + ! boundary, or the length of the string if less than 8, in D1Ar5
  45435. + MOV D0Ar2,#8 ! Need 8 - N in D1Ar5 ...
  45436. + SUB D1Ar5,D0Ar2,D0Ar4 ! ... subtract N
  45437. + CMP D1Ar3,D1Ar5
  45438. + MOVMI D1Ar5,D1Ar3
  45439. + B $LByteStub ! dst is mis-aligned, do $LByteStub
  45440. +
  45441. +!
  45442. +! Preamble to LongLoop which generates 4*8 bytes per interation (5 cycles)
  45443. +!
  45444. +$LLongStub:
  45445. + LSRS D0Ar2,D1Ar3,#5
  45446. + AND D1Ar3,D1Ar3,#0x1F
  45447. + MOV A1.2,A0.2
  45448. + BEQ $LLongishStub
  45449. + SUB TXRPT,D0Ar2,#1
  45450. + CMP D1Ar3,#0
  45451. +$LLongLoop:
  45452. + SETL [D1Ar1++],A0.2,A1.2
  45453. + SETL [D1Ar1++],A0.2,A1.2
  45454. + SETL [D1Ar1++],A0.2,A1.2
  45455. + SETL [D1Ar1++],A0.2,A1.2
  45456. + BR $LLongLoop
  45457. + BZ $Lexit
  45458. +!
  45459. +! Preamble to LongishLoop which generates 1*8 bytes per interation (2 cycles)
  45460. +!
  45461. +$LLongishStub:
  45462. + LSRS D0Ar2,D1Ar3,#3
  45463. + AND D1Ar3,D1Ar3,#0x7
  45464. + MOV D1Ar5,D1Ar3
  45465. + BEQ $LByteStub
  45466. + SUB TXRPT,D0Ar2,#1
  45467. + CMP D1Ar3,#0
  45468. +$LLongishLoop:
  45469. + SETL [D1Ar1++],A0.2,A1.2
  45470. + BR $LLongishLoop
  45471. + BZ $Lexit
  45472. +!
  45473. +! This does a byte structured burst of up to 7 bytes
  45474. +!
  45475. +! D1Ar1 should point to the location required
  45476. +! D1Ar3 should be the remaining total byte count
  45477. +! D1Ar5 should be burst size (<= D1Ar3)
  45478. +!
  45479. +$LByteStub:
  45480. + SUBS D1Ar3,D1Ar3,D1Ar5 ! Reduce count
  45481. + ADD D1Ar1,D1Ar1,D1Ar5 ! Advance pointer to end of area
  45482. + MULW D1Ar5,D1Ar5,#4 ! Scale to (1*4), (2*4), (3*4)
  45483. + SUB D1Ar5,D1Ar5,#(8*4) ! Rebase to -(7*4), -(6*4), -(5*4), ...
  45484. + MOV A1.2,D1Ar5
  45485. + SUB PC,CPC1,A1.2 ! Jump into table below
  45486. + SETB [D1Ar1+#(-7)],A0.2
  45487. + SETB [D1Ar1+#(-6)],A0.2
  45488. + SETB [D1Ar1+#(-5)],A0.2
  45489. + SETB [D1Ar1+#(-4)],A0.2
  45490. + SETB [D1Ar1+#(-3)],A0.2
  45491. + SETB [D1Ar1+#(-2)],A0.2
  45492. + SETB [D1Ar1+#(-1)],A0.2
  45493. +!
  45494. +! Return if all data has been output, otherwise do $LLongStub
  45495. +!
  45496. + BNZ $LLongStub
  45497. +$Lexit:
  45498. + MOV PC,D1RtP
  45499. + .size _memset,.-_memset
  45500. +
  45501. +libc_hidden_def(memset)
  45502. diff -Nur uClibc-0.9.33.2/libc/string/metag/strchr.S uClibc-git/libc/string/metag/strchr.S
  45503. --- uClibc-0.9.33.2/libc/string/metag/strchr.S 1970-01-01 01:00:00.000000000 +0100
  45504. +++ uClibc-git/libc/string/metag/strchr.S 2014-02-03 12:32:56.000000000 +0100
  45505. @@ -0,0 +1,167 @@
  45506. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45507. +
  45508. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45509. +
  45510. +
  45511. +#include <features.h>
  45512. +
  45513. + .text
  45514. + .global _strchr
  45515. + .type _strchr, function
  45516. +! D1Ar1 src
  45517. +! D0Ar2 c
  45518. +_strchr:
  45519. + AND D0Ar2,D0Ar2,#0xff ! Drop all but 8 bits of c
  45520. + MOV D1Ar5, D1Ar1 ! Copy src to D1Ar5
  45521. + AND D1Ar5, D1Ar5, #7 ! Check 64 bit alignment
  45522. + CMP D1Ar5, #0
  45523. + BZ $Laligned64bit ! Jump to 64 bit aligned strchr
  45524. +$Lalign64bit:
  45525. + GETB D0Re0, [D1Ar1++] ! Get the next character
  45526. + ADD D1Ar5, D1Ar5, #1 ! Increment alignment counter
  45527. + CMP D0Re0, D0Ar2 ! Is the char c
  45528. + BZ $Lcharatprevious ! If so exit returning position
  45529. + CMP D0Re0, #0 ! End of string?
  45530. + BZ $Lnotfound ! If so exit
  45531. + CMP D1Ar5, #8 ! Are we aligned 64bit yet?
  45532. + BNZ $Lalign64bit ! If not keep aligning
  45533. +$Laligned64bit: ! src is 64bit aligned
  45534. + MOV D0Ar4, D0Ar2 ! put c into D0Ar4
  45535. + LSL D0Ar4, D0Ar4, #8 ! Shift it up
  45536. + ADD D0Ar4, D0Ar4, D0Ar2 ! another c
  45537. + LSL D0Ar4, D0Ar4, #8 ! shift
  45538. + ADD D0Ar4, D0Ar4, D0Ar2 ! another c
  45539. + LSL D0Ar4, D0Ar4, #8 ! shift
  45540. + ADD D0Ar4, D0Ar4, D0Ar2 ! 4 copies of c
  45541. +$Lcheck8bytes:
  45542. + GETL D0Re0, D1Re0, [D1Ar1++] ! grab 16 bytes
  45543. + MOV A0.3, D0Re0 ! save for later use
  45544. + ! first word
  45545. + ! check for \0
  45546. + MOV D0Ar2, D0Re0 ! D0Ar2 is a scratch now
  45547. + ADDT D0Re0, D0Re0, #HI(0xfefefeff) ! Do 4 1-byte compares
  45548. + ADD D0Re0, D0Re0, #LO(0xfefefeff)
  45549. + XOR D0Ar2, D0Ar2, #-1
  45550. + AND D0Re0, D0Re0, D0Ar2
  45551. + ANDMT D0Re0, D0Re0, #HI(0x80808080)
  45552. + ANDMB D0Re0, D0Re0, #LO(0x80808080)
  45553. + CMP D0Re0, #0
  45554. + BNZ $Lnullinword1 ! found \0 (or c if c==\0)
  45555. +
  45556. + ! Check for c
  45557. + MOV D0Re0, A0.3 ! restore the first word
  45558. + XOR D0Re0, D0Re0, D0Ar4
  45559. + MOV D0Ar2, D0Re0 ! DO 4 1-byte compares
  45560. + ADDT D0Re0, D0Re0, #HI(0xfefefeff)
  45561. + ADD D0Re0, D0Re0, #LO(0xfefefeff)
  45562. + XOR D0Ar2, D0Ar2, #-1
  45563. + AND D0Re0, D0Re0, D0Ar2
  45564. + ANDMT D0Re0, D0Re0, #HI(0x80808080)
  45565. + ANDMB D0Re0, D0Re0, #LO(0x80808080)
  45566. + CMP D0Re0, #0
  45567. + BNZ $Lcharinword1 ! found c
  45568. +
  45569. + ! second word
  45570. + ! check for \0
  45571. + MOV A0.3, D1Re0 ! save for later use
  45572. + MOV D1Ar3, D1Re0
  45573. + ADDT D1Re0, D1Re0, #HI(0xfefefeff) ! Do 4 1-byte compares
  45574. + ADD D1Re0, D1Re0, #LO(0xfefefeff)
  45575. + XOR D1Ar3, D1Ar3, #-1
  45576. + AND D1Re0, D1Re0, D1Ar3
  45577. + ANDMT D1Re0, D1Re0, #HI(0x80808080)
  45578. + ANDMB D1Re0, D1Re0, #LO(0x80808080)
  45579. + CMP D1Re0, #0
  45580. + BNZ $Lnullinword2 ! Found \0 (or c if c==\0)
  45581. +
  45582. + MOV D0.4, A0.3 ! restore the second word
  45583. + XOR D1Re0, D0.4, D0Ar4 ! test c
  45584. +
  45585. + MOV D1Ar3, D1Re0
  45586. + ADDT D1Re0, D1Re0, #HI(0xfefefeff) ! Do 4 1-byte compares
  45587. + ADD D1Re0, D1Re0, #LO(0xfefefeff)
  45588. + XOR D1Ar3, D1Ar3, #-1
  45589. + AND D1Re0, D1Re0, D1Ar3
  45590. + ANDMT D1Re0, D1Re0, #HI(0x80808080)
  45591. + ANDMB D1Re0, D1Re0, #LO(0x80808080)
  45592. + CMP D1Re0, #0
  45593. + BNZ $Lcharinword2 ! found c
  45594. +
  45595. + B $Lcheck8bytes ! Keep checking
  45596. +
  45597. +$Lnullinword1: ! found \0 somewhere, check for c too
  45598. + SUB D1Ar1, D1Ar1, #4
  45599. +$Lnullinword2:
  45600. + SUB D1Ar1, D1Ar1, #4
  45601. + AND D0Ar2, D0Ar4, #0xff ! restore c
  45602. + MOV D0Re0, A0.3 ! restore the word
  45603. + MOV D0.4, D0Re0 ! for shifting later
  45604. + AND D0Re0, D0Re0, #0xff ! take first byte of word
  45605. + CMP D0Re0, D0Ar2
  45606. + BZ $Lcharatcurrent ! found c
  45607. + CMP D0Re0, #0!
  45608. + BZ $Lnotfound ! found \0
  45609. +
  45610. + ADD D1Ar1, D1Ar1, #1
  45611. + LSR D0.4, D0.4, #8
  45612. + MOV D0Re0, D0.4
  45613. + AND D0Re0, D0Re0, #0xff ! take second byte of word
  45614. + CMP D0Re0, D0Ar2
  45615. + BZ $Lcharatcurrent ! found c
  45616. + CMP D0Re0, #0
  45617. + BZ $Lnotfound ! found \0
  45618. +
  45619. + ADD D1Ar1, D1Ar1, #1
  45620. + LSR D0.4, D0.4, #8
  45621. + MOV D0Re0, D0.4
  45622. + AND D0Re0, D0Re0, #0xff ! take third byte of word
  45623. + CMP D0Re0, D0Ar2
  45624. + BZ $Lcharatcurrent ! found c
  45625. + CMP D0Re0, #0
  45626. + BZ $Lnotfound ! found \0
  45627. +
  45628. + ADD D1Ar1, D1Ar1, #1 ! move to 4th byte
  45629. + CMP D0Ar2, #0 ! If c was \0
  45630. + BZ $Lcharatcurrent ! c has been found!
  45631. +
  45632. +$Lnotfound:
  45633. + MOV D0Re0, #0 ! End of string c not found
  45634. + B $Lend
  45635. +
  45636. +$Lcharinword1: ! found c in first word
  45637. + MOV D1Re0, D0Re0
  45638. + SUB D1Ar1, D1Ar1, #4
  45639. +$Lcharinword2: ! found c in second word
  45640. + SUB D1Ar1, D1Ar1, #4
  45641. +
  45642. + AND D0Re0, D1Re0, #0xff ! First byte
  45643. + CMP D0Re0, #0 ! Test c (zero indicates c due
  45644. + ! to the 4 1-byte compare code)
  45645. + BNE $Lcharatcurrent
  45646. + ADD D1Ar1, D1Ar1, #1
  45647. +
  45648. + LSR D1Re0, D1Re0, #8
  45649. + AND D0Re0, D1Re0, #0xff ! Second byte
  45650. + CMP D0Re0, #0 ! Test c (indicated by zero)
  45651. + BNE $Lcharatcurrent
  45652. + ADD D1Ar1, D1Ar1, #1
  45653. +
  45654. + LSR D1Re0, D1Re0, #8
  45655. + AND D0Re0, D1Re0, #0xff ! Third byte
  45656. + CMP D0Re0, #0 ! Test c (indicated by zero)
  45657. + BNE $Lcharatcurrent
  45658. + ADD D1Ar1, D1Ar1, #1 ! Must be the fourth byte
  45659. + B $Lcharatcurrent
  45660. +
  45661. +$Lcharatprevious:
  45662. + SUB D1Ar1, D1Ar1, #1 ! Fix-up pointer
  45663. +$Lcharatcurrent:
  45664. + MOV D0Re0, D1Ar1 ! Return the string pointer
  45665. +$Lend:
  45666. + MOV PC, D1RtP
  45667. + .size _strchr,.-_strchr
  45668. +
  45669. +libc_hidden_def(strchr)
  45670. +#ifdef __UCLIBC_SUSV3_LEGACY__
  45671. +strong_alias(strchr,index)
  45672. +#endif
  45673. diff -Nur uClibc-0.9.33.2/libc/string/metag/strcmp.S uClibc-git/libc/string/metag/strcmp.S
  45674. --- uClibc-0.9.33.2/libc/string/metag/strcmp.S 1970-01-01 01:00:00.000000000 +0100
  45675. +++ uClibc-git/libc/string/metag/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  45676. @@ -0,0 +1,65 @@
  45677. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45678. +
  45679. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45680. +
  45681. +
  45682. +#include <features.h>
  45683. +
  45684. + .text
  45685. + .global _strcmp
  45686. + .type _strcmp,function
  45687. +!D1Ar1 s1
  45688. +!D0Ar2 s2
  45689. +_strcmp:
  45690. + TST D1Ar1,#3
  45691. + TSTZ D0Ar2,#3
  45692. + MOVT D1Re0,#0x0101
  45693. + ADD D1Re0,D1Re0,#0x0101
  45694. + BNZ $Lstrcmp_slow
  45695. + GETD D1Ar3,[D1Ar1+#4++] ! Load 32-bits from s1
  45696. + GETD D1Ar5,[D0Ar2+#4++] ! Load 32-bits from s2
  45697. + LSL D0FrT,D1Re0,#7 ! D0FrT = 0x80808080
  45698. +$Lstrcmp4_loop:
  45699. + SUB D0Re0,D1Ar3,D1Re0 ! D1Re0 = 0x01010101
  45700. + MOV D0Ar6,D1Ar3
  45701. + SUBS D0Ar4,D1Ar3,D1Ar5 ! Calculate difference
  45702. + XOR D0Ar6,D0Ar6,#-1
  45703. + GETD D1Ar3,[D1Ar1+#4++] ! Load 32-bits from s1
  45704. + AND D0Re0,D0Re0,D0Ar6
  45705. + ANDSZ D0Ar6,D0Re0,D0FrT ! D0FrT = 0x80808080
  45706. + GETD D1Ar5,[D0Ar2+#4++] ! Load 32-bits from s2
  45707. + BZ $Lstrcmp4_loop
  45708. + AND D0Ar6, D0Re0, D0FrT ! D0FrT = 0x80808080
  45709. +!
  45710. +! Either they are different or they both contain a NULL + junk
  45711. +!
  45712. +$Lstrcmp4_end:
  45713. + LSLS D0Re0,D0Ar4,#24 ! Was Byte[0] the same?
  45714. + LSLSZ D0Ar2,D0Ar6,#24 ! Yes: AND they where not zero?
  45715. + LSLSZ D0Re0,D0Ar4,#16 ! Yes: Was Byte[1] the same?
  45716. + LSLSZ D0Ar2,D0Ar6,#16 ! Yes: AND they where not zero?
  45717. + LSLSZ D0Re0,D0Ar4,#8 ! Tes: Was Byte[2] the same?
  45718. + LSLSZ D0Ar2,D0Ar6,#8 ! Yes: AND they where not zero?
  45719. + MOVZ D0Re0,D0Ar4 ! Yes: Must by Byte[3] thats the result
  45720. + ASR D0Re0,D0Re0,#24 ! Sign extend result to integer
  45721. + MOV PC,D1RtP
  45722. +!
  45723. +! Misaligned case, byte at a time
  45724. +!
  45725. +$Lstrcmp_slow:
  45726. + GETB D1Ar3,[D1Ar1++] ! Load char from s1
  45727. + GETB D1Ar5,[D0Ar2++] ! Load char from s2
  45728. + CMP D1Ar3,#1 ! Null -> C and NZ, rest -> NC (\1->Z)
  45729. + CMPNC D1Ar3,D1Ar5 ! NOT Null: Same -> Z, else -> NZ
  45730. + BZ $Lstrcmp_slow ! NOT Null and Same: Loop
  45731. + SUB D0Re0,D1Ar3,D1Ar5 ! Generate result
  45732. + MOV PC,D1RtP
  45733. +
  45734. + .size _strcmp,.-_strcmp
  45735. +
  45736. +
  45737. +libc_hidden_def(strcmp)
  45738. +#ifndef __UCLIBC_HAS_LOCALE__
  45739. +strong_alias(strcmp,strcoll)
  45740. +libc_hidden_def(strcoll)
  45741. +#endif
  45742. diff -Nur uClibc-0.9.33.2/libc/string/metag/strcpy.S uClibc-git/libc/string/metag/strcpy.S
  45743. --- uClibc-0.9.33.2/libc/string/metag/strcpy.S 1970-01-01 01:00:00.000000000 +0100
  45744. +++ uClibc-git/libc/string/metag/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  45745. @@ -0,0 +1,94 @@
  45746. +! Copyright (C) 2013 Imagination Technologies Ltd.
  45747. +
  45748. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  45749. +
  45750. +
  45751. + .text
  45752. + .global _strcpy
  45753. + .type _strcpy,function
  45754. +! D1Ar1 dst
  45755. +! D0Ar2 src
  45756. +
  45757. +_strcpy:
  45758. + MOV A1.2, D1Ar1
  45759. +
  45760. + ! test 4 byte alignment of src
  45761. + ANDS D0Ar4, D0Ar2, #3
  45762. + BNZ $Lbyteloop
  45763. +
  45764. + ! test 4 byte alignment of dest
  45765. + ANDS D1Ar5, D1Ar1, #3
  45766. + BNZ $Lbyteloop
  45767. +
  45768. + ! load mask values for aligned loops
  45769. + MOVT D1Ar3, #HI(0xfefefeff)
  45770. + ADD D1Ar3, D1Ar3, #LO(0xfefefeff)
  45771. + MOVT D0FrT, #HI(0x80808080)
  45772. + ADD D0FrT, D0FrT, #LO(0x80808080)
  45773. +
  45774. + ! test 8 byte alignment of src
  45775. + ANDS D0Ar4, D0Ar2, #7
  45776. + BNZ $Lwordloop
  45777. +
  45778. + ! test 8 byte alignment of dest
  45779. + ANDS D1Ar5, D1Ar1, #7
  45780. + BNZ $Lwordloop
  45781. +
  45782. +$L8byteloop:
  45783. + GETL D1Ar5, D0Ar6, [D0Ar2++]
  45784. + MOV D1Re0, D1Ar5
  45785. + MOV D0Re0, D1Ar5
  45786. + ADD D1Re0, D1Re0, D1Ar3
  45787. + XOR D0Re0, D0Re0, #-1
  45788. + AND D1Re0, D1Re0, D0Re0
  45789. + ANDS D1Re0, D1Re0, D0FrT
  45790. + BNZ $Lnullfound ! NULL in first word
  45791. +
  45792. + MOV D1Re0, D0Ar6
  45793. + MOV D0Re0, D0Ar6
  45794. + ADD D1Re0, D1Re0, D1Ar3
  45795. + XOR D0Re0, D0Re0, #-1
  45796. + AND D1Re0, D1Re0, D0Re0
  45797. + ANDS D1Re0, D1Re0, D0FrT
  45798. + BNZ $Lnullfound2 ! NULL in the second word
  45799. +
  45800. + SETL [A1.2++], D1Ar5, D0Ar6
  45801. + B $L8byteloop
  45802. +
  45803. +$Lwordloop:
  45804. + GETD D0Ar6, [D0Ar2++]
  45805. + MOV D1Re0, D0Ar6
  45806. + MOV D0Re0, D0Ar6
  45807. + ADD D1Re0, D1Re0, D1Ar3
  45808. + XOR D0Re0, D0Re0, #-1
  45809. + AND D1Re0, D1Re0, D0Re0
  45810. + ANDS D1Re0, D1Re0, D0FrT
  45811. + MOV D1Ar5, D0Ar6
  45812. + BNZ $Lnullfound
  45813. + SETD [A1.2++], D0Ar6
  45814. + B $Lwordloop
  45815. +
  45816. +$Lnullfound2:
  45817. + SETD [A1.2++], D1Ar5
  45818. + MOV D1Ar5, D0Ar6
  45819. +
  45820. +$Lnullfound:
  45821. + SETB [A1.2++], D1Ar5
  45822. + ANDS D0Ar6, D1Ar5, #0xff
  45823. + LSR D1Ar5, D1Ar5, #8
  45824. + BNZ $Lnullfound
  45825. + B $Lend
  45826. +
  45827. +$Lbyteloop:
  45828. + GETB D0Ar6, [D0Ar2++]
  45829. + SETB [A1.2++], D0Ar6
  45830. + CMP D0Ar6, #0
  45831. + BNZ $Lbyteloop
  45832. +
  45833. +$Lend:
  45834. + MOV D0Re0, D1Ar1
  45835. + MOV PC, D1RtP
  45836. +
  45837. + .size _strcpy,.-_strcpy
  45838. +
  45839. +libc_hidden_def(strcpy)
  45840. diff -Nur uClibc-0.9.33.2/libc/string/microblaze/memcpy.S uClibc-git/libc/string/microblaze/memcpy.S
  45841. --- uClibc-0.9.33.2/libc/string/microblaze/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  45842. +++ uClibc-git/libc/string/microblaze/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  45843. @@ -34,6 +34,14 @@
  45844. .type memcpy, @function
  45845. .ent memcpy
  45846. +#ifdef __MICROBLAZEEL__
  45847. +# define BSLLI bsrli
  45848. +# define BSRLI bslli
  45849. +#else
  45850. +# define BSLLI bslli
  45851. +# define BSRLI bsrli
  45852. +#endif
  45853. +
  45854. memcpy:
  45855. fast_memcpy_ascending:
  45856. /* move d to return register as value of function */
  45857. @@ -85,48 +93,48 @@
  45858. beqi r9, a_block_u2 /* t1 was 2 => 2 byte offset */
  45859. a_block_u3:
  45860. - bslli r11, r11, 24 /* h = h << 24 */
  45861. + BSLLI r11, r11, 24 /* h = h << 24 */
  45862. a_bu3_loop:
  45863. lwi r12, r8, 4 /* v = *(as + 4) */
  45864. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45865. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45866. or r9, r11, r9 /* t1 = h | t1 */
  45867. swi r9, r5, 0 /* *(d + 0) = t1 */
  45868. - bslli r11, r12, 24 /* h = v << 24 */
  45869. + BSLLI r11, r12, 24 /* h = v << 24 */
  45870. lwi r12, r8, 8 /* v = *(as + 8) */
  45871. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45872. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45873. or r9, r11, r9 /* t1 = h | t1 */
  45874. swi r9, r5, 4 /* *(d + 4) = t1 */
  45875. - bslli r11, r12, 24 /* h = v << 24 */
  45876. + BSLLI r11, r12, 24 /* h = v << 24 */
  45877. lwi r12, r8, 12 /* v = *(as + 12) */
  45878. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45879. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45880. or r9, r11, r9 /* t1 = h | t1 */
  45881. swi r9, r5, 8 /* *(d + 8) = t1 */
  45882. - bslli r11, r12, 24 /* h = v << 24 */
  45883. + BSLLI r11, r12, 24 /* h = v << 24 */
  45884. lwi r12, r8, 16 /* v = *(as + 16) */
  45885. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45886. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45887. or r9, r11, r9 /* t1 = h | t1 */
  45888. swi r9, r5, 12 /* *(d + 12) = t1 */
  45889. - bslli r11, r12, 24 /* h = v << 24 */
  45890. + BSLLI r11, r12, 24 /* h = v << 24 */
  45891. lwi r12, r8, 20 /* v = *(as + 20) */
  45892. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45893. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45894. or r9, r11, r9 /* t1 = h | t1 */
  45895. swi r9, r5, 16 /* *(d + 16) = t1 */
  45896. - bslli r11, r12, 24 /* h = v << 24 */
  45897. + BSLLI r11, r12, 24 /* h = v << 24 */
  45898. lwi r12, r8, 24 /* v = *(as + 24) */
  45899. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45900. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45901. or r9, r11, r9 /* t1 = h | t1 */
  45902. swi r9, r5, 20 /* *(d + 20) = t1 */
  45903. - bslli r11, r12, 24 /* h = v << 24 */
  45904. + BSLLI r11, r12, 24 /* h = v << 24 */
  45905. lwi r12, r8, 28 /* v = *(as + 28) */
  45906. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45907. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45908. or r9, r11, r9 /* t1 = h | t1 */
  45909. swi r9, r5, 24 /* *(d + 24) = t1 */
  45910. - bslli r11, r12, 24 /* h = v << 24 */
  45911. + BSLLI r11, r12, 24 /* h = v << 24 */
  45912. lwi r12, r8, 32 /* v = *(as + 32) */
  45913. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  45914. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  45915. or r9, r11, r9 /* t1 = h | t1 */
  45916. swi r9, r5, 28 /* *(d + 28) = t1 */
  45917. - bslli r11, r12, 24 /* h = v << 24 */
  45918. + BSLLI r11, r12, 24 /* h = v << 24 */
  45919. addi r8, r8, 32 /* as = as + 32 */
  45920. addi r4, r4, -32 /* n = n - 32 */
  45921. bneid r4, a_bu3_loop /* while (n) loop */
  45922. @@ -134,48 +142,48 @@
  45923. bri a_block_done
  45924. a_block_u1:
  45925. - bslli r11, r11, 8 /* h = h << 8 */
  45926. + BSLLI r11, r11, 8 /* h = h << 8 */
  45927. a_bu1_loop:
  45928. lwi r12, r8, 4 /* v = *(as + 4) */
  45929. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45930. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45931. or r9, r11, r9 /* t1 = h | t1 */
  45932. swi r9, r5, 0 /* *(d + 0) = t1 */
  45933. - bslli r11, r12, 8 /* h = v << 8 */
  45934. + BSLLI r11, r12, 8 /* h = v << 8 */
  45935. lwi r12, r8, 8 /* v = *(as + 8) */
  45936. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45937. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45938. or r9, r11, r9 /* t1 = h | t1 */
  45939. swi r9, r5, 4 /* *(d + 4) = t1 */
  45940. - bslli r11, r12, 8 /* h = v << 8 */
  45941. + BSLLI r11, r12, 8 /* h = v << 8 */
  45942. lwi r12, r8, 12 /* v = *(as + 12) */
  45943. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45944. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45945. or r9, r11, r9 /* t1 = h | t1 */
  45946. swi r9, r5, 8 /* *(d + 8) = t1 */
  45947. - bslli r11, r12, 8 /* h = v << 8 */
  45948. + BSLLI r11, r12, 8 /* h = v << 8 */
  45949. lwi r12, r8, 16 /* v = *(as + 16) */
  45950. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45951. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45952. or r9, r11, r9 /* t1 = h | t1 */
  45953. swi r9, r5, 12 /* *(d + 12) = t1 */
  45954. - bslli r11, r12, 8 /* h = v << 8 */
  45955. + BSLLI r11, r12, 8 /* h = v << 8 */
  45956. lwi r12, r8, 20 /* v = *(as + 20) */
  45957. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45958. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45959. or r9, r11, r9 /* t1 = h | t1 */
  45960. swi r9, r5, 16 /* *(d + 16) = t1 */
  45961. - bslli r11, r12, 8 /* h = v << 8 */
  45962. + BSLLI r11, r12, 8 /* h = v << 8 */
  45963. lwi r12, r8, 24 /* v = *(as + 24) */
  45964. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45965. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45966. or r9, r11, r9 /* t1 = h | t1 */
  45967. swi r9, r5, 20 /* *(d + 20) = t1 */
  45968. - bslli r11, r12, 8 /* h = v << 8 */
  45969. + BSLLI r11, r12, 8 /* h = v << 8 */
  45970. lwi r12, r8, 28 /* v = *(as + 28) */
  45971. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45972. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45973. or r9, r11, r9 /* t1 = h | t1 */
  45974. swi r9, r5, 24 /* *(d + 24) = t1 */
  45975. - bslli r11, r12, 8 /* h = v << 8 */
  45976. + BSLLI r11, r12, 8 /* h = v << 8 */
  45977. lwi r12, r8, 32 /* v = *(as + 32) */
  45978. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  45979. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  45980. or r9, r11, r9 /* t1 = h | t1 */
  45981. swi r9, r5, 28 /* *(d + 28) = t1 */
  45982. - bslli r11, r12, 8 /* h = v << 8 */
  45983. + BSLLI r11, r12, 8 /* h = v << 8 */
  45984. addi r8, r8, 32 /* as = as + 32 */
  45985. addi r4, r4, -32 /* n = n - 32 */
  45986. bneid r4, a_bu1_loop /* while (n) loop */
  45987. @@ -183,48 +191,48 @@
  45988. bri a_block_done
  45989. a_block_u2:
  45990. - bslli r11, r11, 16 /* h = h << 16 */
  45991. + BSLLI r11, r11, 16 /* h = h << 16 */
  45992. a_bu2_loop:
  45993. lwi r12, r8, 4 /* v = *(as + 4) */
  45994. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  45995. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  45996. or r9, r11, r9 /* t1 = h | t1 */
  45997. swi r9, r5, 0 /* *(d + 0) = t1 */
  45998. - bslli r11, r12, 16 /* h = v << 16 */
  45999. + BSLLI r11, r12, 16 /* h = v << 16 */
  46000. lwi r12, r8, 8 /* v = *(as + 8) */
  46001. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46002. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46003. or r9, r11, r9 /* t1 = h | t1 */
  46004. swi r9, r5, 4 /* *(d + 4) = t1 */
  46005. - bslli r11, r12, 16 /* h = v << 16 */
  46006. + BSLLI r11, r12, 16 /* h = v << 16 */
  46007. lwi r12, r8, 12 /* v = *(as + 12) */
  46008. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46009. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46010. or r9, r11, r9 /* t1 = h | t1 */
  46011. swi r9, r5, 8 /* *(d + 8) = t1 */
  46012. - bslli r11, r12, 16 /* h = v << 16 */
  46013. + BSLLI r11, r12, 16 /* h = v << 16 */
  46014. lwi r12, r8, 16 /* v = *(as + 16) */
  46015. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46016. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46017. or r9, r11, r9 /* t1 = h | t1 */
  46018. swi r9, r5, 12 /* *(d + 12) = t1 */
  46019. - bslli r11, r12, 16 /* h = v << 16 */
  46020. + BSLLI r11, r12, 16 /* h = v << 16 */
  46021. lwi r12, r8, 20 /* v = *(as + 20) */
  46022. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46023. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46024. or r9, r11, r9 /* t1 = h | t1 */
  46025. swi r9, r5, 16 /* *(d + 16) = t1 */
  46026. - bslli r11, r12, 16 /* h = v << 16 */
  46027. + BSLLI r11, r12, 16 /* h = v << 16 */
  46028. lwi r12, r8, 24 /* v = *(as + 24) */
  46029. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46030. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46031. or r9, r11, r9 /* t1 = h | t1 */
  46032. swi r9, r5, 20 /* *(d + 20) = t1 */
  46033. - bslli r11, r12, 16 /* h = v << 16 */
  46034. + BSLLI r11, r12, 16 /* h = v << 16 */
  46035. lwi r12, r8, 28 /* v = *(as + 28) */
  46036. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46037. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46038. or r9, r11, r9 /* t1 = h | t1 */
  46039. swi r9, r5, 24 /* *(d + 24) = t1 */
  46040. - bslli r11, r12, 16 /* h = v << 16 */
  46041. + BSLLI r11, r12, 16 /* h = v << 16 */
  46042. lwi r12, r8, 32 /* v = *(as + 32) */
  46043. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46044. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46045. or r9, r11, r9 /* t1 = h | t1 */
  46046. swi r9, r5, 28 /* *(d + 28) = t1 */
  46047. - bslli r11, r12, 16 /* h = v << 16 */
  46048. + BSLLI r11, r12, 16 /* h = v << 16 */
  46049. addi r8, r8, 32 /* as = as + 32 */
  46050. addi r4, r4, -32 /* n = n - 32 */
  46051. bneid r4, a_bu2_loop /* while (n) loop */
  46052. @@ -263,13 +271,13 @@
  46053. beqi r9, a_word_u2 /* t1 was 2 => 2 byte offset */
  46054. a_word_u3:
  46055. - bslli r11, r11, 24 /* h = h << 24 */
  46056. + BSLLI r11, r11, 24 /* h = h << 24 */
  46057. a_wu3_loop:
  46058. lw r12, r8, r10 /* v = *(as + offset) */
  46059. - bsrli r9, r12, 8 /* t1 = v >> 8 */
  46060. + BSRLI r9, r12, 8 /* t1 = v >> 8 */
  46061. or r9, r11, r9 /* t1 = h | t1 */
  46062. sw r9, r5, r10 /* *(d + offset) = t1 */
  46063. - bslli r11, r12, 24 /* h = v << 24 */
  46064. + BSLLI r11, r12, 24 /* h = v << 24 */
  46065. addi r4, r4,-4 /* n = n - 4 */
  46066. bneid r4, a_wu3_loop /* while (n) loop */
  46067. addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
  46068. @@ -277,13 +285,13 @@
  46069. bri a_word_done
  46070. a_word_u1:
  46071. - bslli r11, r11, 8 /* h = h << 8 */
  46072. + BSLLI r11, r11, 8 /* h = h << 8 */
  46073. a_wu1_loop:
  46074. lw r12, r8, r10 /* v = *(as + offset) */
  46075. - bsrli r9, r12, 24 /* t1 = v >> 24 */
  46076. + BSRLI r9, r12, 24 /* t1 = v >> 24 */
  46077. or r9, r11, r9 /* t1 = h | t1 */
  46078. sw r9, r5, r10 /* *(d + offset) = t1 */
  46079. - bslli r11, r12, 8 /* h = v << 8 */
  46080. + BSLLI r11, r12, 8 /* h = v << 8 */
  46081. addi r4, r4,-4 /* n = n - 4 */
  46082. bneid r4, a_wu1_loop /* while (n) loop */
  46083. addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
  46084. @@ -291,13 +299,13 @@
  46085. bri a_word_done
  46086. a_word_u2:
  46087. - bslli r11, r11, 16 /* h = h << 16 */
  46088. + BSLLI r11, r11, 16 /* h = h << 16 */
  46089. a_wu2_loop:
  46090. lw r12, r8, r10 /* v = *(as + offset) */
  46091. - bsrli r9, r12, 16 /* t1 = v >> 16 */
  46092. + BSRLI r9, r12, 16 /* t1 = v >> 16 */
  46093. or r9, r11, r9 /* t1 = h | t1 */
  46094. sw r9, r5, r10 /* *(d + offset) = t1 */
  46095. - bslli r11, r12, 16 /* h = v << 16 */
  46096. + BSLLI r11, r12, 16 /* h = v << 16 */
  46097. addi r4, r4,-4 /* n = n - 4 */
  46098. bneid r4, a_wu2_loop /* while (n) loop */
  46099. addi r10, r10, 4 /* offset = ofset + 4 (IN DELAY SLOT) */
  46100. diff -Nur uClibc-0.9.33.2/libc/string/microblaze/memmove.S uClibc-git/libc/string/microblaze/memmove.S
  46101. --- uClibc-0.9.33.2/libc/string/microblaze/memmove.S 2012-05-15 09:20:09.000000000 +0200
  46102. +++ uClibc-git/libc/string/microblaze/memmove.S 2014-02-03 12:32:56.000000000 +0100
  46103. @@ -33,6 +33,14 @@
  46104. .type memmove, @function
  46105. .ent memmove
  46106. +#ifdef __MICROBLAZEEL__
  46107. +# define BSLLI bsrli
  46108. +# define BSRLI bslli
  46109. +#else
  46110. +# define BSLLI bslli
  46111. +# define BSRLI bsrli
  46112. +#endif
  46113. +
  46114. memmove:
  46115. cmpu r4, r5, r6 /* n = s - d */
  46116. bgei r4, HIDDEN_JUMPTARGET(memcpy)
  46117. @@ -112,150 +120,150 @@
  46118. beqi r9,d_block_u2 /* t1 was 2 => 2 byte offset */
  46119. d_block_u3:
  46120. - bsrli r11, r11, 8 /* h = h >> 8 */
  46121. + BSRLI r11, r11, 8 /* h = h >> 8 */
  46122. d_bu3_loop:
  46123. addi r8, r8, -32 /* as = as - 32 */
  46124. addi r5, r5, -32 /* d = d - 32 */
  46125. lwi r12, r8, 28 /* v = *(as + 28) */
  46126. - bslli r9, r12, 24 /* t1 = v << 24 */
  46127. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46128. or r9, r11, r9 /* t1 = h | t1 */
  46129. swi r9, r5, 28 /* *(d + 28) = t1 */
  46130. - bsrli r11, r12, 8 /* h = v >> 8 */
  46131. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46132. lwi r12, r8, 24 /* v = *(as + 24) */
  46133. - bslli r9, r12, 24 /* t1 = v << 24 */
  46134. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46135. or r9, r11, r9 /* t1 = h | t1 */
  46136. swi r9, r5, 24 /* *(d + 24) = t1 */
  46137. - bsrli r11, r12, 8 /* h = v >> 8 */
  46138. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46139. lwi r12, r8, 20 /* v = *(as + 20) */
  46140. - bslli r9, r12, 24 /* t1 = v << 24 */
  46141. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46142. or r9, r11, r9 /* t1 = h | t1 */
  46143. swi r9, r5, 20 /* *(d + 20) = t1 */
  46144. - bsrli r11, r12, 8 /* h = v >> 8 */
  46145. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46146. lwi r12, r8, 16 /* v = *(as + 16) */
  46147. - bslli r9, r12, 24 /* t1 = v << 24 */
  46148. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46149. or r9, r11, r9 /* t1 = h | t1 */
  46150. swi r9, r5, 16 /* *(d + 16) = t1 */
  46151. - bsrli r11, r12, 8 /* h = v >> 8 */
  46152. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46153. lwi r12, r8, 12 /* v = *(as + 12) */
  46154. - bslli r9, r12, 24 /* t1 = v << 24 */
  46155. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46156. or r9, r11, r9 /* t1 = h | t1 */
  46157. swi r9, r5, 12 /* *(d + 112) = t1 */
  46158. - bsrli r11, r12, 8 /* h = v >> 8 */
  46159. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46160. lwi r12, r8, 8 /* v = *(as + 8) */
  46161. - bslli r9, r12, 24 /* t1 = v << 24 */
  46162. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46163. or r9, r11, r9 /* t1 = h | t1 */
  46164. swi r9, r5, 8 /* *(d + 8) = t1 */
  46165. - bsrli r11, r12, 8 /* h = v >> 8 */
  46166. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46167. lwi r12, r8, 4 /* v = *(as + 4) */
  46168. - bslli r9, r12, 24 /* t1 = v << 24 */
  46169. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46170. or r9, r11, r9 /* t1 = h | t1 */
  46171. swi r9, r5, 4 /* *(d + 4) = t1 */
  46172. - bsrli r11, r12, 8 /* h = v >> 8 */
  46173. + BSRLI r11, r12, 8 /* h = v >> 8 */
  46174. lwi r12, r8, 0 /* v = *(as + 0) */
  46175. - bslli r9, r12, 24 /* t1 = v << 24 */
  46176. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46177. or r9, r11, r9 /* t1 = h | t1 */
  46178. swi r9, r5, 0 /* *(d + 0) = t1 */
  46179. addi r4, r4, -32 /* n = n - 32 */
  46180. bneid r4, d_bu3_loop /* while (n) loop */
  46181. - bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  46182. + BSRLI r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  46183. bri d_block_done
  46184. d_block_u1:
  46185. - bsrli r11, r11, 24 /* h = h >> 24 */
  46186. + BSRLI r11, r11, 24 /* h = h >> 24 */
  46187. d_bu1_loop:
  46188. addi r8, r8, -32 /* as = as - 32 */
  46189. addi r5, r5, -32 /* d = d - 32 */
  46190. lwi r12, r8, 28 /* v = *(as + 28) */
  46191. - bslli r9, r12, 8 /* t1 = v << 8 */
  46192. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46193. or r9, r11, r9 /* t1 = h | t1 */
  46194. swi r9, r5, 28 /* *(d + 28) = t1 */
  46195. - bsrli r11, r12, 24 /* h = v >> 24 */
  46196. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46197. lwi r12, r8, 24 /* v = *(as + 24) */
  46198. - bslli r9, r12, 8 /* t1 = v << 8 */
  46199. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46200. or r9, r11, r9 /* t1 = h | t1 */
  46201. swi r9, r5, 24 /* *(d + 24) = t1 */
  46202. - bsrli r11, r12, 24 /* h = v >> 24 */
  46203. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46204. lwi r12, r8, 20 /* v = *(as + 20) */
  46205. - bslli r9, r12, 8 /* t1 = v << 8 */
  46206. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46207. or r9, r11, r9 /* t1 = h | t1 */
  46208. swi r9, r5, 20 /* *(d + 20) = t1 */
  46209. - bsrli r11, r12, 24 /* h = v >> 24 */
  46210. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46211. lwi r12, r8, 16 /* v = *(as + 16) */
  46212. - bslli r9, r12, 8 /* t1 = v << 8 */
  46213. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46214. or r9, r11, r9 /* t1 = h | t1 */
  46215. swi r9, r5, 16 /* *(d + 16) = t1 */
  46216. - bsrli r11, r12, 24 /* h = v >> 24 */
  46217. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46218. lwi r12, r8, 12 /* v = *(as + 12) */
  46219. - bslli r9, r12, 8 /* t1 = v << 8 */
  46220. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46221. or r9, r11, r9 /* t1 = h | t1 */
  46222. swi r9, r5, 12 /* *(d + 112) = t1 */
  46223. - bsrli r11, r12, 24 /* h = v >> 24 */
  46224. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46225. lwi r12, r8, 8 /* v = *(as + 8) */
  46226. - bslli r9, r12, 8 /* t1 = v << 8 */
  46227. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46228. or r9, r11, r9 /* t1 = h | t1 */
  46229. swi r9, r5, 8 /* *(d + 8) = t1 */
  46230. - bsrli r11, r12, 24 /* h = v >> 24 */
  46231. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46232. lwi r12, r8, 4 /* v = *(as + 4) */
  46233. - bslli r9, r12, 8 /* t1 = v << 8 */
  46234. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46235. or r9, r11, r9 /* t1 = h | t1 */
  46236. swi r9, r5, 4 /* *(d + 4) = t1 */
  46237. - bsrli r11, r12, 24 /* h = v >> 24 */
  46238. + BSRLI r11, r12, 24 /* h = v >> 24 */
  46239. lwi r12, r8, 0 /* v = *(as + 0) */
  46240. - bslli r9, r12, 8 /* t1 = v << 8 */
  46241. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46242. or r9, r11, r9 /* t1 = h | t1 */
  46243. swi r9, r5, 0 /* *(d + 0) = t1 */
  46244. addi r4, r4, -32 /* n = n - 32 */
  46245. bneid r4, d_bu1_loop /* while (n) loop */
  46246. - bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  46247. + BSRLI r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  46248. bri d_block_done
  46249. d_block_u2:
  46250. - bsrli r11, r11, 16 /* h = h >> 16 */
  46251. + BSRLI r11, r11, 16 /* h = h >> 16 */
  46252. d_bu2_loop:
  46253. addi r8, r8, -32 /* as = as - 32 */
  46254. addi r5, r5, -32 /* d = d - 32 */
  46255. lwi r12, r8, 28 /* v = *(as + 28) */
  46256. - bslli r9, r12, 16 /* t1 = v << 16 */
  46257. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46258. or r9, r11, r9 /* t1 = h | t1 */
  46259. swi r9, r5, 28 /* *(d + 28) = t1 */
  46260. - bsrli r11, r12, 16 /* h = v >> 16 */
  46261. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46262. lwi r12, r8, 24 /* v = *(as + 24) */
  46263. - bslli r9, r12, 16 /* t1 = v << 16 */
  46264. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46265. or r9, r11, r9 /* t1 = h | t1 */
  46266. swi r9, r5, 24 /* *(d + 24) = t1 */
  46267. - bsrli r11, r12, 16 /* h = v >> 16 */
  46268. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46269. lwi r12, r8, 20 /* v = *(as + 20) */
  46270. - bslli r9, r12, 16 /* t1 = v << 16 */
  46271. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46272. or r9, r11, r9 /* t1 = h | t1 */
  46273. swi r9, r5, 20 /* *(d + 20) = t1 */
  46274. - bsrli r11, r12, 16 /* h = v >> 16 */
  46275. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46276. lwi r12, r8, 16 /* v = *(as + 16) */
  46277. - bslli r9, r12, 16 /* t1 = v << 16 */
  46278. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46279. or r9, r11, r9 /* t1 = h | t1 */
  46280. swi r9, r5, 16 /* *(d + 16) = t1 */
  46281. - bsrli r11, r12, 16 /* h = v >> 16 */
  46282. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46283. lwi r12, r8, 12 /* v = *(as + 12) */
  46284. - bslli r9, r12, 16 /* t1 = v << 16 */
  46285. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46286. or r9, r11, r9 /* t1 = h | t1 */
  46287. swi r9, r5, 12 /* *(d + 112) = t1 */
  46288. - bsrli r11, r12, 16 /* h = v >> 16 */
  46289. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46290. lwi r12, r8, 8 /* v = *(as + 8) */
  46291. - bslli r9, r12, 16 /* t1 = v << 16 */
  46292. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46293. or r9, r11, r9 /* t1 = h | t1 */
  46294. swi r9, r5, 8 /* *(d + 8) = t1 */
  46295. - bsrli r11, r12, 16 /* h = v >> 16 */
  46296. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46297. lwi r12, r8, 4 /* v = *(as + 4) */
  46298. - bslli r9, r12, 16 /* t1 = v << 16 */
  46299. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46300. or r9, r11, r9 /* t1 = h | t1 */
  46301. swi r9, r5, 4 /* *(d + 4) = t1 */
  46302. - bsrli r11, r12, 16 /* h = v >> 16 */
  46303. + BSRLI r11, r12, 16 /* h = v >> 16 */
  46304. lwi r12, r8, 0 /* v = *(as + 0) */
  46305. - bslli r9, r12, 16 /* t1 = v << 16 */
  46306. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46307. or r9, r11, r9 /* t1 = h | t1 */
  46308. swi r9, r5, 0 /* *(d + 0) = t1 */
  46309. addi r4, r4, -32 /* n = n - 32 */
  46310. bneid r4, d_bu2_loop /* while (n) loop */
  46311. - bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  46312. + BSRLI r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  46313. d_block_done:
  46314. addi r4, r0, 4 /* n = 4 */
  46315. @@ -290,41 +298,41 @@
  46316. beqi r9,d_word_u2 /* t1 was 2 => 2 byte offset */
  46317. d_word_u3:
  46318. - bsrli r11, r11, 8 /* h = h >> 8 */
  46319. + BSRLI r11, r11, 8 /* h = h >> 8 */
  46320. d_wu3_loop:
  46321. addi r4, r4,-4 /* n = n - 4 */
  46322. lw r12, r8, r4 /* v = *(as + n) */
  46323. - bslli r9, r12, 24 /* t1 = v << 24 */
  46324. + BSLLI r9, r12, 24 /* t1 = v << 24 */
  46325. or r9, r11, r9 /* t1 = h | t1 */
  46326. sw r9, r5, r4 /* *(d + n) = t1 */
  46327. bneid r4, d_wu3_loop /* while (n) loop */
  46328. - bsrli r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  46329. + BSRLI r11, r12, 8 /* h = v >> 8 (IN DELAY SLOT) */
  46330. bri d_word_done
  46331. d_word_u1:
  46332. - bsrli r11, r11, 24 /* h = h >> 24 */
  46333. + BSRLI r11, r11, 24 /* h = h >> 24 */
  46334. d_wu1_loop:
  46335. addi r4, r4,-4 /* n = n - 4 */
  46336. lw r12, r8, r4 /* v = *(as + n) */
  46337. - bslli r9, r12, 8 /* t1 = v << 8 */
  46338. + BSLLI r9, r12, 8 /* t1 = v << 8 */
  46339. or r9, r11, r9 /* t1 = h | t1 */
  46340. sw r9, r5, r4 /* *(d + n) = t1 */
  46341. bneid r4, d_wu1_loop /* while (n) loop */
  46342. - bsrli r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  46343. + BSRLI r11, r12, 24 /* h = v >> 24 (IN DELAY SLOT) */
  46344. bri d_word_done
  46345. d_word_u2:
  46346. - bsrli r11, r11, 16 /* h = h >> 16 */
  46347. + BSRLI r11, r11, 16 /* h = h >> 16 */
  46348. d_wu2_loop:
  46349. addi r4, r4,-4 /* n = n - 4 */
  46350. lw r12, r8, r4 /* v = *(as + n) */
  46351. - bslli r9, r12, 16 /* t1 = v << 16 */
  46352. + BSLLI r9, r12, 16 /* t1 = v << 16 */
  46353. or r9, r11, r9 /* t1 = h | t1 */
  46354. sw r9, r5, r4 /* *(d + n) = t1 */
  46355. bneid r4, d_wu2_loop /* while (n) loop */
  46356. - bsrli r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  46357. + BSRLI r11, r12, 16 /* h = v >> 16 (IN DELAY SLOT) */
  46358. d_word_done:
  46359. diff -Nur uClibc-0.9.33.2/libc/string/mips/memcpy.S uClibc-git/libc/string/mips/memcpy.S
  46360. --- uClibc-0.9.33.2/libc/string/mips/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46361. +++ uClibc-git/libc/string/mips/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46362. @@ -13,14 +13,12 @@
  46363. Lesser General Public License for more details.
  46364. You should have received a copy of the GNU Lesser General Public
  46365. - License along with the GNU C Library; if not, write to the Free
  46366. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46367. - 02111-1307 USA. */
  46368. + License along with the GNU C Library; if not, see
  46369. + <http://www.gnu.org/licenses/>. */
  46370. #include <features.h>
  46371. -/*#include <sysdep.h>*/
  46372. +#include <sysdep.h>
  46373. #include <endian.h>
  46374. -#include "sysdep.h"
  46375. /* void *memcpy(void *s1, const void *s2, size_t n); */
  46376. diff -Nur uClibc-0.9.33.2/libc/string/mips/memset.S uClibc-git/libc/string/mips/memset.S
  46377. --- uClibc-0.9.33.2/libc/string/mips/memset.S 2012-05-15 09:20:09.000000000 +0200
  46378. +++ uClibc-git/libc/string/mips/memset.S 2014-02-03 12:32:56.000000000 +0100
  46379. @@ -13,14 +13,12 @@
  46380. Lesser General Public License for more details.
  46381. You should have received a copy of the GNU Lesser General Public
  46382. - License along with the GNU C Library; if not, write to the Free
  46383. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46384. - 02111-1307 USA. */
  46385. + License along with the GNU C Library; if not, see
  46386. + <http://www.gnu.org/licenses/>. */
  46387. #include <features.h>
  46388. -/*#include <sysdep.h>*/
  46389. +#include <sysdep.h>
  46390. #include <endian.h>
  46391. -#include "sysdep.h"
  46392. /* void *memset(void *s, int c, size_t n). */
  46393. diff -Nur uClibc-0.9.33.2/libc/string/mips/sysdep.h uClibc-git/libc/string/mips/sysdep.h
  46394. --- uClibc-0.9.33.2/libc/string/mips/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  46395. +++ uClibc-git/libc/string/mips/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  46396. @@ -1,45 +0,0 @@
  46397. -/* Adapted from glibc's sysdeps/unix/mips/sysdep.h */
  46398. -
  46399. -/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
  46400. - Free Software Foundation, Inc.
  46401. - This file is part of the GNU C Library.
  46402. - Contributed by Brendan Kehoe (brendan@zen.org).
  46403. -
  46404. - The GNU C Library is free software; you can redistribute it and/or
  46405. - modify it under the terms of the GNU Lesser General Public
  46406. - License as published by the Free Software Foundation; either
  46407. - version 2.1 of the License, or (at your option) any later version.
  46408. -
  46409. - The GNU C Library is distributed in the hope that it will be useful,
  46410. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  46411. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  46412. - Lesser General Public License for more details.
  46413. -
  46414. - You should have received a copy of the GNU Lesser General Public
  46415. - License along with the GNU C Library; if not, write to the Free
  46416. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46417. - 02111-1307 USA. */
  46418. -
  46419. -#ifdef __ASSEMBLER__
  46420. -
  46421. -#include <sgidefs.h>
  46422. -#include <sys/regdef.h>
  46423. -
  46424. -#define ENTRY(name) \
  46425. - .globl name; \
  46426. - .align 2; \
  46427. - .ent name,0; \
  46428. - name/* use a comment rather than ## to workaround bug in gcc-3.4.x */:
  46429. -
  46430. -#undef END
  46431. -#define END(function) \
  46432. - .end function; \
  46433. - .size function,.-function
  46434. -
  46435. -#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_ABIO64
  46436. -# define L(label) $L ## label
  46437. -#else
  46438. -# define L(label) .L ## label
  46439. -#endif
  46440. -
  46441. -#endif
  46442. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/memchr.S uClibc-git/libc/string/sparc/sparc32/memchr.S
  46443. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/memchr.S 2012-05-15 09:20:09.000000000 +0200
  46444. +++ uClibc-git/libc/string/sparc/sparc32/memchr.S 2014-02-03 12:32:56.000000000 +0100
  46445. @@ -24,9 +24,8 @@
  46446. Lesser General Public License for more details.
  46447. You should have received a copy of the GNU Lesser General Public
  46448. - License along with the GNU C Library; if not, write to the Free
  46449. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46450. - 02111-1307 USA. */
  46451. + License along with the GNU C Library; if not, see
  46452. + <http://www.gnu.org/licenses/>. */
  46453. .text
  46454. .align 4
  46455. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/memcpy.S uClibc-git/libc/string/sparc/sparc32/memcpy.S
  46456. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46457. +++ uClibc-git/libc/string/sparc/sparc32/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46458. @@ -17,9 +17,8 @@
  46459. Lesser General Public License for more details.
  46460. You should have received a copy of the GNU Lesser General Public
  46461. - License along with the GNU C Library; if not, write to the Free
  46462. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46463. - 02111-1307 USA. */
  46464. + License along with the GNU C Library; if not, see
  46465. + <http://www.gnu.org/licenses/>. */
  46466. #include <features.h>
  46467. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/memset.S uClibc-git/libc/string/sparc/sparc32/memset.S
  46468. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/memset.S 2012-05-15 09:20:09.000000000 +0200
  46469. +++ uClibc-git/libc/string/sparc/sparc32/memset.S 2014-02-03 12:32:56.000000000 +0100
  46470. @@ -16,9 +16,8 @@
  46471. Lesser General Public License for more details.
  46472. You should have received a copy of the GNU Lesser General Public
  46473. - License along with the GNU C Library; if not, write to the Free
  46474. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46475. - 02111-1307 USA. */
  46476. + License along with the GNU C Library; if not, see
  46477. + <http://www.gnu.org/licenses/>. */
  46478. #include <features.h>
  46479. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/stpcpy.S uClibc-git/libc/string/sparc/sparc32/stpcpy.S
  46480. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/stpcpy.S 2012-05-15 09:20:09.000000000 +0200
  46481. +++ uClibc-git/libc/string/sparc/sparc32/stpcpy.S 2014-02-03 12:32:56.000000000 +0100
  46482. @@ -15,9 +15,8 @@
  46483. Lesser General Public License for more details.
  46484. You should have received a copy of the GNU Lesser General Public
  46485. - License along with the GNU C Library; if not, write to the Free
  46486. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46487. - 02111-1307 USA. */
  46488. + License along with the GNU C Library; if not, see
  46489. + <http://www.gnu.org/licenses/>. */
  46490. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  46491. to find out if any byte in xword could be zero. This is fast, but
  46492. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strcat.S uClibc-git/libc/string/sparc/sparc32/strcat.S
  46493. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strcat.S 2012-05-15 09:20:09.000000000 +0200
  46494. +++ uClibc-git/libc/string/sparc/sparc32/strcat.S 2014-02-03 12:32:56.000000000 +0100
  46495. @@ -15,9 +15,8 @@
  46496. Lesser General Public License for more details.
  46497. You should have received a copy of the GNU Lesser General Public
  46498. - License along with the GNU C Library; if not, write to the Free
  46499. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46500. - 02111-1307 USA. */
  46501. + License along with the GNU C Library; if not, see
  46502. + <http://www.gnu.org/licenses/>. */
  46503. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  46504. to find out if any byte in xword could be zero. This is fast, but
  46505. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strchr.S uClibc-git/libc/string/sparc/sparc32/strchr.S
  46506. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strchr.S 2012-05-15 09:20:09.000000000 +0200
  46507. +++ uClibc-git/libc/string/sparc/sparc32/strchr.S 2014-02-03 12:32:56.000000000 +0100
  46508. @@ -16,9 +16,8 @@
  46509. Lesser General Public License for more details.
  46510. You should have received a copy of the GNU Lesser General Public
  46511. - License along with the GNU C Library; if not, write to the Free
  46512. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46513. - 02111-1307 USA. */
  46514. + License along with the GNU C Library; if not, see
  46515. + <http://www.gnu.org/licenses/>. */
  46516. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  46517. to find out if any byte in xword could be zero. This is fast, but
  46518. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strcmp.S uClibc-git/libc/string/sparc/sparc32/strcmp.S
  46519. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  46520. +++ uClibc-git/libc/string/sparc/sparc32/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  46521. @@ -15,9 +15,8 @@
  46522. Lesser General Public License for more details.
  46523. You should have received a copy of the GNU Lesser General Public
  46524. - License along with the GNU C Library; if not, write to the Free
  46525. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46526. - 02111-1307 USA. */
  46527. + License along with the GNU C Library; if not, see
  46528. + <http://www.gnu.org/licenses/>. */
  46529. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  46530. to find out if any byte in xword could be zero. This is fast, but
  46531. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strcpy.S uClibc-git/libc/string/sparc/sparc32/strcpy.S
  46532. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  46533. +++ uClibc-git/libc/string/sparc/sparc32/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  46534. @@ -15,9 +15,8 @@
  46535. Lesser General Public License for more details.
  46536. You should have received a copy of the GNU Lesser General Public
  46537. - License along with the GNU C Library; if not, write to the Free
  46538. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46539. - 02111-1307 USA. */
  46540. + License along with the GNU C Library; if not, see
  46541. + <http://www.gnu.org/licenses/>. */
  46542. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  46543. to find out if any byte in xword could be zero. This is fast, but
  46544. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc32/strlen.S uClibc-git/libc/string/sparc/sparc32/strlen.S
  46545. --- uClibc-0.9.33.2/libc/string/sparc/sparc32/strlen.S 2012-05-15 09:20:09.000000000 +0200
  46546. +++ uClibc-git/libc/string/sparc/sparc32/strlen.S 2014-02-03 12:32:56.000000000 +0100
  46547. @@ -15,9 +15,8 @@
  46548. Lesser General Public License for more details.
  46549. You should have received a copy of the GNU Lesser General Public
  46550. - License along with the GNU C Library; if not, write to the Free
  46551. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46552. - 02111-1307 USA. */
  46553. + License along with the GNU C Library; if not, see
  46554. + <http://www.gnu.org/licenses/>. */
  46555. /* Normally, this uses ((xword - 0x01010101) & 0x80808080) test
  46556. to find out if any byte in xword could be zero. This is fast, but
  46557. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/memchr.S uClibc-git/libc/string/sparc/sparc64/memchr.S
  46558. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/memchr.S 2012-05-15 09:20:09.000000000 +0200
  46559. +++ uClibc-git/libc/string/sparc/sparc64/memchr.S 2014-02-03 12:32:56.000000000 +0100
  46560. @@ -24,9 +24,8 @@
  46561. Lesser General Public License for more details.
  46562. You should have received a copy of the GNU Lesser General Public
  46563. - License along with the GNU C Library; if not, write to the Free
  46564. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46565. - 02111-1307 USA. */
  46566. + License along with the GNU C Library; if not, see
  46567. + <http://www.gnu.org/licenses/>. */
  46568. #include <asm/asi.h>
  46569. #ifndef XCC
  46570. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/memcpy.S uClibc-git/libc/string/sparc/sparc64/memcpy.S
  46571. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46572. +++ uClibc-git/libc/string/sparc/sparc64/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46573. @@ -16,9 +16,8 @@
  46574. Lesser General Public License for more details.
  46575. You should have received a copy of the GNU Lesser General Public
  46576. - License along with the GNU C Library; if not, write to the Free
  46577. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46578. - 02111-1307 USA. */
  46579. + License along with the GNU C Library; if not, see
  46580. + <http://www.gnu.org/licenses/>. */
  46581. #include <features.h>
  46582. #include <asm/asi.h>
  46583. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/memset.S uClibc-git/libc/string/sparc/sparc64/memset.S
  46584. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/memset.S 2012-05-15 09:20:09.000000000 +0200
  46585. +++ uClibc-git/libc/string/sparc/sparc64/memset.S 2014-02-03 12:32:56.000000000 +0100
  46586. @@ -16,9 +16,8 @@
  46587. Lesser General Public License for more details.
  46588. You should have received a copy of the GNU Lesser General Public
  46589. - License along with the GNU C Library; if not, write to the Free
  46590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46591. - 02111-1307 USA. */
  46592. + License along with the GNU C Library; if not, see
  46593. + <http://www.gnu.org/licenses/>. */
  46594. #include <features.h>
  46595. #include <asm/asi.h>
  46596. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/sparcv9b/memcpy.S uClibc-git/libc/string/sparc/sparc64/sparcv9b/memcpy.S
  46597. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/sparcv9b/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46598. +++ uClibc-git/libc/string/sparc/sparc64/sparcv9b/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46599. @@ -15,9 +15,8 @@
  46600. Lesser General Public License for more details.
  46601. You should have received a copy of the GNU Lesser General Public
  46602. - License along with the GNU C Library; if not, write to the Free
  46603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46604. - 02111-1307 USA. */
  46605. + License along with the GNU C Library; if not, see
  46606. + <http://www.gnu.org/licenses/>. */
  46607. #include <features.h>
  46608. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/stpcpy.S uClibc-git/libc/string/sparc/sparc64/stpcpy.S
  46609. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/stpcpy.S 2012-05-15 09:20:09.000000000 +0200
  46610. +++ uClibc-git/libc/string/sparc/sparc64/stpcpy.S 2014-02-03 12:32:56.000000000 +0100
  46611. @@ -16,9 +16,8 @@
  46612. Lesser General Public License for more details.
  46613. You should have received a copy of the GNU Lesser General Public
  46614. - License along with the GNU C Library; if not, write to the Free
  46615. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46616. - 02111-1307 USA. */
  46617. + License along with the GNU C Library; if not, see
  46618. + <http://www.gnu.org/licenses/>. */
  46619. #include <asm/asi.h>
  46620. #ifndef XCC
  46621. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strcat.S uClibc-git/libc/string/sparc/sparc64/strcat.S
  46622. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strcat.S 2012-05-15 09:20:09.000000000 +0200
  46623. +++ uClibc-git/libc/string/sparc/sparc64/strcat.S 2014-02-03 12:32:56.000000000 +0100
  46624. @@ -16,9 +16,8 @@
  46625. Lesser General Public License for more details.
  46626. You should have received a copy of the GNU Lesser General Public
  46627. - License along with the GNU C Library; if not, write to the Free
  46628. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46629. - 02111-1307 USA. */
  46630. + License along with the GNU C Library; if not, see
  46631. + <http://www.gnu.org/licenses/>. */
  46632. #include <asm/asi.h>
  46633. #ifndef XCC
  46634. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strchr.S uClibc-git/libc/string/sparc/sparc64/strchr.S
  46635. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strchr.S 2012-05-15 09:20:09.000000000 +0200
  46636. +++ uClibc-git/libc/string/sparc/sparc64/strchr.S 2014-02-03 12:32:56.000000000 +0100
  46637. @@ -16,9 +16,8 @@
  46638. Lesser General Public License for more details.
  46639. You should have received a copy of the GNU Lesser General Public
  46640. - License along with the GNU C Library; if not, write to the Free
  46641. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46642. - 02111-1307 USA. */
  46643. + License along with the GNU C Library; if not, see
  46644. + <http://www.gnu.org/licenses/>. */
  46645. #include <features.h>
  46646. #include <asm/asi.h>
  46647. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strcmp.S uClibc-git/libc/string/sparc/sparc64/strcmp.S
  46648. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  46649. +++ uClibc-git/libc/string/sparc/sparc64/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  46650. @@ -16,9 +16,8 @@
  46651. Lesser General Public License for more details.
  46652. You should have received a copy of the GNU Lesser General Public
  46653. - License along with the GNU C Library; if not, write to the Free
  46654. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46655. - 02111-1307 USA. */
  46656. + License along with the GNU C Library; if not, see
  46657. + <http://www.gnu.org/licenses/>. */
  46658. #include <asm/asi.h>
  46659. #ifndef XCC
  46660. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strcpy.S uClibc-git/libc/string/sparc/sparc64/strcpy.S
  46661. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  46662. +++ uClibc-git/libc/string/sparc/sparc64/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  46663. @@ -16,9 +16,8 @@
  46664. Lesser General Public License for more details.
  46665. You should have received a copy of the GNU Lesser General Public
  46666. - License along with the GNU C Library; if not, write to the Free
  46667. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46668. - 02111-1307 USA. */
  46669. + License along with the GNU C Library; if not, see
  46670. + <http://www.gnu.org/licenses/>. */
  46671. #include <asm/asi.h>
  46672. #ifndef XCC
  46673. diff -Nur uClibc-0.9.33.2/libc/string/sparc/sparc64/strlen.S uClibc-git/libc/string/sparc/sparc64/strlen.S
  46674. --- uClibc-0.9.33.2/libc/string/sparc/sparc64/strlen.S 2012-05-15 09:20:09.000000000 +0200
  46675. +++ uClibc-git/libc/string/sparc/sparc64/strlen.S 2014-02-03 12:32:56.000000000 +0100
  46676. @@ -15,9 +15,8 @@
  46677. Lesser General Public License for more details.
  46678. You should have received a copy of the GNU Lesser General Public
  46679. - License along with the GNU C Library; if not, write to the Free
  46680. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46681. - 02111-1307 USA. */
  46682. + License along with the GNU C Library; if not, see
  46683. + <http://www.gnu.org/licenses/>. */
  46684. #include <asm/asi.h>
  46685. diff -Nur uClibc-0.9.33.2/libc/string/strchrnul.c uClibc-git/libc/string/strchrnul.c
  46686. --- uClibc-0.9.33.2/libc/string/strchrnul.c 2012-05-15 09:20:09.000000000 +0200
  46687. +++ uClibc-git/libc/string/strchrnul.c 2014-02-03 12:32:56.000000000 +0100
  46688. @@ -22,6 +22,6 @@
  46689. return (Wchar *) s;
  46690. }
  46691. # ifndef WANT_WIDE
  46692. -libc_hidden_def(Wstrchrnul)
  46693. +libc_hidden_def(strchrnul)
  46694. # endif
  46695. #endif
  46696. diff -Nur uClibc-0.9.33.2/libc/string/strverscmp.c uClibc-git/libc/string/strverscmp.c
  46697. --- uClibc-0.9.33.2/libc/string/strverscmp.c 2012-05-15 09:20:09.000000000 +0200
  46698. +++ uClibc-git/libc/string/strverscmp.c 2014-02-03 12:32:56.000000000 +0100
  46699. @@ -19,9 +19,8 @@
  46700. Lesser General Public License for more details.
  46701. You should have received a copy of the GNU Lesser General Public
  46702. - License along with the GNU C Library; if not, write to the Free
  46703. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46704. - 02111-1307 USA. */
  46705. + License along with the GNU C Library; if not, see
  46706. + <http://www.gnu.org/licenses/>. */
  46707. #include <string.h>
  46708. #include <ctype.h>
  46709. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/memcpy.S uClibc-git/libc/string/x86_64/memcpy.S
  46710. --- uClibc-0.9.33.2/libc/string/x86_64/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46711. +++ uClibc-git/libc/string/x86_64/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46712. @@ -14,9 +14,8 @@
  46713. Lesser General Public License for more details.
  46714. You should have received a copy of the GNU Lesser General Public
  46715. - License along with the GNU C Library; if not, write to the Free
  46716. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46717. - 02111-1307 USA. */
  46718. + License along with the GNU C Library; if not, see
  46719. + <http://www.gnu.org/licenses/>. */
  46720. #include "_glibc_inc.h"
  46721. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/memset.S uClibc-git/libc/string/x86_64/memset.S
  46722. --- uClibc-0.9.33.2/libc/string/x86_64/memset.S 2012-05-15 09:20:09.000000000 +0200
  46723. +++ uClibc-git/libc/string/x86_64/memset.S 2014-02-03 12:32:56.000000000 +0100
  46724. @@ -15,9 +15,8 @@
  46725. Lesser General Public License for more details.
  46726. You should have received a copy of the GNU Lesser General Public
  46727. - License along with the GNU C Library; if not, write to the Free
  46728. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46729. - 02111-1307 USA. */
  46730. + License along with the GNU C Library; if not, see
  46731. + <http://www.gnu.org/licenses/>. */
  46732. #include "_glibc_inc.h"
  46733. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcat.S uClibc-git/libc/string/x86_64/strcat.S
  46734. --- uClibc-0.9.33.2/libc/string/x86_64/strcat.S 2012-05-15 09:20:09.000000000 +0200
  46735. +++ uClibc-git/libc/string/x86_64/strcat.S 2014-02-03 12:32:56.000000000 +0100
  46736. @@ -15,9 +15,8 @@
  46737. Lesser General Public License for more details.
  46738. You should have received a copy of the GNU Lesser General Public
  46739. - License along with the GNU C Library; if not, write to the Free
  46740. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46741. - 02111-1307 USA. */
  46742. + License along with the GNU C Library; if not, see
  46743. + <http://www.gnu.org/licenses/>. */
  46744. #include "_glibc_inc.h"
  46745. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strchr.S uClibc-git/libc/string/x86_64/strchr.S
  46746. --- uClibc-0.9.33.2/libc/string/x86_64/strchr.S 2012-05-15 09:20:09.000000000 +0200
  46747. +++ uClibc-git/libc/string/x86_64/strchr.S 2014-02-03 12:32:56.000000000 +0100
  46748. @@ -14,9 +14,8 @@
  46749. Lesser General Public License for more details.
  46750. You should have received a copy of the GNU Lesser General Public
  46751. - License along with the GNU C Library; if not, write to the Free
  46752. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46753. - 02111-1307 USA. */
  46754. + License along with the GNU C Library; if not, see
  46755. + <http://www.gnu.org/licenses/>. */
  46756. #include "_glibc_inc.h"
  46757. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcmp.S uClibc-git/libc/string/x86_64/strcmp.S
  46758. --- uClibc-0.9.33.2/libc/string/x86_64/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  46759. +++ uClibc-git/libc/string/x86_64/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  46760. @@ -15,9 +15,8 @@
  46761. Lesser General Public License for more details.
  46762. You should have received a copy of the GNU Lesser General Public
  46763. - License along with the GNU C Library; if not, write to the Free
  46764. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46765. - 02111-1307 USA. */
  46766. + License along with the GNU C Library; if not, see
  46767. + <http://www.gnu.org/licenses/>. */
  46768. #include "_glibc_inc.h"
  46769. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcpy.S uClibc-git/libc/string/x86_64/strcpy.S
  46770. --- uClibc-0.9.33.2/libc/string/x86_64/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  46771. +++ uClibc-git/libc/string/x86_64/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  46772. @@ -14,9 +14,8 @@
  46773. Lesser General Public License for more details.
  46774. You should have received a copy of the GNU Lesser General Public
  46775. - License along with the GNU C Library; if not, write to the Free
  46776. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46777. - 02111-1307 USA. */
  46778. + License along with the GNU C Library; if not, see
  46779. + <http://www.gnu.org/licenses/>. */
  46780. #include "_glibc_inc.h"
  46781. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strcspn.S uClibc-git/libc/string/x86_64/strcspn.S
  46782. --- uClibc-0.9.33.2/libc/string/x86_64/strcspn.S 2012-05-15 09:20:09.000000000 +0200
  46783. +++ uClibc-git/libc/string/x86_64/strcspn.S 2014-02-03 12:32:56.000000000 +0100
  46784. @@ -19,9 +19,8 @@
  46785. Lesser General Public License for more details.
  46786. You should have received a copy of the GNU Lesser General Public
  46787. - License along with the GNU C Library; if not, write to the Free
  46788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46789. - 02111-1307 USA. */
  46790. + License along with the GNU C Library; if not, see
  46791. + <http://www.gnu.org/licenses/>. */
  46792. #include "_glibc_inc.h"
  46793. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strlen.S uClibc-git/libc/string/x86_64/strlen.S
  46794. --- uClibc-0.9.33.2/libc/string/x86_64/strlen.S 2012-05-15 09:20:09.000000000 +0200
  46795. +++ uClibc-git/libc/string/x86_64/strlen.S 2014-02-03 12:32:56.000000000 +0100
  46796. @@ -14,9 +14,8 @@
  46797. Lesser General Public License for more details.
  46798. You should have received a copy of the GNU Lesser General Public
  46799. - License along with the GNU C Library; if not, write to the Free
  46800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46801. - 02111-1307 USA. */
  46802. + License along with the GNU C Library; if not, see
  46803. + <http://www.gnu.org/licenses/>. */
  46804. #include "_glibc_inc.h"
  46805. diff -Nur uClibc-0.9.33.2/libc/string/x86_64/strspn.S uClibc-git/libc/string/x86_64/strspn.S
  46806. --- uClibc-0.9.33.2/libc/string/x86_64/strspn.S 2012-05-15 09:20:09.000000000 +0200
  46807. +++ uClibc-git/libc/string/x86_64/strspn.S 2014-02-03 12:32:56.000000000 +0100
  46808. @@ -19,9 +19,8 @@
  46809. Lesser General Public License for more details.
  46810. You should have received a copy of the GNU Lesser General Public
  46811. - License along with the GNU C Library; if not, write to the Free
  46812. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46813. - 02111-1307 USA. */
  46814. + License along with the GNU C Library; if not, see
  46815. + <http://www.gnu.org/licenses/>. */
  46816. #include "_glibc_inc.h"
  46817. diff -Nur uClibc-0.9.33.2/libc/string/__xpg_basename.c uClibc-git/libc/string/__xpg_basename.c
  46818. --- uClibc-0.9.33.2/libc/string/__xpg_basename.c 2012-05-15 09:20:09.000000000 +0200
  46819. +++ uClibc-git/libc/string/__xpg_basename.c 2014-02-03 12:32:56.000000000 +0100
  46820. @@ -5,7 +5,6 @@
  46821. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  46822. */
  46823. -#include "_string.h"
  46824. #include <libgen.h>
  46825. char *__xpg_basename(register char *path)
  46826. @@ -34,3 +33,7 @@
  46827. return first;
  46828. }
  46829. +#ifndef __USE_GNU
  46830. +# undef basename
  46831. +weak_alias(__xpg_basename,basename)
  46832. +#endif
  46833. diff -Nur uClibc-0.9.33.2/libc/string/__xpg_strerror_r.c uClibc-git/libc/string/__xpg_strerror_r.c
  46834. --- uClibc-0.9.33.2/libc/string/__xpg_strerror_r.c 2012-05-15 09:20:09.000000000 +0200
  46835. +++ uClibc-git/libc/string/__xpg_strerror_r.c 2014-02-03 12:32:56.000000000 +0100
  46836. @@ -5,8 +5,8 @@
  46837. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  46838. */
  46839. -/* Make sure we get proper strerror_r() prototype */
  46840. -#define strerror_r _hidestrerror_r
  46841. +/* get rid of REDIRECT */
  46842. +#define strerror_r __hide_strerror_r
  46843. #include <features.h>
  46844. #include <errno.h>
  46845. @@ -15,7 +15,6 @@
  46846. #undef strerror_r
  46847. -
  46848. #ifdef __UCLIBC_HAS_ERRNO_MESSAGES__
  46849. extern const char _string_syserrmsgs[] attribute_hidden;
  46850. @@ -273,4 +272,6 @@
  46851. #endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */
  46852. libc_hidden_def(__xpg_strerror_r)
  46853. -weak_alias(__xpg_strerror_r, strerror_r)
  46854. +#if defined __USE_XOPEN2K && !defined __USE_GNU
  46855. +strong_alias(__xpg_strerror_r,strerror_r)
  46856. +#endif
  46857. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/memcpy.S uClibc-git/libc/string/xtensa/memcpy.S
  46858. --- uClibc-0.9.33.2/libc/string/xtensa/memcpy.S 2012-05-15 09:20:09.000000000 +0200
  46859. +++ uClibc-git/libc/string/xtensa/memcpy.S 2014-02-03 12:32:56.000000000 +0100
  46860. @@ -13,11 +13,10 @@
  46861. Lesser General Public License for more details.
  46862. You should have received a copy of the GNU Lesser General Public
  46863. - License along with the GNU C Library; if not, write to the Free
  46864. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  46865. - Boston, MA 02110-1301, USA. */
  46866. + License along with the GNU C Library; if not, see
  46867. + <http://www.gnu.org/licenses/>. */
  46868. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  46869. +#include <sysdep.h>
  46870. #include <bits/xtensa-config.h>
  46871. .macro src_b r, w0, w1
  46872. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/memset.S uClibc-git/libc/string/xtensa/memset.S
  46873. --- uClibc-0.9.33.2/libc/string/xtensa/memset.S 2012-05-15 09:20:09.000000000 +0200
  46874. +++ uClibc-git/libc/string/xtensa/memset.S 2014-02-03 12:32:56.000000000 +0100
  46875. @@ -13,11 +13,10 @@
  46876. Lesser General Public License for more details.
  46877. You should have received a copy of the GNU Lesser General Public
  46878. - License along with the GNU C Library; if not, write to the Free
  46879. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  46880. - Boston, MA 02110-1301, USA. */
  46881. + License along with the GNU C Library; if not, see
  46882. + <http://www.gnu.org/licenses/>. */
  46883. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  46884. +#include <sysdep.h>
  46885. #include <bits/xtensa-config.h>
  46886. /* Do not use .literal_position in the ENTRY macro. */
  46887. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strcmp.S uClibc-git/libc/string/xtensa/strcmp.S
  46888. --- uClibc-0.9.33.2/libc/string/xtensa/strcmp.S 2012-05-15 09:20:09.000000000 +0200
  46889. +++ uClibc-git/libc/string/xtensa/strcmp.S 2014-02-03 12:32:56.000000000 +0100
  46890. @@ -13,11 +13,10 @@
  46891. Lesser General Public License for more details.
  46892. You should have received a copy of the GNU Lesser General Public
  46893. - License along with the GNU C Library; if not, write to the Free
  46894. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  46895. - Boston, MA 02110-1301, USA. */
  46896. + License along with the GNU C Library; if not, see
  46897. + <http://www.gnu.org/licenses/>. */
  46898. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  46899. +#include <sysdep.h>
  46900. #include <bits/xtensa-config.h>
  46901. #include <features.h>
  46902. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strcpy.S uClibc-git/libc/string/xtensa/strcpy.S
  46903. --- uClibc-0.9.33.2/libc/string/xtensa/strcpy.S 2012-05-15 09:20:09.000000000 +0200
  46904. +++ uClibc-git/libc/string/xtensa/strcpy.S 2014-02-03 12:32:56.000000000 +0100
  46905. @@ -13,11 +13,10 @@
  46906. Lesser General Public License for more details.
  46907. You should have received a copy of the GNU Lesser General Public
  46908. - License along with the GNU C Library; if not, write to the Free
  46909. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  46910. - Boston, MA 02110-1301, USA. */
  46911. + License along with the GNU C Library; if not, see
  46912. + <http://www.gnu.org/licenses/>. */
  46913. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  46914. +#include <sysdep.h>
  46915. #include <bits/xtensa-config.h>
  46916. #ifdef __XTENSA_EB__
  46917. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strlen.S uClibc-git/libc/string/xtensa/strlen.S
  46918. --- uClibc-0.9.33.2/libc/string/xtensa/strlen.S 2012-05-15 09:20:09.000000000 +0200
  46919. +++ uClibc-git/libc/string/xtensa/strlen.S 2014-02-03 12:32:56.000000000 +0100
  46920. @@ -13,11 +13,10 @@
  46921. Lesser General Public License for more details.
  46922. You should have received a copy of the GNU Lesser General Public
  46923. - License along with the GNU C Library; if not, write to the Free
  46924. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  46925. - Boston, MA 02110-1301, USA. */
  46926. + License along with the GNU C Library; if not, see
  46927. + <http://www.gnu.org/licenses/>. */
  46928. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  46929. +#include <sysdep.h>
  46930. #include <bits/xtensa-config.h>
  46931. #ifdef __XTENSA_EB__
  46932. diff -Nur uClibc-0.9.33.2/libc/string/xtensa/strncpy.S uClibc-git/libc/string/xtensa/strncpy.S
  46933. --- uClibc-0.9.33.2/libc/string/xtensa/strncpy.S 2012-05-15 09:20:09.000000000 +0200
  46934. +++ uClibc-git/libc/string/xtensa/strncpy.S 2014-02-03 12:32:56.000000000 +0100
  46935. @@ -13,11 +13,10 @@
  46936. Lesser General Public License for more details.
  46937. You should have received a copy of the GNU Lesser General Public
  46938. - License along with the GNU C Library; if not, write to the Free
  46939. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  46940. - Boston, MA 02110-1301, USA. */
  46941. + License along with the GNU C Library; if not, see
  46942. + <http://www.gnu.org/licenses/>. */
  46943. -#include "../../sysdeps/linux/xtensa/sysdep.h"
  46944. +#include <sysdep.h>
  46945. #include <bits/xtensa-config.h>
  46946. #ifdef __XTENSA_EB__
  46947. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/atomic.h uClibc-git/libc/sysdeps/linux/alpha/bits/atomic.h
  46948. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  46949. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  46950. @@ -12,9 +12,8 @@
  46951. Lesser General Public License for more details.
  46952. You should have received a copy of the GNU Lesser General Public
  46953. - License along with the GNU C Library; if not, write to the Free
  46954. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46955. - 02111-1307 USA. */
  46956. + License along with the GNU C Library; if not, see
  46957. + <http://www.gnu.org/licenses/>. */
  46958. #include <stdint.h>
  46959. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/dirent.h uClibc-git/libc/sysdeps/linux/alpha/bits/dirent.h
  46960. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/dirent.h 2012-05-15 09:20:09.000000000 +0200
  46961. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  46962. @@ -12,9 +12,8 @@
  46963. Lesser General Public License for more details.
  46964. You should have received a copy of the GNU Lesser General Public
  46965. - License along with the GNU C Library; if not, write to the Free
  46966. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  46967. - 02111-1307 USA. */
  46968. + License along with the GNU C Library; if not, see
  46969. + <http://www.gnu.org/licenses/>. */
  46970. #ifndef _BITS_DIRENT_H
  46971. #define _BITS_DIRENT_H 1
  46972. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/eventfd.h uClibc-git/libc/sysdeps/linux/alpha/bits/eventfd.h
  46973. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  46974. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  46975. @@ -0,0 +1,31 @@
  46976. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  46977. + This file is part of the GNU C Library.
  46978. +
  46979. + The GNU C Library is free software; you can redistribute it and/or
  46980. + modify it under the terms of the GNU Lesser General Public
  46981. + License as published by the Free Software Foundation; either
  46982. + version 2.1 of the License, or (at your option) any later version.
  46983. +
  46984. + The GNU C Library is distributed in the hope that it will be useful,
  46985. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  46986. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  46987. + Lesser General Public License for more details.
  46988. +
  46989. + You should have received a copy of the GNU Lesser General Public
  46990. + License along with the GNU C Library; if not, see
  46991. + <http://www.gnu.org/licenses/>. */
  46992. +
  46993. +#ifndef _SYS_EVENTFD_H
  46994. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  46995. +#endif
  46996. +
  46997. +/* Flags for eventfd. */
  46998. +enum
  46999. + {
  47000. + EFD_SEMAPHORE = 000000001,
  47001. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  47002. + EFD_CLOEXEC = 010000000,
  47003. +#define EFD_CLOEXEC EFD_CLOEXEC
  47004. + EFD_NONBLOCK = 000000004
  47005. +#define EFD_NONBLOCK EFD_NONBLOCK
  47006. + };
  47007. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fcntl.h uClibc-git/libc/sysdeps/linux/alpha/bits/fcntl.h
  47008. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  47009. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  47010. @@ -13,9 +13,8 @@
  47011. Lesser General Public License for more details.
  47012. You should have received a copy of the GNU Lesser General Public
  47013. - License along with the GNU C Library; if not, write to the Free
  47014. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47015. - 02111-1307 USA. */
  47016. + License along with the GNU C Library; if not, see
  47017. + <http://www.gnu.org/licenses/>. */
  47018. #ifndef _FCNTL_H
  47019. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  47020. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fenv.h uClibc-git/libc/sysdeps/linux/alpha/bits/fenv.h
  47021. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  47022. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  47023. @@ -12,9 +12,8 @@
  47024. Lesser General Public License for more details.
  47025. You should have received a copy of the GNU Lesser General Public
  47026. - License along with the GNU C Library; if not, write to the Free
  47027. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47028. - 02111-1307 USA. */
  47029. + License along with the GNU C Library; if not, see
  47030. + <http://www.gnu.org/licenses/>. */
  47031. #ifndef _FENV_H
  47032. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  47033. @@ -107,15 +106,15 @@
  47034. /* If the default argument is used we use this value. Note that due to
  47035. architecture-specified page mappings, no user-space pointer will ever
  47036. have its two high bits set. Co-opt one. */
  47037. -#define FE_DFL_ENV ((__const fenv_t *) 0x8800000000000000UL)
  47038. +#define FE_DFL_ENV ((const fenv_t *) 0x8800000000000000UL)
  47039. #ifdef __USE_GNU
  47040. /* Floating-point environment where none of the exceptions are masked. */
  47041. -# define FE_NOMASK_ENV ((__const fenv_t *) 0x880000000000003eUL)
  47042. +# define FE_NOMASK_ENV ((const fenv_t *) 0x880000000000003eUL)
  47043. /* Floating-point environment with (processor-dependent) non-IEEE floating
  47044. point. In this case, mapping denormals to zero. */
  47045. -# define FE_NONIEEE_ENV ((__const fenv_t *) 0x8800000000003000UL)
  47046. +# define FE_NONIEEE_ENV ((const fenv_t *) 0x8800000000003000UL)
  47047. #endif
  47048. /* The system calls to talk to the kernel's FP code. */
  47049. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ioctls.h uClibc-git/libc/sysdeps/linux/alpha/bits/ioctls.h
  47050. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ioctls.h 2012-05-15 09:20:09.000000000 +0200
  47051. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/ioctls.h 2014-02-03 12:32:56.000000000 +0100
  47052. @@ -12,9 +12,8 @@
  47053. Lesser General Public License for more details.
  47054. You should have received a copy of the GNU Lesser General Public
  47055. - License along with the GNU C Library; if not, write to the Free
  47056. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47057. - 02111-1307 USA. */
  47058. + License along with the GNU C Library; if not, see
  47059. + <http://www.gnu.org/licenses/>. */
  47060. #ifndef _SYS_IOCTL_H
  47061. # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
  47062. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ipc.h uClibc-git/libc/sysdeps/linux/alpha/bits/ipc.h
  47063. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  47064. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  47065. @@ -12,9 +12,8 @@
  47066. Lesser General Public License for more details.
  47067. You should have received a copy of the GNU Lesser General Public
  47068. - License along with the GNU C Library; if not, write to the Free
  47069. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47070. - 02111-1307 USA. */
  47071. + License along with the GNU C Library; if not, see
  47072. + <http://www.gnu.org/licenses/>. */
  47073. #ifndef _SYS_IPC_H
  47074. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  47075. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h uClibc-git/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h
  47076. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  47077. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  47078. @@ -9,12 +9,4 @@
  47079. unsigned int sa_flags;
  47080. };
  47081. -/* In uclibc, userspace struct sigaction is identical to
  47082. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  47083. - * See sigaction.h
  47084. - */
  47085. -
  47086. -extern int __syscall_rt_sigaction (int, const struct sigaction *,
  47087. - struct sigaction *, size_t) attribute_hidden;
  47088. -
  47089. #endif
  47090. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/alpha/bits/kernel_types.h
  47091. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  47092. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  47093. @@ -33,6 +33,8 @@
  47094. typedef __kernel_uid_t __kernel_uid32_t;
  47095. typedef __kernel_gid_t __kernel_gid32_t;
  47096. typedef __kernel_dev_t __kernel_old_dev_t;
  47097. +typedef long __kernel_long_t;
  47098. +typedef unsigned long __kernel_ulong_t;
  47099. typedef struct {
  47100. int val[2];
  47101. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/local_lim.h uClibc-git/libc/sysdeps/linux/alpha/bits/local_lim.h
  47102. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  47103. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  47104. @@ -0,0 +1,91 @@
  47105. +/* Minimum guaranteed maximum values for system limits. Linux/Alpha version.
  47106. + Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc.
  47107. + This file is part of the GNU C Library.
  47108. +
  47109. + The GNU C Library is free software; you can redistribute it and/or
  47110. + modify it under the terms of the GNU Library General Public License as
  47111. + published by the Free Software Foundation; either version 2 of the
  47112. + License, or (at your option) any later version.
  47113. +
  47114. + The GNU C Library is distributed in the hope that it will be useful,
  47115. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  47116. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  47117. + Library General Public License for more details.
  47118. +
  47119. + You should have received a copy of the GNU Library General Public
  47120. + License along with the GNU C Library; see the file COPYING.LIB. If not,
  47121. + see <http://www.gnu.org/licenses/>. */
  47122. +
  47123. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  47124. + and defines LINK_MAX although filesystems have different maxima. A
  47125. + similar thing is true for OPEN_MAX: the limit can be changed at
  47126. + runtime and therefore the macro must not be defined. Remove this
  47127. + after including the header if necessary. */
  47128. +#ifndef NR_OPEN
  47129. +# define __undef_NR_OPEN
  47130. +#endif
  47131. +#ifndef LINK_MAX
  47132. +# define __undef_LINK_MAX
  47133. +#endif
  47134. +#ifndef OPEN_MAX
  47135. +# define __undef_OPEN_MAX
  47136. +#endif
  47137. +
  47138. +/* The kernel sources contain a file with all the needed information. */
  47139. +#include <linux/limits.h>
  47140. +
  47141. +/* Have to remove NR_OPEN? */
  47142. +#ifdef __undef_NR_OPEN
  47143. +# undef NR_OPEN
  47144. +# undef __undef_NR_OPEN
  47145. +#endif
  47146. +/* Have to remove LINK_MAX? */
  47147. +#ifdef __undef_LINK_MAX
  47148. +# undef LINK_MAX
  47149. +# undef __undef_LINK_MAX
  47150. +#endif
  47151. +/* Have to remove OPEN_MAX? */
  47152. +#ifdef __undef_OPEN_MAX
  47153. +# undef OPEN_MAX
  47154. +# undef __undef_OPEN_MAX
  47155. +#endif
  47156. +
  47157. +/* The number of data keys per process. */
  47158. +#define _POSIX_THREAD_KEYS_MAX 128
  47159. +/* This is the value this implementation supports. */
  47160. +#define PTHREAD_KEYS_MAX 1024
  47161. +
  47162. +/* Controlling the iterations of destructors for thread-specific data. */
  47163. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  47164. +/* Number of iterations this implementation does. */
  47165. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  47166. +
  47167. +/* The number of threads per process. */
  47168. +#define _POSIX_THREAD_THREADS_MAX 64
  47169. +/* We have no predefined limit on the number of threads. */
  47170. +#undef PTHREAD_THREADS_MAX
  47171. +
  47172. +/* Maximum amount by which a process can descrease its asynchronous I/O
  47173. + priority level. */
  47174. +#define AIO_PRIO_DELTA_MAX 20
  47175. +
  47176. +/* Minimum size for a thread. We are free to choose a reasonable value. */
  47177. +#define PTHREAD_STACK_MIN 24576
  47178. +
  47179. +/* Maximum number of timer expiration overruns. */
  47180. +#define DELAYTIMER_MAX 2147483647
  47181. +
  47182. +/* Maximum tty name length. */
  47183. +#define TTY_NAME_MAX 32
  47184. +
  47185. +/* Maximum login name length. This is arbitrary. */
  47186. +#define LOGIN_NAME_MAX 256
  47187. +
  47188. +/* Maximum host name length. */
  47189. +#define HOST_NAME_MAX 64
  47190. +
  47191. +/* Maximum message queue priority level. */
  47192. +#define MQ_PRIO_MAX 32768
  47193. +
  47194. +/* Maximum value the semaphore can have. */
  47195. +#define SEM_VALUE_MAX (2147483647)
  47196. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathdef.h uClibc-git/libc/sysdeps/linux/alpha/bits/mathdef.h
  47197. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  47198. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  47199. @@ -13,9 +13,8 @@
  47200. Lesser General Public License for more details.
  47201. You should have received a copy of the GNU Lesser General Public
  47202. - License along with the GNU C Library; if not, write to the Free
  47203. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47204. - 02111-1307 USA. */
  47205. + License along with the GNU C Library; if not, see
  47206. + <http://www.gnu.org/licenses/>. */
  47207. #if !defined _MATH_H && !defined _COMPLEX_H
  47208. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  47209. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathinline.h uClibc-git/libc/sysdeps/linux/alpha/bits/mathinline.h
  47210. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  47211. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  47212. @@ -14,9 +14,8 @@
  47213. Lesser General Public License for more details.
  47214. You should have received a copy of the GNU Lesser General Public
  47215. - License along with the GNU C Library; if not, write to the Free
  47216. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47217. - 02111-1307 USA. */
  47218. + License along with the GNU C Library; if not, see
  47219. + <http://www.gnu.org/licenses/>. */
  47220. #ifndef _MATH_H
  47221. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  47222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mman.h uClibc-git/libc/sysdeps/linux/alpha/bits/mman.h
  47223. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  47224. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  47225. @@ -13,9 +13,8 @@
  47226. Lesser General Public License for more details.
  47227. You should have received a copy of the GNU Lesser General Public
  47228. - License along with the GNU C Library; if not, write to the Free
  47229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47230. - 02111-1307 USA. */
  47231. + License along with the GNU C Library; if not, see
  47232. + <http://www.gnu.org/licenses/>. */
  47233. #ifndef _SYS_MMAN_H
  47234. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  47235. @@ -71,7 +70,7 @@
  47236. # define MAP_NORESERVE 0x10000 /* Don't check for reservations. */
  47237. # define MAP_POPULATE 0x20000 /* Populate (prefault) pagetables. */
  47238. # define MAP_NONBLOCK 0x40000 /* Do not block on IO. */
  47239. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  47240. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  47241. be uninitialized. */
  47242. #endif
  47243. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/msq.h uClibc-git/libc/sysdeps/linux/alpha/bits/msq.h
  47244. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  47245. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  47246. @@ -12,9 +12,8 @@
  47247. Lesser General Public License for more details.
  47248. You should have received a copy of the GNU Lesser General Public
  47249. - License along with the GNU C Library; if not, write to the Free
  47250. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47251. - 02111-1307 USA. */
  47252. + License along with the GNU C Library; if not, see
  47253. + <http://www.gnu.org/licenses/>. */
  47254. #ifndef _SYS_MSG_H
  47255. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  47256. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/netdb.h uClibc-git/libc/sysdeps/linux/alpha/bits/netdb.h
  47257. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/netdb.h 2012-05-15 09:20:09.000000000 +0200
  47258. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/netdb.h 2014-02-03 12:32:56.000000000 +0100
  47259. @@ -12,9 +12,8 @@
  47260. Lesser General Public License for more details.
  47261. You should have received a copy of the GNU Lesser General Public
  47262. - License along with the GNU C Library; if not, write to the Free
  47263. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47264. - 02111-1307 USA. */
  47265. + License along with the GNU C Library; if not, see
  47266. + <http://www.gnu.org/licenses/>. */
  47267. #ifndef _NETDB_H
  47268. # error "Never include <bits/netdb.h> directly; use <netdb.h> instead."
  47269. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/resource.h uClibc-git/libc/sysdeps/linux/alpha/bits/resource.h
  47270. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  47271. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  47272. @@ -14,9 +14,8 @@
  47273. Lesser General Public License for more details.
  47274. You should have received a copy of the GNU Lesser General Public
  47275. - License along with the GNU C Library; if not, write to the Free
  47276. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47277. - 02111-1307 USA. */
  47278. + License along with the GNU C Library; if not, see
  47279. + <http://www.gnu.org/licenses/>. */
  47280. #ifndef _SYS_RESOURCE_H
  47281. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  47282. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sem.h uClibc-git/libc/sysdeps/linux/alpha/bits/sem.h
  47283. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  47284. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  47285. @@ -12,9 +12,8 @@
  47286. Lesser General Public License for more details.
  47287. You should have received a copy of the GNU Lesser General Public
  47288. - License along with the GNU C Library; if not, write to the Free
  47289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47290. - 02111-1307 USA. */
  47291. + License along with the GNU C Library; if not, see
  47292. + <http://www.gnu.org/licenses/>. */
  47293. #ifndef _SYS_SEM_H
  47294. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  47295. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/setjmp.h uClibc-git/libc/sysdeps/linux/alpha/bits/setjmp.h
  47296. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  47297. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  47298. @@ -13,9 +13,8 @@
  47299. Lesser General Public License for more details.
  47300. You should have received a copy of the GNU Lesser General Public
  47301. - License along with the GNU C Library; if not, write to the Free
  47302. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47303. - 02111-1307 USA. */
  47304. + License along with the GNU C Library; if not, see
  47305. + <http://www.gnu.org/licenses/>. */
  47306. #ifndef _BITS_SETJMP_H
  47307. #define _BITS_SETJMP_H 1
  47308. @@ -55,33 +54,6 @@
  47309. * registers.
  47310. */
  47311. -#if defined __USE_MISC || defined __ASSEMBLY__
  47312. -# define JB_S0 0
  47313. -# define JB_S1 1
  47314. -# define JB_S2 2
  47315. -# define JB_S3 3
  47316. -# define JB_S4 4
  47317. -# define JB_S5 5
  47318. -# define JB_PC 6
  47319. -# define JB_FP 7
  47320. -# define JB_SP 8
  47321. -# define JB_F2 9
  47322. -# define JB_F3 10
  47323. -# define JB_F4 11
  47324. -# define JB_F5 12
  47325. -# define JB_F6 13
  47326. -# define JB_F7 14
  47327. -# define JB_F8 15
  47328. -# define JB_F9 16
  47329. -#endif
  47330. -
  47331. -#ifndef __ASSEMBLY__
  47332. typedef long int __jmp_buf[17];
  47333. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  47334. - variable at ADDRESS. */
  47335. -#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  47336. - ((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
  47337. -#endif
  47338. -
  47339. #endif /* bits/setjmp.h */
  47340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/shm.h uClibc-git/libc/sysdeps/linux/alpha/bits/shm.h
  47341. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  47342. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  47343. @@ -13,9 +13,8 @@
  47344. Lesser General Public License for more details.
  47345. You should have received a copy of the GNU Lesser General Public
  47346. - License along with the GNU C Library; if not, write to the Free
  47347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47348. - 02111-1307 USA. */
  47349. + License along with the GNU C Library; if not, see
  47350. + <http://www.gnu.org/licenses/>. */
  47351. #ifndef _SYS_SHM_H
  47352. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  47353. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigaction.h uClibc-git/libc/sysdeps/linux/alpha/bits/sigaction.h
  47354. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  47355. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  47356. @@ -13,9 +13,8 @@
  47357. Lesser General Public License for more details.
  47358. You should have received a copy of the GNU Lesser General Public
  47359. - License along with the GNU C Library; if not, write to the Free
  47360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47361. - 02111-1307 USA. */
  47362. + License along with the GNU C Library; if not, see
  47363. + <http://www.gnu.org/licenses/>. */
  47364. #ifndef _SIGNAL_H
  47365. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  47366. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h
  47367. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  47368. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  47369. @@ -12,9 +12,8 @@
  47370. Lesser General Public License for more details.
  47371. You should have received a copy of the GNU Lesser General Public
  47372. - License along with the GNU C Library; if not, write to the Free
  47373. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47374. - 02111-1307 USA. */
  47375. + License along with the GNU C Library; if not, see
  47376. + <http://www.gnu.org/licenses/>. */
  47377. #define SIGCONTEXT int _code, struct sigcontext *
  47378. #define SIGCONTEXT_EXTRA_ARGS _code,
  47379. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/siginfo.h uClibc-git/libc/sysdeps/linux/alpha/bits/siginfo.h
  47380. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  47381. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  47382. @@ -13,9 +13,8 @@
  47383. Lesser General Public License for more details.
  47384. You should have received a copy of the GNU Lesser General Public
  47385. - License along with the GNU C Library; if not, write to the Free
  47386. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47387. - 02111-1307 USA. */
  47388. + License along with the GNU C Library; if not, see
  47389. + <http://www.gnu.org/licenses/>. */
  47390. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  47391. && !defined __need_sigevent_t
  47392. @@ -258,7 +257,11 @@
  47393. /* Structure to transport application-defined values with signals. */
  47394. # define __SIGEV_MAX_SIZE 64
  47395. -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  47396. +# if __WORDSIZE == 64
  47397. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  47398. +# else
  47399. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
  47400. +# endif
  47401. typedef struct sigevent
  47402. {
  47403. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/signum.h uClibc-git/libc/sysdeps/linux/alpha/bits/signum.h
  47404. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  47405. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  47406. @@ -13,9 +13,8 @@
  47407. Lesser General Public License for more details.
  47408. You should have received a copy of the GNU Lesser General Public
  47409. - License along with the GNU C Library; if not, write to the Free
  47410. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47411. - 02111-1307 USA. */
  47412. + License along with the GNU C Library; if not, see
  47413. + <http://www.gnu.org/licenses/>. */
  47414. #ifdef _SIGNAL_H
  47415. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigstack.h uClibc-git/libc/sysdeps/linux/alpha/bits/sigstack.h
  47416. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  47417. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  47418. @@ -13,9 +13,8 @@
  47419. Lesser General Public License for more details.
  47420. You should have received a copy of the GNU Lesser General Public
  47421. - License along with the GNU C Library; if not, write to the Free
  47422. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47423. - 02111-1307 USA. */
  47424. + License along with the GNU C Library; if not, see
  47425. + <http://www.gnu.org/licenses/>. */
  47426. #ifndef _SIGNAL_H
  47427. # error "Never include this file directly. Use <signal.h> instead"
  47428. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/socket_type.h uClibc-git/libc/sysdeps/linux/alpha/bits/socket_type.h
  47429. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  47430. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  47431. @@ -0,0 +1,54 @@
  47432. +/* Define enum __socket_type for Linux/Alpha.
  47433. + Copyright (C) 1991-2012 Free Software Foundation, Inc.
  47434. + This file is part of the GNU C Library.
  47435. +
  47436. + The GNU C Library is free software; you can redistribute it and/or
  47437. + modify it under the terms of the GNU Lesser General Public
  47438. + License as published by the Free Software Foundation; either
  47439. + version 2.1 of the License, or (at your option) any later version.
  47440. +
  47441. + The GNU C Library is distributed in the hope that it will be useful,
  47442. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  47443. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  47444. + Lesser General Public License for more details.
  47445. +
  47446. + You should have received a copy of the GNU Lesser General Public
  47447. + License along with the GNU C Library. If not, see
  47448. + <http://www.gnu.org/licenses/>. */
  47449. +
  47450. +#ifndef _SYS_SOCKET_H
  47451. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  47452. +#endif
  47453. +
  47454. +/* Types of sockets. */
  47455. +enum __socket_type
  47456. +{
  47457. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  47458. + byte streams. */
  47459. +#define SOCK_STREAM SOCK_STREAM
  47460. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  47461. + of fixed maximum length. */
  47462. +#define SOCK_DGRAM SOCK_DGRAM
  47463. + SOCK_RAW = 3, /* Raw protocol interface. */
  47464. +#define SOCK_RAW SOCK_RAW
  47465. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  47466. +#define SOCK_RDM SOCK_RDM
  47467. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  47468. + datagrams of fixed maximum length. */
  47469. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  47470. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  47471. +#define SOCK_DCCP SOCK_DCCP
  47472. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  47473. + at the dev level. For writing rarp and
  47474. + other similar things on the user level. */
  47475. +#define SOCK_PACKET SOCK_PACKET
  47476. +
  47477. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  47478. +
  47479. + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the
  47480. + new descriptor(s). */
  47481. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  47482. + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as
  47483. + non-blocking. */
  47484. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  47485. +};
  47486. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/alpha/bits/stackinfo.h
  47487. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  47488. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  47489. @@ -12,9 +12,8 @@
  47490. Lesser General Public License for more details.
  47491. You should have received a copy of the GNU Lesser General Public
  47492. - License along with the GNU C Library; if not, write to the Free
  47493. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47494. - 02111-1307 USA. */
  47495. + License along with the GNU C Library; if not, see
  47496. + <http://www.gnu.org/licenses/>. */
  47497. /* This file contains a bit of information about the stack allocation
  47498. of the processor. */
  47499. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/statfs.h uClibc-git/libc/sysdeps/linux/alpha/bits/statfs.h
  47500. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  47501. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  47502. @@ -12,9 +12,8 @@
  47503. Lesser General Public License for more details.
  47504. You should have received a copy of the GNU Lesser General Public
  47505. - License along with the GNU C Library; if not, write to the Free
  47506. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47507. - 02111-1307 USA. */
  47508. + License along with the GNU C Library; if not, see
  47509. + <http://www.gnu.org/licenses/>. */
  47510. #ifndef _SYS_STATFS_H
  47511. # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  47512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stat.h uClibc-git/libc/sysdeps/linux/alpha/bits/stat.h
  47513. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  47514. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  47515. @@ -13,9 +13,8 @@
  47516. Lesser General Public License for more details.
  47517. You should have received a copy of the GNU Lesser General Public
  47518. - License along with the GNU C Library; if not, write to the Free
  47519. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47520. - 02111-1307 USA. */
  47521. + License along with the GNU C Library; if not, see
  47522. + <http://www.gnu.org/licenses/>. */
  47523. #ifndef _SYS_STAT_H
  47524. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  47525. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/syscalls.h uClibc-git/libc/sysdeps/linux/alpha/bits/syscalls.h
  47526. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  47527. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  47528. @@ -14,9 +14,8 @@
  47529. Lesser General Public License for more details.
  47530. You should have received a copy of the GNU Lesser General Public
  47531. - License along with the GNU C Library; if not, write to the Free
  47532. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47533. - 02111-1307 USA. */
  47534. + License along with the GNU C Library; if not, see
  47535. + <http://www.gnu.org/licenses/>. */
  47536. #ifndef _BITS_SYSCALLS_H
  47537. #define _BITS_SYSCALLS_H
  47538. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/termios.h uClibc-git/libc/sysdeps/linux/alpha/bits/termios.h
  47539. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  47540. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  47541. @@ -14,9 +14,8 @@
  47542. Lesser General Public License for more details.
  47543. You should have received a copy of the GNU Lesser General Public
  47544. - License along with the GNU C Library; if not, write to the Free
  47545. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47546. - 02111-1307 USA. */
  47547. + License along with the GNU C Library; if not, see
  47548. + <http://www.gnu.org/licenses/>. */
  47549. #ifndef _TERMIOS_H
  47550. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  47551. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/typesizes.h uClibc-git/libc/sysdeps/linux/alpha/bits/typesizes.h
  47552. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  47553. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  47554. @@ -13,9 +13,8 @@
  47555. Lesser General Public License for more details.
  47556. You should have received a copy of the GNU Lesser General Public
  47557. - License along with the GNU C Library; if not, write to the Free
  47558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47559. - 02111-1307 USA. */
  47560. + License along with the GNU C Library; if not, see
  47561. + <http://www.gnu.org/licenses/>. */
  47562. #ifndef _BITS_TYPES_H
  47563. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  47564. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h
  47565. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  47566. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  47567. @@ -11,8 +11,8 @@
  47568. /* can your target use syscall6() for mmap ? */
  47569. #define __UCLIBC_MMAP_HAS_6_ARGS__
  47570. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  47571. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  47572. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  47573. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  47574. /* does your target have a broken create_module() ? */
  47575. #define __UCLIBC_SLIGHTLY_BROKEN_CREATE_MODULE__
  47576. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/alpha/bits/uClibc_page.h
  47577. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  47578. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  47579. @@ -11,8 +11,8 @@
  47580. * Library General Public License for more details.
  47581. *
  47582. * You should have received a copy of the GNU Library General Public
  47583. - * License along with this library; if not, write to the Free
  47584. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  47585. + * License along with this library; if not, see
  47586. + * <http://www.gnu.org/licenses/>.
  47587. */
  47588. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  47589. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/wordsize.h uClibc-git/libc/sysdeps/linux/alpha/bits/wordsize.h
  47590. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  47591. +++ uClibc-git/libc/sysdeps/linux/alpha/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  47592. @@ -12,9 +12,8 @@
  47593. Lesser General Public License for more details.
  47594. You should have received a copy of the GNU Lesser General Public
  47595. - License along with the GNU C Library; if not, write to the Free
  47596. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47597. - 02111-1307 USA. */
  47598. + License along with the GNU C Library; if not, see
  47599. + <http://www.gnu.org/licenses/>. */
  47600. #define __WORDSIZE 64
  47601. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/brk.S uClibc-git/libc/sysdeps/linux/alpha/brk.S
  47602. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/brk.S 2012-05-15 09:20:09.000000000 +0200
  47603. +++ uClibc-git/libc/sysdeps/linux/alpha/brk.S 2014-02-03 12:32:56.000000000 +0100
  47604. @@ -13,9 +13,8 @@
  47605. Lesser General Public License for more details.
  47606. You should have received a copy of the GNU Lesser General Public
  47607. - License along with the GNU C Library; if not, write to the Free
  47608. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47609. - 02111-1307 USA. */
  47610. + License along with the GNU C Library; if not, see
  47611. + <http://www.gnu.org/licenses/>. */
  47612. /* __brk is a special syscall under Linux since it never returns an
  47613. error. Instead, the error condition is indicated by returning the old
  47614. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/clone.S uClibc-git/libc/sysdeps/linux/alpha/clone.S
  47615. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/clone.S 2012-05-15 09:20:09.000000000 +0200
  47616. +++ uClibc-git/libc/sysdeps/linux/alpha/clone.S 2014-02-03 12:32:56.000000000 +0100
  47617. @@ -13,9 +13,8 @@
  47618. Lesser General Public License for more details.
  47619. You should have received a copy of the GNU Lesser General Public
  47620. - License along with the GNU C Library; if not, write to the Free
  47621. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47622. - 02111-1307 USA. */
  47623. + License along with the GNU C Library; if not, see
  47624. + <http://www.gnu.org/licenses/>. */
  47625. /* clone() is even more special than fork() as it mucks with stacks
  47626. and invokes a function in the right context after its all over. */
  47627. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/crt1.S uClibc-git/libc/sysdeps/linux/alpha/crt1.S
  47628. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/crt1.S 2012-05-15 09:20:09.000000000 +0200
  47629. +++ uClibc-git/libc/sysdeps/linux/alpha/crt1.S 2014-02-03 12:32:56.000000000 +0100
  47630. @@ -32,9 +32,8 @@
  47631. Lesser General Public License for more details.
  47632. You should have received a copy of the GNU Lesser General Public
  47633. - License along with the GNU C Library; if not, write to the Free
  47634. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47635. - 02111-1307 USA. */
  47636. + License along with the GNU C Library; if not, see
  47637. + <http://www.gnu.org/licenses/>. */
  47638. #include <features.h>
  47639. #include <sys/regdef.h>
  47640. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/divrem.h uClibc-git/libc/sysdeps/linux/alpha/divrem.h
  47641. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/divrem.h 2012-05-15 09:20:09.000000000 +0200
  47642. +++ uClibc-git/libc/sysdeps/linux/alpha/divrem.h 2014-02-03 12:32:56.000000000 +0100
  47643. @@ -13,9 +13,8 @@
  47644. Lesser General Public License for more details.
  47645. You should have received a copy of the GNU Lesser General Public
  47646. - License along with the GNU C Library; if not, write to the Free
  47647. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47648. - 02111-1307 USA. */
  47649. + License along with the GNU C Library; if not, see
  47650. + <http://www.gnu.org/licenses/>. */
  47651. /* The current Alpha chips don't provide hardware for integer
  47652. division. The C compiler expects the functions
  47653. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/fpu_control.h uClibc-git/libc/sysdeps/linux/alpha/fpu_control.h
  47654. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  47655. +++ uClibc-git/libc/sysdeps/linux/alpha/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  47656. @@ -14,9 +14,8 @@
  47657. Lesser General Public License for more details.
  47658. You should have received a copy of the GNU Lesser General Public
  47659. - License along with the GNU C Library; if not, write to the Free
  47660. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47661. - 02111-1307 USA. */
  47662. + License along with the GNU C Library; if not, see
  47663. + <http://www.gnu.org/licenses/>. */
  47664. #ifndef _ALPHA_FPU_CONTROL_H
  47665. #define _ALPHA_FPU_CONTROL_H
  47666. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/alpha/jmpbuf-offsets.h
  47667. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  47668. +++ uClibc-git/libc/sysdeps/linux/alpha/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  47669. @@ -0,0 +1,35 @@
  47670. +/* Private macros for accessing __jmp_buf contents. Alpha version.
  47671. + Copyright (C) 2006 Free Software Foundation, Inc.
  47672. + This file is part of the GNU C Library.
  47673. +
  47674. + The GNU C Library is free software; you can redistribute it and/or
  47675. + modify it under the terms of the GNU Lesser General Public
  47676. + License as published by the Free Software Foundation; either
  47677. + version 2.1 of the License, or (at your option) any later version.
  47678. +
  47679. + The GNU C Library is distributed in the hope that it will be useful,
  47680. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  47681. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  47682. + Lesser General Public License for more details.
  47683. +
  47684. + You should have received a copy of the GNU Lesser General Public
  47685. + License along with the GNU C Library; if not, see
  47686. + <http://www.gnu.org/licenses/>. */
  47687. +
  47688. +#define JB_S0 0
  47689. +#define JB_S1 1
  47690. +#define JB_S2 2
  47691. +#define JB_S3 3
  47692. +#define JB_S4 4
  47693. +#define JB_S5 5
  47694. +#define JB_PC 6
  47695. +#define JB_FP 7
  47696. +#define JB_SP 8
  47697. +#define JB_F2 9
  47698. +#define JB_F3 10
  47699. +#define JB_F4 11
  47700. +#define JB_F5 12
  47701. +#define JB_F6 13
  47702. +#define JB_F7 14
  47703. +#define JB_F8 15
  47704. +#define JB_F9 16
  47705. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/alpha/jmpbuf-unwind.h
  47706. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  47707. +++ uClibc-git/libc/sysdeps/linux/alpha/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  47708. @@ -0,0 +1,23 @@
  47709. +/*
  47710. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  47711. + *
  47712. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  47713. + */
  47714. +#include <setjmp.h>
  47715. +#include <jmpbuf-offsets.h>
  47716. +
  47717. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  47718. + variable at ADDRESS. */
  47719. +#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  47720. + ((void *)(_address) < (void *)((_jmpbuf)[JB_SP]))
  47721. +
  47722. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  47723. +#include <stdint.h>
  47724. +#include <unwind.h>
  47725. +
  47726. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  47727. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  47728. +
  47729. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  47730. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  47731. +#endif
  47732. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__longjmp.S uClibc-git/libc/sysdeps/linux/alpha/__longjmp.S
  47733. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  47734. +++ uClibc-git/libc/sysdeps/linux/alpha/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  47735. @@ -12,14 +12,10 @@
  47736. Lesser General Public License for more details.
  47737. You should have received a copy of the GNU Lesser General Public
  47738. - License along with the GNU C Library; if not, write to the Free
  47739. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47740. - 02111-1307 USA. */
  47741. + License along with the GNU C Library; if not, see
  47742. + <http://www.gnu.org/licenses/>. */
  47743. -#include <features.h>
  47744. -#define _SETJMP_H
  47745. -#define __ASSEMBLY__
  47746. -#include <bits/setjmp.h>
  47747. +#include <setjmp-offsets.h>
  47748. #define a0 $16
  47749. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/Makefile.arch uClibc-git/libc/sysdeps/linux/alpha/Makefile.arch
  47750. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  47751. +++ uClibc-git/libc/sysdeps/linux/alpha/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  47752. @@ -5,9 +5,9 @@
  47753. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  47754. #
  47755. -CSRC := __syscall_error.c sigprocmask.c
  47756. +CSRC-y := __syscall_error.c sigprocmask.c
  47757. -SSRC := \
  47758. +SSRC-y := \
  47759. __longjmp.S brk.S bsd-_setjmp.S bsd-setjmp.S clone.S \
  47760. divl.S divq.S pipe.S reml.S remq.S __syscall_rt_sigaction.S setjmp.S \
  47761. syscall.S
  47762. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/pipe.S uClibc-git/libc/sysdeps/linux/alpha/pipe.S
  47763. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/pipe.S 2012-05-15 09:20:09.000000000 +0200
  47764. +++ uClibc-git/libc/sysdeps/linux/alpha/pipe.S 2014-02-03 12:32:56.000000000 +0100
  47765. @@ -13,9 +13,8 @@
  47766. Lesser General Public License for more details.
  47767. You should have received a copy of the GNU Lesser General Public
  47768. - License along with the GNU C Library; if not, write to the Free
  47769. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47770. - 02111-1307 USA. */
  47771. + License along with the GNU C Library; if not, see
  47772. + <http://www.gnu.org/licenses/>. */
  47773. #include <features.h>
  47774. #include <sys/syscall.h>
  47775. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/setjmp.S uClibc-git/libc/sysdeps/linux/alpha/setjmp.S
  47776. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  47777. +++ uClibc-git/libc/sysdeps/linux/alpha/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  47778. @@ -12,15 +12,10 @@
  47779. Lesser General Public License for more details.
  47780. You should have received a copy of the GNU Lesser General Public
  47781. - License along with the GNU C Library; if not, write to the Free
  47782. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47783. - 02111-1307 USA. */
  47784. -
  47785. -#include <features.h>
  47786. -#define _ASM
  47787. -#define _SETJMP_H
  47788. -#define __ASSEMBLY__
  47789. -#include <bits/setjmp.h>
  47790. + License along with the GNU C Library; if not, see
  47791. + <http://www.gnu.org/licenses/>. */
  47792. +
  47793. +#include <jmpbuf-offsets.h>
  47794. #define a0 $16
  47795. @@ -30,10 +25,16 @@
  47796. ldgp $29, 0($27)
  47797. $sigsetjmp_local:
  47798. - subq $30, 16, $30
  47799. - .frame $26, 16, $26, 0
  47800. - stq $26, 0($30)
  47801. - .mask 0x04000000, -16
  47802. +#ifndef __PIC__
  47803. +# define FRAME 16
  47804. + subq $30, FRAME, $30
  47805. + .frame $30, FRAME, $26, 0
  47806. + stq $26, 0($30)
  47807. + .mask 0x04000000, -FRAME
  47808. +#else
  47809. +# define FRAME 0
  47810. + .frame $30, FRAME, $26, 0
  47811. +#endif
  47812. .prologue 1
  47813. stq $9, JB_S0*8(a0)
  47814. @@ -43,9 +44,9 @@
  47815. stq $13, JB_S4*8(a0)
  47816. stq $14, JB_S5*8(a0)
  47817. stq $26, JB_PC*8(a0)
  47818. - addq $30, 16, $1
  47819. - stq $15, JB_FP*8(a0)
  47820. + addq $30, FRAME, $1
  47821. stq $1, JB_SP*8(a0)
  47822. + stq $15, JB_FP*8(a0)
  47823. stt $f2, JB_F2*8(a0)
  47824. stt $f3, JB_F3*8(a0)
  47825. stt $f4, JB_F4*8(a0)
  47826. @@ -55,12 +56,16 @@
  47827. stt $f8, JB_F8*8(a0)
  47828. stt $f9, JB_F9*8(a0)
  47829. +#ifndef __PIC__
  47830. /* Call to C to (potentially) save our signal mask. */
  47831. jsr $26, __sigjmp_save
  47832. -
  47833. ldq $26, 0($30)
  47834. addq $30, 16, $30
  47835. ret
  47836. +#else
  47837. + /* Tailcall to save the signal mask. */
  47838. + br $31, __sigjmp_save !samegp
  47839. +#endif
  47840. .end __sigsetjmp
  47841. @@ -71,7 +76,6 @@
  47842. .align 3;
  47843. .ent _setjmp , 0;
  47844. _setjmp:
  47845. - .frame $30 , 0, $26
  47846. ldgp $29, 0($27)
  47847. mov 0, $17
  47848. br $sigsetjmp_local
  47849. @@ -81,11 +85,7 @@
  47850. .align 3;
  47851. .ent setjmp , 0;
  47852. setjmp:
  47853. - .frame $30 , 0, $26
  47854. ldgp $29, 0($27)
  47855. mov 1, $17
  47856. br $sigsetjmp_local
  47857. .end setjmp
  47858. -
  47859. -.weak _setjmp
  47860. -.weak setjmp
  47861. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sigprocmask.c uClibc-git/libc/sysdeps/linux/alpha/sigprocmask.c
  47862. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sigprocmask.c 2012-05-15 09:20:09.000000000 +0200
  47863. +++ uClibc-git/libc/sysdeps/linux/alpha/sigprocmask.c 2014-02-03 12:32:56.000000000 +0100
  47864. @@ -13,9 +13,8 @@
  47865. Lesser General Public License for more details.
  47866. You should have received a copy of the GNU Lesser General Public
  47867. - License along with the GNU C Library; if not, write to the Free
  47868. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47869. - 02111-1307 USA. */
  47870. + License along with the GNU C Library; if not, see
  47871. + <http://www.gnu.org/licenses/>. */
  47872. #include <features.h>
  47873. #include <errno.h>
  47874. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/acct.h uClibc-git/libc/sysdeps/linux/alpha/sys/acct.h
  47875. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/acct.h 2012-05-15 09:20:09.000000000 +0200
  47876. +++ uClibc-git/libc/sysdeps/linux/alpha/sys/acct.h 2014-02-03 12:32:56.000000000 +0100
  47877. @@ -12,9 +12,8 @@
  47878. Lesser General Public License for more details.
  47879. You should have received a copy of the GNU Lesser General Public
  47880. - License along with the GNU C Library; if not, write to the Free
  47881. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47882. - 02111-1307 USA. */
  47883. + License along with the GNU C Library; if not, see
  47884. + <http://www.gnu.org/licenses/>. */
  47885. #ifndef _SYS_ACCT_H
  47886. @@ -59,7 +58,7 @@
  47887. /* Switch process accounting on and off. */
  47888. -extern int acct (__const char *__filename) __THROW;
  47889. +extern int acct (const char *__filename) __THROW;
  47890. __END_DECLS
  47891. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/io.h uClibc-git/libc/sysdeps/linux/alpha/sys/io.h
  47892. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  47893. +++ uClibc-git/libc/sysdeps/linux/alpha/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  47894. @@ -12,9 +12,8 @@
  47895. Lesser General Public License for more details.
  47896. You should have received a copy of the GNU Lesser General Public
  47897. - License along with the GNU C Library; if not, write to the Free
  47898. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47899. - 02111-1307 USA. */
  47900. + License along with the GNU C Library; if not, see
  47901. + <http://www.gnu.org/licenses/>. */
  47902. #ifndef _SYS_IO_H
  47903. @@ -23,6 +22,7 @@
  47904. __BEGIN_DECLS
  47905. +#if defined __UCLIBC_LINUX_SPECIFIC__
  47906. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  47907. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  47908. permission off for that range. This call requires root privileges.
  47909. @@ -32,12 +32,12 @@
  47910. E.g., Linux/Alpha for Alpha PCs supports this. */
  47911. extern int ioperm (unsigned long int __from, unsigned long int __num,
  47912. int __turn_on) __THROW;
  47913. -libc_hidden_proto(ioperm)
  47914. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  47915. access any I/O port is granted. This call requires root
  47916. privileges. */
  47917. extern int iopl (int __level) __THROW;
  47918. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  47919. /* Return the physical address of the DENSE I/O memory or NULL if none
  47920. is available (e.g. on a jensen). */
  47921. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/procfs.h uClibc-git/libc/sysdeps/linux/alpha/sys/procfs.h
  47922. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  47923. +++ uClibc-git/libc/sysdeps/linux/alpha/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  47924. @@ -12,9 +12,8 @@
  47925. Lesser General Public License for more details.
  47926. You should have received a copy of the GNU Lesser General Public
  47927. - License along with the GNU C Library; if not, write to the Free
  47928. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47929. - 02111-1307 USA. */
  47930. + License along with the GNU C Library; if not, see
  47931. + <http://www.gnu.org/licenses/>. */
  47932. #ifndef _SYS_PROCFS_H
  47933. #define _SYS_PROCFS_H 1
  47934. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/ucontext.h uClibc-git/libc/sysdeps/linux/alpha/sys/ucontext.h
  47935. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  47936. +++ uClibc-git/libc/sysdeps/linux/alpha/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  47937. @@ -12,9 +12,8 @@
  47938. Lesser General Public License for more details.
  47939. You should have received a copy of the GNU Lesser General Public
  47940. - License along with the GNU C Library; if not, write to the Free
  47941. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47942. - 02111-1307 USA. */
  47943. + License along with the GNU C Library; if not, see
  47944. + <http://www.gnu.org/licenses/>. */
  47945. #ifndef _SYS_UCONTEXT_H
  47946. #define _SYS_UCONTEXT_H 1
  47947. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/user.h uClibc-git/libc/sysdeps/linux/alpha/sys/user.h
  47948. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  47949. +++ uClibc-git/libc/sysdeps/linux/alpha/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  47950. @@ -12,9 +12,8 @@
  47951. Lesser General Public License for more details.
  47952. You should have received a copy of the GNU Lesser General Public
  47953. - License along with the GNU C Library; if not, write to the Free
  47954. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47955. - 02111-1307 USA. */
  47956. + License along with the GNU C Library; if not, see
  47957. + <http://www.gnu.org/licenses/>. */
  47958. #ifndef _SYS_USER_H
  47959. #define _SYS_USER_H 1
  47960. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S uClibc-git/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S
  47961. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S 2012-05-15 09:20:09.000000000 +0200
  47962. +++ uClibc-git/libc/sysdeps/linux/alpha/__syscall_rt_sigaction.S 2014-02-03 12:32:56.000000000 +0100
  47963. @@ -13,9 +13,8 @@
  47964. Lesser General Public License for more details.
  47965. You should have received a copy of the GNU Lesser General Public
  47966. - License along with the GNU C Library; if not, write to the Free
  47967. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47968. - 02111-1307 USA. */
  47969. + License along with the GNU C Library; if not, see
  47970. + <http://www.gnu.org/licenses/>. */
  47971. #include <features.h>
  47972. #include <sys/syscall.h>
  47973. @@ -31,6 +30,9 @@
  47974. .text
  47975. .globl __syscall_rt_sigaction
  47976. +#ifndef __UCLIBC_HAS_THREADS_NATIVE__
  47977. +.hidden __syscall_rt_sigaction
  47978. +#endif
  47979. .align 4
  47980. .ent __syscall_rt_sigaction, 0
  47981. __syscall_rt_sigaction:
  47982. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/alpha/syscall.S uClibc-git/libc/sysdeps/linux/alpha/syscall.S
  47983. --- uClibc-0.9.33.2/libc/sysdeps/linux/alpha/syscall.S 2012-05-15 09:20:09.000000000 +0200
  47984. +++ uClibc-git/libc/sysdeps/linux/alpha/syscall.S 2014-02-03 12:32:56.000000000 +0100
  47985. @@ -13,9 +13,8 @@
  47986. Lesser General Public License for more details.
  47987. You should have received a copy of the GNU Lesser General Public
  47988. - License along with the GNU C Library; if not, write to the Free
  47989. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  47990. - 02111-1307 USA. */
  47991. + License along with the GNU C Library; if not, see
  47992. + <http://www.gnu.org/licenses/>. */
  47993. #include <features.h>
  47994. #include <sys/regdef.h>
  47995. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/byteswap.h uClibc-git/libc/sysdeps/linux/arc/bits/byteswap.h
  47996. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/byteswap.h 1970-01-01 01:00:00.000000000 +0100
  47997. +++ uClibc-git/libc/sysdeps/linux/arc/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  47998. @@ -0,0 +1,23 @@
  47999. +/*
  48000. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48001. + *
  48002. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48003. + *
  48004. + */
  48005. +
  48006. +#ifndef _ASM_BITS_BYTESWAP_H
  48007. +#define _ASM_BITS_BYTESWAP_H 1
  48008. +
  48009. +#ifdef __Xswape /* gcc defined if -mswape is enabled */
  48010. +
  48011. +#define __bswap_non_constant_32(x) \
  48012. + __extension__ \
  48013. + ({ unsigned int __bswap_32_v = x; \
  48014. + __asm__ ("swape %0, %0" : "+r" (__bswap_32_v)); \
  48015. + __bswap_32_v; })
  48016. +
  48017. +#endif /* __Xswape */
  48018. +
  48019. +#endif /* _ASM_BITS_BYTESWAP_H */
  48020. +
  48021. +#include <bits/byteswap-common.h>
  48022. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/endian.h uClibc-git/libc/sysdeps/linux/arc/bits/endian.h
  48023. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/endian.h 1970-01-01 01:00:00.000000000 +0100
  48024. +++ uClibc-git/libc/sysdeps/linux/arc/bits/endian.h 2014-02-03 12:32:56.000000000 +0100
  48025. @@ -0,0 +1,15 @@
  48026. +/*
  48027. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48028. + *
  48029. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48030. + */
  48031. +#ifndef _ENDIAN_H
  48032. +# error "Never use <bits/endian.h> directly; include <endian.h> instead."
  48033. +#endif
  48034. +
  48035. +/* ARC support either endianness. */
  48036. +#ifdef __BIG_ENDIAN__
  48037. +#define __BYTE_ORDER __BIG_ENDIAN
  48038. +#else
  48039. +#define __BYTE_ORDER __LITTLE_ENDIAN
  48040. +#endif
  48041. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/fcntl.h uClibc-git/libc/sysdeps/linux/arc/bits/fcntl.h
  48042. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100
  48043. +++ uClibc-git/libc/sysdeps/linux/arc/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  48044. @@ -0,0 +1,223 @@
  48045. +/* O_*, F_*, FD_* bit values for Linux.
  48046. + *
  48047. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48048. + *
  48049. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48050. + */
  48051. +#ifndef _FCNTL_H
  48052. +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  48053. +#endif
  48054. +
  48055. +
  48056. +#include <sys/types.h>
  48057. +#ifdef __USE_GNU
  48058. +# include <bits/uio.h>
  48059. +#endif
  48060. +
  48061. +/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  48062. + located on an ext2 file system */
  48063. +#define O_ACCMODE 0003
  48064. +#define O_RDONLY 00
  48065. +#define O_WRONLY 01
  48066. +#define O_RDWR 02
  48067. +#define O_CREAT 0100 /* not fcntl */
  48068. +#define O_EXCL 0200 /* not fcntl */
  48069. +#define O_NOCTTY 0400 /* not fcntl */
  48070. +#define O_TRUNC 01000 /* not fcntl */
  48071. +#define O_APPEND 02000
  48072. +#define O_NONBLOCK 04000
  48073. +#define O_NDELAY O_NONBLOCK
  48074. +#define O_SYNC 010000
  48075. +#define O_FSYNC O_SYNC
  48076. +#define O_ASYNC 020000
  48077. +
  48078. +#ifdef __USE_GNU
  48079. +# define O_DIRECT 040000 /* Direct disk access. */
  48080. +# define O_DIRECTORY 0200000 /* Must be a directory. */
  48081. +# define O_NOFOLLOW 0400000 /* Do not follow links. */
  48082. +# define O_NOATIME 01000000 /* Do not set atime. */
  48083. +# define O_CLOEXEC 02000000 /* Set close_on_exec. */
  48084. +#endif
  48085. +
  48086. +#ifdef __USE_LARGEFILE64
  48087. +# define O_LARGEFILE 0100000
  48088. +#endif
  48089. +
  48090. +/* For now Linux has synchronisity options for data and read operations.
  48091. + We define the symbols here but let them do the same as O_SYNC since
  48092. + this is a superset. */
  48093. +#if defined __USE_POSIX199309 || defined __USE_UNIX98
  48094. +# define O_DSYNC O_SYNC /* Synchronize data. */
  48095. +# define O_RSYNC O_SYNC /* Synchronize read operations. */
  48096. +#endif
  48097. +
  48098. +/* Values for the second argument to `fcntl'. */
  48099. +#define F_DUPFD 0 /* Duplicate file descriptor. */
  48100. +#define F_GETFD 1 /* Get file descriptor flags. */
  48101. +#define F_SETFD 2 /* Set file descriptor flags. */
  48102. +#define F_GETFL 3 /* Get file status flags. */
  48103. +#define F_SETFL 4 /* Set file status flags. */
  48104. +
  48105. +#ifndef __USE_FILE_OFFSET64
  48106. +# define F_GETLK 5 /* Get record locking info. */
  48107. +# define F_SETLK 6 /* Set record locking info (non-blocking). */
  48108. +# define F_SETLKW 7 /* Set record locking info (blocking). */
  48109. +#else
  48110. +# define F_GETLK F_GETLK64 /* Get record locking info. */
  48111. +# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/
  48112. +# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */
  48113. +#endif
  48114. +#define F_GETLK64 12 /* Get record locking info. */
  48115. +#define F_SETLK64 13 /* Set record locking info (non-blocking). */
  48116. +#define F_SETLKW64 14 /* Set record locking info (blocking). */
  48117. +
  48118. +#if defined __USE_BSD || defined __USE_XOPEN2K
  48119. +# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
  48120. +# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
  48121. +#endif
  48122. +
  48123. +#ifdef __USE_GNU
  48124. +# define F_SETSIG 10 /* Set number of signal to be sent. */
  48125. +# define F_GETSIG 11 /* Get number of signal to be sent. */
  48126. +#endif
  48127. +
  48128. +#ifdef __USE_GNU
  48129. +# define F_SETLEASE 1024 /* Set a lease. */
  48130. +# define F_GETLEASE 1025 /* Enquire what lease is active. */
  48131. +# define F_NOTIFY 1026 /* Request notfications on a directory. */
  48132. +# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
  48133. + close-on-exit set on new fd. */
  48134. +#endif
  48135. +
  48136. +/* For F_[GET|SET]FL. */
  48137. +#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
  48138. +
  48139. +/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
  48140. +#define F_RDLCK 0 /* Read lock. */
  48141. +#define F_WRLCK 1 /* Write lock. */
  48142. +#define F_UNLCK 2 /* Remove lock. */
  48143. +
  48144. +/* For old implementation of bsd flock(). */
  48145. +#define F_EXLCK 4 /* or 3 */
  48146. +#define F_SHLCK 8 /* or 4 */
  48147. +
  48148. +#ifdef __USE_BSD
  48149. +/* Operations for bsd flock(), also used by the kernel implementation. */
  48150. +# define LOCK_SH 1 /* shared lock */
  48151. +# define LOCK_EX 2 /* exclusive lock */
  48152. +# define LOCK_NB 4 /* or'd with one of the above to prevent
  48153. + blocking */
  48154. +# define LOCK_UN 8 /* remove lock */
  48155. +#endif
  48156. +
  48157. +#ifdef __USE_GNU
  48158. +# define LOCK_MAND 32 /* This is a mandatory flock: */
  48159. +# define LOCK_READ 64 /* ... which allows concurrent read operations. */
  48160. +# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
  48161. +# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
  48162. +#endif
  48163. +
  48164. +#ifdef __USE_GNU
  48165. +/* Types of directory notifications that may be requested with F_NOTIFY. */
  48166. +# define DN_ACCESS 0x00000001 /* File accessed. */
  48167. +# define DN_MODIFY 0x00000002 /* File modified. */
  48168. +# define DN_CREATE 0x00000004 /* File created. */
  48169. +# define DN_DELETE 0x00000008 /* File removed. */
  48170. +# define DN_RENAME 0x00000010 /* File renamed. */
  48171. +# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
  48172. +# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
  48173. +#endif
  48174. +
  48175. +struct flock
  48176. + {
  48177. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  48178. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  48179. +#ifndef __USE_FILE_OFFSET64
  48180. + __off_t l_start; /* Offset where the lock begins. */
  48181. + __off_t l_len; /* Size of the locked area; zero means until EOF. */
  48182. +#else
  48183. + __off64_t l_start; /* Offset where the lock begins. */
  48184. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  48185. +#endif
  48186. + __pid_t l_pid; /* Process holding the lock. */
  48187. + };
  48188. +
  48189. +#ifdef __USE_LARGEFILE64
  48190. +struct flock64
  48191. + {
  48192. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  48193. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  48194. + __off64_t l_start; /* Offset where the lock begins. */
  48195. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  48196. + __pid_t l_pid; /* Process holding the lock. */
  48197. + };
  48198. +#endif
  48199. +
  48200. +/* Define some more compatibility macros to be backward compatible with
  48201. + BSD systems which did not managed to hide these kernel macros. */
  48202. +#ifdef __USE_BSD
  48203. +# define FAPPEND O_APPEND
  48204. +# define FFSYNC O_FSYNC
  48205. +# define FASYNC O_ASYNC
  48206. +# define FNONBLOCK O_NONBLOCK
  48207. +# define FNDELAY O_NDELAY
  48208. +#endif /* Use BSD. */
  48209. +
  48210. +/* Advise to `posix_fadvise'. */
  48211. +#ifdef __USE_XOPEN2K
  48212. +# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
  48213. +# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
  48214. +# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
  48215. +# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
  48216. +# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
  48217. +# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
  48218. +#endif
  48219. +
  48220. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  48221. +/* Flags for SYNC_FILE_RANGE. */
  48222. +# define SYNC_FILE_RANGE_WAIT_BEFORE 1 /* Wait upon writeout of all pages
  48223. + in the range before performing the
  48224. + write. */
  48225. +# define SYNC_FILE_RANGE_WRITE 2 /* Initiate writeout of all those
  48226. + dirty pages in the range which are
  48227. + not presently under writeback. */
  48228. +# define SYNC_FILE_RANGE_WAIT_AFTER 4 /* Wait upon writeout of all pages in
  48229. + the range after performing the
  48230. + write. */
  48231. +
  48232. +/* Flags for SPLICE and VMSPLICE. */
  48233. +# define SPLICE_F_MOVE 1 /* Move pages instead of copying. */
  48234. +# define SPLICE_F_NONBLOCK 2 /* Don't block on the pipe splicing
  48235. + (but we may still block on the fd
  48236. + we splice from/to). */
  48237. +# define SPLICE_F_MORE 4 /* Expect more data. */
  48238. +# define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */
  48239. +#endif
  48240. +
  48241. +__BEGIN_DECLS
  48242. +
  48243. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  48244. +
  48245. +/* Provide kernel hint to read ahead. */
  48246. +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
  48247. + __THROW;
  48248. +
  48249. +/* Selective file content synch'ing. */
  48250. +extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
  48251. + unsigned int __flags);
  48252. +
  48253. +/* Splice address range into a pipe. */
  48254. +extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
  48255. + size_t __count, unsigned int __flags);
  48256. +
  48257. +/* Splice two files together. */
  48258. +extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
  48259. + __off64_t *__offout, size_t __len,
  48260. + unsigned int __flags);
  48261. +
  48262. +/* In-kernel implementation of tee for pipe buffers. */
  48263. +extern ssize_t tee (int __fdin, int __fdout, size_t __len,
  48264. + unsigned int __flags);
  48265. +
  48266. +#endif
  48267. +__END_DECLS
  48268. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/arc/bits/kernel_types.h
  48269. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/kernel_types.h 1970-01-01 01:00:00.000000000 +0100
  48270. +++ uClibc-git/libc/sysdeps/linux/arc/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  48271. @@ -0,0 +1,59 @@
  48272. +/*
  48273. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48274. + *
  48275. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48276. + */
  48277. +
  48278. +/* Note that we use the exact same include guard #define names
  48279. + * as asm/posix_types.h. This will avoid gratuitous conflicts
  48280. + * with the posix_types.h kernel header, and will ensure that
  48281. + * our private content, and not the kernel header, will win.
  48282. + * -Erik
  48283. + *
  48284. + * Update: ARC Linux 3.2 ABI change - asm-generic/posix_types.h used now.
  48285. + * for which ARCH wrapper (asm/posix_types.h) is generated, so need to use
  48286. + * the asm-generic file's gaurd.
  48287. + *
  48288. + * Based on asm-generic/stat.h
  48289. + */
  48290. +
  48291. +#ifndef __ASM_GENERIC_POSIX_TYPES_H
  48292. +#define __ASM_GENERIC_POSIX_TYPES_H
  48293. +
  48294. +typedef unsigned long __kernel_dev_t;
  48295. +typedef unsigned long __kernel_ino_t;
  48296. +typedef unsigned int __kernel_mode_t;
  48297. +typedef unsigned int __kernel_nlink_t;
  48298. +typedef long __kernel_off_t;
  48299. +typedef int __kernel_pid_t;
  48300. +typedef int __kernel_ipc_pid_t;
  48301. +typedef unsigned int __kernel_uid_t;
  48302. +typedef unsigned int __kernel_gid_t;
  48303. +typedef unsigned int __kernel_size_t;
  48304. +typedef int __kernel_ssize_t;
  48305. +typedef int __kernel_ptrdiff_t;
  48306. +typedef long __kernel_time_t;
  48307. +typedef long __kernel_suseconds_t;
  48308. +typedef long __kernel_clock_t;
  48309. +typedef int __kernel_daddr_t;
  48310. +typedef char * __kernel_caddr_t;
  48311. +typedef unsigned short __kernel_uid16_t;
  48312. +typedef unsigned short __kernel_gid16_t;
  48313. +typedef __kernel_uid_t __kernel_uid32_t;
  48314. +typedef __kernel_gid_t __kernel_gid32_t;
  48315. +typedef __kernel_uid_t __kernel_old_uid_t;
  48316. +typedef __kernel_gid_t __kernel_old_gid_t;
  48317. +typedef long long __kernel_loff_t;
  48318. +typedef unsigned int __kernel_old_dev_t;
  48319. +typedef long __kernel_long_t;
  48320. +typedef unsigned long __kernel_ulong_t;
  48321. +
  48322. +typedef struct {
  48323. +#ifdef __USE_ALL
  48324. + int val[2];
  48325. +#else
  48326. + int __val[2];
  48327. +#endif
  48328. +} __kernel_fsid_t;
  48329. +
  48330. +#endif /* _ASM_ARC_POSIX_TYPES_H */
  48331. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/setjmp.h uClibc-git/libc/sysdeps/linux/arc/bits/setjmp.h
  48332. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100
  48333. +++ uClibc-git/libc/sysdeps/linux/arc/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  48334. @@ -0,0 +1,16 @@
  48335. +/*
  48336. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48337. + *
  48338. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48339. + */
  48340. +
  48341. +#ifndef _BITS_SETJMP_H
  48342. +#define _BITS_SETJMP_H 1
  48343. +
  48344. +#if !defined _SETJMP_H && !defined _PTHREAD_H
  48345. +# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  48346. +#endif
  48347. +
  48348. +typedef int __jmp_buf[13+1+1+1]; /*r13-r25, fp, sp, blink */
  48349. +
  48350. +#endif
  48351. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/arc/bits/sigcontextinfo.h
  48352. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100
  48353. +++ uClibc-git/libc/sysdeps/linux/arc/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  48354. @@ -0,0 +1,15 @@
  48355. +/*
  48356. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48357. + *
  48358. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48359. + */
  48360. +
  48361. +#include <features.h>
  48362. +#define SIGCONTEXT struct sigcontext *
  48363. +#define SIGCONTEXT_EXTRA_ARGS
  48364. +
  48365. +#define GET_PC(ctx) ((void *) ctx->regs.scratch.ret)
  48366. +#define GET_FRAME(ctx) ((void *) ctx->regs.scratch.fp)
  48367. +#define GET_STACK(ctx) ((void *) ctx->regs.scratch.sp)
  48368. +#define CALL_SIGHANDLER(handler, signo, ctx) \
  48369. + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
  48370. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/arc/bits/stackinfo.h
  48371. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/stackinfo.h 1970-01-01 01:00:00.000000000 +0100
  48372. +++ uClibc-git/libc/sysdeps/linux/arc/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  48373. @@ -0,0 +1,13 @@
  48374. +/*
  48375. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48376. + *
  48377. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48378. + */
  48379. +
  48380. +#ifndef _STACKINFO_H
  48381. +#define _STACKINFO_H 1
  48382. +
  48383. +/* On ARC, the stack grows down. */
  48384. +#define _STACK_GROWS_DOWN 1
  48385. +
  48386. +#endif /* stackinfo.h */
  48387. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/syscalls.h uClibc-git/libc/sysdeps/linux/arc/bits/syscalls.h
  48388. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/syscalls.h 1970-01-01 01:00:00.000000000 +0100
  48389. +++ uClibc-git/libc/sysdeps/linux/arc/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  48390. @@ -0,0 +1,192 @@
  48391. +/*
  48392. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48393. + *
  48394. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48395. + *
  48396. + */
  48397. +#ifndef _BITS_SYSCALLS_H
  48398. +#define _BITS_SYSCALLS_H
  48399. +#ifndef _SYSCALL_H
  48400. +#error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
  48401. +#endif
  48402. +
  48403. +#ifndef __ASSEMBLER__
  48404. +
  48405. +#include <errno.h>
  48406. +
  48407. +/*
  48408. + * Fine tuned code for errno handling in syscall wrappers.
  48409. + *
  48410. + * 1. __syscall_error(raw_syscall_ret_val) is used to set the errno (vs.
  48411. + * the typical __set_errno). This helps elide the generated code for
  48412. + * GOT fetch for __errno_location pointer etc, in each wrapper.
  48413. + *
  48414. + * 2. The call to above is also disguised in inline asm. This elides
  48415. + * unconditional save/restore of a few callee regs which gcc almost
  48416. + * always generates if the call is exposed
  48417. + *
  48418. + * 3. The function can't be hidden because wrappers from librt et all also
  48419. + * call it. However hidden is not really needed to bypass PLT for
  48420. + * intra-libc calls as the branch insn w/o @plt is sufficient.
  48421. + */
  48422. +
  48423. +#ifdef IS_IN_rtld
  48424. +/* ldso doesn't have real errno */
  48425. +#define ERRNO_ERRANDS(_sys_result)
  48426. +#else /* !IS_IN_rtld */
  48427. +extern int __syscall_error (int);
  48428. +#ifndef IS_IN_libc
  48429. +/* Inter-libc callers use PLT */
  48430. +#define CALL_ERRNO_SETTER "bl __syscall_error@plt \n\t"
  48431. +#else
  48432. +/* intra-libc callers, despite PIC can bypass PLT */
  48433. +#define CALL_ERRNO_SETTER "bl __syscall_error \n\t"
  48434. +#endif
  48435. +
  48436. +#define ERRNO_ERRANDS(_sys_result) \
  48437. + __asm__ volatile ( \
  48438. + "st.a blink, [sp, -4] \n\t" \
  48439. + CALL_ERRNO_SETTER \
  48440. + "ld.ab blink, [sp, 4] \n\t" \
  48441. + :"+r" (_sys_result) \
  48442. + : \
  48443. + :"r1","r2","r3","r4","r5","r6", \
  48444. + "r7","r8","r9","r10","r11","r12" \
  48445. + );
  48446. +
  48447. +#endif /* IS_IN_rtld */
  48448. +
  48449. +/* Invoke the syscall and return unprocessed kernel status */
  48450. +#define INTERNAL_SYSCALL(nm, err, nr, args...) \
  48451. + INTERNAL_SYSCALL_NCS(SYS_ify (nm), err, nr, args)
  48452. +
  48453. +/* -1 to -1023 as valid error values will suffice for some time */
  48454. +#define INTERNAL_SYSCALL_ERROR_P(val, err) \
  48455. + ((unsigned int) (val) > (unsigned int) -1024)
  48456. +
  48457. +/*
  48458. + * Standard sycall wrapper:
  48459. + * -"const" syscall number @nm, sets errno, return success/error-codes
  48460. + */
  48461. +#define INLINE_SYSCALL(nm, nr_args, args...) \
  48462. +({ \
  48463. + register int __res __asm__("r0"); \
  48464. + __res = INTERNAL_SYSCALL(nm, , nr_args, args); \
  48465. + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \
  48466. + { \
  48467. + ERRNO_ERRANDS(__res); \
  48468. + } \
  48469. + __res; \
  48470. +})
  48471. +
  48472. +/* Non const syscall number @nm
  48473. + * Ideally this could be folded within INLINE_SYSCALL with
  48474. + * __builtin_constant_p in INTERNAL_SYSCALL but that fails for syscall.c
  48475. + */
  48476. +#define INLINE_SYSCALL_NCS(nm, nr_args, args...) \
  48477. +({ \
  48478. + register int __res __asm__("r0"); \
  48479. + __res = INTERNAL_SYSCALL_NCS(nm, , nr_args, args); \
  48480. + if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P ((__res), ), 0)) \
  48481. + { \
  48482. + ERRNO_ERRANDS(__res); \
  48483. + } \
  48484. + __res; \
  48485. +})
  48486. +
  48487. +#define INLINE_SYSCALL_NOERR(name, nr, args...) \
  48488. + ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args);\
  48489. + (int) _inline_sys_result; })
  48490. +
  48491. +/*-------------------------------------------------------------------------
  48492. + * Mechanics of Trap - specific to ARC700
  48493. + *
  48494. + * Note the memory clobber is not strictly needed for intended semantics of
  48495. + * the inline asm. However some of the cases, such as old-style 6 arg mmap
  48496. + * gcc was generating code for inline syscall ahead of buffer packing needed
  48497. + * for syscall itself.
  48498. + *-------------------------------------------------------------------------*/
  48499. +
  48500. +#define ARC_TRAP_INSN "trap0 \n\t"
  48501. +
  48502. +#define INTERNAL_SYSCALL_NCS(nm, err, nr_args, args...) \
  48503. +({ \
  48504. + /* Per ABI, r0 is 1st arg and return reg */ \
  48505. + register int __ret __asm__("r0"); \
  48506. + register int _sys_num __asm__("r8"); \
  48507. + \
  48508. + LOAD_ARGS_##nr_args (nm, args) \
  48509. + \
  48510. + __asm__ volatile ( \
  48511. + ARC_TRAP_INSN \
  48512. + : "+r" (__ret) \
  48513. + : "r"(_sys_num) ASM_ARGS_##nr_args \
  48514. + : "memory"); \
  48515. + \
  48516. + __ret; \
  48517. +})
  48518. +
  48519. +/* Macros for setting up inline __asm__ input regs */
  48520. +#define ASM_ARGS_0
  48521. +#define ASM_ARGS_1 ASM_ARGS_0, "r" (__ret)
  48522. +#define ASM_ARGS_2 ASM_ARGS_1, "r" (_arg2)
  48523. +#define ASM_ARGS_3 ASM_ARGS_2, "r" (_arg3)
  48524. +#define ASM_ARGS_4 ASM_ARGS_3, "r" (_arg4)
  48525. +#define ASM_ARGS_5 ASM_ARGS_4, "r" (_arg5)
  48526. +#define ASM_ARGS_6 ASM_ARGS_5, "r" (_arg6)
  48527. +#define ASM_ARGS_7 ASM_ARGS_6, "r" (_arg7)
  48528. +
  48529. +/* Macros for converting sys-call wrapper args into sys call args */
  48530. +#define LOAD_ARGS_0(nm, arg) \
  48531. + _sys_num = (int) (nm); \
  48532. +
  48533. +#define LOAD_ARGS_1(nm, arg1) \
  48534. + __ret = (int) (arg1); \
  48535. + LOAD_ARGS_0 (nm, arg1)
  48536. +
  48537. +/*
  48538. + * Note that the use of _tmpX might look superflous, however it is needed
  48539. + * to ensure that register variables are not clobbered if arg happens to be
  48540. + * a function call itself. e.g. sched_setaffinity() calling getpid() for arg2
  48541. + *
  48542. + * Also this specific order of recursive calling is important to segregate
  48543. + * the tmp args evaluation (function call case described above) and assigment
  48544. + * of register variables
  48545. + */
  48546. +#define LOAD_ARGS_2(nm, arg1, arg2) \
  48547. + int _tmp2 = (int) (arg2); \
  48548. + LOAD_ARGS_1 (nm, arg1) \
  48549. + register int _arg2 __asm__ ("r1") = _tmp2;
  48550. +
  48551. +#define LOAD_ARGS_3(nm, arg1, arg2, arg3) \
  48552. + int _tmp3 = (int) (arg3); \
  48553. + LOAD_ARGS_2 (nm, arg1, arg2) \
  48554. + register int _arg3 __asm__ ("r2") = _tmp3;
  48555. +
  48556. +#define LOAD_ARGS_4(nm, arg1, arg2, arg3, arg4) \
  48557. + int _tmp4 = (int) (arg4); \
  48558. + LOAD_ARGS_3 (nm, arg1, arg2, arg3) \
  48559. + register int _arg4 __asm__ ("r3") = _tmp4;
  48560. +
  48561. +#define LOAD_ARGS_5(nm, arg1, arg2, arg3, arg4, arg5) \
  48562. + int _tmp5 = (int) (arg5); \
  48563. + LOAD_ARGS_4 (nm, arg1, arg2, arg3, arg4) \
  48564. + register int _arg5 __asm__ ("r4") = _tmp5;
  48565. +
  48566. +#define LOAD_ARGS_6(nm, arg1, arg2, arg3, arg4, arg5, arg6) \
  48567. + int _tmp6 = (int) (arg6); \
  48568. + LOAD_ARGS_5 (nm, arg1, arg2, arg3, arg4, arg5) \
  48569. + register int _arg6 __asm__ ("r5") = _tmp6;
  48570. +
  48571. +#define LOAD_ARGS_7(nm, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
  48572. + int _tmp7 = (int) (arg7); \
  48573. + LOAD_ARGS_6 (nm, arg1, arg2, arg3, arg4, arg5, arg6) \
  48574. + register int _arg7 __asm__ ("r6") = _tmp7;
  48575. +
  48576. +#else
  48577. +
  48578. +#define ARC_TRAP_INSN trap0
  48579. +
  48580. +#endif /* __ASSEMBLER__ */
  48581. +
  48582. +#endif /* _BITS_SYSCALLS_H */
  48583. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h
  48584. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h 1970-01-01 01:00:00.000000000 +0100
  48585. +++ uClibc-git/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  48586. @@ -0,0 +1,53 @@
  48587. +/*
  48588. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48589. + *
  48590. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48591. + */
  48592. +
  48593. +/*
  48594. + * Track misc arch-specific features that aren't config options
  48595. + */
  48596. +
  48597. +#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
  48598. +#define _BITS_UCLIBC_ARCH_FEATURES_H
  48599. +
  48600. +/* instruction used when calling abort() to kill yourself */
  48601. +#define __UCLIBC_ABORT_INSTRUCTION__ "flag 0"
  48602. +
  48603. +/* can your target use syscall6() for mmap ? */
  48604. +#undef __UCLIBC_MMAP_HAS_6_ARGS__
  48605. +
  48606. +/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  48607. +#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  48608. +
  48609. +/* does your target have a broken create_module() ? */
  48610. +#undef __UCLIBC_BROKEN_CREATE_MODULE__
  48611. +
  48612. +/* does your target have to worry about older [gs]etrlimit() ? */
  48613. +#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
  48614. +
  48615. +/* does your target have an asm .set ? */
  48616. +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
  48617. +
  48618. +/* define if target doesn't like .global */
  48619. +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
  48620. +
  48621. +/* define if target supports .weak */
  48622. +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
  48623. +
  48624. +/* define if target supports .weakext */
  48625. +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
  48626. +
  48627. +/* needed probably only for ppc64 */
  48628. +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
  48629. +
  48630. +/* define if target supports CFI pseudo ops */
  48631. +#undef __UCLIBC_HAVE_ASM_CFI_DIRECTIVES__
  48632. +
  48633. +/* define if target supports IEEE signed zero floats */
  48634. +#define __UCLIBC_HAVE_SIGNED_ZERO__
  48635. +
  48636. +/* The default ';' is a comment on ARC. */
  48637. +#define __UCLIBC_ASM_LINE_SEP__ `
  48638. +
  48639. +#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
  48640. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/arc/bits/uClibc_page.h
  48641. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/uClibc_page.h 1970-01-01 01:00:00.000000000 +0100
  48642. +++ uClibc-git/libc/sysdeps/linux/arc/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  48643. @@ -0,0 +1,26 @@
  48644. +/*
  48645. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48646. + *
  48647. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48648. + */
  48649. +
  48650. +#ifndef _UCLIBC_PAGE_H
  48651. +#define _UCLIBC_PAGE_H
  48652. +
  48653. +/*
  48654. + * ARC700/linux supports 4k, 8k, 16k pages (build time).
  48655. + * We rely on the kernel exported header (aka uapi headers since 3.8)
  48656. + * for PAGE_SIZE and friends. This avoids hand-editing here when building
  48657. + * toolchain.
  48658. + *
  48659. + * Although uClibc determines page size dynamically, from kernel's auxv which
  48660. + * ARC Linux does pass, still the generic code needs a fall back
  48661. + * _dl_pagesize = auxvt[AT_PAGESZ].a_un.a_val ? : PAGE_SIZE
  48662. + *
  48663. + */
  48664. +#include <asm/page.h>
  48665. +
  48666. +/* TBD: fix this with runtime value for a PAGE_SIZE agnostic uClibc */
  48667. +#define MMAP2_PAGE_SHIFT PAGE_SHIFT
  48668. +
  48669. +#endif /* _UCLIBC_PAGE_H */
  48670. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/wordsize.h uClibc-git/libc/sysdeps/linux/arc/bits/wordsize.h
  48671. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bits/wordsize.h 1970-01-01 01:00:00.000000000 +0100
  48672. +++ uClibc-git/libc/sysdeps/linux/arc/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  48673. @@ -0,0 +1,7 @@
  48674. +/*
  48675. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48676. + *
  48677. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48678. + */
  48679. +
  48680. +#define __WORDSIZE 32
  48681. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/arc/bsd-_setjmp.S
  48682. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-_setjmp.S 1970-01-01 01:00:00.000000000 +0100
  48683. +++ uClibc-git/libc/sysdeps/linux/arc/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  48684. @@ -0,0 +1,20 @@
  48685. +/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. ARC version.
  48686. + *
  48687. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48688. + *
  48689. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48690. + */
  48691. +
  48692. +/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  48693. + We cannot do it in C because it must be a tail-call, so frame-unwinding
  48694. + in setjmp doesn't clobber the state restored by longjmp. */
  48695. +
  48696. +#include <sysdep.h>
  48697. +
  48698. +;@ r0 = jump buffer into which regs will be saved
  48699. +
  48700. +ENTRY(_setjmp)
  48701. + b.d __sigsetjmp
  48702. + mov r1, 0 ; don't save signals
  48703. +END(_setjmp)
  48704. +libc_hidden_def(_setjmp)
  48705. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/arc/bsd-setjmp.S
  48706. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/bsd-setjmp.S 1970-01-01 01:00:00.000000000 +0100
  48707. +++ uClibc-git/libc/sysdeps/linux/arc/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  48708. @@ -0,0 +1,20 @@
  48709. +/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. ARC version.
  48710. + *
  48711. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48712. + *
  48713. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48714. + */
  48715. +
  48716. +/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  48717. + We cannot do it in C because it must be a tail-call, so frame-unwinding
  48718. + in setjmp doesn't clobber the state restored by longjmp. */
  48719. +
  48720. +#include <sysdep.h>
  48721. +
  48722. +;@ r0 = jump buffer into which regs will be saved
  48723. +
  48724. +ENTRY(setjmp)
  48725. + b.d __sigsetjmp
  48726. + mov r1, 1 ; save signals
  48727. +END(setjmp)
  48728. +libc_hidden_def(setjmp)
  48729. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/cacheflush.c uClibc-git/libc/sysdeps/linux/arc/cacheflush.c
  48730. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/cacheflush.c 1970-01-01 01:00:00.000000000 +0100
  48731. +++ uClibc-git/libc/sysdeps/linux/arc/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  48732. @@ -0,0 +1,11 @@
  48733. +/* cacheflush syscall for ARC
  48734. + *
  48735. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48736. + *
  48737. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48738. + */
  48739. +
  48740. +#include <sys/syscall.h>
  48741. +#include <sys/cachectl.h>
  48742. +
  48743. +_syscall3(int, cacheflush, void *, addr, int, nbytes, int, op)
  48744. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/clone.S uClibc-git/libc/sysdeps/linux/arc/clone.S
  48745. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/clone.S 1970-01-01 01:00:00.000000000 +0100
  48746. +++ uClibc-git/libc/sysdeps/linux/arc/clone.S 2014-02-03 12:32:56.000000000 +0100
  48747. @@ -0,0 +1,71 @@
  48748. +/*
  48749. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48750. + *
  48751. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48752. + */
  48753. +
  48754. +#include <asm/errno.h>
  48755. +#include <sys/syscall.h>
  48756. +#include <sysdep.h>
  48757. +
  48758. +; Per man, libc clone( ) is as follows
  48759. +;
  48760. +; int clone(int (*fn)(void *), void *child_stack,
  48761. +; int flags, void *arg, ...
  48762. +; /* pid_t *ptid, struct user_desc *tls, pid_t *ctid */);
  48763. +;
  48764. +; NOTE: I'm assuming that the last 3 args are NOT var-args and in case all
  48765. +; 3 are not relevant, caller will nevertheless pass those as NULL.
  48766. +; Current (Jul 2012) upstream powerpc/clone.S assumes similarly.
  48767. +; Our LTP (from 2007) doesn't seem to have tests to prove otherwise
  48768. +
  48769. +; clone syscall in kernel
  48770. +;
  48771. +; int sys_clone(unsigned long clone_flags, unsigned long newsp,
  48772. +; int __user *parent_tidptr, void *tls,
  48773. +; int __user *child_tidptr)
  48774. +
  48775. +
  48776. +ENTRY(clone)
  48777. + cmp r0, 0 ; @fn can't be NULL
  48778. + cmp.ne r1, 0 ; @child_stack can't be NULL
  48779. + bz .L__sys_err
  48780. +
  48781. + ; @fn and @args needed after the syscall for child
  48782. + ; However r3 containing @arg will be clobbered BEFORE syscall
  48783. + ; r0 containg @fn will be clobbered AFTER syscall (with ret val)
  48784. + mov r10, r0
  48785. + mov r11, r3
  48786. +
  48787. + ; adjust libc args for syscall
  48788. + mov r0, r2 ; libc @flags is 1st syscall arg
  48789. + mov r2, r4 ; libc @ptid
  48790. + mov r3, r5 ; libc @tls
  48791. + mov r4, r6 ; libc @ctid
  48792. + mov r8, __NR_clone
  48793. + ARC_TRAP_INSN
  48794. +
  48795. + cmp r0, 0 ; return code : 0 new process, !0 parent
  48796. + blt .L__sys_err2 ; < 0 (signed) error
  48797. + jnz [blink] ; Parent returns
  48798. +
  48799. + ; child jumps off to @fn with @arg as argument
  48800. + j.d [r10]
  48801. + mov r0, r11
  48802. +
  48803. + ; falls thru to _exit() with result from @fn (already in r0)
  48804. + b HIDDEN_JUMPTARGET(_exit)
  48805. +
  48806. +.L__sys_err:
  48807. + mov r0, -EINVAL
  48808. +.L__sys_err2:
  48809. + ; (1) No need to make -ve kernel error code as positive errno
  48810. + ; __syscall_error expects the -ve error code returned by kernel
  48811. + ; (2) r0 still had orig -ve kernel error code
  48812. + ; (3) Tail call to __syscall_error so we dont have to come back
  48813. + ; here hence instead of jmp-n-link (reg push/pop) we do jmp
  48814. + ; (4) No need to route __syscall_error via PLT, B is inherently
  48815. + ; position independent
  48816. + b __syscall_error
  48817. +END(clone)
  48818. +libc_hidden_def(clone)
  48819. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/crt1.S uClibc-git/libc/sysdeps/linux/arc/crt1.S
  48820. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/crt1.S 1970-01-01 01:00:00.000000000 +0100
  48821. +++ uClibc-git/libc/sysdeps/linux/arc/crt1.S 2014-02-03 12:32:56.000000000 +0100
  48822. @@ -0,0 +1,57 @@
  48823. +/*
  48824. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48825. + *
  48826. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48827. + */
  48828. +
  48829. +#include <features.h>
  48830. +
  48831. +.text
  48832. +
  48833. +#ifndef __UCLIBC_CTOR_DTOR__
  48834. + .weak _init
  48835. + .weak _fini
  48836. +#endif
  48837. +
  48838. +/* Stick in a dummy reference to main(), so that if an application
  48839. + * is linking when the main() function is in a static library (.a)
  48840. + * we can be sure that main() actually gets linked in
  48841. + */
  48842. + .type main,@function
  48843. + .type _main,@function
  48844. +
  48845. +
  48846. +/* When we enter this piece of code, the program stack looks like this:
  48847. + argc argument counter (integer)
  48848. + argv[0] program name (pointer)
  48849. + argv[1...N] program args (pointers)
  48850. + argv[argc-1] end of args (integer)
  48851. + NULL
  48852. + env[0...N] environment variables (pointers)
  48853. + NULL
  48854. +*/
  48855. + .text
  48856. + .align 4
  48857. + .global __start
  48858. + .hidden __start
  48859. + .type __start,@function
  48860. +__start:
  48861. + mov fp, 0
  48862. + ld_s r1, [sp] ; argc
  48863. +
  48864. + mov_s r5, r0 ; rltd_fini
  48865. + add_s r2, sp, 4 ; argv
  48866. +
  48867. + mov_s r0, main
  48868. + mov_s r3, _init
  48869. + mov r4, _fini
  48870. +
  48871. + and sp, sp, -8
  48872. + mov r6, sp
  48873. +
  48874. + /* __uClibc_main (main, argc, argv, init, fini, rtld_fini, stack_end) */
  48875. + bl __uClibc_main
  48876. +
  48877. + /* Should never get here.... */
  48878. + flag 1
  48879. +.size __start,.-__start
  48880. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/crti.S uClibc-git/libc/sysdeps/linux/arc/crti.S
  48881. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/crti.S 1970-01-01 01:00:00.000000000 +0100
  48882. +++ uClibc-git/libc/sysdeps/linux/arc/crti.S 2014-02-03 12:32:56.000000000 +0100
  48883. @@ -0,0 +1,27 @@
  48884. +/*
  48885. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48886. + *
  48887. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48888. + */
  48889. +
  48890. +___gnu_compiled_c:
  48891. +
  48892. + .section .init
  48893. + .align 4
  48894. + .global _init
  48895. + .type _init,@function
  48896. +_init:
  48897. + st.a blink,[sp,-4]
  48898. + st.a fp,[sp,-4]
  48899. + mov fp,sp
  48900. +
  48901. +
  48902. + .section .fini
  48903. + .align 4
  48904. + .global _fini
  48905. + .type _fini,@function
  48906. +_fini:
  48907. + st.a blink,[sp,-4]
  48908. + st.a fp,[sp,-4]
  48909. + mov fp,sp
  48910. + .align 4
  48911. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/crtn.S uClibc-git/libc/sysdeps/linux/arc/crtn.S
  48912. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/crtn.S 1970-01-01 01:00:00.000000000 +0100
  48913. +++ uClibc-git/libc/sysdeps/linux/arc/crtn.S 2014-02-03 12:32:56.000000000 +0100
  48914. @@ -0,0 +1,29 @@
  48915. +/*
  48916. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48917. + *
  48918. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48919. + */
  48920. +
  48921. +___gnu_compiled_c:
  48922. +
  48923. + .section .init
  48924. + .align 4
  48925. + .global _init
  48926. + .type _init,@function
  48927. + ; EPILOGUE
  48928. + ld.ab fp,[sp,4]
  48929. + ld blink,[sp,0]
  48930. + j.d [blink]
  48931. + add sp,sp,4
  48932. +; .size _init,.-_init
  48933. +
  48934. + .section .fini
  48935. + .align 4
  48936. + .global _fini
  48937. + .type _fini,@function
  48938. + ; EPILOGUE
  48939. + ld.ab fp,[sp,4]
  48940. + ld blink,[sp,0]
  48941. + j.d [blink]
  48942. + add sp,sp,4
  48943. +; .size _fini,.-_fini
  48944. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/arc/jmpbuf-offsets.h
  48945. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  48946. +++ uClibc-git/libc/sysdeps/linux/arc/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  48947. @@ -0,0 +1,7 @@
  48948. +/*
  48949. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48950. + *
  48951. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48952. + */
  48953. +
  48954. +#define __JMP_BUF_SP (13+1)
  48955. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/arc/jmpbuf-unwind.h
  48956. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  48957. +++ uClibc-git/libc/sysdeps/linux/arc/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  48958. @@ -0,0 +1,13 @@
  48959. +/*
  48960. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48961. + *
  48962. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48963. + */
  48964. +
  48965. +#include <setjmp.h>
  48966. +#include <jmpbuf-offsets.h>
  48967. +
  48968. +/* Test if longjmp to JMPBUF would unwind the frame
  48969. + containing a local variable at ADDRESS. */
  48970. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  48971. + ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
  48972. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/__longjmp.S uClibc-git/libc/sysdeps/linux/arc/__longjmp.S
  48973. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/__longjmp.S 1970-01-01 01:00:00.000000000 +0100
  48974. +++ uClibc-git/libc/sysdeps/linux/arc/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  48975. @@ -0,0 +1,38 @@
  48976. +/*
  48977. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  48978. + *
  48979. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  48980. + */
  48981. +
  48982. +#include <sysdep.h>
  48983. +
  48984. +;@ r0 = jump buffer from which regs will be restored
  48985. +;@ r1 = value that setjmp( ) will return due to this longjmp
  48986. +
  48987. +ENTRY(__longjmp)
  48988. +
  48989. + ld_s r13, [r0]
  48990. + ld_s r14, [r0,4]
  48991. + ld r15, [r0,8]
  48992. + ld r16, [r0,12]
  48993. + ld r17, [r0,16]
  48994. + ld r18, [r0,20]
  48995. + ld r19, [r0,24]
  48996. + ld r20, [r0,28]
  48997. + ld r21, [r0,32]
  48998. + ld r22, [r0,36]
  48999. + ld r23, [r0,40]
  49000. + ld r24, [r0,44]
  49001. + ld r25, [r0,48]
  49002. +
  49003. + ld blink, [r0,60] ; load it early enough to not stall the pipeline
  49004. + ld fp, [r0,52]
  49005. + ld sp, [r0,56]
  49006. +
  49007. + mov.f r0, r1 ; get the setjmp return value(due to longjmp) in place
  49008. +
  49009. + j.d [blink] ; to caller of setjmp location, right after the call
  49010. + mov.z r0, 1 ; can't let setjmp return 0 when it is due to longjmp
  49011. +
  49012. +END(__longjmp)
  49013. +libc_hidden_def(__longjmp)
  49014. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile uClibc-git/libc/sysdeps/linux/arc/Makefile
  49015. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile 1970-01-01 01:00:00.000000000 +0100
  49016. +++ uClibc-git/libc/sysdeps/linux/arc/Makefile 2014-02-03 12:32:56.000000000 +0100
  49017. @@ -0,0 +1,13 @@
  49018. +# Makefile for uClibc
  49019. +#
  49020. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  49021. +#
  49022. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49023. +#
  49024. +
  49025. +top_srcdir=../../../../
  49026. +top_builddir=../../../../
  49027. +all: objs
  49028. +include $(top_builddir)Rules.mak
  49029. +include Makefile.arch
  49030. +include $(top_srcdir)Makerules
  49031. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile.arch uClibc-git/libc/sysdeps/linux/arc/Makefile.arch
  49032. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  49033. +++ uClibc-git/libc/sysdeps/linux/arc/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  49034. @@ -0,0 +1,11 @@
  49035. +# Makefile for uClibc
  49036. +#
  49037. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  49038. +#
  49039. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49040. +#
  49041. +
  49042. +CSRC-y := syscall.c sigaction.c __syscall_error.c cacheflush.c
  49043. +
  49044. +SSRC-y := sigrestorer.S __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  49045. + vfork.S clone.S
  49046. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/setjmp.S uClibc-git/libc/sysdeps/linux/arc/setjmp.S
  49047. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/setjmp.S 1970-01-01 01:00:00.000000000 +0100
  49048. +++ uClibc-git/libc/sysdeps/linux/arc/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  49049. @@ -0,0 +1,39 @@
  49050. +/*
  49051. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49052. + *
  49053. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49054. + */
  49055. +
  49056. +#include <sysdep.h>
  49057. +
  49058. +;@ r0 = jump buffer into which regs will be saved
  49059. +;@ r1 = do we need to save signals
  49060. +
  49061. +ENTRY(__sigsetjmp)
  49062. +
  49063. + st_s r13, [r0]
  49064. + st_s r14, [r0,4]
  49065. + st r15, [r0,8]
  49066. + st r16, [r0,12]
  49067. + st r17, [r0,16]
  49068. + st r18, [r0,20]
  49069. + st r19, [r0,24]
  49070. + st r20, [r0,28]
  49071. + st r21, [r0,32]
  49072. + st r22, [r0,36]
  49073. + st r23, [r0,40]
  49074. + st r24, [r0,44]
  49075. + st r25, [r0,48]
  49076. + st fp, [r0,52]
  49077. + st sp, [r0,56]
  49078. +
  49079. + ; make a note of where longjmp will return to.
  49080. + ; that will be right next to this setjmp call-site which will be
  49081. + ; contained in blink, since "C" caller of this routine will do
  49082. + ; a branch-n-link
  49083. +
  49084. + st blink, [r0,60]
  49085. + b __sigjmp_save
  49086. +
  49087. +END(__sigsetjmp)
  49088. +libc_hidden_def(__sigsetjmp)
  49089. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigaction.c uClibc-git/libc/sysdeps/linux/arc/sigaction.c
  49090. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigaction.c 1970-01-01 01:00:00.000000000 +0100
  49091. +++ uClibc-git/libc/sysdeps/linux/arc/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  49092. @@ -0,0 +1,47 @@
  49093. +/*
  49094. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49095. + *
  49096. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49097. + */
  49098. +
  49099. +#include <errno.h>
  49100. +#include <signal.h>
  49101. +#include <string.h>
  49102. +#include <sys/syscall.h>
  49103. +#include <bits/kernel_sigaction.h>
  49104. +
  49105. +extern void __default_rt_sa_restorer(void);
  49106. +//libc_hidden_proto(__default_rt_sa_restorer);
  49107. +
  49108. +#define SA_RESTORER 0x04000000
  49109. +
  49110. +/* If @act is not NULL, change the action for @sig to @act.
  49111. + If @oact is not NULL, put the old action for @sig in @oact. */
  49112. +int
  49113. +__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
  49114. +{
  49115. + struct sigaction kact;
  49116. +
  49117. + /* !act means caller only wants to know @oact
  49118. + * Hence only otherwise, do SA_RESTORER stuff
  49119. + *
  49120. + * For the normal/default cases (user not providing SA_RESTORER) use
  49121. + * a real sigreturn stub to avoid kernel synthesizing one on user stack
  49122. + * at runtime, which needs PTE permissions update (hence TLB entry
  49123. + * update) and costly cache line flushes for code modification
  49124. + */
  49125. + if (act && !(act->sa_flags & SA_RESTORER)) {
  49126. + memcpy(&kact, act, sizeof(kact));
  49127. + kact.sa_restorer = __default_rt_sa_restorer;
  49128. + kact.sa_flags |= SA_RESTORER;
  49129. +
  49130. + act = &kact;
  49131. + }
  49132. +
  49133. + return __syscall_rt_sigaction(sig, act, oact, sizeof(act->sa_mask));
  49134. +}
  49135. +
  49136. +#ifndef LIBC_SIGACTION
  49137. +weak_alias(__libc_sigaction,sigaction)
  49138. +libc_hidden_weak(sigaction)
  49139. +#endif
  49140. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigrestorer.S uClibc-git/libc/sysdeps/linux/arc/sigrestorer.S
  49141. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sigrestorer.S 1970-01-01 01:00:00.000000000 +0100
  49142. +++ uClibc-git/libc/sysdeps/linux/arc/sigrestorer.S 2014-02-03 12:32:56.000000000 +0100
  49143. @@ -0,0 +1,21 @@
  49144. +/*
  49145. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49146. + *
  49147. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49148. + */
  49149. +
  49150. +#include <sysdep.h>
  49151. +#include <sys/syscall.h>
  49152. +
  49153. +/*
  49154. + * Provide a real sigreturn stub to avoid kernel synthesizing one
  49155. + * on user stack at runtime, which needs PTE permissions update
  49156. + * (hence TLB entry update) and costly cache line flushes for
  49157. + * code modification
  49158. + */
  49159. +
  49160. +ENTRY(__default_rt_sa_restorer)
  49161. + mov r8, __NR_rt_sigreturn
  49162. + ARC_TRAP_INSN
  49163. +END(__default_rt_sa_restorer)
  49164. +libc_hidden_def(__default_rt_sa_restorer)
  49165. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/cachectl.h uClibc-git/libc/sysdeps/linux/arc/sys/cachectl.h
  49166. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/cachectl.h 1970-01-01 01:00:00.000000000 +0100
  49167. +++ uClibc-git/libc/sysdeps/linux/arc/sys/cachectl.h 2014-02-03 12:32:56.000000000 +0100
  49168. @@ -0,0 +1,21 @@
  49169. +/*
  49170. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49171. + *
  49172. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49173. + */
  49174. +
  49175. +#ifndef _SYS_CACHECTL_H
  49176. +#define _SYS_CACHECTL_H 1
  49177. +
  49178. +/*
  49179. + * Get the kernel definition for the flag bits
  49180. + */
  49181. +#include <asm/cachectl.h>
  49182. +
  49183. +__BEGIN_DECLS
  49184. +
  49185. +extern int cacheflush(void *addr, int nbytes, int flags);
  49186. +
  49187. +__END_DECLS
  49188. +
  49189. +#endif /* sys/cachectl.h */
  49190. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/procfs.h uClibc-git/libc/sysdeps/linux/arc/sys/procfs.h
  49191. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/procfs.h 1970-01-01 01:00:00.000000000 +0100
  49192. +++ uClibc-git/libc/sysdeps/linux/arc/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  49193. @@ -0,0 +1,108 @@
  49194. +/*
  49195. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49196. + *
  49197. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49198. + */
  49199. +
  49200. +#ifndef _SYS_PROCFS_H
  49201. +#define _SYS_PROCFS_H 1
  49202. +
  49203. +/* This is somewhat modelled after the file of the same name on SVR4
  49204. + systems. It provides a definition of the core file format for ELF
  49205. + used on Linux. It doesn't have anything to do with the /proc file
  49206. + system, even though Linux has one.
  49207. +
  49208. + Anyway, the whole purpose of this file is for GDB and GDB only.
  49209. + Don't read too much into it. Don't use it for anything other than
  49210. + GDB unless you know what you are doing. */
  49211. +
  49212. +#include <features.h>
  49213. +#include <sys/time.h>
  49214. +#include <sys/types.h>
  49215. +#include <sys/user.h>
  49216. +
  49217. +__BEGIN_DECLS
  49218. +
  49219. +/* Type for a general-purpose register. */
  49220. +typedef unsigned long elf_greg_t;
  49221. +
  49222. +/* And the whole bunch of them. We could have used `struct
  49223. + user_regs' directly in the typedef, but tradition says that
  49224. + the register set is an array, which does have some peculiar
  49225. + semantics, so leave it that way. */
  49226. +#define ELF_NGREG 20
  49227. +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  49228. +
  49229. +/* Signal info. */
  49230. +struct elf_siginfo
  49231. + {
  49232. + int si_signo; /* Signal number. */
  49233. + int si_code; /* Extra code. */
  49234. + int si_errno; /* Errno. */
  49235. + };
  49236. +
  49237. +/* Definitions to generate Intel SVR4-like core files. These mostly
  49238. + have the same names as the SVR4 types with "elf_" tacked on the
  49239. + front to prevent clashes with Linux definitions, and the typedef
  49240. + forms have been avoided. This is mostly like the SVR4 structure,
  49241. + but more Linuxy, with things that Linux does not support and which
  49242. + GDB doesn't really use excluded. */
  49243. +
  49244. +struct elf_prstatus
  49245. + {
  49246. + struct elf_siginfo pr_info; /* Info associated with signal. */
  49247. + short int pr_cursig; /* Current signal. */
  49248. + unsigned long int pr_sigpend; /* Set of pending signals. */
  49249. + unsigned long int pr_sighold; /* Set of held signals. */
  49250. + __pid_t pr_pid;
  49251. + __pid_t pr_ppid;
  49252. + __pid_t pr_pgrp;
  49253. + __pid_t pr_sid;
  49254. + struct timeval pr_utime; /* User time. */
  49255. + struct timeval pr_stime; /* System time. */
  49256. + struct timeval pr_cutime; /* Cumulative user time. */
  49257. + struct timeval pr_cstime; /* Cumulative system time. */
  49258. + elf_gregset_t pr_reg; /* GP registers. */
  49259. + int pr_fpvalid; /* True if math copro being used. */
  49260. + };
  49261. +
  49262. +
  49263. +#define ELF_PRARGSZ (80) /* Number of chars for args. */
  49264. +
  49265. +struct elf_prpsinfo
  49266. + {
  49267. + char pr_state; /* Numeric process state. */
  49268. + char pr_sname; /* Char for pr_state. */
  49269. + char pr_zomb; /* Zombie. */
  49270. + char pr_nice; /* Nice val. */
  49271. + unsigned long int pr_flag; /* Flags. */
  49272. + unsigned short int pr_uid;
  49273. + unsigned short int pr_gid;
  49274. + int pr_pid, pr_ppid, pr_pgrp, pr_sid;
  49275. + /* Lots missing */
  49276. + char pr_fname[16]; /* Filename of executable. */
  49277. + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
  49278. + };
  49279. +
  49280. +/* The rest of this file provides the types for emulation of the
  49281. + Solaris <proc_service.h> interfaces that should be implemented by
  49282. + users of libthread_db. */
  49283. +
  49284. +/* Addresses. */
  49285. +typedef void *psaddr_t;
  49286. +
  49287. +/* Register sets. Linux has different names. */
  49288. +typedef elf_gregset_t prgregset_t;
  49289. +typedef elf_gregset_t prfpregset_t;
  49290. +
  49291. +/* We don't have any differences between processes and threads,
  49292. + therefore have only one PID type. */
  49293. +typedef __pid_t lwpid_t;
  49294. +
  49295. +/* Process status and info. In the end we do provide typedefs for them. */
  49296. +typedef struct elf_prstatus prstatus_t;
  49297. +typedef struct elf_prpsinfo prpsinfo_t;
  49298. +
  49299. +__END_DECLS
  49300. +
  49301. +#endif /* sys/procfs.h */
  49302. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/ucontext.h uClibc-git/libc/sysdeps/linux/arc/sys/ucontext.h
  49303. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/ucontext.h 1970-01-01 01:00:00.000000000 +0100
  49304. +++ uClibc-git/libc/sysdeps/linux/arc/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  49305. @@ -0,0 +1,22 @@
  49306. +/*
  49307. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49308. + *
  49309. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49310. + */
  49311. +
  49312. +#ifndef _SYS_UCONTEXT_H
  49313. +#define _SYS_UCONTEXT_H 1
  49314. +
  49315. +#include <features.h>
  49316. +#include <signal.h>
  49317. +#include <bits/sigcontext.h>
  49318. +
  49319. +typedef struct ucontext {
  49320. + unsigned long uc_flags;
  49321. + struct ucontext *uc_link;
  49322. + stack_t uc_stack;
  49323. + struct sigcontext uc_mcontext;
  49324. + sigset_t uc_sigmask; /* mask last for extensibility */
  49325. +} ucontext_t;
  49326. +
  49327. +#endif /* sys/ucontext.h */
  49328. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/user.h uClibc-git/libc/sysdeps/linux/arc/sys/user.h
  49329. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sys/user.h 1970-01-01 01:00:00.000000000 +0100
  49330. +++ uClibc-git/libc/sysdeps/linux/arc/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  49331. @@ -0,0 +1,23 @@
  49332. +/*
  49333. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49334. + *
  49335. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49336. + */
  49337. +
  49338. +#ifndef _SYS_USER_H
  49339. +#define _SYS_USER_H 1
  49340. +
  49341. +/* The whole purpose of this file is for GDB and GDB only. Don't read
  49342. + too much into it. Don't use it for anything other than GDB unless
  49343. + you know what you are doing. */
  49344. +
  49345. +
  49346. +/* Actually apps like strace also expect a struct user, so it's better to
  49347. + * have a dummy implementation
  49348. + */
  49349. +
  49350. +struct user {
  49351. + int dummy;
  49352. +};
  49353. +
  49354. +#endif /* sys/user.h */
  49355. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/syscall.c uClibc-git/libc/sysdeps/linux/arc/syscall.c
  49356. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/syscall.c 1970-01-01 01:00:00.000000000 +0100
  49357. +++ uClibc-git/libc/sysdeps/linux/arc/syscall.c 2014-02-03 12:32:56.000000000 +0100
  49358. @@ -0,0 +1,17 @@
  49359. +/*
  49360. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49361. + *
  49362. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49363. + */
  49364. +
  49365. +#include <features.h>
  49366. +#include <errno.h>
  49367. +#include <sys/types.h>
  49368. +#include <sys/syscall.h>
  49369. +
  49370. +extern long syscall(long int sysnum, long a, long b, long c, long d, long e, long f);
  49371. +
  49372. +long syscall(long int sysnum, long a, long b, long c, long d, long e, long f)
  49373. +{
  49374. + return INLINE_SYSCALL_NCS(sysnum, 6, a, b, c, d, e, f);
  49375. +}
  49376. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/__syscall_error.c uClibc-git/libc/sysdeps/linux/arc/__syscall_error.c
  49377. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/__syscall_error.c 1970-01-01 01:00:00.000000000 +0100
  49378. +++ uClibc-git/libc/sysdeps/linux/arc/__syscall_error.c 2014-02-03 12:32:56.000000000 +0100
  49379. @@ -0,0 +1,15 @@
  49380. +/* Wrapper for setting errno.
  49381. + *
  49382. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  49383. + *
  49384. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49385. + */
  49386. +
  49387. +#include <errno.h>
  49388. +#include <sys/syscall.h>
  49389. +
  49390. +int __syscall_error(int err_no)
  49391. +{
  49392. + __set_errno(-err_no);
  49393. + return -1;
  49394. +}
  49395. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/sysdep.h uClibc-git/libc/sysdeps/linux/arc/sysdep.h
  49396. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  49397. +++ uClibc-git/libc/sysdeps/linux/arc/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  49398. @@ -0,0 +1,22 @@
  49399. +#ifndef _LINUX_ARC_SYSDEP_H
  49400. +#define _LINUX_ARC_SYSDEP_H 1
  49401. +
  49402. +#include <features.h>
  49403. +#include <libc-internal.h>
  49404. +
  49405. +#ifdef __ASSEMBLER__
  49406. +
  49407. +#define ENTRY(nm) \
  49408. + .text ` \
  49409. + .align 4 ` \
  49410. + .globl nm ` \
  49411. + .type nm,@function ` \
  49412. +nm:
  49413. +
  49414. +#define END(name) .size name,.-name
  49415. +
  49416. +#endif /* __ASSEMBLER __*/
  49417. +
  49418. +#include <common/sysdep.h>
  49419. +
  49420. +#endif
  49421. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/vfork.S uClibc-git/libc/sysdeps/linux/arc/vfork.S
  49422. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/vfork.S 1970-01-01 01:00:00.000000000 +0100
  49423. +++ uClibc-git/libc/sysdeps/linux/arc/vfork.S 2014-02-03 12:32:56.000000000 +0100
  49424. @@ -0,0 +1,29 @@
  49425. +/*
  49426. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  49427. + *
  49428. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  49429. + */
  49430. +
  49431. +#include <sys/syscall.h>
  49432. +#include <sysdep.h>
  49433. +
  49434. +/* No legacy syscall ABI means NR_vfork is not available at all, use clone */
  49435. +#define _SIGNAL_H
  49436. +#include <bits/signum.h> /* For SIGCHLD */
  49437. +
  49438. +#define CLONE_VM 0x00000100
  49439. +#define CLONE_VFORK 0x00004000
  49440. +#define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD)
  49441. +
  49442. +ENTRY(vfork)
  49443. + mov r0, CLONE_FLAGS_FOR_VFORK
  49444. + mov_s r1, sp
  49445. + mov r8, __NR_clone
  49446. + ARC_TRAP_INSN
  49447. +
  49448. + cmp r0, 0
  49449. + jge [blink] ; pid >=0 return, else detour via tailcall to errno
  49450. +
  49451. + b __syscall_error
  49452. +END(vfork)
  49453. +libc_hidden_def(vfork)
  49454. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arc/xstatconv.c uClibc-git/libc/sysdeps/linux/arc/xstatconv.c
  49455. --- uClibc-0.9.33.2/libc/sysdeps/linux/arc/xstatconv.c 1970-01-01 01:00:00.000000000 +0100
  49456. +++ uClibc-git/libc/sysdeps/linux/arc/xstatconv.c 2014-02-03 12:32:56.000000000 +0100
  49457. @@ -0,0 +1 @@
  49458. +/* We don't need any of this. */
  49459. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_assert.c uClibc-git/libc/sysdeps/linux/arm/aeabi_assert.c
  49460. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_assert.c 2012-05-15 09:20:09.000000000 +0200
  49461. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_assert.c 2014-02-03 12:32:56.000000000 +0100
  49462. @@ -12,16 +12,15 @@
  49463. Lesser General Public License for more details.
  49464. You should have received a copy of the GNU Lesser General Public
  49465. - License along with the GNU C Library; if not, write to the Free
  49466. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49467. - 02111-1307 USA. */
  49468. + License along with the GNU C Library; if not, see
  49469. + <http://www.gnu.org/licenses/>. */
  49470. #undef NDEBUG
  49471. #include <assert.h>
  49472. #include <stdlib.h>
  49473. -void __aeabi_assert(const char *assertion, const char *file, unsigned int line);
  49474. +void __aeabi_assert(const char *assertion, const char *file, unsigned int line) attribute_noreturn;
  49475. void __aeabi_assert(const char *assertion, const char *file, unsigned int line)
  49476. {
  49477. __assert (assertion, file, line, NULL);
  49478. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_atexit.c uClibc-git/libc/sysdeps/linux/arm/aeabi_atexit.c
  49479. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_atexit.c 2012-05-15 09:20:09.000000000 +0200
  49480. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_atexit.c 2014-02-03 12:32:56.000000000 +0100
  49481. @@ -12,9 +12,8 @@
  49482. Lesser General Public License for more details.
  49483. You should have received a copy of the GNU Lesser General Public
  49484. - License along with the GNU C Library; if not, write to the Free
  49485. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49486. - 02111-1307 USA. */
  49487. + License along with the GNU C Library; if not, see
  49488. + <http://www.gnu.org/licenses/>. */
  49489. #include <stdlib.h>
  49490. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_errno_addr.c uClibc-git/libc/sysdeps/linux/arm/aeabi_errno_addr.c
  49491. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_errno_addr.c 2012-05-15 09:20:09.000000000 +0200
  49492. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_errno_addr.c 2014-02-03 12:32:56.000000000 +0100
  49493. @@ -12,9 +12,8 @@
  49494. Lesser General Public License for more details.
  49495. You should have received a copy of the GNU Lesser General Public
  49496. - License along with the GNU C Library; if not, write to the Free
  49497. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49498. - 02111-1307 USA. */
  49499. + License along with the GNU C Library; if not, see
  49500. + <http://www.gnu.org/licenses/>. */
  49501. #include <errno.h>
  49502. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_lcsts.c uClibc-git/libc/sysdeps/linux/arm/aeabi_lcsts.c
  49503. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_lcsts.c 2012-05-15 09:20:09.000000000 +0200
  49504. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_lcsts.c 2014-02-03 12:32:56.000000000 +0100
  49505. @@ -30,9 +30,8 @@
  49506. Lesser General Public License for more details.
  49507. You should have received a copy of the GNU Lesser General Public
  49508. - License along with the GNU C Library; if not, write to the Free
  49509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49510. - 02111-1307 USA. */
  49511. + License along with the GNU C Library; if not, see
  49512. + <http://www.gnu.org/licenses/>. */
  49513. /* The ARM EABI requires that we provide ISO compile-time constants as
  49514. link-time constants. Some portable applications may reference these. */
  49515. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_localeconv.c uClibc-git/libc/sysdeps/linux/arm/aeabi_localeconv.c
  49516. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_localeconv.c 2012-05-15 09:20:09.000000000 +0200
  49517. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_localeconv.c 2014-02-03 12:32:56.000000000 +0100
  49518. @@ -12,9 +12,8 @@
  49519. Lesser General Public License for more details.
  49520. You should have received a copy of the GNU Lesser General Public
  49521. - License along with the GNU C Library; if not, write to the Free
  49522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49523. - 02111-1307 USA. */
  49524. + License along with the GNU C Library; if not, see
  49525. + <http://www.gnu.org/licenses/>. */
  49526. #include <locale.h>
  49527. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_math.c uClibc-git/libc/sysdeps/linux/arm/aeabi_math.c
  49528. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_math.c 2012-05-15 09:20:09.000000000 +0200
  49529. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_math.c 2014-02-03 12:32:56.000000000 +0100
  49530. @@ -29,9 +29,8 @@
  49531. Lesser General Public License for more details.
  49532. You should have received a copy of the GNU Lesser General Public
  49533. - License along with the GNU C Library; if not, write to the Free
  49534. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49535. - 02111-1307 USA. */
  49536. + License along with the GNU C Library; if not, see
  49537. + <http://www.gnu.org/licenses/>. */
  49538. #include <math.h>
  49539. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c uClibc-git/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c
  49540. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c 2012-05-15 09:20:09.000000000 +0200
  49541. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_mb_cur_max.c 2014-02-03 12:32:56.000000000 +0100
  49542. @@ -12,16 +12,15 @@
  49543. Lesser General Public License for more details.
  49544. You should have received a copy of the GNU Lesser General Public
  49545. - License along with the GNU C Library; if not, write to the Free
  49546. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49547. - 02111-1307 USA. */
  49548. + License along with the GNU C Library; if not, see
  49549. + <http://www.gnu.org/licenses/>. */
  49550. #include <langinfo.h>
  49551. #include <locale.h>
  49552. #include <stdlib.h>
  49553. -int
  49554. -__aeabi_MB_CUR_MAX (void)
  49555. +int __aeabi_MB_CUR_MAX (void);
  49556. +int __aeabi_MB_CUR_MAX (void)
  49557. {
  49558. return MB_CUR_MAX;
  49559. }
  49560. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memclr.c uClibc-git/libc/sysdeps/linux/arm/aeabi_memclr.c
  49561. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memclr.c 2012-05-15 09:20:09.000000000 +0200
  49562. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_memclr.c 2014-02-03 12:32:56.000000000 +0100
  49563. @@ -12,9 +12,8 @@
  49564. Lesser General Public License for more details.
  49565. You should have received a copy of the GNU Lesser General Public
  49566. - License along with the GNU C Library; if not, write to the Free
  49567. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49568. - 02111-1307 USA. */
  49569. + License along with the GNU C Library; if not, see
  49570. + <http://www.gnu.org/licenses/>. */
  49571. #include <string.h>
  49572. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memcpy.c uClibc-git/libc/sysdeps/linux/arm/aeabi_memcpy.c
  49573. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memcpy.c 2012-05-15 09:20:09.000000000 +0200
  49574. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_memcpy.c 2014-02-03 12:32:56.000000000 +0100
  49575. @@ -12,9 +12,8 @@
  49576. Lesser General Public License for more details.
  49577. You should have received a copy of the GNU Lesser General Public
  49578. - License along with the GNU C Library; if not, write to the Free
  49579. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49580. - 02111-1307 USA. */
  49581. + License along with the GNU C Library; if not, see
  49582. + <http://www.gnu.org/licenses/>. */
  49583. #include <string.h>
  49584. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memmove.c uClibc-git/libc/sysdeps/linux/arm/aeabi_memmove.c
  49585. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memmove.c 2012-05-15 09:20:09.000000000 +0200
  49586. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_memmove.c 2014-02-03 12:32:56.000000000 +0100
  49587. @@ -12,9 +12,8 @@
  49588. Lesser General Public License for more details.
  49589. You should have received a copy of the GNU Lesser General Public
  49590. - License along with the GNU C Library; if not, write to the Free
  49591. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49592. - 02111-1307 USA. */
  49593. + License along with the GNU C Library; if not, see
  49594. + <http://www.gnu.org/licenses/>. */
  49595. #include <string.h>
  49596. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memset.c uClibc-git/libc/sysdeps/linux/arm/aeabi_memset.c
  49597. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_memset.c 2012-05-15 09:20:09.000000000 +0200
  49598. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_memset.c 2014-02-03 12:32:56.000000000 +0100
  49599. @@ -12,9 +12,8 @@
  49600. Lesser General Public License for more details.
  49601. You should have received a copy of the GNU Lesser General Public
  49602. - License along with the GNU C Library; if not, write to the Free
  49603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49604. - 02111-1307 USA. */
  49605. + License along with the GNU C Library; if not, see
  49606. + <http://www.gnu.org/licenses/>. */
  49607. #include <string.h>
  49608. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_sighandlers.S uClibc-git/libc/sysdeps/linux/arm/aeabi_sighandlers.S
  49609. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_sighandlers.S 2012-05-15 09:20:09.000000000 +0200
  49610. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_sighandlers.S 2014-02-03 12:32:56.000000000 +0100
  49611. @@ -30,9 +30,8 @@
  49612. Lesser General Public License for more details.
  49613. You should have received a copy of the GNU Lesser General Public
  49614. - License along with the GNU C Library; if not, write to the Free
  49615. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49616. - 02111-1307 USA. */
  49617. + License along with the GNU C Library; if not, see
  49618. + <http://www.gnu.org/licenses/>. */
  49619. /* The ARM EABI defines these as "functions". */
  49620. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c uClibc-git/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c
  49621. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c 2012-05-15 09:20:09.000000000 +0200
  49622. +++ uClibc-git/libc/sysdeps/linux/arm/aeabi_unwind_cpp_pr1.c 2014-02-03 12:32:56.000000000 +0100
  49623. @@ -12,9 +12,8 @@
  49624. Lesser General Public License for more details.
  49625. You should have received a copy of the GNU Lesser General Public
  49626. - License along with the GNU C Library; if not, write to the Free
  49627. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49628. - 02111-1307 USA. */
  49629. + License along with the GNU C Library; if not, see
  49630. + <http://www.gnu.org/licenses/>. */
  49631. /* Because some objects in ld.so and libc.so are built with
  49632. -fexceptions, we end up with references to this personality
  49633. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/arm_asm.h uClibc-git/libc/sysdeps/linux/arm/bits/arm_asm.h
  49634. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/arm_asm.h 2012-05-15 09:20:09.000000000 +0200
  49635. +++ uClibc-git/libc/sysdeps/linux/arm/bits/arm_asm.h 2014-02-03 12:32:56.000000000 +0100
  49636. @@ -3,8 +3,10 @@
  49637. #define _ARM_ASM_H
  49638. #ifdef __thumb2__
  49639. +# ifdef __ASSEMBLER__
  49640. .thumb
  49641. .syntax unified
  49642. +# endif /* __ASSEMBLER__ */
  49643. #define IT(t, cond) i##t cond
  49644. #else
  49645. /* XXX: This can be removed if/when we require an assembler that supports
  49646. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/armsigctx.h uClibc-git/libc/sysdeps/linux/arm/bits/armsigctx.h
  49647. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/armsigctx.h 2012-05-15 09:20:09.000000000 +0200
  49648. +++ uClibc-git/libc/sysdeps/linux/arm/bits/armsigctx.h 2014-02-03 12:32:56.000000000 +0100
  49649. @@ -13,9 +13,8 @@
  49650. Lesser General Public License for more details.
  49651. You should have received a copy of the GNU Lesser General Public
  49652. - License along with the GNU C Library; if not, write to the Free
  49653. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49654. - 02111-1307 USA. */
  49655. + License along with the GNU C Library; if not, see
  49656. + <http://www.gnu.org/licenses/>. */
  49657. /* The format of struct sigcontext changed between 2.0 and 2.1 kernels.
  49658. Fortunately 2.0 puts a magic number in the first word and this is not
  49659. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/atomic.h uClibc-git/libc/sysdeps/linux/arm/bits/atomic.h
  49660. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  49661. +++ uClibc-git/libc/sysdeps/linux/arm/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  49662. @@ -12,9 +12,8 @@
  49663. Lesser General Public License for more details.
  49664. You should have received a copy of the GNU Lesser General Public
  49665. - License along with the GNU C Library; if not, write to the Free
  49666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49667. - 02111-1307 USA. */
  49668. + License along with the GNU C Library; if not, see
  49669. + <http://www.gnu.org/licenses/>. */
  49670. #if defined __thumb__ && !defined __thumb2__
  49671. #include_next <common/bits/atomic.h>
  49672. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fcntl.h uClibc-git/libc/sysdeps/linux/arm/bits/fcntl.h
  49673. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  49674. +++ uClibc-git/libc/sysdeps/linux/arm/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  49675. @@ -14,9 +14,8 @@
  49676. Lesser General Public License for more details.
  49677. You should have received a copy of the GNU Lesser General Public
  49678. - License along with the GNU C Library; if not, write to the Free
  49679. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49680. - 02111-1307 USA. */
  49681. + License along with the GNU C Library; if not, see
  49682. + <http://www.gnu.org/licenses/>. */
  49683. #ifndef _FCNTL_H
  49684. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  49685. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fenv.h uClibc-git/libc/sysdeps/linux/arm/bits/fenv.h
  49686. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  49687. +++ uClibc-git/libc/sysdeps/linux/arm/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  49688. @@ -12,9 +12,8 @@
  49689. Lesser General Public License for more details.
  49690. You should have received a copy of the GNU Lesser General Public
  49691. - License along with the GNU C Library; if not, write to the Free
  49692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49693. - 02111-1307 USA. */
  49694. + License along with the GNU C Library; if not, see
  49695. + <http://www.gnu.org/licenses/>. */
  49696. #ifndef _FENV_H
  49697. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  49698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/huge_val.h uClibc-git/libc/sysdeps/linux/arm/bits/huge_val.h
  49699. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  49700. +++ uClibc-git/libc/sysdeps/linux/arm/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  49701. @@ -16,9 +16,8 @@
  49702. Lesser General Public License for more details.
  49703. You should have received a copy of the GNU Lesser General Public
  49704. - License along with the GNU C Library; if not, write to the Free
  49705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49706. - 02111-1307 USA. */
  49707. + License along with the GNU C Library; if not, see
  49708. + <http://www.gnu.org/licenses/>. */
  49709. #ifndef _MATH_H
  49710. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  49711. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/arm/bits/kernel_types.h
  49712. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  49713. +++ uClibc-git/libc/sysdeps/linux/arm/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  49714. @@ -32,6 +32,8 @@
  49715. typedef unsigned short __kernel_old_gid_t;
  49716. typedef long long __kernel_loff_t;
  49717. typedef __kernel_dev_t __kernel_old_dev_t;
  49718. +typedef long __kernel_long_t;
  49719. +typedef unsigned long __kernel_ulong_t;
  49720. typedef struct {
  49721. #ifdef __USE_ALL
  49722. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/mathdef.h uClibc-git/libc/sysdeps/linux/arm/bits/mathdef.h
  49723. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  49724. +++ uClibc-git/libc/sysdeps/linux/arm/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  49725. @@ -12,9 +12,8 @@
  49726. Lesser General Public License for more details.
  49727. You should have received a copy of the GNU Lesser General Public
  49728. - License along with the GNU C Library; if not, write to the Free
  49729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49730. - 02111-1307 USA. */
  49731. + License along with the GNU C Library; if not, see
  49732. + <http://www.gnu.org/licenses/>. */
  49733. #if !defined _MATH_H && !defined _COMPLEX_H
  49734. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  49735. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/setjmp.h uClibc-git/libc/sysdeps/linux/arm/bits/setjmp.h
  49736. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  49737. +++ uClibc-git/libc/sysdeps/linux/arm/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  49738. @@ -1,4 +1,4 @@
  49739. -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
  49740. +/* Copyright (C) 1997,1998,2005,2006 Free Software Foundation, Inc.
  49741. This file is part of the GNU C Library.
  49742. The GNU C Library is free software; you can redistribute it and/or
  49743. @@ -12,19 +12,18 @@
  49744. Lesser General Public License for more details.
  49745. You should have received a copy of the GNU Lesser General Public
  49746. - License along with the GNU C Library; if not, write to the Free
  49747. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49748. - 02111-1307 USA. */
  49749. + License along with the GNU C Library; if not, see
  49750. + <http://www.gnu.org/licenses/>. */
  49751. /* Define the machine-dependent type `jmp_buf'. ARM version. */
  49752. +
  49753. #ifndef _BITS_SETJMP_H
  49754. -#define _BITS_SETJMP_H 1
  49755. +#define _BITS_SETJMP_H 1
  49756. #if !defined _SETJMP_H && !defined _PTHREAD_H
  49757. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  49758. #endif
  49759. -#ifndef _ASM
  49760. /* Jump buffer contains v1-v6, sl, fp, sp and pc. Other registers are not
  49761. saved. */
  49762. #ifdef __ARM_EABI__
  49763. @@ -38,15 +37,10 @@
  49764. #elif defined __MAVERICK__ || defined __IWMMXT__
  49765. typedef int __jmp_buf[34];
  49766. #else
  49767. +# ifdef __UCLIBC_HAS_FPU__
  49768. typedef int __jmp_buf[22];
  49769. +# else
  49770. +typedef int __jmp_buf[10];
  49771. +# endif
  49772. #endif
  49773. #endif
  49774. -
  49775. -#define __JMP_BUF_SP 8
  49776. -
  49777. -/* Test if longjmp to JMPBUF would unwind the frame
  49778. - containing a local variable at ADDRESS. */
  49779. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  49780. - ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
  49781. -
  49782. -#endif /* bits/setjmp.h */
  49783. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/shm.h uClibc-git/libc/sysdeps/linux/arm/bits/shm.h
  49784. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  49785. +++ uClibc-git/libc/sysdeps/linux/arm/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  49786. @@ -12,9 +12,8 @@
  49787. Lesser General Public License for more details.
  49788. You should have received a copy of the GNU Lesser General Public
  49789. - License along with the GNU C Library; if not, write to the Free
  49790. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49791. - 02111-1307 USA. */
  49792. + License along with the GNU C Library; if not, see
  49793. + <http://www.gnu.org/licenses/>. */
  49794. #ifndef _SYS_SHM_H
  49795. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  49796. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/arm/bits/sigcontextinfo.h
  49797. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  49798. +++ uClibc-git/libc/sysdeps/linux/arm/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  49799. @@ -13,9 +13,8 @@
  49800. Lesser General Public License for more details.
  49801. You should have received a copy of the GNU Lesser General Public
  49802. - License along with the GNU C Library; if not, write to the Free
  49803. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49804. - 02111-1307 USA. */
  49805. + License along with the GNU C Library; if not, see
  49806. + <http://www.gnu.org/licenses/>. */
  49807. #include <bits/armsigctx.h>
  49808. #include <linux/version.h>
  49809. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/arm/bits/stackinfo.h
  49810. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  49811. +++ uClibc-git/libc/sysdeps/linux/arm/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  49812. @@ -12,9 +12,8 @@
  49813. Lesser General Public License for more details.
  49814. You should have received a copy of the GNU Lesser General Public
  49815. - License along with the GNU C Library; if not, write to the Free
  49816. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49817. - 02111-1307 USA. */
  49818. + License along with the GNU C Library; if not, see
  49819. + <http://www.gnu.org/licenses/>. */
  49820. /* This file contains a bit of information about the stack allocation
  49821. of the processor. */
  49822. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
  49823. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  49824. +++ uClibc-git/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  49825. @@ -11,11 +11,11 @@
  49826. /* can your target use syscall6() for mmap ? */
  49827. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  49828. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  49829. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  49830. #ifdef __ARM_EABI__
  49831. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  49832. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  49833. #else
  49834. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  49835. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  49836. #endif
  49837. /* does your target have a broken create_module() ? */
  49838. @@ -48,4 +48,15 @@
  49839. /* only weird assemblers generally need this */
  49840. #undef __UCLIBC_ASM_LINE_SEP__
  49841. +#ifdef __GNUC__
  49842. +# define __need_uClibc_config_h
  49843. +# include <bits/uClibc_config.h>
  49844. +# undef __need_uClibc_config_h
  49845. +# if defined __CONFIG_ARM_EABI__ && !defined __ARM_EABI__
  49846. +# error Your toolchain does not support EABI
  49847. +# elif !defined __CONFIG_ARM_EABI__ && defined __ARM_EABI__
  49848. +# error Your toolchain was built for EABI, but you have chosen OABI
  49849. +# endif
  49850. +#endif
  49851. +
  49852. #endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
  49853. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/wordsize.h uClibc-git/libc/sysdeps/linux/arm/bits/wordsize.h
  49854. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  49855. +++ uClibc-git/libc/sysdeps/linux/arm/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  49856. @@ -12,8 +12,7 @@
  49857. Lesser General Public License for more details.
  49858. You should have received a copy of the GNU Lesser General Public
  49859. - License along with the GNU C Library; if not, write to the Free
  49860. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49861. - 02111-1307 USA. */
  49862. + License along with the GNU C Library; if not, see
  49863. + <http://www.gnu.org/licenses/>. */
  49864. #define __WORDSIZE 32
  49865. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/brk.c uClibc-git/libc/sysdeps/linux/arm/brk.c
  49866. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/brk.c 2012-05-15 09:20:09.000000000 +0200
  49867. +++ uClibc-git/libc/sysdeps/linux/arm/brk.c 2014-02-03 12:32:56.000000000 +0100
  49868. @@ -13,9 +13,8 @@
  49869. Lesser General Public License for more details.
  49870. You should have received a copy of the GNU Lesser General Public
  49871. - License along with the GNU C Library; if not, write to the Free
  49872. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49873. - 02111-1307 USA. */
  49874. + License along with the GNU C Library; if not, see
  49875. + <http://www.gnu.org/licenses/>. */
  49876. #include <errno.h>
  49877. #include <unistd.h>
  49878. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/arm/bsd-_setjmp.S
  49879. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  49880. +++ uClibc-git/libc/sysdeps/linux/arm/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  49881. @@ -13,9 +13,8 @@
  49882. Lesser General Public License for more details.
  49883. You should have received a copy of the GNU Lesser General Public
  49884. - License along with the GNU C Library; if not, write to the Free
  49885. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49886. - 02111-1307 USA. */
  49887. + License along with the GNU C Library; if not, see
  49888. + <http://www.gnu.org/licenses/>. */
  49889. #include <bits/arm_asm.h>
  49890. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/arm/bsd-setjmp.S
  49891. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  49892. +++ uClibc-git/libc/sysdeps/linux/arm/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  49893. @@ -13,9 +13,8 @@
  49894. Lesser General Public License for more details.
  49895. You should have received a copy of the GNU Lesser General Public
  49896. - License along with the GNU C Library; if not, write to the Free
  49897. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49898. - 02111-1307 USA. */
  49899. + License along with the GNU C Library; if not, see
  49900. + <http://www.gnu.org/licenses/>. */
  49901. #include <bits/arm_asm.h>
  49902. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/clone.S uClibc-git/libc/sysdeps/linux/arm/clone.S
  49903. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/clone.S 2012-05-15 09:20:09.000000000 +0200
  49904. +++ uClibc-git/libc/sysdeps/linux/arm/clone.S 2014-02-03 12:32:56.000000000 +0100
  49905. @@ -13,9 +13,8 @@
  49906. Lesser General Public License for more details.
  49907. You should have received a copy of the GNU Lesser General Public
  49908. - License along with the GNU C Library; if not, write to the Free
  49909. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49910. - 02111-1307 USA. */
  49911. + License along with the GNU C Library; if not, see
  49912. + <http://www.gnu.org/licenses/>. */
  49913. /* clone() is even more special than fork() as it mucks with stacks
  49914. and invokes a function in the right context after its all over. */
  49915. @@ -111,8 +110,8 @@
  49916. ldr r4, [sp, #12]
  49917. DO_CALL (clone)
  49918. movs a1, a1
  49919. - blt __error
  49920. ldmnefd sp!, {r4}
  49921. + blt __error
  49922. IT(t, ne)
  49923. #if defined(__USE_BX__)
  49924. bxne lr
  49925. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/crt1.S uClibc-git/libc/sysdeps/linux/arm/crt1.S
  49926. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/crt1.S 2012-05-15 09:20:09.000000000 +0200
  49927. +++ uClibc-git/libc/sysdeps/linux/arm/crt1.S 2014-02-03 12:32:56.000000000 +0100
  49928. @@ -31,9 +31,8 @@
  49929. Lesser General Public License for more details.
  49930. You should have received a copy of the GNU Lesser General Public
  49931. - License along with the GNU C Library; if not, write to the Free
  49932. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49933. - 02111-1307 USA. */
  49934. + License along with the GNU C Library; if not, see
  49935. + <http://www.gnu.org/licenses/>. */
  49936. /* This is the canonical entry point, usually the first thing in the text
  49937. segment.
  49938. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/find_exidx.c uClibc-git/libc/sysdeps/linux/arm/find_exidx.c
  49939. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/find_exidx.c 2012-05-15 09:20:09.000000000 +0200
  49940. +++ uClibc-git/libc/sysdeps/linux/arm/find_exidx.c 2014-02-03 12:32:56.000000000 +0100
  49941. @@ -12,9 +12,8 @@
  49942. Lesser General Public License for more details.
  49943. You should have received a copy of the GNU Lesser General Public
  49944. - License along with the GNU C Library; if not, write to the Free
  49945. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49946. - 02111-1307 USA. */
  49947. + License along with the GNU C Library; if not, see
  49948. + <http://www.gnu.org/licenses/>. */
  49949. #include <link.h>
  49950. #include <unwind.h>
  49951. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/fpu_control.h uClibc-git/libc/sysdeps/linux/arm/fpu_control.h
  49952. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  49953. +++ uClibc-git/libc/sysdeps/linux/arm/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  49954. @@ -13,9 +13,8 @@
  49955. Lesser General Public License for more details.
  49956. You should have received a copy of the GNU Lesser General Public
  49957. - License along with the GNU C Library; if not, write to the Free
  49958. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  49959. - 02111-1307 USA. */
  49960. + License along with the GNU C Library; if not, see
  49961. + <http://www.gnu.org/licenses/>. */
  49962. #ifndef _FPU_CONTROL_H
  49963. #define _FPU_CONTROL_H
  49964. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/getcontext.S uClibc-git/libc/sysdeps/linux/arm/getcontext.S
  49965. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  49966. +++ uClibc-git/libc/sysdeps/linux/arm/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  49967. @@ -0,0 +1,80 @@
  49968. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  49969. + This file is part of the GNU C Library.
  49970. +
  49971. + The GNU C Library is free software; you can redistribute it and/or
  49972. + modify it under the terms of the GNU Lesser General Public
  49973. + License as published by the Free Software Foundation; either
  49974. + version 2.1 of the License, or (at your option) any later version.
  49975. +
  49976. + The GNU C Library is distributed in the hope that it will be useful,
  49977. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  49978. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  49979. + Lesser General Public License for more details.
  49980. +
  49981. + You should have received a copy of the GNU Lesser General Public
  49982. + License along with the GNU C Library; if not, see
  49983. + <http://www.gnu.org/licenses/>. */
  49984. +
  49985. +#include <sysdep.h>
  49986. +
  49987. +#include "ucontext_i.h"
  49988. +
  49989. + .syntax unified
  49990. + .text
  49991. +
  49992. +/* int getcontext (ucontext_t *ucp) */
  49993. +
  49994. +ENTRY(__getcontext)
  49995. + /* No need to save r0-r3, d0-d7, or d16-d31. */
  49996. + add r1, r0, #MCONTEXT_ARM_R4
  49997. + stmia r1, {r4-r11}
  49998. +
  49999. + /* Save R13 separately as Thumb can't STM it. */
  50000. + str r13, [r0, #MCONTEXT_ARM_SP]
  50001. + str r14, [r0, #MCONTEXT_ARM_LR]
  50002. + /* Return to LR */
  50003. + str r14, [r0, #MCONTEXT_ARM_PC]
  50004. + /* Return zero */
  50005. + mov r2, #0
  50006. + str r2, [r0, #MCONTEXT_ARM_R0]
  50007. +
  50008. + /* Save ucontext_t * across the next call. */
  50009. + mov r4, r0
  50010. +
  50011. + /* __sigprocmask(SIG_BLOCK, NULL, &(ucontext->uc_sigmask)) */
  50012. + mov r0, #SIG_BLOCK
  50013. + mov r1, #0
  50014. + add r2, r4, #UCONTEXT_SIGMASK
  50015. + bl PLTJMP(sigprocmask)
  50016. +
  50017. +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  50018. +# ifdef __VFP_FP__
  50019. + /* Store the VFP registers. */
  50020. + /* Following instruction is fstmiax ip!, {d8-d15}. */
  50021. + stc p11, cr8, [r0], #64
  50022. + /* Store the floating-point status register. */
  50023. + /* Following instruction is fmrx r2, fpscr. */
  50024. + mrc p10, 7, r1, cr1, cr0, 0
  50025. + str r1, [r0], #4
  50026. +# endif
  50027. +#endif
  50028. +#ifdef __IWMMXT__
  50029. + /* Save the call-preserved iWMMXt registers. */
  50030. + /* Following instructions are wstrd wr10, [r0], #8 (etc.) */
  50031. + stcl p1, cr10, [r0], #8
  50032. + stcl p1, cr11, [r0], #8
  50033. + stcl p1, cr12, [r0], #8
  50034. + stcl p1, cr13, [r0], #8
  50035. + stcl p1, cr14, [r0], #8
  50036. + stcl p1, cr15, [r0], #8
  50037. +#endif
  50038. +
  50039. + /* Restore the clobbered R4 and LR. */
  50040. + ldr r14, [r4, #MCONTEXT_ARM_LR]
  50041. + ldr r4, [r4, #MCONTEXT_ARM_R4]
  50042. +
  50043. + mov r0, #0
  50044. + DO_RET(r14)
  50045. +
  50046. +END(__getcontext)
  50047. +weak_alias(__getcontext, getcontext)
  50048. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/ioperm.c uClibc-git/libc/sysdeps/linux/arm/ioperm.c
  50049. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/ioperm.c 2012-05-15 09:20:09.000000000 +0200
  50050. +++ uClibc-git/libc/sysdeps/linux/arm/ioperm.c 2014-02-03 12:32:56.000000000 +0100
  50051. @@ -14,9 +14,8 @@
  50052. Lesser General Public License for more details.
  50053. You should have received a copy of the GNU Lesser General Public
  50054. - License along with the GNU C Library; if not, write to the Free
  50055. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50056. - 02111-1307 USA. */
  50057. + License along with the GNU C Library; if not, see
  50058. + <http://www.gnu.org/licenses/>. */
  50059. /* I/O port access on the ARM is something of a fiction. What we do is to
  50060. map an appropriate area of /dev/mem into user space so that a program
  50061. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/iopl.c uClibc-git/libc/sysdeps/linux/arm/iopl.c
  50062. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/iopl.c 2012-05-15 09:20:09.000000000 +0200
  50063. +++ uClibc-git/libc/sysdeps/linux/arm/iopl.c 2014-02-03 12:32:56.000000000 +0100
  50064. @@ -14,9 +14,8 @@
  50065. Lesser General Public License for more details.
  50066. You should have received a copy of the GNU Lesser General Public
  50067. - License along with the GNU C Library; if not, write to the Free
  50068. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50069. - 02111-1307 USA. */
  50070. + License along with the GNU C Library; if not, see
  50071. + <http://www.gnu.org/licenses/>. */
  50072. #include <sys/io.h>
  50073. #include <errno.h>
  50074. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/arm/jmpbuf-offsets.h
  50075. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  50076. +++ uClibc-git/libc/sysdeps/linux/arm/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  50077. @@ -0,0 +1,23 @@
  50078. +/* Private macros for accessing __jmp_buf contents. ARM version.
  50079. + Copyright (C) 2006 Free Software Foundation, Inc.
  50080. + This file is part of the GNU C Library.
  50081. +
  50082. + The GNU C Library is free software; you can redistribute it and/or
  50083. + modify it under the terms of the GNU Lesser General Public
  50084. + License as published by the Free Software Foundation; either
  50085. + version 2.1 of the License, or (at your option) any later version.
  50086. +
  50087. + The GNU C Library is distributed in the hope that it will be useful,
  50088. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50089. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50090. + Lesser General Public License for more details.
  50091. +
  50092. + You should have received a copy of the GNU Lesser General Public
  50093. + License along with the GNU C Library; if not, see
  50094. + <http://www.gnu.org/licenses/>. */
  50095. +
  50096. +#ifdef __UCLIBC_HAS_FPU__
  50097. +#define __JMP_BUF_SP 20
  50098. +#else
  50099. +#define __JMP_BUF_SP 8
  50100. +#endif
  50101. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/arm/jmpbuf-unwind.h
  50102. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  50103. +++ uClibc-git/libc/sysdeps/linux/arm/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  50104. @@ -0,0 +1,29 @@
  50105. +/*
  50106. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  50107. + *
  50108. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50109. + */
  50110. +#include <setjmp.h>
  50111. +#include <jmpbuf-offsets.h>
  50112. +
  50113. +/* Test if longjmp to JMPBUF would unwind the frame
  50114. + containing a local variable at ADDRESS. */
  50115. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  50116. + ((void *) (address) < (void *) (jmpbuf[__JMP_BUF_SP]))
  50117. +
  50118. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  50119. +#include <stdint.h>
  50120. +#include <unwind.h>
  50121. +
  50122. +/* Test if longjmp to JMPBUF would unwind the frame
  50123. + containing a local variable at ADDRESS. */
  50124. +#undef _JMPBUF_UNWINDS
  50125. +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
  50126. + ((void *) (address) < (void *) demangle (jmpbuf[__JMP_BUF_SP]))
  50127. +
  50128. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  50129. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  50130. +
  50131. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  50132. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[__JMP_BUF_SP] - (_adj))
  50133. +#endif
  50134. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/__longjmp.S uClibc-git/libc/sysdeps/linux/arm/__longjmp.S
  50135. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  50136. +++ uClibc-git/libc/sysdeps/linux/arm/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  50137. @@ -13,16 +13,11 @@
  50138. Lesser General Public License for more details.
  50139. You should have received a copy of the GNU Lesser General Public
  50140. - License along with the GNU C Library; if not, write to the Free
  50141. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50142. - 02111-1307 USA. */
  50143. + License along with the GNU C Library; if not, see
  50144. + <http://www.gnu.org/licenses/>. */
  50145. #include <features.h>
  50146. #include <bits/arm_asm.h>
  50147. -#define _SETJMP_H
  50148. -#define _ASM
  50149. -#include <bits/setjmp.h>
  50150. -
  50151. .global __longjmp
  50152. .type __longjmp,%function
  50153. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/makecontext.c uClibc-git/libc/sysdeps/linux/arm/makecontext.c
  50154. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/makecontext.c 1970-01-01 01:00:00.000000000 +0100
  50155. +++ uClibc-git/libc/sysdeps/linux/arm/makecontext.c 2014-02-03 12:32:56.000000000 +0100
  50156. @@ -0,0 +1,73 @@
  50157. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  50158. + This file is part of the GNU C Library.
  50159. +
  50160. + The GNU C Library is free software; you can redistribute it and/or
  50161. + modify it under the terms of the GNU Lesser General Public
  50162. + License as published by the Free Software Foundation; either
  50163. + version 2.1 of the License, or (at your option) any later version.
  50164. +
  50165. + The GNU C Library is distributed in the hope that it will be useful,
  50166. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50167. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50168. + Lesser General Public License for more details.
  50169. +
  50170. + You should have received a copy of the GNU Lesser General Public
  50171. + License along with the GNU C Library; if not, see
  50172. + <http://www.gnu.org/licenses/>. */
  50173. +
  50174. +#include <stdarg.h>
  50175. +#include <ucontext.h>
  50176. +
  50177. +/* Number of arguments that go in registers. */
  50178. +#define NREG_ARGS 4
  50179. +
  50180. +/* Take a context previously prepared via getcontext() and set to
  50181. + call func() with the given int only args. */
  50182. +void
  50183. +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
  50184. +{
  50185. + extern void __startcontext (void);
  50186. + unsigned long *funcstack;
  50187. + va_list vl;
  50188. + unsigned long *regptr;
  50189. + unsigned int reg;
  50190. + int misaligned;
  50191. +
  50192. + /* Start at the top of stack. */
  50193. + funcstack = (unsigned long *) (ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
  50194. +
  50195. + /* Ensure the stack stays eight byte aligned. */
  50196. + misaligned = ((unsigned long) funcstack & 4) != 0;
  50197. +
  50198. + if ((argc > NREG_ARGS) && (argc & 1) != 0)
  50199. + misaligned = !misaligned;
  50200. +
  50201. + if (misaligned)
  50202. + funcstack -= 1;
  50203. +
  50204. + va_start (vl, argc);
  50205. +
  50206. + /* Reserve space for the on-stack arguments. */
  50207. + if (argc > NREG_ARGS)
  50208. + funcstack -= (argc - NREG_ARGS);
  50209. +
  50210. + ucp->uc_mcontext.arm_sp = (unsigned long) funcstack;
  50211. + ucp->uc_mcontext.arm_pc = (unsigned long) func;
  50212. +
  50213. + /* Exit to startcontext() with the next context in R4 */
  50214. + ucp->uc_mcontext.arm_r4 = (unsigned long) ucp->uc_link;
  50215. + ucp->uc_mcontext.arm_lr = (unsigned long) __startcontext;
  50216. +
  50217. + /* The first four arguments go into registers. */
  50218. + regptr = &(ucp->uc_mcontext.arm_r0);
  50219. +
  50220. + for (reg = 0; (reg < argc) && (reg < NREG_ARGS); reg++)
  50221. + *regptr++ = va_arg (vl, unsigned long);
  50222. +
  50223. + /* And the remainder on the stack. */
  50224. + for (; reg < argc; reg++)
  50225. + *funcstack++ = va_arg (vl, unsigned long);
  50226. +
  50227. + va_end (vl);
  50228. +}
  50229. +weak_alias (__makecontext, makecontext)
  50230. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/Makefile.arch uClibc-git/libc/sysdeps/linux/arm/Makefile.arch
  50231. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  50232. +++ uClibc-git/libc/sysdeps/linux/arm/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  50233. @@ -5,42 +5,40 @@
  50234. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50235. #
  50236. -CSRC := brk.c ioperm.c iopl.c mmap.c __syscall_error.c sigaction.c
  50237. +CSRC-y := brk.c ioperm.c iopl.c __syscall_error.c sigaction.c
  50238. -SSRC := \
  50239. +SSRC-y := \
  50240. __longjmp.S setjmp.S bsd-setjmp.S \
  50241. - bsd-_setjmp.S sigrestorer.S mmap64.S \
  50242. + bsd-_setjmp.S sigrestorer.S \
  50243. vfork.S clone.S
  50244. -ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  50245. -SSRC += libc-aeabi_read_tp.S libc-thumb_atomics.S
  50246. -endif
  50247. -
  50248. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  50249. -CSRC += posix_fadvise.c posix_fadvise64.c
  50250. -endif
  50251. +SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
  50252. +SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-aeabi_read_tp.S libc-thumb_atomics.S
  50253. +CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c
  50254. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += getcontext.S setcontext.S swapcontext.S
  50255. # Is our compiler set up for EABI ?
  50256. -IS_EABI:=$(shell $(CC) $(CFLAGS) -x c - -E -dM </dev/null 2>/dev/null \
  50257. - | grep __ARM_EABI__ 2>&1 >/dev/null && echo 'y' \
  50258. - )
  50259. +CC_IS_EABI_CHECK = $(filter-out -include libc-symbols.h,$(CC) $(CFLAGS))
  50260. +$(eval $(call cache-output-var,IS_EABI,$(CC_IS_EABI_CHECK) -x c - -E -dM </dev/null 2>/dev/null | grep __ARM_EABI__ 2>&1 >/dev/null && echo 'y'))
  50261. -ifeq ($(IS_EABI),y)
  50262. -CSRC += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \
  50263. +CSRC-$(IS_EABI) += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \
  50264. aeabi_localeconv.c aeabi_memclr.c aeabi_memcpy.c \
  50265. aeabi_memmove.c aeabi_memset.c find_exidx.c
  50266. -SSRC += syscall-eabi.S
  50267. -ARCH_OBJ_FILTEROUT := syscall.c
  50268. -ifeq ($(UCLIBC_HAS_WCHAR),y)
  50269. -CSRC += aeabi_mb_cur_max.c
  50270. -endif
  50271. -else
  50272. -CSRC += syscall.c
  50273. -endif
  50274. -
  50275. +SSRC-$(IS_EABI) += syscall-eabi.S
  50276. +CSRC-$(if $(IS_EABI),,y)) += syscall.c
  50277. +ARCH_OBJ_FILTEROUT-$(IS_EABI) := syscall.c
  50278. ifeq ($(IS_EABI),y)
  50279. -libc-static-y += $(ARCH_OUT)/aeabi_lcsts.o $(ARCH_OUT)/aeabi_math.o \
  50280. - $(ARCH_OUT)/aeabi_sighandlers.o
  50281. -libc-nonshared-y += $(ARCH_OUT)/aeabi_lcsts.os $(ARCH_OUT)/aeabi_math.os \
  50282. - $(ARCH_OUT)/aeabi_sighandlers.os $(ARCH_OUT)/aeabi_unwind_cpp_pr1.o
  50283. +CSRC-$(UCLIBC_HAS_WCHAR) += aeabi_mb_cur_max.c
  50284. endif
  50285. +
  50286. +libc-static-$(IS_EABI) += $(addprefix $(ARCH_OUT)/, \
  50287. + aeabi_lcsts.o \
  50288. + aeabi_math.o \
  50289. + aeabi_sighandlers.o \
  50290. + )
  50291. +libc-nonshared-$(IS_EABI) += $(addprefix $(ARCH_OUT)/, \
  50292. + aeabi_lcsts.os \
  50293. + aeabi_math.os \
  50294. + aeabi_sighandlers.os \
  50295. + aeabi_unwind_cpp_pr1.o \
  50296. + )
  50297. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap64.S uClibc-git/libc/sysdeps/linux/arm/mmap64.S
  50298. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap64.S 2012-05-15 09:20:09.000000000 +0200
  50299. +++ uClibc-git/libc/sysdeps/linux/arm/mmap64.S 2014-02-03 12:32:56.000000000 +0100
  50300. @@ -12,17 +12,16 @@
  50301. Lesser General Public License for more details.
  50302. You should have received a copy of the GNU Lesser General Public
  50303. - License along with the GNU C Library; if not, write to the Free
  50304. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50305. - 02111-1307 USA. */
  50306. + License along with the GNU C Library; if not, see
  50307. + <http://www.gnu.org/licenses/>. */
  50308. -#include <features.h>
  50309. +#include <_lfs_64.h>
  50310. #define _ERRNO_H
  50311. #include <bits/errno.h>
  50312. #include <sys/syscall.h>
  50313. #include <bits/arm_asm.h>
  50314. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_mmap2
  50315. +#ifdef __NR_mmap2
  50316. /* The mmap2 system call takes six arguments, all in registers. */
  50317. .text
  50318. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap.c uClibc-git/libc/sysdeps/linux/arm/mmap.c
  50319. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/mmap.c 2012-05-15 09:20:09.000000000 +0200
  50320. +++ uClibc-git/libc/sysdeps/linux/arm/mmap.c 1970-01-01 01:00:00.000000000 +0100
  50321. @@ -1,74 +0,0 @@
  50322. -/* vi: set sw=4 ts=4: */
  50323. -/*
  50324. - * _mmap() for uClibc
  50325. - *
  50326. - * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
  50327. - *
  50328. - * GNU Library General Public License (LGPL) version 2 or later.
  50329. - */
  50330. -#include <errno.h>
  50331. -#include <unistd.h>
  50332. -#include <sys/mman.h>
  50333. -#include <sys/syscall.h>
  50334. -
  50335. -#if defined (__NR_mmap) || defined (__NR_mmap2)
  50336. -
  50337. -libc_hidden_proto(mmap)
  50338. -#if defined (__UCLIBC_MMAP_HAS_6_ARGS__) && defined (__NR_mmap)
  50339. -#define __NR__mmap __NR_mmap
  50340. -static __inline__ _syscall6 (__ptr_t, _mmap, __ptr_t, addr, size_t, len,
  50341. - int, prot, int, flags, int, fd, __off_t, offset)
  50342. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  50343. - int flags, int fd, __off_t offset)
  50344. -{
  50345. - return (__ptr_t) _mmap (addr, len, prot, flags,
  50346. - fd, offset);
  50347. -}
  50348. -
  50349. -#elif defined (__NR_mmap2)
  50350. -#define __NR__mmap __NR_mmap2
  50351. -
  50352. -#ifndef MMAP2_PAGE_SHIFT
  50353. -# define MMAP2_PAGE_SHIFT 12
  50354. -#endif
  50355. -
  50356. -static __inline__ _syscall6 (__ptr_t, _mmap, __ptr_t, addr, size_t, len,
  50357. - int, prot, int, flags, int, fd, __off_t, offset);
  50358. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  50359. - int flags, int fd, __off_t offset)
  50360. -{
  50361. - /* check if offset is page aligned */
  50362. - if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
  50363. - {
  50364. - __set_errno(EINVAL);
  50365. - return MAP_FAILED;
  50366. - }
  50367. -#ifdef __USE_FILE_OFFSET64
  50368. - return (__ptr_t) _mmap (addr, len, prot, flags,
  50369. - fd, ((__u_quad_t) offset >> MMAP2_PAGE_SHIFT));
  50370. -#else
  50371. - return (__ptr_t) _mmap (addr, len, prot, flags,
  50372. - fd, ((__u_long) offset >> MMAP2_PAGE_SHIFT));
  50373. -#endif
  50374. -}
  50375. -#elif defined (__NR_mmap)
  50376. -# define __NR__mmap __NR_mmap
  50377. -static __inline__ _syscall1(__ptr_t, _mmap, unsigned long *, buffer)
  50378. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  50379. - int flags, int fd, __off_t offset)
  50380. -{
  50381. - unsigned long buffer[6];
  50382. -
  50383. - buffer[0] = (unsigned long) addr;
  50384. - buffer[1] = (unsigned long) len;
  50385. - buffer[2] = (unsigned long) prot;
  50386. - buffer[3] = (unsigned long) flags;
  50387. - buffer[4] = (unsigned long) fd;
  50388. - buffer[5] = (unsigned long) offset;
  50389. - return (__ptr_t) _mmap(buffer);
  50390. -}
  50391. -#endif
  50392. -libc_hidden_def (mmap)
  50393. -#else
  50394. -# error "Your architecture doesn't seem to provide mmap() !?"
  50395. -#endif
  50396. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise64.c uClibc-git/libc/sysdeps/linux/arm/posix_fadvise64.c
  50397. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  50398. +++ uClibc-git/libc/sysdeps/linux/arm/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100
  50399. @@ -1,59 +0,0 @@
  50400. -/* vi: set sw=4 ts=4: */
  50401. -/*
  50402. - * posix_fadvise64() for ARM uClibc
  50403. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  50404. - *
  50405. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  50406. - *
  50407. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50408. - */
  50409. -
  50410. -#include <features.h>
  50411. -#include <unistd.h>
  50412. -#include <errno.h>
  50413. -#include <endian.h>
  50414. -#include <stdint.h>
  50415. -#include <sys/types.h>
  50416. -#include <sys/syscall.h>
  50417. -#include <fcntl.h>
  50418. -
  50419. -#ifdef __UCLIBC_HAS_LFS__
  50420. -
  50421. -#if defined __NR_arm_fadvise64_64
  50422. -
  50423. -/* Was named __libc_posix_fadvise64 for some inexplicable reason.
  50424. -** google says only uclibc has *__libc*_posix_fadviseXXX,
  50425. -** so it cannot be compat with anything.
  50426. -**
  50427. -** Remove this comment and one at the end after 0.9.31
  50428. -*/
  50429. -
  50430. -/* This is for the ARM version of fadvise64_64 which swaps the params
  50431. - * about to avoid having ABI compat issues
  50432. - */
  50433. -#define __NR___syscall_arm_fadvise64_64 __NR_arm_fadvise64_64
  50434. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  50435. -{
  50436. - INTERNAL_SYSCALL_DECL (err);
  50437. - int ret = INTERNAL_SYSCALL (arm_fadvise64_64, err, 6, fd, advise,
  50438. - __LONG_LONG_PAIR ((long)(offset >> 32), (long)offset),
  50439. - __LONG_LONG_PAIR ((long)(len >> 32), (long)len));
  50440. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  50441. - return 0;
  50442. - if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
  50443. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  50444. - return 0;
  50445. -}
  50446. -
  50447. -/* weak_alias(__libc_posix_fadvise64, posix_fadvise64); */
  50448. -
  50449. -#elif defined __UCLIBC_HAS_STUBS__
  50450. -
  50451. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  50452. -{
  50453. - return ENOSYS;
  50454. -}
  50455. -
  50456. -#endif
  50457. -
  50458. -#endif
  50459. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise.c uClibc-git/libc/sysdeps/linux/arm/posix_fadvise.c
  50460. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  50461. +++ uClibc-git/libc/sysdeps/linux/arm/posix_fadvise.c 1970-01-01 01:00:00.000000000 +0100
  50462. @@ -1,49 +0,0 @@
  50463. -/* vi: set sw=4 ts=4: */
  50464. -/*
  50465. - * posix_fadvise() for ARM uClibc
  50466. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  50467. - *
  50468. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  50469. - *
  50470. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50471. - */
  50472. -#include <sys/syscall.h>
  50473. -#include <fcntl.h>
  50474. -
  50475. -#if defined __NR_arm_fadvise64_64
  50476. -
  50477. -#define HIGH_BITS(x) (sizeof(x) > 4 ? (x) >> 32 : 0)
  50478. -
  50479. -/* Was named __libc_posix_fadvise for some inexplicable reason.
  50480. -** google says only uclibc has *__libc*_posix_fadviseXXX,
  50481. -** so it cannot be compat with anything.
  50482. -**
  50483. -** Remove this comment and one at the end after 0.9.31
  50484. -*/
  50485. -
  50486. -/* This is for the ARM version of fadvise64_64 which swaps the params
  50487. - * about to avoid having ABI compat issues
  50488. - */
  50489. -#define __NR___syscall_arm_fadvise64_64 __NR_arm_fadvise64_64
  50490. -int posix_fadvise(int fd, off_t offset, off_t len, int advise)
  50491. -{
  50492. - INTERNAL_SYSCALL_DECL (err);
  50493. - int ret = INTERNAL_SYSCALL (arm_fadvise64_64, err, 6, fd, advise,
  50494. - __LONG_LONG_PAIR (HIGH_BITS(offset), (long)offset),
  50495. - __LONG_LONG_PAIR (HIGH_BITS(len), (long)len));
  50496. -
  50497. - if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  50498. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  50499. - return 0;
  50500. -}
  50501. -
  50502. -/* weak_alias(__libc_posix_fadvise, posix_fadvise); */
  50503. -
  50504. -#elif defined __UCLIBC_HAS_STUBS__
  50505. -
  50506. -int posix_fadvise(int fd attribute_unused, off_t offset attribute_unused, off_t len attribute_unused, int advice attribute_unused)
  50507. -{
  50508. - return ENOSYS;
  50509. -}
  50510. -
  50511. -#endif
  50512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/setcontext.S uClibc-git/libc/sysdeps/linux/arm/setcontext.S
  50513. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  50514. +++ uClibc-git/libc/sysdeps/linux/arm/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  50515. @@ -0,0 +1,76 @@
  50516. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  50517. + This file is part of the GNU C Library.
  50518. +
  50519. + The GNU C Library is free software; you can redistribute it and/or
  50520. + modify it under the terms of the GNU Lesser General Public
  50521. + License as published by the Free Software Foundation; either
  50522. + version 2.1 of the License, or (at your option) any later version.
  50523. +
  50524. + The GNU C Library is distributed in the hope that it will be useful,
  50525. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50526. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50527. + Lesser General Public License for more details.
  50528. +
  50529. + You should have received a copy of the GNU Lesser General Public
  50530. + License along with the GNU C Library; if not, see
  50531. + <http://www.gnu.org/licenses/>. */
  50532. +
  50533. +#include <sysdep.h>
  50534. +
  50535. +#include "ucontext_i.h"
  50536. +
  50537. + .syntax unified
  50538. + .text
  50539. +
  50540. +/* int setcontext (const ucontext_t *ucp) */
  50541. +
  50542. +ENTRY(__setcontext)
  50543. + mov r4, r0
  50544. +
  50545. +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  50546. +# ifdef __VFP_FP__
  50547. + /* Following instruction is vldmia r0!, {d8-d15}. */
  50548. + ldc p11, cr8, [r0], #64
  50549. + /* Restore the floating-point status register. */
  50550. + ldr r1, [r0], #4
  50551. + /* Following instruction is fmxr fpscr, r1. */
  50552. + mcr p10, 7, r1, cr1, cr0, 0
  50553. +# endif
  50554. +#endif
  50555. +
  50556. +#ifdef __IWMMXT__
  50557. + /* Restore the call-preserved iWMMXt registers. */
  50558. + /* Following instructions are wldrd wr10, [r0], #8 (etc.) */
  50559. + ldcl p1, cr10, [r0], #8
  50560. + ldcl p1, cr11, [r0], #8
  50561. + ldcl p1, cr12, [r0], #8
  50562. + ldcl p1, cr13, [r0], #8
  50563. + ldcl p1, cr14, [r0], #8
  50564. + ldcl p1, cr15, [r0], #8
  50565. +#endif
  50566. +
  50567. + /* Now bring back the signal status. */
  50568. + mov r0, #SIG_SETMASK
  50569. + add r1, r4, #UCONTEXT_SIGMASK
  50570. + mov r2, #0
  50571. + bl PLTJMP(sigprocmask)
  50572. +
  50573. + /* Loading r0-r3 makes makecontext easier. */
  50574. + add r14, r4, #MCONTEXT_ARM_R0
  50575. + ldmia r14, {r0-r11}
  50576. + ldr r13, [r14, #(MCONTEXT_ARM_SP - MCONTEXT_ARM_R0)]
  50577. + add r14, r14, #(MCONTEXT_ARM_LR - MCONTEXT_ARM_R0)
  50578. + ldmia r14, {r14, pc}
  50579. +
  50580. +END(setcontext)
  50581. +weak_alias(__setcontext, setcontext)
  50582. +
  50583. + /* Called when a makecontext() context returns. Start the
  50584. + context in R4 or fall through to exit(). */
  50585. +ENTRY(__startcontext)
  50586. + movs r0, r4
  50587. + bne PLTJMP(__setcontext)
  50588. +
  50589. + @ New context was 0 - exit
  50590. + b PLTJMP(_exit)
  50591. +END(__startcontext)
  50592. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/setjmp.S uClibc-git/libc/sysdeps/linux/arm/setjmp.S
  50593. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  50594. +++ uClibc-git/libc/sysdeps/linux/arm/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  50595. @@ -13,9 +13,8 @@
  50596. Lesser General Public License for more details.
  50597. You should have received a copy of the GNU Lesser General Public
  50598. - License along with the GNU C Library; if not, write to the Free
  50599. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50600. - 02111-1307 USA. */
  50601. + License along with the GNU C Library; if not, see
  50602. + <http://www.gnu.org/licenses/>. */
  50603. #include <features.h>
  50604. #include <bits/arm_asm.h>
  50605. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigaction.c uClibc-git/libc/sysdeps/linux/arm/sigaction.c
  50606. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  50607. +++ uClibc-git/libc/sysdeps/linux/arm/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  50608. @@ -12,9 +12,8 @@
  50609. Lesser General Public License for more details.
  50610. You should have received a copy of the GNU Lesser General Public
  50611. - License along with the GNU C Library; if not, write to the Free
  50612. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50613. - 02111-1307 USA.
  50614. + License along with the GNU C Library; if not, see
  50615. + <http://www.gnu.org/licenses/>.
  50616. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  50617. */
  50618. @@ -29,8 +28,6 @@
  50619. extern void __default_sa_restorer(void);
  50620. extern void __default_rt_sa_restorer(void);
  50621. -extern __typeof(sigaction) __libc_sigaction;
  50622. -
  50623. /* When RT signals are in use we need to use a different return stub. */
  50624. #ifdef __NR_rt_sigreturn
  50625. #define choose_restorer(flags) \
  50626. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigrestorer.S uClibc-git/libc/sysdeps/linux/arm/sigrestorer.S
  50627. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sigrestorer.S 2012-05-15 09:20:09.000000000 +0200
  50628. +++ uClibc-git/libc/sysdeps/linux/arm/sigrestorer.S 2014-02-03 12:32:56.000000000 +0100
  50629. @@ -12,9 +12,8 @@
  50630. Lesser General Public License for more details.
  50631. You should have received a copy of the GNU Lesser General Public
  50632. - License along with the GNU C Library; if not, write to the Free
  50633. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50634. - 02111-1307 USA. */
  50635. + License along with the GNU C Library; if not, see
  50636. + <http://www.gnu.org/licenses/>. */
  50637. #include <bits/arm_asm.h>
  50638. #include <sys/syscall.h>
  50639. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/swapcontext.S uClibc-git/libc/sysdeps/linux/arm/swapcontext.S
  50640. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  50641. +++ uClibc-git/libc/sysdeps/linux/arm/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  50642. @@ -0,0 +1,63 @@
  50643. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  50644. + This file is part of the GNU C Library.
  50645. +
  50646. + The GNU C Library is free software; you can redistribute it and/or
  50647. + modify it under the terms of the GNU Lesser General Public
  50648. + License as published by the Free Software Foundation; either
  50649. + version 2.1 of the License, or (at your option) any later version.
  50650. +
  50651. + The GNU C Library is distributed in the hope that it will be useful,
  50652. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  50653. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  50654. + Lesser General Public License for more details.
  50655. +
  50656. + You should have received a copy of the GNU Lesser General Public
  50657. + License along with the GNU C Library; if not, see
  50658. + <http://www.gnu.org/licenses/>. */
  50659. +
  50660. +#include <sysdep.h>
  50661. +
  50662. +#include "ucontext_i.h"
  50663. +
  50664. + .syntax unified
  50665. + .text
  50666. +
  50667. +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
  50668. +
  50669. +ENTRY(swapcontext)
  50670. +
  50671. + /* Have getcontext() do most of the work then fix up
  50672. + LR afterwards. Save R3 to keep the stack aligned. */
  50673. + push {r0,r1,r3,r14}
  50674. + cfi_adjust_cfa_offset (16)
  50675. + cfi_rel_offset (r0,0)
  50676. + cfi_rel_offset (r1,4)
  50677. + cfi_rel_offset (r3,8)
  50678. + cfi_rel_offset (r14,12)
  50679. +
  50680. + bl __getcontext
  50681. + mov r4, r0
  50682. +
  50683. + pop {r0,r1,r3,r14}
  50684. + cfi_adjust_cfa_offset (-16)
  50685. + cfi_restore (r0)
  50686. + cfi_restore (r1)
  50687. + cfi_restore (r3)
  50688. + cfi_restore (r14)
  50689. +
  50690. + /* Exit if getcontext() failed. */
  50691. + cmp r4, #0
  50692. + itt ne
  50693. + movne r0, r4
  50694. + RETINSTR(ne, r14)
  50695. +
  50696. + /* Fix up LR and the PC. */
  50697. + str r13,[r0, #MCONTEXT_ARM_SP]
  50698. + str r14,[r0, #MCONTEXT_ARM_LR]
  50699. + str r14,[r0, #MCONTEXT_ARM_PC]
  50700. +
  50701. + /* And swap using swapcontext(). */
  50702. + mov r0, r1
  50703. + b __setcontext
  50704. +
  50705. +END(swapcontext)
  50706. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/elf.h uClibc-git/libc/sysdeps/linux/arm/sys/elf.h
  50707. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  50708. +++ uClibc-git/libc/sysdeps/linux/arm/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  50709. @@ -12,9 +12,8 @@
  50710. Lesser General Public License for more details.
  50711. You should have received a copy of the GNU Lesser General Public
  50712. - License along with the GNU C Library; if not, write to the Free
  50713. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50714. - 02111-1307 USA. */
  50715. + License along with the GNU C Library; if not, see
  50716. + <http://www.gnu.org/licenses/>. */
  50717. #ifndef _SYS_ELF_H
  50718. #define _SYS_ELF_H 1
  50719. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/io.h uClibc-git/libc/sysdeps/linux/arm/sys/io.h
  50720. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  50721. +++ uClibc-git/libc/sysdeps/linux/arm/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  50722. @@ -12,9 +12,8 @@
  50723. Lesser General Public License for more details.
  50724. You should have received a copy of the GNU Lesser General Public
  50725. - License along with the GNU C Library; if not, write to the Free
  50726. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50727. - 02111-1307 USA. */
  50728. + License along with the GNU C Library; if not, see
  50729. + <http://www.gnu.org/licenses/>. */
  50730. #ifndef _SYS_IO_H
  50731. @@ -23,6 +22,7 @@
  50732. __BEGIN_DECLS
  50733. +#if defined __UCLIBC_LINUX_SPECIFIC__
  50734. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  50735. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  50736. permission off for that range. This call requires root privileges. */
  50737. @@ -34,6 +34,7 @@
  50738. permission to access any I/O port is granted. This call requires
  50739. root privileges. */
  50740. extern int iopl (int __level) __THROW;
  50741. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  50742. /* The functions that actually perform reads and writes. */
  50743. extern unsigned char inb (unsigned long int port) __THROW;
  50744. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/procfs.h uClibc-git/libc/sysdeps/linux/arm/sys/procfs.h
  50745. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  50746. +++ uClibc-git/libc/sysdeps/linux/arm/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  50747. @@ -12,9 +12,8 @@
  50748. Lesser General Public License for more details.
  50749. You should have received a copy of the GNU Lesser General Public
  50750. - License along with the GNU C Library; if not, write to the Free
  50751. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50752. - 02111-1307 USA. */
  50753. + License along with the GNU C Library; if not, see
  50754. + <http://www.gnu.org/licenses/>. */
  50755. #ifndef _SYS_PROCFS_H
  50756. #define _SYS_PROCFS_H 1
  50757. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/ucontext.h uClibc-git/libc/sysdeps/linux/arm/sys/ucontext.h
  50758. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  50759. +++ uClibc-git/libc/sysdeps/linux/arm/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  50760. @@ -12,9 +12,8 @@
  50761. Lesser General Public License for more details.
  50762. You should have received a copy of the GNU Lesser General Public
  50763. - License along with the GNU C Library; if not, write to the Free
  50764. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50765. - 02111-1307 USA. */
  50766. + License along with the GNU C Library; if not, see
  50767. + <http://www.gnu.org/licenses/>. */
  50768. /* System V/ARM ABI compliant context switching support. */
  50769. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/user.h uClibc-git/libc/sysdeps/linux/arm/sys/user.h
  50770. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  50771. +++ uClibc-git/libc/sysdeps/linux/arm/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  50772. @@ -12,9 +12,8 @@
  50773. Lesser General Public License for more details.
  50774. You should have received a copy of the GNU Lesser General Public
  50775. - License along with the GNU C Library; if not, write to the Free
  50776. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50777. - 02111-1307 USA. */
  50778. + License along with the GNU C Library; if not, see
  50779. + <http://www.gnu.org/licenses/>. */
  50780. #ifndef _SYS_USER_H
  50781. #define _SYS_USER_H 1
  50782. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/syscall-eabi.S uClibc-git/libc/sysdeps/linux/arm/syscall-eabi.S
  50783. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/syscall-eabi.S 2012-05-15 09:20:09.000000000 +0200
  50784. +++ uClibc-git/libc/sysdeps/linux/arm/syscall-eabi.S 2014-02-03 12:32:56.000000000 +0100
  50785. @@ -12,9 +12,8 @@
  50786. Lesser General Public License for more details.
  50787. You should have received a copy of the GNU Lesser General Public
  50788. - License along with the GNU C Library; if not, write to the Free
  50789. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50790. - 02111-1307 USA. */
  50791. + License along with the GNU C Library; if not, see
  50792. + <http://www.gnu.org/licenses/>. */
  50793. #include <sys/syscall.h>
  50794. #include <bits/arm_asm.h>
  50795. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/sysdep.h uClibc-git/libc/sysdeps/linux/arm/sysdep.h
  50796. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  50797. +++ uClibc-git/libc/sysdeps/linux/arm/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  50798. @@ -13,9 +13,8 @@
  50799. Lesser General Public License for more details.
  50800. You should have received a copy of the GNU Lesser General Public
  50801. - License along with the GNU C Library; if not, write to the Free
  50802. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50803. - 02111-1307 USA. */
  50804. + License along with the GNU C Library; if not, see
  50805. + <http://www.gnu.org/licenses/>. */
  50806. #ifndef _LINUX_ARM_SYSDEP_H
  50807. #define _LINUX_ARM_SYSDEP_H 1
  50808. @@ -157,6 +156,7 @@
  50809. #define PSEUDO_END_ERRVAL(name) \
  50810. END (name)
  50811. +#undef ret_ERRVAL
  50812. #define ret_ERRVAL PSEUDO_RET_NOERRNO
  50813. #if defined NOT_IN_libc
  50814. @@ -254,7 +254,7 @@
  50815. #undef INLINE_SYSCALL
  50816. #define INLINE_SYSCALL(name, nr, args...) \
  50817. ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args); \
  50818. - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ), 0)) \
  50819. + if (unlikely (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ))) \
  50820. { \
  50821. __set_errno (INTERNAL_SYSCALL_ERRNO (_inline_sys_result, )); \
  50822. _inline_sys_result = (unsigned int) -1; \
  50823. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/ucontext_i.sym uClibc-git/libc/sysdeps/linux/arm/ucontext_i.sym
  50824. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  50825. +++ uClibc-git/libc/sysdeps/linux/arm/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  50826. @@ -0,0 +1,30 @@
  50827. +#include <inttypes.h>
  50828. +#include <signal.h>
  50829. +#include <stddef.h>
  50830. +#include <sys/ucontext.h>
  50831. +
  50832. +SIG_BLOCK
  50833. +SIG_SETMASK
  50834. +
  50835. +-- Offsets of the fields in the ucontext_t structure.
  50836. +#define ucontext(member) offsetof (ucontext_t, member)
  50837. +#define mcontext(member) ucontext (uc_mcontext.member)
  50838. +
  50839. +UCONTEXT_FLAGS ucontext (uc_flags)
  50840. +UCONTEXT_LINK ucontext (uc_link)
  50841. +UCONTEXT_STACK ucontext (uc_stack)
  50842. +UCONTEXT_MCONTEXT ucontext (uc_mcontext)
  50843. +UCONTEXT_SIGMASK ucontext (uc_sigmask)
  50844. +
  50845. +UCONTEXT_REGSPACE ucontext (uc_regspace)
  50846. +
  50847. +MCONTEXT_TRAP_NO mcontext (trap_no)
  50848. +MCONTEXT_ERROR_CODE mcontext (error_code)
  50849. +MCONTEXT_OLDMASK mcontext (oldmask)
  50850. +MCONTEXT_ARM_R0 mcontext (arm_r0)
  50851. +MCONTEXT_ARM_R4 mcontext (arm_r4)
  50852. +MCONTEXT_ARM_SP mcontext (arm_sp)
  50853. +MCONTEXT_ARM_LR mcontext (arm_lr)
  50854. +MCONTEXT_ARM_PC mcontext (arm_pc)
  50855. +MCONTEXT_ARM_CPSR mcontext (arm_cpsr)
  50856. +MCONTEXT_FAULT_ADDRESS mcontext (fault_address)
  50857. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/unwind.h uClibc-git/libc/sysdeps/linux/arm/unwind.h
  50858. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/unwind.h 2012-05-15 09:20:09.000000000 +0200
  50859. +++ uClibc-git/libc/sysdeps/linux/arm/unwind.h 2014-02-03 12:32:56.000000000 +0100
  50860. @@ -22,9 +22,8 @@
  50861. General Public License for more details.
  50862. You should have received a copy of the GNU General Public License
  50863. - along with this program; see the file COPYING. If not, write to
  50864. - the Free Software Foundation, 51 Franklin Street, Fifth Floor,
  50865. - Boston, MA 02110-1301, USA. */
  50866. + along with this program; see the file COPYING. If not, see
  50867. + <http://www.gnu.org/licenses/>. */
  50868. /* Language-independent unwinder header public defines. This contains both
  50869. ABI defined objects, and GNU support routines. */
  50870. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/arm/vfork.S uClibc-git/libc/sysdeps/linux/arm/vfork.S
  50871. --- uClibc-0.9.33.2/libc/sysdeps/linux/arm/vfork.S 2012-05-15 09:20:09.000000000 +0200
  50872. +++ uClibc-git/libc/sysdeps/linux/arm/vfork.S 2014-02-03 12:32:56.000000000 +0100
  50873. @@ -104,5 +104,5 @@
  50874. .size __vfork,.-__vfork
  50875. weak_alias(__vfork,vfork)
  50876. -libc_hidden_weak(vfork)
  50877. +libc_hidden_def(vfork)
  50878. #endif
  50879. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/atomic.h uClibc-git/libc/sysdeps/linux/avr32/bits/atomic.h
  50880. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  50881. +++ uClibc-git/libc/sysdeps/linux/avr32/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  50882. @@ -28,6 +28,7 @@
  50883. #define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
  50884. ({ \
  50885. + __uint32_t __result; \
  50886. __typeof__(*(mem)) __prev; \
  50887. __asm__ __volatile__( \
  50888. "/* __arch_compare_and_exchange_val_32_acq */\n" \
  50889. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/avr32/bits/kernel_types.h
  50890. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  50891. +++ uClibc-git/libc/sysdeps/linux/avr32/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  50892. @@ -39,6 +39,8 @@
  50893. typedef unsigned short __kernel_old_uid_t;
  50894. typedef unsigned short __kernel_old_gid_t;
  50895. typedef unsigned short __kernel_old_dev_t;
  50896. +typedef long __kernel_long_t;
  50897. +typedef unsigned long __kernel_ulong_t;
  50898. #ifdef __GNUC__
  50899. typedef long long __kernel_loff_t;
  50900. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/setjmp.h uClibc-git/libc/sysdeps/linux/avr32/bits/setjmp.h
  50901. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  50902. +++ uClibc-git/libc/sysdeps/linux/avr32/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  50903. @@ -12,19 +12,10 @@
  50904. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  50905. #endif
  50906. -#ifndef _ASM
  50907. /*
  50908. * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
  50909. * not saved.
  50910. */
  50911. typedef int __jmp_buf[11];
  50912. -#endif
  50913. -
  50914. -#define __JMP_BUF_SP 4
  50915. -
  50916. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  50917. - variable at ADDRESS. */
  50918. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  50919. - ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
  50920. #endif /* _BITS_SETJMP_H */
  50921. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/avr32/bits/stackinfo.h
  50922. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  50923. +++ uClibc-git/libc/sysdeps/linux/avr32/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  50924. @@ -12,9 +12,8 @@
  50925. Lesser General Public License for more details.
  50926. You should have received a copy of the GNU Lesser General Public
  50927. - License along with the GNU C Library; if not, write to the Free
  50928. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  50929. - 02111-1307 USA. */
  50930. + License along with the GNU C Library; if not, see
  50931. + <http://www.gnu.org/licenses/>. */
  50932. /* This file contains a bit of information about the stack allocation
  50933. of the processor. */
  50934. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
  50935. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  50936. +++ uClibc-git/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  50937. @@ -12,8 +12,8 @@
  50938. /* can your target use syscall6() for mmap ? */
  50939. #define __UCLIBC_MMAP_HAS_6_ARGS__
  50940. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  50941. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  50942. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  50943. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  50944. /* does your target have a broken create_module() ? */
  50945. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  50946. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/avr32/jmpbuf-offsets.h
  50947. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  50948. +++ uClibc-git/libc/sysdeps/linux/avr32/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  50949. @@ -0,0 +1,9 @@
  50950. +/* Private macros for accessing __jmp_buf contents. avr32 version.
  50951. + * Copyright (C) 2004-2005 Atmel Corporation
  50952. + *
  50953. + * This file is subject to the terms and conditions of the GNU Lesser General
  50954. + * Public License. See the file "COPYING.LIB" in the main directory of this
  50955. + * archive for more details.
  50956. + */
  50957. +
  50958. +#define __JMP_BUF_SP 4
  50959. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/avr32/jmpbuf-unwind.h
  50960. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  50961. +++ uClibc-git/libc/sysdeps/linux/avr32/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  50962. @@ -0,0 +1,14 @@
  50963. +/*
  50964. + * Copyright (C) 2004-2005 Atmel Corporation
  50965. + *
  50966. + * This file is subject to the terms and conditions of the GNU Lesser General
  50967. + * Public License. See the file "COPYING.LIB" in the main directory of this
  50968. + * archive for more details.
  50969. + */
  50970. +#include <setjmp.h>
  50971. +#include <jmpbuf-offsets.h>
  50972. +
  50973. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  50974. + variable at ADDRESS. */
  50975. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  50976. + ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
  50977. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile uClibc-git/libc/sysdeps/linux/avr32/Makefile
  50978. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile 2012-05-15 09:20:09.000000000 +0200
  50979. +++ uClibc-git/libc/sysdeps/linux/avr32/Makefile 2014-02-03 12:32:56.000000000 +0100
  50980. @@ -13,8 +13,7 @@
  50981. # details.
  50982. #
  50983. # You should have received a copy of the GNU Library General Public License
  50984. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  50985. -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  50986. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  50987. top_srcdir=../../../../
  50988. top_builddir=../../../../
  50989. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile.arch uClibc-git/libc/sysdeps/linux/avr32/Makefile.arch
  50990. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  50991. +++ uClibc-git/libc/sysdeps/linux/avr32/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  50992. @@ -5,7 +5,7 @@
  50993. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  50994. #
  50995. -CSRC := brk.c clone.c mmap.c prctl.c sigaction.c
  50996. +CSRC-y := brk.c clone.c mmap.c prctl.c sigaction.c
  50997. -SSRC := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  50998. +SSRC-y := __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  50999. sigrestorer.S syscall.S vfork.S
  51000. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/mmap.c uClibc-git/libc/sysdeps/linux/avr32/mmap.c
  51001. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/mmap.c 2012-05-15 09:20:09.000000000 +0200
  51002. +++ uClibc-git/libc/sysdeps/linux/avr32/mmap.c 2014-02-03 12:32:56.000000000 +0100
  51003. @@ -12,10 +12,10 @@
  51004. #include <sys/syscall.h>
  51005. -static _syscall6(__ptr_t, mmap2, __ptr_t, addr, size_t, len, int, prot,
  51006. - int, flags, int, fd, __off_t, pgoff)
  51007. +static __inline__ _syscall6(void *, mmap2, void *, addr, size_t, len, int, prot,
  51008. + int, flags, int, fd, __off_t, pgoff)
  51009. -__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
  51010. +void *mmap(void *addr, size_t len, int prot, int flags, int fd, __off_t offset)
  51011. {
  51012. unsigned long page_size = sysconf(_SC_PAGESIZE);
  51013. unsigned long pgoff;
  51014. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/setjmp.S uClibc-git/libc/sysdeps/linux/avr32/setjmp.S
  51015. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  51016. +++ uClibc-git/libc/sysdeps/linux/avr32/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  51017. @@ -5,9 +5,6 @@
  51018. * Public License. See the file "COPYING.LIB" in the main directory of this
  51019. * archive for more details.
  51020. */
  51021. -#define _SETJMP_H
  51022. -#define _ASM
  51023. -#include <bits/setjmp.h>
  51024. .text
  51025. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sigaction.c uClibc-git/libc/sysdeps/linux/avr32/sigaction.c
  51026. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  51027. +++ uClibc-git/libc/sysdeps/linux/avr32/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  51028. @@ -14,8 +14,6 @@
  51029. #define SA_RESTORER 0x04000000
  51030. extern void __default_rt_sa_restorer(void);
  51031. -extern __typeof(sigaction) __libc_sigaction;
  51032. -
  51033. /*
  51034. * If act is not NULL, change the action for sig to *act.
  51035. * If oact is not NULL, put the old action for sig in *oact.
  51036. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/elf.h uClibc-git/libc/sysdeps/linux/avr32/sys/elf.h
  51037. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  51038. +++ uClibc-git/libc/sysdeps/linux/avr32/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  51039. @@ -12,9 +12,8 @@
  51040. Lesser General Public License for more details.
  51041. You should have received a copy of the GNU Lesser General Public
  51042. - License along with the GNU C Library; if not, write to the Free
  51043. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51044. - 02111-1307 USA. */
  51045. + License along with the GNU C Library; if not, see
  51046. + <http://www.gnu.org/licenses/>. */
  51047. #ifndef _SYS_ELF_H
  51048. #define _SYS_ELF_H 1
  51049. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/procfs.h uClibc-git/libc/sysdeps/linux/avr32/sys/procfs.h
  51050. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  51051. +++ uClibc-git/libc/sysdeps/linux/avr32/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  51052. @@ -12,9 +12,8 @@
  51053. Lesser General Public License for more details.
  51054. You should have received a copy of the GNU Lesser General Public
  51055. - License along with the GNU C Library; if not, write to the Free
  51056. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51057. - 02111-1307 USA. */
  51058. + License along with the GNU C Library; if not, see
  51059. + <http://www.gnu.org/licenses/>. */
  51060. #ifndef _SYS_PROCFS_H
  51061. #define _SYS_PROCFS_H 1
  51062. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/ucontext.h uClibc-git/libc/sysdeps/linux/avr32/sys/ucontext.h
  51063. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  51064. +++ uClibc-git/libc/sysdeps/linux/avr32/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  51065. @@ -12,9 +12,8 @@
  51066. Lesser General Public License for more details.
  51067. You should have received a copy of the GNU Lesser General Public
  51068. - License along with the GNU C Library; if not, write to the Free
  51069. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51070. - 02111-1307 USA. */
  51071. + License along with the GNU C Library; if not, see
  51072. + <http://www.gnu.org/licenses/>. */
  51073. /* Linux/AVR32 ABI compliant context switching support. */
  51074. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/avr32/vfork.S uClibc-git/libc/sysdeps/linux/avr32/vfork.S
  51075. --- uClibc-0.9.33.2/libc/sysdeps/linux/avr32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  51076. +++ uClibc-git/libc/sysdeps/linux/avr32/vfork.S 2014-02-03 12:32:56.000000000 +0100
  51077. @@ -17,10 +17,10 @@
  51078. * Fortunately, the Linux kernel preserves LR across system calls.
  51079. */
  51080. -#include <features.h>
  51081. #include <sys/syscall.h>
  51082. .global __vfork
  51083. + .hidden __vfork
  51084. .type __vfork,@function
  51085. .align 1
  51086. __vfork:
  51087. @@ -55,4 +55,4 @@
  51088. .size __vfork, . - __vfork
  51089. weak_alias(__vfork,vfork)
  51090. -libc_hidden_weak(vfork)
  51091. +libc_hidden_def(vfork)
  51092. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/elf-fdpic.h uClibc-git/libc/sysdeps/linux/bfin/bits/elf-fdpic.h
  51093. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/elf-fdpic.h 2012-05-15 09:20:09.000000000 +0200
  51094. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/elf-fdpic.h 2014-02-03 12:32:56.000000000 +0100
  51095. @@ -22,8 +22,7 @@
  51096. You should have received a copy of the GNU Lesser General Public
  51097. License along with the GNU C Library; see the file COPYING.LIB. If
  51098. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  51099. -Cambridge, MA 02139, USA. */
  51100. +not, see <http://www.gnu.org/licenses/>. */
  51101. #ifndef _BITS_ELF_FDPIC_H
  51102. #define _BITS_ELF_FDPIC_H
  51103. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/fcntl.h uClibc-git/libc/sysdeps/linux/bfin/bits/fcntl.h
  51104. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  51105. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  51106. @@ -13,9 +13,8 @@
  51107. Lesser General Public License for more details.
  51108. You should have received a copy of the GNU Lesser General Public
  51109. - License along with the GNU C Library; if not, write to the Free
  51110. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51111. - 02111-1307 USA. */
  51112. + License along with the GNU C Library; if not, see
  51113. + <http://www.gnu.org/licenses/>. */
  51114. #ifndef _FCNTL_H
  51115. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  51116. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/huge_val.h uClibc-git/libc/sysdeps/linux/bfin/bits/huge_val.h
  51117. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  51118. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  51119. @@ -16,9 +16,8 @@
  51120. Lesser General Public License for more details.
  51121. You should have received a copy of the GNU Lesser General Public
  51122. - License along with the GNU C Library; if not, write to the Free
  51123. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51124. - 02111-1307 USA. */
  51125. + License along with the GNU C Library; if not, see
  51126. + <http://www.gnu.org/licenses/>. */
  51127. #ifndef _MATH_H
  51128. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  51129. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/bfin/bits/kernel_types.h
  51130. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  51131. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  51132. @@ -32,6 +32,8 @@
  51133. typedef unsigned short __kernel_old_gid_t;
  51134. typedef long long __kernel_loff_t;
  51135. typedef __kernel_dev_t __kernel_old_dev_t;
  51136. +typedef long __kernel_long_t;
  51137. +typedef unsigned long __kernel_ulong_t;
  51138. typedef struct {
  51139. #ifdef __USE_ALL
  51140. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/setjmp.h uClibc-git/libc/sysdeps/linux/bfin/bits/setjmp.h
  51141. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  51142. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  51143. @@ -12,9 +12,8 @@
  51144. Lesser General Public License for more details.
  51145. You should have received a copy of the GNU Lesser General Public
  51146. - License along with the GNU C Library; if not, write to the Free
  51147. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51148. - 02111-1307 USA. */
  51149. + License along with the GNU C Library; if not, see
  51150. + <http://www.gnu.org/licenses/>. */
  51151. /* Define the machine-dependent type `jmp_buf'. bfin version. Lineo, Inc. 2001*/
  51152. #ifndef _BITS_SETJMP_H
  51153. @@ -24,7 +23,6 @@
  51154. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  51155. #endif
  51156. -#ifndef _ASM
  51157. /* Jump buffer contains r7-r4, p5-p3, fp, sp and pc. Other registers are not saved. */
  51158. typedef struct
  51159. {
  51160. @@ -45,13 +43,4 @@
  51161. unsigned long pc;
  51162. }__jmp_buf[1];
  51163. -#endif
  51164. -
  51165. -#define __JMP_BUF_SP 8
  51166. -
  51167. -/* Test if longjmp to JMPBUF would unwind the frame
  51168. - containing a local variable at ADDRESS. */
  51169. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51170. - ((void *) (address) < (void *) (jmpbuf)->fp)
  51171. -
  51172. #endif /* bits/setjmp.h */
  51173. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h
  51174. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  51175. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  51176. @@ -13,9 +13,8 @@
  51177. Lesser General Public License for more details.
  51178. You should have received a copy of the GNU Lesser General Public
  51179. - License along with the GNU C Library; if not, write to the Free
  51180. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51181. - 02111-1307 USA. */
  51182. + License along with the GNU C Library; if not, see
  51183. + <http://www.gnu.org/licenses/>. */
  51184. #define SIGCONTEXT int _code, struct sigcontext *
  51185. #define SIGCONTEXT_EXTRA_ARGS _code,
  51186. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/bfin/bits/stackinfo.h
  51187. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  51188. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  51189. @@ -12,9 +12,8 @@
  51190. Lesser General Public License for more details.
  51191. You should have received a copy of the GNU Lesser General Public
  51192. - License along with the GNU C Library; if not, write to the Free
  51193. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51194. - 02111-1307 USA. */
  51195. + License along with the GNU C Library; if not, see
  51196. + <http://www.gnu.org/licenses/>. */
  51197. /* This file contains a bit of information about the stack allocation
  51198. of the processor. */
  51199. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/typesizes.h uClibc-git/libc/sysdeps/linux/bfin/bits/typesizes.h
  51200. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  51201. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  51202. @@ -13,9 +13,8 @@
  51203. Lesser General Public License for more details.
  51204. You should have received a copy of the GNU Lesser General Public
  51205. - License along with the GNU C Library; if not, write to the Free
  51206. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51207. - 02111-1307 USA. */
  51208. + License along with the GNU C Library; if not, see
  51209. + <http://www.gnu.org/licenses/>. */
  51210. #ifndef _BITS_TYPES_H
  51211. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  51212. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h
  51213. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  51214. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  51215. @@ -11,8 +11,8 @@
  51216. /* can your target use syscall6() for mmap ? */
  51217. #define __UCLIBC_MMAP_HAS_6_ARGS__
  51218. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  51219. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  51220. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  51221. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  51222. /* does your target have a broken create_module() ? */
  51223. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  51224. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/wordsize.h uClibc-git/libc/sysdeps/linux/bfin/bits/wordsize.h
  51225. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  51226. +++ uClibc-git/libc/sysdeps/linux/bfin/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  51227. @@ -12,8 +12,7 @@
  51228. Lesser General Public License for more details.
  51229. You should have received a copy of the GNU Lesser General Public
  51230. - License along with the GNU C Library; if not, write to the Free
  51231. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51232. - 02111-1307 USA. */
  51233. + License along with the GNU C Library; if not, see
  51234. + <http://www.gnu.org/licenses/>. */
  51235. #define __WORDSIZE 32
  51236. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/cacheflush.c uClibc-git/libc/sysdeps/linux/bfin/cacheflush.c
  51237. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/cacheflush.c 2012-05-15 09:20:09.000000000 +0200
  51238. +++ uClibc-git/libc/sysdeps/linux/bfin/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  51239. @@ -6,9 +6,10 @@
  51240. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51241. */
  51242. -#include <unistd.h>
  51243. -#include <errno.h>
  51244. #include <sys/syscall.h>
  51245. -#include <sys/cachectl.h>
  51246. -_syscall3 (int, cacheflush, void *, start, const int, nbytes, const int, flags)
  51247. +#ifdef __NR_cacheflush
  51248. +# include <sys/cachectl.h>
  51249. +
  51250. +_syscall3 (int, cacheflush, void *, addr, const int, nbytes, const int, flags)
  51251. +#endif
  51252. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crt1.S uClibc-git/libc/sysdeps/linux/bfin/crt1.S
  51253. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crt1.S 2012-05-15 09:20:09.000000000 +0200
  51254. +++ uClibc-git/libc/sysdeps/linux/bfin/crt1.S 2014-02-03 12:32:56.000000000 +0100
  51255. @@ -14,8 +14,7 @@
  51256. You should have received a copy of the GNU Library General Public
  51257. License along with the GNU C Library; see the file COPYING.LIB. If
  51258. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  51259. -Cambridge, MA 02139, USA. */
  51260. +not, see <http://www.gnu.org/licenses/>. */
  51261. /* When we enter this piece of code, the user stack looks like this:
  51262. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crti.S uClibc-git/libc/sysdeps/linux/bfin/crti.S
  51263. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crti.S 2012-05-15 09:20:09.000000000 +0200
  51264. +++ uClibc-git/libc/sysdeps/linux/bfin/crti.S 2014-02-03 12:32:56.000000000 +0100
  51265. @@ -16,9 +16,8 @@
  51266. GNU General Public License for more details.
  51267. You should have received a copy of the GNU General Public License
  51268. -along with GCC; see the file COPYING. If not, write to
  51269. -the Free Software Foundation, 59 Temple Place - Suite 330,
  51270. -Boston, MA 02111-1307, USA. */
  51271. +along with GCC; see the file COPYING. If not, see
  51272. +<http://www.gnu.org/licenses/>. */
  51273. /* As a special exception, if you link this library with files
  51274. compiled with GCC to produce an executable, this does not cause
  51275. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtn.S uClibc-git/libc/sysdeps/linux/bfin/crtn.S
  51276. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtn.S 2012-05-15 09:20:09.000000000 +0200
  51277. +++ uClibc-git/libc/sysdeps/linux/bfin/crtn.S 2014-02-03 12:32:56.000000000 +0100
  51278. @@ -16,9 +16,8 @@
  51279. GNU General Public License for more details.
  51280. You should have received a copy of the GNU General Public License
  51281. -along with GCC; see the file COPYING. If not, write to
  51282. -the Free Software Foundation, 59 Temple Place - Suite 330,
  51283. -Boston, MA 02111-1307, USA. */
  51284. +along with GCC; see the file COPYING. If not, see
  51285. +<http://www.gnu.org/licenses/>. */
  51286. /* As a special exception, if you link this library with files
  51287. compiled with GCC to produce an executable, this does not cause
  51288. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtreloc.c uClibc-git/libc/sysdeps/linux/bfin/crtreloc.c
  51289. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/crtreloc.c 2012-05-15 09:20:09.000000000 +0200
  51290. +++ uClibc-git/libc/sysdeps/linux/bfin/crtreloc.c 2014-02-03 12:32:56.000000000 +0100
  51291. @@ -23,8 +23,7 @@
  51292. You should have received a copy of the GNU Lesser General Public
  51293. License along with the GNU C Library; see the file COPYING.LIB. If
  51294. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  51295. -Cambridge, MA 02139, USA. */
  51296. +not, see <http://www.gnu.org/licenses/>. */
  51297. #ifdef __BFIN_FDPIC__
  51298. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/bfin/jmpbuf-offsets.h
  51299. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  51300. +++ uClibc-git/libc/sysdeps/linux/bfin/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  51301. @@ -0,0 +1,8 @@
  51302. +/* Private macros for accessing __jmp_buf contents. BFIN version. */
  51303. +/*
  51304. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  51305. + *
  51306. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51307. + */
  51308. +
  51309. +#define __JMP_BUF_SP 8
  51310. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/bfin/jmpbuf-unwind.h
  51311. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  51312. +++ uClibc-git/libc/sysdeps/linux/bfin/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  51313. @@ -0,0 +1,11 @@
  51314. +/*
  51315. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  51316. + *
  51317. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51318. + */
  51319. +#include <setjmp.h>
  51320. +
  51321. +/* Test if longjmp to JMPBUF would unwind the frame
  51322. + containing a local variable at ADDRESS. */
  51323. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51324. + ((void *) (address) < (void *) (jmpbuf)->fp)
  51325. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/Makefile.arch uClibc-git/libc/sysdeps/linux/bfin/Makefile.arch
  51326. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  51327. +++ uClibc-git/libc/sysdeps/linux/bfin/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  51328. @@ -5,9 +5,11 @@
  51329. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51330. #
  51331. -CSRC := bsdsetjmp.c clone.c \
  51332. - sram-alloc.c sram-free.c dma-memcpy.c cacheflush.c
  51333. +CSRC-y := bsdsetjmp.c clone.c \
  51334. + sram-alloc.c sram-free.c dma-memcpy.c
  51335. -SSRC := __longjmp.S setjmp.S bsd-_setjmp.S
  51336. +SSRC-y := __longjmp.S setjmp.S bsd-_setjmp.S
  51337. +
  51338. +CSRC-$(UCLIBC_LINUX_SPECIFIC) += cacheflush.c
  51339. ARCH_HEADERS := bfin_fixed_code.h bfin_l1layout.h bfin_sram.h
  51340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/cachectl.h uClibc-git/libc/sysdeps/linux/bfin/sys/cachectl.h
  51341. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/cachectl.h 2012-05-15 09:20:09.000000000 +0200
  51342. +++ uClibc-git/libc/sysdeps/linux/bfin/sys/cachectl.h 2014-02-03 12:32:56.000000000 +0100
  51343. @@ -18,7 +18,7 @@
  51344. __BEGIN_DECLS
  51345. -extern int cacheflush (void *addr, __const int nbytes, __const int flags);
  51346. +extern int cacheflush (void *addr, const int nbytes, const int flags);
  51347. __END_DECLS
  51348. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/elf.h uClibc-git/libc/sysdeps/linux/bfin/sys/elf.h
  51349. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  51350. +++ uClibc-git/libc/sysdeps/linux/bfin/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  51351. @@ -12,9 +12,8 @@
  51352. Lesser General Public License for more details.
  51353. You should have received a copy of the GNU Lesser General Public
  51354. - License along with the GNU C Library; if not, write to the Free
  51355. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51356. - 02111-1307 USA. */
  51357. + License along with the GNU C Library; if not, see
  51358. + <http://www.gnu.org/licenses/>. */
  51359. #ifndef _SYS_ELF_H
  51360. #define _SYS_ELF_H 1
  51361. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/io.h uClibc-git/libc/sysdeps/linux/bfin/sys/io.h
  51362. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  51363. +++ uClibc-git/libc/sysdeps/linux/bfin/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  51364. @@ -12,9 +12,8 @@
  51365. Lesser General Public License for more details.
  51366. You should have received a copy of the GNU Lesser General Public
  51367. - License along with the GNU C Library; if not, write to the Free
  51368. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51369. - 02111-1307 USA. */
  51370. + License along with the GNU C Library; if not, see
  51371. + <http://www.gnu.org/licenses/>. */
  51372. #ifndef _SYS_IO_H
  51373. @@ -23,17 +22,18 @@
  51374. __BEGIN_DECLS
  51375. +#if defined __UCLIBC_LINUX_SPECIFIC__
  51376. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  51377. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  51378. permission off for that range. This call requires root privileges. */
  51379. extern int ioperm (unsigned long int __from, unsigned long int __num,
  51380. int __turn_on) __THROW;
  51381. -libc_hidden_proto(ioperm)
  51382. /* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
  51383. permission to access any I/O port is granted. This call requires
  51384. root privileges. */
  51385. extern int iopl (int __level) __THROW;
  51386. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  51387. /* The functions that actually perform reads and writes. */
  51388. extern unsigned char inb (unsigned long int port) __THROW;
  51389. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/procfs.h uClibc-git/libc/sysdeps/linux/bfin/sys/procfs.h
  51390. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  51391. +++ uClibc-git/libc/sysdeps/linux/bfin/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  51392. @@ -12,9 +12,8 @@
  51393. Lesser General Public License for more details.
  51394. You should have received a copy of the GNU Lesser General Public
  51395. - License along with the GNU C Library; if not, write to the Free
  51396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51397. - 02111-1307 USA. */
  51398. + License along with the GNU C Library; if not, see
  51399. + <http://www.gnu.org/licenses/>. */
  51400. #ifndef _SYS_PROCFS_H
  51401. #define _SYS_PROCFS_H 1
  51402. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/ucontext.h uClibc-git/libc/sysdeps/linux/bfin/sys/ucontext.h
  51403. --- uClibc-0.9.33.2/libc/sysdeps/linux/bfin/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  51404. +++ uClibc-git/libc/sysdeps/linux/bfin/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  51405. @@ -12,9 +12,8 @@
  51406. Lesser General Public License for more details.
  51407. You should have received a copy of the GNU Lesser General Public
  51408. - License along with the GNU C Library; if not, write to the Free
  51409. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51410. - 02111-1307 USA. */
  51411. + License along with the GNU C Library; if not, see
  51412. + <http://www.gnu.org/licenses/>. */
  51413. /* System V/blackfin ABI compliant context switching support. */
  51414. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/byteswap.h uClibc-git/libc/sysdeps/linux/c6x/bits/byteswap.h
  51415. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  51416. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  51417. @@ -14,9 +14,8 @@
  51418. * for more details.
  51419. *
  51420. * You should have received a copy of the GNU Library General Public License
  51421. - * along with this program; if not, write to the Free Software Foundation,
  51422. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51423. - *
  51424. + * along with this program; see the file COPYING.LIB. If not, see
  51425. + * <http://www.gnu.org/licenses/>.
  51426. */
  51427. #ifndef _ASM_BITS_BYTESWAP_H
  51428. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/elf-dsbt.h uClibc-git/libc/sysdeps/linux/c6x/bits/elf-dsbt.h
  51429. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/elf-dsbt.h 2012-05-15 09:20:09.000000000 +0200
  51430. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/elf-dsbt.h 2014-02-03 12:32:56.000000000 +0100
  51431. @@ -25,8 +25,7 @@
  51432. You should have received a copy of the GNU Lesser General Public
  51433. License along with the GNU C Library; see the file COPYING.LIB. If
  51434. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  51435. -Cambridge, MA 02139, USA. */
  51436. +not, see <http://www.gnu.org/licenses/>. */
  51437. #ifndef _BITS_ELF_DSBT_H
  51438. #define _BITS_ELF_DSBT_H
  51439. @@ -59,15 +58,10 @@
  51440. struct elf32_dsbt_loadmap {
  51441. /* Protocol version number, must be zero. */
  51442. - Elf32_Word version;
  51443. -
  51444. - /* Pointer to DSBT */
  51445. - unsigned *dsbt_table;
  51446. - unsigned dsbt_size;
  51447. - unsigned dsbt_index;
  51448. + Elf32_Half version;
  51449. /* number of segments */
  51450. - Elf32_Word nsegs;
  51451. + Elf32_Half nsegs;
  51452. /* The actual memory map. */
  51453. struct elf32_dsbt_loadseg segs[0];
  51454. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/fcntl.h uClibc-git/libc/sysdeps/linux/c6x/bits/fcntl.h
  51455. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  51456. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  51457. @@ -13,9 +13,8 @@
  51458. Lesser General Public License for more details.
  51459. You should have received a copy of the GNU Lesser General Public
  51460. - License along with the GNU C Library; if not, write to the Free
  51461. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51462. - 02111-1307 USA. */
  51463. + License along with the GNU C Library; if not, see
  51464. + <http://www.gnu.org/licenses/>. */
  51465. #ifndef _FCNTL_H
  51466. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  51467. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/ipc.h uClibc-git/libc/sysdeps/linux/c6x/bits/ipc.h
  51468. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  51469. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  51470. @@ -12,9 +12,8 @@
  51471. Lesser General Public License for more details.
  51472. You should have received a copy of the GNU Lesser General Public
  51473. - License along with the GNU C Library; if not, write to the Free
  51474. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51475. - 02111-1307 USA. */
  51476. + License along with the GNU C Library; if not, see
  51477. + <http://www.gnu.org/licenses/>. */
  51478. #ifndef _SYS_IPC_H
  51479. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  51480. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/c6x/bits/kernel_types.h
  51481. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  51482. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  51483. @@ -22,6 +22,8 @@
  51484. typedef unsigned int __kernel_old_uid_t;
  51485. typedef unsigned int __kernel_old_gid_t;
  51486. typedef unsigned int __kernel_old_dev_t;
  51487. +typedef long __kernel_long_t;
  51488. +typedef unsigned long __kernel_ulong_t;
  51489. typedef unsigned int __kernel_size_t;
  51490. typedef int __kernel_ssize_t;
  51491. typedef int __kernel_ptrdiff_t;
  51492. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/mathdef.h uClibc-git/libc/sysdeps/linux/c6x/bits/mathdef.h
  51493. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  51494. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  51495. @@ -12,9 +12,8 @@
  51496. Lesser General Public License for more details.
  51497. You should have received a copy of the GNU Lesser General Public
  51498. - License along with the GNU C Library; if not, write to the Free
  51499. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51500. - 02111-1307 USA. */
  51501. + License along with the GNU C Library; if not, see
  51502. + <http://www.gnu.org/licenses/>. */
  51503. #if !defined _MATH_H && !defined _COMPLEX_H
  51504. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  51505. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/nan.h uClibc-git/libc/sysdeps/linux/c6x/bits/nan.h
  51506. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/nan.h 2012-05-15 09:20:09.000000000 +0200
  51507. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/nan.h 2014-02-03 12:32:56.000000000 +0100
  51508. @@ -13,9 +13,8 @@
  51509. Lesser General Public License for more details.
  51510. You should have received a copy of the GNU Lesser General Public
  51511. - License along with the GNU C Library; if not, write to the Free
  51512. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51513. - 02111-1307 USA. */
  51514. + License along with the GNU C Library; if not, see
  51515. + <http://www.gnu.org/licenses/>. */
  51516. #ifndef _MATH_H
  51517. # error "Never use <bits/nan.h> directly; include <math.h> instead."
  51518. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/poll.h uClibc-git/libc/sysdeps/linux/c6x/bits/poll.h
  51519. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  51520. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  51521. @@ -12,9 +12,8 @@
  51522. Lesser General Public License for more details.
  51523. You should have received a copy of the GNU Lesser General Public
  51524. - License along with the GNU C Library; if not, write to the Free
  51525. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51526. - 02111-1307 USA. */
  51527. + License along with the GNU C Library; if not, see
  51528. + <http://www.gnu.org/licenses/>. */
  51529. #ifndef _SYS_POLL_H
  51530. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  51531. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/resource.h uClibc-git/libc/sysdeps/linux/c6x/bits/resource.h
  51532. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  51533. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  51534. @@ -13,9 +13,8 @@
  51535. Lesser General Public License for more details.
  51536. You should have received a copy of the GNU Lesser General Public
  51537. - License along with the GNU C Library; if not, write to the Free
  51538. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51539. - 02111-1307 USA. */
  51540. + License along with the GNU C Library; if not, see
  51541. + <http://www.gnu.org/licenses/>. */
  51542. #ifndef _SYS_RESOURCE_H
  51543. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  51544. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/setjmp.h uClibc-git/libc/sysdeps/linux/c6x/bits/setjmp.h
  51545. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  51546. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  51547. @@ -14,12 +14,14 @@
  51548. * for more details.
  51549. *
  51550. * You should have received a copy of the GNU Library General Public License
  51551. - * along with this program; if not, write to the Free Software Foundation,
  51552. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51553. - *
  51554. + * along with this program; see the file COPYING.LIB. If not, see
  51555. + * <http://www.gnu.org/licenses/>.
  51556. */
  51557. -#ifndef _SETJMP_H
  51558. +#ifndef _BITS_SETJMP_H
  51559. +#define _BITS_SETJMP_H 1
  51560. +
  51561. +#if !defined _SETJMP_H && !defined _PTHREAD_H
  51562. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  51563. #endif
  51564. @@ -28,12 +30,4 @@
  51565. unsigned long __pc; /* the return address */
  51566. } __jmp_buf[1];
  51567. -/* the stack pointer (B15) */
  51568. -#define JP_SP 11
  51569. -
  51570. -/* Test if longjmp to JMPBUF would unwind the frame
  51571. - containing a local variable at ADDRESS. */
  51572. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51573. - ((void *) (address) < (void *) (jmpbuf)->__regs[JP_SP])
  51574. -
  51575. -
  51576. +#endif
  51577. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h
  51578. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  51579. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  51580. @@ -13,9 +13,8 @@
  51581. Lesser General Public License for more details.
  51582. You should have received a copy of the GNU Lesser General Public
  51583. - License along with the GNU C Library; if not, write to the Free
  51584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51585. - 02111-1307 USA. */
  51586. + License along with the GNU C Library; if not, see
  51587. + <http://www.gnu.org/licenses/>. */
  51588. #define SIGCONTEXT int _code, struct sigcontext *
  51589. #define SIGCONTEXT_EXTRA_ARGS _code,
  51590. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/c6x/bits/stackinfo.h
  51591. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  51592. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  51593. @@ -12,9 +12,8 @@
  51594. Lesser General Public License for more details.
  51595. You should have received a copy of the GNU Lesser General Public
  51596. - License along with the GNU C Library; if not, write to the Free
  51597. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51598. - 02111-1307 USA. */
  51599. + License along with the GNU C Library; if not, see
  51600. + <http://www.gnu.org/licenses/>. */
  51601. /* This file contains a bit of information about the stack allocation
  51602. of the processor. */
  51603. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/syscalls.h uClibc-git/libc/sysdeps/linux/c6x/bits/syscalls.h
  51604. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  51605. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  51606. @@ -37,7 +37,7 @@
  51607. #undef INLINE_SYSCALL
  51608. #define INLINE_SYSCALL(name, nr, args...) \
  51609. ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr, args); \
  51610. - if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ), 0)) \
  51611. + if (unlikely (INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ))) \
  51612. { \
  51613. __set_errno (INTERNAL_SYSCALL_ERRNO (_inline_sys_result, )); \
  51614. _inline_sys_result = (unsigned int) -1; \
  51615. @@ -103,7 +103,7 @@
  51616. register long __B6 __asm__ ("B6") = (long)(arg4); \
  51617. register long __A8 __asm__ ("A8") = (long)(arg5); \
  51618. register long __g1 __asm__ ("g1") = __NR_clone; \
  51619. - __asm __volatile (__CLONE_SYSCALL_STRING : \
  51620. + __asm__ __volatile__ (__CLONE_SYSCALL_STRING : \
  51621. "=r" (__g1), "=r" (__A4), "=r" (__B4) : \
  51622. "0" (__g1), "1" (__A4), "2" (__B4), \
  51623. "r" (__A6), "r" (__B6), "r" (__A8) : \
  51624. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h
  51625. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  51626. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  51627. @@ -12,8 +12,8 @@
  51628. /* can your target use syscall6() for mmap ? */
  51629. #define __UCLIBC_MMAP_HAS_6_ARGS__
  51630. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  51631. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  51632. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  51633. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  51634. /* does your target have a broken create_module() ? */
  51635. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  51636. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/wordsize.h uClibc-git/libc/sysdeps/linux/c6x/bits/wordsize.h
  51637. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  51638. +++ uClibc-git/libc/sysdeps/linux/c6x/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  51639. @@ -12,8 +12,7 @@
  51640. Lesser General Public License for more details.
  51641. You should have received a copy of the GNU Lesser General Public
  51642. - License along with the GNU C Library; if not, write to the Free
  51643. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51644. - 02111-1307 USA. */
  51645. + License along with the GNU C Library; if not, see
  51646. + <http://www.gnu.org/licenses/>. */
  51647. #define __WORDSIZE 32
  51648. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/brk.c uClibc-git/libc/sysdeps/linux/c6x/brk.c
  51649. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/brk.c 2012-05-15 09:20:09.000000000 +0200
  51650. +++ uClibc-git/libc/sysdeps/linux/c6x/brk.c 2014-02-03 12:32:56.000000000 +0100
  51651. @@ -14,9 +14,8 @@
  51652. * for more details.
  51653. *
  51654. * You should have received a copy of the GNU Library General Public License
  51655. - * along with this program; if not, write to the Free Software Foundation,
  51656. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51657. - *
  51658. + * along with this program; see the file COPYING.LIB. If not, see
  51659. + * <http://www.gnu.org/licenses/>.
  51660. */
  51661. #include <unistd.h>
  51662. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-_setjmp.s uClibc-git/libc/sysdeps/linux/c6x/bsd-_setjmp.s
  51663. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-_setjmp.s 2012-05-15 09:20:09.000000000 +0200
  51664. +++ uClibc-git/libc/sysdeps/linux/c6x/bsd-_setjmp.s 2014-02-03 12:32:56.000000000 +0100
  51665. @@ -14,8 +14,7 @@
  51666. ; for more details.
  51667. ;
  51668. ; You should have received a copy of the GNU Library General Public License
  51669. - ; along with this program; if not, write to the Free Software Foundation,
  51670. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51671. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  51672. ;
  51673. .global _setjmp
  51674. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/c6x/bsd-setjmp.S
  51675. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  51676. +++ uClibc-git/libc/sysdeps/linux/c6x/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  51677. @@ -14,8 +14,7 @@
  51678. ; for more details.
  51679. ;
  51680. ; You should have received a copy of the GNU Library General Public License
  51681. - ; along with this program; if not, write to the Free Software Foundation,
  51682. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51683. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  51684. ;
  51685. .global setjmp
  51686. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/clone.S uClibc-git/libc/sysdeps/linux/c6x/clone.S
  51687. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/clone.S 2012-05-15 09:20:09.000000000 +0200
  51688. +++ uClibc-git/libc/sysdeps/linux/c6x/clone.S 2014-02-03 12:32:56.000000000 +0100
  51689. @@ -14,8 +14,7 @@
  51690. ; for more details.
  51691. ;
  51692. ; You should have received a copy of the GNU Library General Public License
  51693. - ; along with this program; if not, write to the Free Software Foundation,
  51694. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51695. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  51696. ;
  51697. #define __ASSEMBLY__
  51698. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/crt1.S uClibc-git/libc/sysdeps/linux/c6x/crt1.S
  51699. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/crt1.S 2012-05-15 09:20:09.000000000 +0200
  51700. +++ uClibc-git/libc/sysdeps/linux/c6x/crt1.S 2014-02-03 12:32:56.000000000 +0100
  51701. @@ -15,8 +15,7 @@
  51702. ; for more details.
  51703. ;
  51704. ; You should have received a copy of the GNU Library General Public License
  51705. -; along with this program; if not, write to the Free Software Foundation,
  51706. -; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51707. +; along with this program; if not, see <http://www.gnu.org/licenses/>.
  51708. ;
  51709. .text
  51710. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/c6x/jmpbuf-offsets.h
  51711. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  51712. +++ uClibc-git/libc/sysdeps/linux/c6x/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  51713. @@ -0,0 +1,22 @@
  51714. +/* Private macros for accessing __jmp_buf contents. c6x version.
  51715. + * Port of uClibc for TMS320C6000 DSP architecture
  51716. + * Copyright (C) 2004 Texas Instruments Incorporated
  51717. + * Author of TMS320C6000 port: Aurelien Jacquiot
  51718. + *
  51719. + * This program is free software; you can redistribute it and/or modify it
  51720. + * under the terms of the GNU Library General Public License as published by
  51721. + * the Free Software Foundation; either version 2 of the License, or (at your
  51722. + * option) any later version.
  51723. + *
  51724. + * This program is distributed in the hope that it will be useful, but WITHOUT
  51725. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  51726. + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
  51727. + * for more details.
  51728. + *
  51729. + * You should have received a copy of the GNU Library General Public License
  51730. + * along with this program; see the file COPYING.LIB. If not, see
  51731. + * <http://www.gnu.org/licenses/>.
  51732. + */
  51733. +
  51734. +/* the stack pointer (B15) */
  51735. +#define JP_SP 11
  51736. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/c6x/jmpbuf-unwind.h
  51737. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  51738. +++ uClibc-git/libc/sysdeps/linux/c6x/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  51739. @@ -0,0 +1,28 @@
  51740. +/*
  51741. + * Port of uClibc for TMS320C6000 DSP architecture
  51742. + * Copyright (C) 2004 Texas Instruments Incorporated
  51743. + * Author of TMS320C6000 port: Aurelien Jacquiot
  51744. + *
  51745. + * This program is free software; you can redistribute it and/or modify it
  51746. + * under the terms of the GNU Library General Public License as published by
  51747. + * the Free Software Foundation; either version 2 of the License, or (at your
  51748. + * option) any later version.
  51749. + *
  51750. + * This program is distributed in the hope that it will be useful, but WITHOUT
  51751. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  51752. + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
  51753. + * for more details.
  51754. + *
  51755. + * You should have received a copy of the GNU Library General Public License
  51756. + * along with this program; see the file COPYING.LIB. If not, see
  51757. + * <http://www.gnu.org/licenses/>.
  51758. + */
  51759. +#include <setjmp.h>
  51760. +#include <jmpbuf-offsets.h>
  51761. +
  51762. +/* Test if longjmp to JMPBUF would unwind the frame
  51763. + containing a local variable at ADDRESS. */
  51764. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  51765. + ((void *) (address) < (void *) (jmpbuf)->__regs[JP_SP])
  51766. +
  51767. +
  51768. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/__longjmp.S uClibc-git/libc/sysdeps/linux/c6x/__longjmp.S
  51769. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  51770. +++ uClibc-git/libc/sysdeps/linux/c6x/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  51771. @@ -14,8 +14,7 @@
  51772. ; for more details.
  51773. ;
  51774. ; You should have received a copy of the GNU Library General Public License
  51775. - ; along with this program; if not, write to the Free Software Foundation,
  51776. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51777. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  51778. ;
  51779. .global __longjmp
  51780. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/Makefile.arch uClibc-git/libc/sysdeps/linux/c6x/Makefile.arch
  51781. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  51782. +++ uClibc-git/libc/sysdeps/linux/c6x/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  51783. @@ -5,6 +5,6 @@
  51784. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  51785. #
  51786. -CSRC := brk.c pread_write.c syscall.c prctl.c
  51787. +CSRC-y := brk.c syscall.c prctl.c
  51788. -SSRC := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S _vfork.S
  51789. +SSRC-y := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S _vfork.S
  51790. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/pread_write.c uClibc-git/libc/sysdeps/linux/c6x/pread_write.c
  51791. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  51792. +++ uClibc-git/libc/sysdeps/linux/c6x/pread_write.c 1970-01-01 01:00:00.000000000 +0100
  51793. @@ -1,103 +0,0 @@
  51794. -/* vi: set sw=4 ts=4:
  51795. - *
  51796. - * Copyright (C) 2002 by Erik Andersen <andersen@uclibc.org>
  51797. - * Based in part on the files
  51798. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  51799. - * ./sysdeps/unix/sysv/linux/pread.c,
  51800. - * sysdeps/posix/pread.c
  51801. - * sysdeps/posix/pwrite.c
  51802. - * from GNU libc 2.2.5, but reworked considerably...
  51803. - *
  51804. - * This program is free software; you can redistribute it and/or modify it
  51805. - * under the terms of the GNU Library General Public License as published by
  51806. - * the Free Software Foundation; either version 2 of the License, or (at your
  51807. - * option) any later version.
  51808. - *
  51809. - * This program is distributed in the hope that it will be useful, but WITHOUT
  51810. - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  51811. - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
  51812. - * for more details.
  51813. - *
  51814. - * You should have received a copy of the GNU Library General Public License
  51815. - * along with this program; if not, write to the Free Software Foundation,
  51816. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51817. - */
  51818. -
  51819. -#define _LARGEFILE64_SOURCE
  51820. -#include <features.h>
  51821. -#undef __OPTIMIZE__
  51822. -/* We absolutely do _NOT_ want interfaces silently
  51823. - * * * renamed under us or very bad things will happen... */
  51824. -#ifdef __USE_FILE_OFFSET64
  51825. -# undef __USE_FILE_OFFSET64
  51826. -#endif
  51827. -
  51828. -
  51829. -#include <errno.h>
  51830. -#include <sys/types.h>
  51831. -#include <sys/syscall.h>
  51832. -#include <unistd.h>
  51833. -#include <stdint.h>
  51834. -
  51835. -extern __typeof(pread) __libc_pread;
  51836. -extern __typeof(pwrite) __libc_pwrite;
  51837. -#ifdef __UCLIBC_HAS_LFS__
  51838. -extern __typeof(pread64) __libc_pread64;
  51839. -extern __typeof(pwrite64) __libc_pwrite64;
  51840. -#endif
  51841. -
  51842. -#ifdef __NR_pread64 /* Newer kernels renamed but it's the same. */
  51843. -# ifdef __NR_pread
  51844. -# error "__NR_pread and __NR_pread64 both defined???"
  51845. -# endif
  51846. -# define __NR_pread __NR_pread64
  51847. -#endif
  51848. -
  51849. -#define __NR___syscall_pread __NR_pread
  51850. -static inline _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
  51851. - size_t, count, off_t, offset_hi, off_t, offset_lo);
  51852. -
  51853. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  51854. -{
  51855. - return(__syscall_pread(fd,buf,count,offset,offset >> 31));
  51856. -}
  51857. -weak_alias (__libc_pread, pread)
  51858. -
  51859. -#if defined __UCLIBC_HAS_LFS__
  51860. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  51861. -{
  51862. - uint32_t low = offset & 0xffffffff;
  51863. - uint32_t high = offset >> 32;
  51864. - return(__syscall_pread(fd, buf, count, low, high));
  51865. -}
  51866. -weak_alias (__libc_pread64, pread64)
  51867. -#endif /* __UCLIBC_HAS_LFS__ */
  51868. -
  51869. -
  51870. -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */
  51871. -# ifdef __NR_pwrite
  51872. -# error "__NR_pwrite and __NR_pwrite64 both defined???"
  51873. -# endif
  51874. -# define __NR_pwrite __NR_pwrite64
  51875. -#endif
  51876. -
  51877. -#define __NR___syscall_pwrite __NR_pwrite
  51878. -static inline _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  51879. - size_t, count, off_t, offset_hi, off_t, offset_lo);
  51880. -
  51881. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  51882. -{
  51883. - return(__syscall_pwrite(fd,buf,count,offset,offset >> 31));
  51884. -}
  51885. -weak_alias (__libc_pwrite, pwrite)
  51886. -
  51887. -#if defined __UCLIBC_HAS_LFS__
  51888. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  51889. -{
  51890. - uint32_t low = offset & 0xffffffff;
  51891. - uint32_t high = offset >> 32;
  51892. - return(__syscall_pwrite(fd, buf, count, low, high));
  51893. -}
  51894. -weak_alias (__libc_pwrite64, pwrite64)
  51895. -#endif /* __UCLIBC_HAS_LFS__ */
  51896. -
  51897. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/setjmp.s uClibc-git/libc/sysdeps/linux/c6x/setjmp.s
  51898. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/setjmp.s 2012-05-15 09:20:09.000000000 +0200
  51899. +++ uClibc-git/libc/sysdeps/linux/c6x/setjmp.s 2014-02-03 12:32:56.000000000 +0100
  51900. @@ -14,8 +14,7 @@
  51901. ; for more details.
  51902. ;
  51903. ; You should have received a copy of the GNU Library General Public License
  51904. - ; along with this program; if not, write to the Free Software Foundation,
  51905. - ; Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51906. + ; along with this program; if not, see <http://www.gnu.org/licenses/>.
  51907. ;
  51908. .global __sigsetjmp
  51909. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sigaction.c uClibc-git/libc/sysdeps/linux/c6x/sigaction.c
  51910. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  51911. +++ uClibc-git/libc/sysdeps/linux/c6x/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  51912. @@ -17,8 +17,7 @@
  51913. You should have received a copy of the GNU Library General Public
  51914. License along with the GNU C Library; see the file COPYING.LIB. If not,
  51915. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  51916. - Boston, MA 02111-1307, USA.
  51917. + see <http://www.gnu.org/licenses/>.
  51918. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  51919. */
  51920. @@ -34,8 +33,6 @@
  51921. #define SA_RESTORER 0x04000000
  51922. -extern __typeof(sigaction) __libc_sigaction;
  51923. -
  51924. extern void restore_rt(void) __asm__ ("__restore_rt") attribute_hidden;
  51925. extern void restore(void) __asm__ ("__restore") attribute_hidden;
  51926. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/procfs.h uClibc-git/libc/sysdeps/linux/c6x/sys/procfs.h
  51927. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  51928. +++ uClibc-git/libc/sysdeps/linux/c6x/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  51929. @@ -12,9 +12,8 @@
  51930. Lesser General Public License for more details.
  51931. You should have received a copy of the GNU Lesser General Public
  51932. - License along with the GNU C Library; if not, write to the Free
  51933. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51934. - 02111-1307 USA. */
  51935. + License along with the GNU C Library; if not, see
  51936. + <http://www.gnu.org/licenses/>. */
  51937. #ifndef _SYS_PROCFS_H
  51938. #define _SYS_PROCFS_H 1
  51939. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ptrace.h uClibc-git/libc/sysdeps/linux/c6x/sys/ptrace.h
  51940. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  51941. +++ uClibc-git/libc/sysdeps/linux/c6x/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  51942. @@ -13,9 +13,8 @@
  51943. Lesser General Public License for more details.
  51944. You should have received a copy of the GNU Lesser General Public
  51945. - License along with the GNU C Library; if not, write to the Free
  51946. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51947. - 02111-1307 USA. */
  51948. + License along with the GNU C Library; if not, see
  51949. + <http://www.gnu.org/licenses/>. */
  51950. #ifndef _SYS_PTRACE_H
  51951. #define _SYS_PTRACE_H 1
  51952. @@ -112,12 +111,6 @@
  51953. PTRACE_SYSCALL = 24,
  51954. #define PT_SYSCALL PTRACE_SYSCALL
  51955. - /* Obtain the load map of the main program or the interpreter of the
  51956. - ptraced process, depending on whether the addr argument is
  51957. - (void*)0 or (void*)1, respectively. */
  51958. - PTRACE_GETDSBT = 31,
  51959. -#define PT_GETDSBT PTRACE_GETDSBT
  51960. -
  51961. /* Set ptrace filter options. */
  51962. PTRACE_SETOPTIONS = 0x4200,
  51963. #define PT_SETOPTIONS PTRACE_SETOPTIONS
  51964. @@ -135,9 +128,6 @@
  51965. #define PT_SETSIGINFO PTRACE_SETSIGINFO
  51966. };
  51967. -#define PTRACE_GETDSBT_EXEC ((void*)0) /* [addr] request the executable loadmap */
  51968. -#define PTRACE_GETDSBT_INTERP ((void*)1) /* [addr] request the interpreter loadmap */
  51969. -
  51970. /* Options set using PTRACE_SETOPTIONS. */
  51971. enum __ptrace_setoptions {
  51972. PTRACE_O_TRACESYSGOOD = 0x00000001,
  51973. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/reg.h uClibc-git/libc/sysdeps/linux/c6x/sys/reg.h
  51974. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  51975. +++ uClibc-git/libc/sysdeps/linux/c6x/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  51976. @@ -14,9 +14,8 @@
  51977. * for more details.
  51978. *
  51979. * You should have received a copy of the GNU Library General Public License
  51980. - * along with this program; if not, write to the Free Software Foundation,
  51981. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  51982. - *
  51983. + * along with this program; see the file COPYING.LIB. If not, see
  51984. + * <http://www.gnu.org/licenses/>.
  51985. */
  51986. #ifndef _SYS_REG_H
  51987. #define _SYS_REG_H 1
  51988. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ucontext.h uClibc-git/libc/sysdeps/linux/c6x/sys/ucontext.h
  51989. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  51990. +++ uClibc-git/libc/sysdeps/linux/c6x/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  51991. @@ -12,9 +12,8 @@
  51992. Lesser General Public License for more details.
  51993. You should have received a copy of the GNU Lesser General Public
  51994. - License along with the GNU C Library; if not, write to the Free
  51995. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  51996. - 02111-1307 USA. */
  51997. + License along with the GNU C Library; if not, see
  51998. + <http://www.gnu.org/licenses/>. */
  51999. #ifndef _SYS_UCONTEXT_H
  52000. #define _SYS_UCONTEXT_H 1
  52001. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/user.h uClibc-git/libc/sysdeps/linux/c6x/sys/user.h
  52002. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  52003. +++ uClibc-git/libc/sysdeps/linux/c6x/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  52004. @@ -12,9 +12,8 @@
  52005. Lesser General Public License for more details.
  52006. You should have received a copy of the GNU Lesser General Public
  52007. - License along with the GNU C Library; if not, write to the Free
  52008. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52009. - 02111-1307 USA. */
  52010. + License along with the GNU C Library; if not, see
  52011. + <http://www.gnu.org/licenses/>. */
  52012. #ifndef _SYS_USER_H
  52013. #define _SYS_USER_H 1
  52014. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/c6x/_vfork.S uClibc-git/libc/sysdeps/linux/c6x/_vfork.S
  52015. --- uClibc-0.9.33.2/libc/sysdeps/linux/c6x/_vfork.S 2012-05-15 09:20:09.000000000 +0200
  52016. +++ uClibc-git/libc/sysdeps/linux/c6x/_vfork.S 2014-02-03 12:32:56.000000000 +0100
  52017. @@ -16,8 +16,8 @@
  52018. * for more details.
  52019. *
  52020. * You should have received a copy of the GNU Library General Public License
  52021. - * along with this program; if not, write to the Free Software Foundation,
  52022. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  52023. + * along with this program; see the file COPYING.LIB. If not, see
  52024. + * <http://www.gnu.org/licenses/>.
  52025. */
  52026. #define __ASSEMBLY__
  52027. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/access.c uClibc-git/libc/sysdeps/linux/common/access.c
  52028. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/access.c 2012-05-15 09:20:09.000000000 +0200
  52029. +++ uClibc-git/libc/sysdeps/linux/common/access.c 2014-02-03 12:32:56.000000000 +0100
  52030. @@ -9,4 +9,14 @@
  52031. #include <sys/syscall.h>
  52032. #include <unistd.h>
  52033. +
  52034. +#if defined __NR_faccessat && !defined __NR_access
  52035. +# include <fcntl.h>
  52036. +int access(const char *pathname, int mode)
  52037. +{
  52038. + return faccessat(AT_FDCWD, pathname, mode, 0);
  52039. +}
  52040. +
  52041. +#else
  52042. _syscall2(int, access, const char *, pathname, int, mode)
  52043. +#endif
  52044. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/alarm.c uClibc-git/libc/sysdeps/linux/common/alarm.c
  52045. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/alarm.c 2012-05-15 09:20:09.000000000 +0200
  52046. +++ uClibc-git/libc/sysdeps/linux/common/alarm.c 2014-02-03 12:32:56.000000000 +0100
  52047. @@ -10,12 +10,10 @@
  52048. #include <sys/syscall.h>
  52049. #include <unistd.h>
  52050. -
  52051. #ifdef __NR_alarm
  52052. _syscall1(unsigned int, alarm, unsigned int, seconds)
  52053. #else
  52054. -#include <sys/time.h>
  52055. -
  52056. +# include <sys/time.h>
  52057. unsigned int alarm(unsigned int seconds)
  52058. {
  52059. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/arch_prctl.c uClibc-git/libc/sysdeps/linux/common/arch_prctl.c
  52060. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/arch_prctl.c 2012-05-15 09:20:09.000000000 +0200
  52061. +++ uClibc-git/libc/sysdeps/linux/common/arch_prctl.c 2014-02-03 12:32:56.000000000 +0100
  52062. @@ -10,6 +10,6 @@
  52063. #include <sys/syscall.h>
  52064. #ifdef __NR_arch_prctl
  52065. -extern int arch_prctl(int code, unsigned long addr);
  52066. +int arch_prctl(int code, unsigned long addr);
  52067. _syscall2(int, arch_prctl, int, code, unsigned long, addr)
  52068. #endif
  52069. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/atomic.h uClibc-git/libc/sysdeps/linux/common/bits/atomic.h
  52070. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  52071. +++ uClibc-git/libc/sysdeps/linux/common/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  52072. @@ -13,9 +13,8 @@
  52073. Lesser General Public License for more details.
  52074. You should have received a copy of the GNU Lesser General Public
  52075. - License along with the GNU C Library; if not, write to the Free
  52076. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52077. - 02111-1307 USA. */
  52078. + License along with the GNU C Library; if not, see
  52079. + <http://www.gnu.org/licenses/>. */
  52080. #ifndef _BITS_ATOMIC_H
  52081. #define _BITS_ATOMIC_H 1
  52082. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/byteswap-common.h uClibc-git/libc/sysdeps/linux/common/bits/byteswap-common.h
  52083. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/byteswap-common.h 2012-05-15 09:20:09.000000000 +0200
  52084. +++ uClibc-git/libc/sysdeps/linux/common/bits/byteswap-common.h 2014-02-03 12:32:56.000000000 +0100
  52085. @@ -13,9 +13,8 @@
  52086. Lesser General Public License for more details.
  52087. You should have received a copy of the GNU Lesser General Public
  52088. - License along with the GNU C Library; if not, write to the Free
  52089. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52090. - 02111-1307 USA. */
  52091. + License along with the GNU C Library; if not, see
  52092. + <http://www.gnu.org/licenses/>. */
  52093. #if !defined _BYTESWAP_H && !defined _NETINET_IN_H
  52094. # error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
  52095. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/cmathcalls.h uClibc-git/libc/sysdeps/linux/common/bits/cmathcalls.h
  52096. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/cmathcalls.h 2012-05-15 09:20:09.000000000 +0200
  52097. +++ uClibc-git/libc/sysdeps/linux/common/bits/cmathcalls.h 2014-02-03 12:32:56.000000000 +0100
  52098. @@ -14,9 +14,8 @@
  52099. Lesser General Public License for more details.
  52100. You should have received a copy of the GNU Lesser General Public
  52101. - License along with the GNU C Library; if not, write to the Free
  52102. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52103. - 02111-1307 USA. */
  52104. + License along with the GNU C Library; if not, see
  52105. + <http://www.gnu.org/licenses/>. */
  52106. /* NOTE: Because of the special way this file is used by <complex.h>, this
  52107. file must NOT be protected from multiple inclusion as header files
  52108. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/confname.h uClibc-git/libc/sysdeps/linux/common/bits/confname.h
  52109. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/confname.h 2012-05-15 09:20:09.000000000 +0200
  52110. +++ uClibc-git/libc/sysdeps/linux/common/bits/confname.h 2014-02-03 12:32:56.000000000 +0100
  52111. @@ -14,9 +14,8 @@
  52112. Lesser General Public License for more details.
  52113. You should have received a copy of the GNU Lesser General Public
  52114. - License along with the GNU C Library; if not, write to the Free
  52115. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52116. - 02111-1307 USA. */
  52117. + License along with the GNU C Library; if not, see
  52118. + <http://www.gnu.org/licenses/>. */
  52119. #ifndef _UNISTD_H
  52120. # error "Never use <bits/confname.h> directly; include <unistd.h> instead."
  52121. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dirent.h uClibc-git/libc/sysdeps/linux/common/bits/dirent.h
  52122. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dirent.h 2012-05-15 09:20:09.000000000 +0200
  52123. +++ uClibc-git/libc/sysdeps/linux/common/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  52124. @@ -12,9 +12,8 @@
  52125. Lesser General Public License for more details.
  52126. You should have received a copy of the GNU Lesser General Public
  52127. - License along with the GNU C Library; if not, write to the Free
  52128. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52129. - 02111-1307 USA. */
  52130. + License along with the GNU C Library; if not, see
  52131. + <http://www.gnu.org/licenses/>. */
  52132. #ifndef _DIRENT_H
  52133. # error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
  52134. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dlfcn.h uClibc-git/libc/sysdeps/linux/common/bits/dlfcn.h
  52135. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  52136. +++ uClibc-git/libc/sysdeps/linux/common/bits/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  52137. @@ -13,9 +13,8 @@
  52138. Lesser General Public License for more details.
  52139. You should have received a copy of the GNU Lesser General Public
  52140. - License along with the GNU C Library; if not, write to the Free
  52141. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52142. - 02111-1307 USA. */
  52143. + License along with the GNU C Library; if not, see
  52144. + <http://www.gnu.org/licenses/>. */
  52145. #ifndef _DLFCN_H
  52146. # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
  52147. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/environments.h uClibc-git/libc/sysdeps/linux/common/bits/environments.h
  52148. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/environments.h 2012-05-15 09:20:09.000000000 +0200
  52149. +++ uClibc-git/libc/sysdeps/linux/common/bits/environments.h 2014-02-03 12:32:56.000000000 +0100
  52150. @@ -12,9 +12,8 @@
  52151. Lesser General Public License for more details.
  52152. You should have received a copy of the GNU Lesser General Public
  52153. - License along with the GNU C Library; if not, write to the Free
  52154. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52155. - 02111-1307 USA. */
  52156. + License along with the GNU C Library; if not, see
  52157. + <http://www.gnu.org/licenses/>. */
  52158. #ifndef _UNISTD_H
  52159. # error "Never include this file directly. Use <unistd.h> instead"
  52160. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/errno.h uClibc-git/libc/sysdeps/linux/common/bits/errno.h
  52161. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/errno.h 2012-05-15 09:20:09.000000000 +0200
  52162. +++ uClibc-git/libc/sysdeps/linux/common/bits/errno.h 2014-02-03 12:32:56.000000000 +0100
  52163. @@ -13,9 +13,8 @@
  52164. Lesser General Public License for more details.
  52165. You should have received a copy of the GNU Lesser General Public
  52166. - License along with the GNU C Library; if not, write to the Free
  52167. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52168. - 02111-1307 USA. */
  52169. + License along with the GNU C Library; if not, see
  52170. + <http://www.gnu.org/licenses/>. */
  52171. #ifdef _ERRNO_H
  52172. @@ -43,6 +42,11 @@
  52173. # ifndef __ASSEMBLER__
  52174. /* Function to get address of global `errno' variable. */
  52175. extern int *__errno_location (void) __THROW __attribute__ ((__const__));
  52176. +# ifdef _LIBC
  52177. +# if !defined(__UCLIBC_HAS_TLS__) && !defined(__UCLIBC_HAS_THREADS__)
  52178. +extern int weak_const_function *__errno_location(void);
  52179. +# endif
  52180. +# endif
  52181. libc_hidden_proto(__errno_location)
  52182. # ifdef __UCLIBC_HAS_THREADS__
  52183. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/eventfd.h uClibc-git/libc/sysdeps/linux/common/bits/eventfd.h
  52184. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  52185. +++ uClibc-git/libc/sysdeps/linux/common/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  52186. @@ -0,0 +1,31 @@
  52187. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  52188. + This file is part of the GNU C Library.
  52189. +
  52190. + The GNU C Library is free software; you can redistribute it and/or
  52191. + modify it under the terms of the GNU Lesser General Public
  52192. + License as published by the Free Software Foundation; either
  52193. + version 2.1 of the License, or (at your option) any later version.
  52194. +
  52195. + The GNU C Library is distributed in the hope that it will be useful,
  52196. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  52197. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  52198. + Lesser General Public License for more details.
  52199. +
  52200. + You should have received a copy of the GNU Lesser General Public
  52201. + License along with the GNU C Library; if not, see
  52202. + <http://www.gnu.org/licenses/>. */
  52203. +
  52204. +#ifndef _SYS_EVENTFD_H
  52205. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  52206. +#endif
  52207. +
  52208. +/* Flags for eventfd. */
  52209. +enum
  52210. + {
  52211. + EFD_SEMAPHORE = 00000001,
  52212. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  52213. + EFD_CLOEXEC = 02000000,
  52214. +#define EFD_CLOEXEC EFD_CLOEXEC
  52215. + EFD_NONBLOCK = 00004000
  52216. +#define EFD_NONBLOCK EFD_NONBLOCK
  52217. + };
  52218. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/fenv.h uClibc-git/libc/sysdeps/linux/common/bits/fenv.h
  52219. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  52220. +++ uClibc-git/libc/sysdeps/linux/common/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  52221. @@ -12,9 +12,8 @@
  52222. Lesser General Public License for more details.
  52223. You should have received a copy of the GNU Lesser General Public
  52224. - License along with the GNU C Library; if not, write to the Free
  52225. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52226. - 02111-1307 USA. */
  52227. + License along with the GNU C Library; if not, see
  52228. + <http://www.gnu.org/licenses/>. */
  52229. #ifndef _FENV_H
  52230. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  52231. @@ -53,4 +52,4 @@
  52232. fenv_t;
  52233. /* If the default argument is used we use this value. */
  52234. -#define FE_DFL_ENV ((__const fenv_t *) -1l)
  52235. +#define FE_DFL_ENV ((const fenv_t *) -1l)
  52236. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/getopt.h uClibc-git/libc/sysdeps/linux/common/bits/getopt.h
  52237. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/getopt.h 2012-05-15 09:20:09.000000000 +0200
  52238. +++ uClibc-git/libc/sysdeps/linux/common/bits/getopt.h 2014-02-03 12:32:56.000000000 +0100
  52239. @@ -14,9 +14,8 @@
  52240. Lesser General Public License for more details.
  52241. You should have received a copy of the GNU Lesser General Public
  52242. - License along with the GNU C Library; if not, write to the Free
  52243. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52244. - 02111-1307 USA. */
  52245. + License along with the GNU C Library; if not, see
  52246. + <http://www.gnu.org/licenses/>. */
  52247. #ifndef _GETOPT_H
  52248. @@ -26,31 +25,7 @@
  52249. # define _GETOPT_H 1
  52250. #endif
  52251. -/* If __GNU_LIBRARY__ is not already defined, either we are being used
  52252. - standalone, or this is the first header included in the source file.
  52253. - If we are being used with glibc, we need to include <features.h>, but
  52254. - that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
  52255. - not defined, include <ctype.h>, which will pull in <features.h> for us
  52256. - if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
  52257. - doesn't flood the namespace with stuff the way some other headers do.) */
  52258. -#if !defined __GNU_LIBRARY__
  52259. -# include <ctype.h>
  52260. -#endif
  52261. -
  52262. -#ifndef __THROW
  52263. -# ifndef __GNUC_PREREQ
  52264. -# define __GNUC_PREREQ(maj, min) (0)
  52265. -# endif
  52266. -# if defined __cplusplus && __GNUC_PREREQ (2,8)
  52267. -# define __THROW throw ()
  52268. -# else
  52269. -# define __THROW
  52270. -# endif
  52271. -#endif
  52272. -
  52273. -#ifdef __cplusplus
  52274. -extern "C" {
  52275. -#endif
  52276. +__BEGIN_DECLS
  52277. /* For communication from `getopt' to the caller.
  52278. When `getopt' finds an option that takes an argument,
  52279. @@ -147,17 +122,9 @@
  52280. arguments to the option '\0'. This behavior is specific to the GNU
  52281. `getopt'. */
  52282. -#if defined __GNU_LIBRARY__ || defined __UCLIBC__
  52283. -/* Many other libraries have conflicting prototypes for getopt, with
  52284. - differences in the consts, in stdlib.h. To avoid compilation
  52285. - errors, only prototype getopt for the GNU C library. */
  52286. extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
  52287. __THROW;
  52288. libc_hidden_proto(getopt)
  52289. -#else /* not __GNU_LIBRARY__ */
  52290. -extern int getopt ();
  52291. -libc_hidden_proto(getopt)
  52292. -#endif /* __GNU_LIBRARY__ */
  52293. #if defined __UCLIBC_HAS_GNU_GETOPT__ || defined __UCLIBC_HAS_GETOPT_LONG__
  52294. #ifndef __need_getopt
  52295. @@ -173,9 +140,7 @@
  52296. #endif
  52297. #endif
  52298. -#ifdef __cplusplus
  52299. -}
  52300. -#endif
  52301. +__END_DECLS
  52302. /* Make sure we later can get all the definitions and declarations. */
  52303. #undef __need_getopt
  52304. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_valf.h uClibc-git/libc/sysdeps/linux/common/bits/huge_valf.h
  52305. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_valf.h 2012-05-15 09:20:09.000000000 +0200
  52306. +++ uClibc-git/libc/sysdeps/linux/common/bits/huge_valf.h 2014-02-03 12:32:56.000000000 +0100
  52307. @@ -15,9 +15,8 @@
  52308. Lesser General Public License for more details.
  52309. You should have received a copy of the GNU Lesser General Public
  52310. - License along with the GNU C Library; if not, write to the Free
  52311. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52312. - 02111-1307 USA. */
  52313. + License along with the GNU C Library; if not, see
  52314. + <http://www.gnu.org/licenses/>. */
  52315. #ifndef _MATH_H
  52316. # error "Never use <bits/huge_valf.h> directly; include <math.h> instead."
  52317. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_val.h uClibc-git/libc/sysdeps/linux/common/bits/huge_val.h
  52318. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  52319. +++ uClibc-git/libc/sysdeps/linux/common/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  52320. @@ -15,9 +15,8 @@
  52321. Lesser General Public License for more details.
  52322. You should have received a copy of the GNU Lesser General Public
  52323. - License along with the GNU C Library; if not, write to the Free
  52324. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52325. - 02111-1307 USA. */
  52326. + License along with the GNU C Library; if not, see
  52327. + <http://www.gnu.org/licenses/>. */
  52328. #ifndef _MATH_H
  52329. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  52330. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_vall.h uClibc-git/libc/sysdeps/linux/common/bits/huge_vall.h
  52331. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/huge_vall.h 2012-05-15 09:20:09.000000000 +0200
  52332. +++ uClibc-git/libc/sysdeps/linux/common/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  52333. @@ -14,9 +14,8 @@
  52334. Lesser General Public License for more details.
  52335. You should have received a copy of the GNU Lesser General Public
  52336. - License along with the GNU C Library; if not, write to the Free
  52337. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52338. - 02111-1307 USA. */
  52339. + License along with the GNU C Library; if not, see
  52340. + <http://www.gnu.org/licenses/>. */
  52341. #ifndef _MATH_H
  52342. # error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  52343. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/inf.h uClibc-git/libc/sysdeps/linux/common/bits/inf.h
  52344. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/inf.h 2012-05-15 09:20:09.000000000 +0200
  52345. +++ uClibc-git/libc/sysdeps/linux/common/bits/inf.h 2014-02-03 12:32:56.000000000 +0100
  52346. @@ -13,9 +13,8 @@
  52347. Lesser General Public License for more details.
  52348. You should have received a copy of the GNU Lesser General Public
  52349. - License along with the GNU C Library; if not, write to the Free
  52350. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52351. - 02111-1307 USA. */
  52352. + License along with the GNU C Library; if not, see
  52353. + <http://www.gnu.org/licenses/>. */
  52354. #ifndef _MATH_H
  52355. # error "Never use <bits/inf.h> directly; include <math.h> instead."
  52356. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/in.h uClibc-git/libc/sysdeps/linux/common/bits/in.h
  52357. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/in.h 2012-05-15 09:20:09.000000000 +0200
  52358. +++ uClibc-git/libc/sysdeps/linux/common/bits/in.h 2014-02-03 12:32:56.000000000 +0100
  52359. @@ -1,4 +1,4 @@
  52360. -/* Copyright (C) 1991-1999, 2000, 2004 Free Software Foundation, Inc.
  52361. +/* Copyright (C) 1991-2013 Free Software Foundation, Inc.
  52362. This file is part of the GNU C Library.
  52363. The GNU C Library is free software; you can redistribute it and/or
  52364. @@ -12,9 +12,8 @@
  52365. Lesser General Public License for more details.
  52366. You should have received a copy of the GNU Lesser General Public
  52367. - License along with the GNU C Library; if not, write to the Free
  52368. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52369. - 02111-1307 USA. */
  52370. + License along with the GNU C Library; if not, see
  52371. + <http://www.gnu.org/licenses/>. */
  52372. /* Linux version. */
  52373. @@ -43,31 +42,49 @@
  52374. #define IP_ADD_SOURCE_MEMBERSHIP 39 /* ip_mreq_source: join source group */
  52375. #define IP_DROP_SOURCE_MEMBERSHIP 40 /* ip_mreq_source: leave source group */
  52376. #define IP_MSFILTER 41
  52377. -#define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
  52378. -#define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
  52379. -#define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
  52380. -#define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
  52381. -#define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
  52382. -#define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
  52383. -#define MCAST_MSFILTER 48
  52384. -
  52385. -#define MCAST_EXCLUDE 0
  52386. -#define MCAST_INCLUDE 1
  52387. -
  52388. -#define IP_ROUTER_ALERT 5 /* bool */
  52389. -#define IP_PKTINFO 8 /* bool */
  52390. -#define IP_PKTOPTIONS 9
  52391. -#define IP_PMTUDISC 10 /* obsolete name? */
  52392. -#define IP_MTU_DISCOVER 10 /* int; see below */
  52393. -#define IP_RECVERR 11 /* bool */
  52394. -#define IP_RECVTTL 12 /* bool */
  52395. -#define IP_RECVTOS 13 /* bool */
  52396. +#if defined __USE_MISC || defined __USE_GNU
  52397. +# define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */
  52398. +# define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */
  52399. +# define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/
  52400. +# define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */
  52401. +# define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */
  52402. +# define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/
  52403. +# define MCAST_MSFILTER 48
  52404. +# define IP_MULTICAST_ALL 49
  52405. +# define IP_UNICAST_IF 50
  52406. +
  52407. +# define MCAST_EXCLUDE 0
  52408. +# define MCAST_INCLUDE 1
  52409. +#endif
  52410. +
  52411. +#define IP_ROUTER_ALERT 5 /* bool */
  52412. +#define IP_PKTINFO 8 /* bool */
  52413. +#define IP_PKTOPTIONS 9
  52414. +#define IP_PMTUDISC 10 /* obsolete name? */
  52415. +#define IP_MTU_DISCOVER 10 /* int; see below */
  52416. +#define IP_RECVERR 11 /* bool */
  52417. +#define IP_RECVTTL 12 /* bool */
  52418. +#define IP_RECVTOS 13 /* bool */
  52419. +#define IP_MTU 14 /* int */
  52420. +#define IP_FREEBIND 15
  52421. +#define IP_IPSEC_POLICY 16
  52422. +#define IP_XFRM_POLICY 17
  52423. +#define IP_PASSSEC 18
  52424. +#define IP_TRANSPARENT 19
  52425. +#define IP_MULTICAST_ALL 49 /* bool */
  52426. +
  52427. +/* TProxy original addresses */
  52428. +#define IP_ORIGDSTADDR 20
  52429. +#define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
  52430. +
  52431. +#define IP_MINTTL 21
  52432. /* IP_MTU_DISCOVER arguments. */
  52433. #define IP_PMTUDISC_DONT 0 /* Never send DF frames. */
  52434. #define IP_PMTUDISC_WANT 1 /* Use per route hints. */
  52435. #define IP_PMTUDISC_DO 2 /* Always DF. */
  52436. +#define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
  52437. /* To select the IP level. */
  52438. #define SOL_IP 0
  52439. @@ -76,6 +93,7 @@
  52440. #define IP_DEFAULT_MULTICAST_LOOP 1
  52441. #define IP_MAX_MEMBERSHIPS 20
  52442. +#if defined __USE_MISC || defined __USE_GNU
  52443. /* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS.
  52444. The `ip_dst' field is used for the first-hop gateway when using a
  52445. source route (this gets put into the header proper). */
  52446. @@ -100,6 +118,7 @@
  52447. struct in_addr ipi_spec_dst; /* Routing destination address */
  52448. struct in_addr ipi_addr; /* Header destination address */
  52449. };
  52450. +#endif
  52451. #ifdef __UCLIBC_HAS_IPV6__
  52452. /* Options for use with `getsockopt' and `setsockopt' at the IPv6 level.
  52453. @@ -159,6 +178,7 @@
  52454. #define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
  52455. #define IPV6_PMTUDISC_WANT 1 /* Use per route hints. */
  52456. #define IPV6_PMTUDISC_DO 2 /* Always DF. */
  52457. +#define IPV6_PMTUDISC_PROBE 3 /* Ignore dst pmtu. */
  52458. /* Socket level values for IPv6. */
  52459. #define SOL_IPV6 41
  52460. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/initspin.h uClibc-git/libc/sysdeps/linux/common/bits/initspin.h
  52461. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/initspin.h 2012-05-15 09:20:09.000000000 +0200
  52462. +++ uClibc-git/libc/sysdeps/linux/common/bits/initspin.h 2014-02-03 12:32:56.000000000 +0100
  52463. @@ -13,9 +13,8 @@
  52464. Lesser General Public License for more details.
  52465. You should have received a copy of the GNU Lesser General Public
  52466. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  52467. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  52468. - Boston, MA 02111-1307, USA. */
  52469. + License along with the GNU C Library; see the file COPYING.LIB. If
  52470. + not, see <http://www.gnu.org/licenses/>. */
  52471. /* Initial value of a spinlock. Most platforms should use zero,
  52472. unless they only implement a "test and clear" operation instead of
  52473. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctls.h uClibc-git/libc/sysdeps/linux/common/bits/ioctls.h
  52474. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctls.h 2012-05-15 09:20:09.000000000 +0200
  52475. +++ uClibc-git/libc/sysdeps/linux/common/bits/ioctls.h 2014-02-03 12:32:56.000000000 +0100
  52476. @@ -12,9 +12,8 @@
  52477. Lesser General Public License for more details.
  52478. You should have received a copy of the GNU Lesser General Public
  52479. - License along with the GNU C Library; if not, write to the Free
  52480. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52481. - 02111-1307 USA. */
  52482. + License along with the GNU C Library; if not, see
  52483. + <http://www.gnu.org/licenses/>. */
  52484. #ifndef _SYS_IOCTL_H
  52485. # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
  52486. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctl-types.h uClibc-git/libc/sysdeps/linux/common/bits/ioctl-types.h
  52487. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ioctl-types.h 2012-05-15 09:20:09.000000000 +0200
  52488. +++ uClibc-git/libc/sysdeps/linux/common/bits/ioctl-types.h 2014-02-03 12:32:56.000000000 +0100
  52489. @@ -13,9 +13,8 @@
  52490. Lesser General Public License for more details.
  52491. You should have received a copy of the GNU Lesser General Public
  52492. - License along with the GNU C Library; if not, write to the Free
  52493. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52494. - 02111-1307 USA. */
  52495. + License along with the GNU C Library; if not, see
  52496. + <http://www.gnu.org/licenses/>. */
  52497. #ifndef _SYS_IOCTL_H
  52498. # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
  52499. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ipc.h uClibc-git/libc/sysdeps/linux/common/bits/ipc.h
  52500. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  52501. +++ uClibc-git/libc/sysdeps/linux/common/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  52502. @@ -12,9 +12,8 @@
  52503. Lesser General Public License for more details.
  52504. You should have received a copy of the GNU Lesser General Public
  52505. - License along with the GNU C Library; if not, write to the Free
  52506. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52507. - 02111-1307 USA. */
  52508. + License along with the GNU C Library; if not, see
  52509. + <http://www.gnu.org/licenses/>. */
  52510. #ifndef _SYS_IPC_H
  52511. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  52512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel-features.h uClibc-git/libc/sysdeps/linux/common/bits/kernel-features.h
  52513. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel-features.h 2012-05-15 09:20:09.000000000 +0200
  52514. +++ uClibc-git/libc/sysdeps/linux/common/bits/kernel-features.h 2014-02-03 12:32:56.000000000 +0100
  52515. @@ -14,9 +14,8 @@
  52516. Lesser General Public License for more details.
  52517. You should have received a copy of the GNU Lesser General Public
  52518. - License along with the GNU C Library; if not, write to the Free
  52519. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52520. - 02111-1307 USA. */
  52521. + License along with the GNU C Library; if not, see
  52522. + <http://www.gnu.org/licenses/>. */
  52523. /* This file must not contain any C code. At least it must be protected
  52524. to allow using the file also in assembler files. */
  52525. @@ -311,17 +310,19 @@
  52526. /* Support for various CLOEXEC and NONBLOCK flags was added for x86,
  52527. * x86-64, PPC, IA-64, and SPARC in 2.6.27. */
  52528. -#if __LINUX_KERNEL_VERSION >= 0x02061b \
  52529. - && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
  52530. - || defined __ia64__ || defined __sparc__ || defined __s390__)
  52531. +#if (__LINUX_KERNEL_VERSION >= 0x02061b \
  52532. + && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
  52533. + || defined __ia64__ || defined __sparc__ || defined __s390__) \
  52534. + ) || (__LINUX_KERNEL_VERSION >= 0x020621 && defined __alpha__) \
  52535. + || defined __aarch64__ || defined __tile__
  52536. /* # define __ASSUME_SOCK_CLOEXEC 1 */
  52537. /* # define __ASSUME_IN_NONBLOCK 1 */
  52538. # define __ASSUME_PIPE2 1
  52539. /* # define __ASSUME_EVENTFD2 1 */
  52540. /* # define __ASSUME_SIGNALFD4 1 */
  52541. +/* # define __ASSUME_DUP3 1 */
  52542. #endif
  52543. -
  52544. /* These features were surely available with 2.4.12. */
  52545. #if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__
  52546. # define __ASSUME_MMAP2_SYSCALL 1
  52547. @@ -494,6 +495,14 @@
  52548. # define __ASSUME_PRIVATE_FUTEX 1
  52549. #endif
  52550. +/* Support for fallocate was added in 2.6.23,
  52551. + on s390 only after 2.6.23-rc1, on alpha only after 2.6.33-rc1. */
  52552. +#if __LINUX_KERNEL_VERSION >= 0x020617 \
  52553. + && (!defined __s390__ || __LINUX_KERNEL_VERSION >= 0x020618) \
  52554. + && (!defined __alpha__ || __LINUX_KERNEL_VERSION >= 0x020621)
  52555. +# define __ASSUME_FALLOCATE 1
  52556. +#endif
  52557. +
  52558. /* getcpu is a syscall for x86-64 since 3.1. */
  52559. #if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100
  52560. # define __ASSUME_GETCPU_SYSCALL 1
  52561. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel_sigaction.h uClibc-git/libc/sysdeps/linux/common/bits/kernel_sigaction.h
  52562. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  52563. +++ uClibc-git/libc/sysdeps/linux/common/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  52564. @@ -19,18 +19,6 @@
  52565. unsigned long sa_flags;
  52566. void (*sa_restorer)(void);
  52567. };
  52568. -/* In uclibc, userspace struct sigaction is identical to
  52569. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  52570. - * See sigaction.h
  52571. - */
  52572. -
  52573. -extern int __syscall_sigaction(int, const struct old_kernel_sigaction *,
  52574. - struct old_kernel_sigaction *);
  52575. -
  52576. #endif
  52577. -
  52578. -extern int __syscall_rt_sigaction(int, const struct sigaction *,
  52579. - struct sigaction *, size_t);
  52580. -
  52581. #endif /* _BITS_SIGACTION_STRUCT_H */
  52582. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/locale.h uClibc-git/libc/sysdeps/linux/common/bits/locale.h
  52583. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/locale.h 2012-05-15 09:20:09.000000000 +0200
  52584. +++ uClibc-git/libc/sysdeps/linux/common/bits/locale.h 2014-02-03 12:32:56.000000000 +0100
  52585. @@ -13,9 +13,8 @@
  52586. Lesser General Public License for more details.
  52587. You should have received a copy of the GNU Lesser General Public
  52588. - License along with the GNU C Library; if not, write to the Free
  52589. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52590. - 02111-1307 USA. */
  52591. + License along with the GNU C Library; if not, see
  52592. + <http://www.gnu.org/licenses/>. */
  52593. #if !defined _LOCALE_H && !defined _LANGINFO_H
  52594. # error "Never use <bits/locale.h> directly; include <locale.h> instead."
  52595. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/local_lim.h uClibc-git/libc/sysdeps/linux/common/bits/local_lim.h
  52596. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  52597. +++ uClibc-git/libc/sysdeps/linux/common/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  52598. @@ -13,9 +13,8 @@
  52599. Lesser General Public License for more details.
  52600. You should have received a copy of the GNU Lesser General Public
  52601. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  52602. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  52603. - Boston, MA 02111-1307, USA. */
  52604. + License along with the GNU C Library; see the file COPYING.LIB. If
  52605. + not, see <http://www.gnu.org/licenses/>. */
  52606. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  52607. and defines LINK_MAX although filesystems have different maxima. A
  52608. @@ -71,6 +70,8 @@
  52609. /* The number of threads per process. */
  52610. #define _POSIX_THREAD_THREADS_MAX 64
  52611. +/* We have no predefined limit on the number of threads. */
  52612. +#undef PTHREAD_THREADS_MAX
  52613. /* Maximum amount by which a process can descrease its asynchronous I/O
  52614. priority level. */
  52615. @@ -93,3 +94,6 @@
  52616. /* Maximum message queue priority level. */
  52617. #define MQ_PRIO_MAX 32768
  52618. +
  52619. +/* Maximum value the semaphore can have. */
  52620. +#define SEM_VALUE_MAX (2147483647)
  52621. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathcalls.h uClibc-git/libc/sysdeps/linux/common/bits/mathcalls.h
  52622. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathcalls.h 2012-05-15 09:20:09.000000000 +0200
  52623. +++ uClibc-git/libc/sysdeps/linux/common/bits/mathcalls.h 2014-02-03 12:32:56.000000000 +0100
  52624. @@ -13,9 +13,8 @@
  52625. Lesser General Public License for more details.
  52626. You should have received a copy of the GNU Lesser General Public
  52627. - License along with the GNU C Library; if not, write to the Free
  52628. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52629. - 02111-1307 USA. */
  52630. + License along with the GNU C Library; if not, see
  52631. + <http://www.gnu.org/licenses/>. */
  52632. /* NOTE: Because of the special way this file is used by <math.h>, this
  52633. file must NOT be protected from multiple inclusion as header files
  52634. @@ -49,7 +48,7 @@
  52635. /* __MATHCALLX(type,function,[suffix],args,attrib) and
  52636. - * __MATHCALLI(type,function,[suffix],args) include libm_hidden_def
  52637. + * __MATHCALLI(type,function,[suffix],args) include libm_hidden_proto
  52638. * (for "double" versions only, xxxf and xxxl do not get this treatment).
  52639. *
  52640. * __MATHDECL(type,function,[suffix],args) does not.
  52641. @@ -57,7 +56,7 @@
  52642. * (it is just a shortcut to __MATHDECL(_Mdouble_,function,[suffix],args)).
  52643. *
  52644. * __MATHDECL_PRIV(type,function,[suffix],args,attrib)
  52645. - * includes libm_hidden_def (always) and declares __foo, not foo.
  52646. + * includes libm_hidden_proto (always) and declares __foo, not foo.
  52647. */
  52648. @@ -155,7 +154,7 @@
  52649. __MATHCALLI (exp2,, (_Mdouble_ __x))
  52650. /* Compute base-2 logarithm of X. */
  52651. -__MATHCALL (log2,, (_Mdouble_ __x))
  52652. +__MATHCALLI (log2,, (_Mdouble_ __x))
  52653. __END_NAMESPACE_C99
  52654. #endif
  52655. @@ -223,7 +222,7 @@
  52656. /* Return the fractional part of X after dividing out `ilogb (X)'. */
  52657. -__MATHCALL (significand,, (_Mdouble_ __x))
  52658. +__MATHCALLI (significand,, (_Mdouble_ __x))
  52659. #endif /* Use misc. */
  52660. #if defined __USE_MISC || defined __USE_ISOC99
  52661. @@ -236,7 +235,7 @@
  52662. #ifdef __USE_ISOC99
  52663. __BEGIN_NAMESPACE_C99
  52664. /* Return representation of NaN for double type. */
  52665. -__MATHCALLX (nan,, (__const char *__tagb), (__const__))
  52666. +__MATHCALLX (nan,, (const char *__tagb), (__const__))
  52667. __END_NAMESPACE_C99
  52668. #endif
  52669. @@ -278,7 +277,7 @@
  52670. #if defined __USE_MISC || defined __USE_XOPEN
  52671. /* Obsolete alias for `lgamma'. */
  52672. -__MATHCALL (gamma,, (_Mdouble_))
  52673. +__MATHCALLI (gamma,, (_Mdouble_))
  52674. #endif
  52675. #ifdef __USE_MISC
  52676. @@ -286,6 +285,8 @@
  52677. `signgam'. The reentrant version instead takes a pointer and stores
  52678. the value through it. */
  52679. __MATHCALL (lgamma,_r, (_Mdouble_, int *__signgamp))
  52680. +/* __MATHCALLI does not work here, probably due to ,_r, */
  52681. +libm_hidden_proto(lgamma_r)
  52682. #endif
  52683. @@ -376,5 +377,5 @@
  52684. #if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) \
  52685. && defined __UCLIBC_SUSV3_LEGACY__
  52686. /* Return X times (2 to the Nth power). */
  52687. -__MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n))
  52688. +__MATHCALLI (scalb,, (_Mdouble_ __x, _Mdouble_ __n))
  52689. #endif
  52690. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathdef.h uClibc-git/libc/sysdeps/linux/common/bits/mathdef.h
  52691. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  52692. +++ uClibc-git/libc/sysdeps/linux/common/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  52693. @@ -12,9 +12,8 @@
  52694. Lesser General Public License for more details.
  52695. You should have received a copy of the GNU Lesser General Public
  52696. - License along with the GNU C Library; if not, write to the Free
  52697. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52698. - 02111-1307 USA. */
  52699. + License along with the GNU C Library; if not, see
  52700. + <http://www.gnu.org/licenses/>. */
  52701. #if !defined _MATH_H && !defined _COMPLEX_H
  52702. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  52703. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mman-common.h uClibc-git/libc/sysdeps/linux/common/bits/mman-common.h
  52704. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mman-common.h 2012-05-15 09:20:09.000000000 +0200
  52705. +++ uClibc-git/libc/sysdeps/linux/common/bits/mman-common.h 2014-02-03 12:32:56.000000000 +0100
  52706. @@ -13,9 +13,8 @@
  52707. Lesser General Public License for more details.
  52708. You should have received a copy of the GNU Lesser General Public
  52709. - License along with the GNU C Library; if not, write to the Free
  52710. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52711. - 02111-1307 USA. */
  52712. + License along with the GNU C Library; if not, see
  52713. + <http://www.gnu.org/licenses/>. */
  52714. #ifndef _SYS_MMAN_H
  52715. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  52716. @@ -64,7 +63,7 @@
  52717. # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
  52718. # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
  52719. # define MAP_STACK 0x20000 /* Allocation is for a stack. */
  52720. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  52721. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  52722. be uninitialized. */
  52723. #endif
  52724. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mqueue.h uClibc-git/libc/sysdeps/linux/common/bits/mqueue.h
  52725. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/mqueue.h 2012-05-15 09:20:09.000000000 +0200
  52726. +++ uClibc-git/libc/sysdeps/linux/common/bits/mqueue.h 2014-02-03 12:32:56.000000000 +0100
  52727. @@ -12,9 +12,8 @@
  52728. Lesser General Public License for more details.
  52729. You should have received a copy of the GNU Lesser General Public
  52730. - License along with the GNU C Library; if not, write to the Free
  52731. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52732. - 02111-1307 USA. */
  52733. + License along with the GNU C Library; if not, see
  52734. + <http://www.gnu.org/licenses/>. */
  52735. #ifndef _MQUEUE_H
  52736. # error "Never use <bits/mqueue.h> directly; include <mqueue.h> instead."
  52737. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/msq.h uClibc-git/libc/sysdeps/linux/common/bits/msq.h
  52738. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  52739. +++ uClibc-git/libc/sysdeps/linux/common/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  52740. @@ -12,9 +12,8 @@
  52741. Lesser General Public License for more details.
  52742. You should have received a copy of the GNU Lesser General Public
  52743. - License along with the GNU C Library; if not, write to the Free
  52744. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52745. - 02111-1307 USA. */
  52746. + License along with the GNU C Library; if not, see
  52747. + <http://www.gnu.org/licenses/>. */
  52748. #ifndef _SYS_MSG_H
  52749. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  52750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/nan.h uClibc-git/libc/sysdeps/linux/common/bits/nan.h
  52751. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/nan.h 2012-05-15 09:20:09.000000000 +0200
  52752. +++ uClibc-git/libc/sysdeps/linux/common/bits/nan.h 2014-02-03 12:32:56.000000000 +0100
  52753. @@ -13,9 +13,8 @@
  52754. Lesser General Public License for more details.
  52755. You should have received a copy of the GNU Lesser General Public
  52756. - License along with the GNU C Library; if not, write to the Free
  52757. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52758. - 02111-1307 USA. */
  52759. + License along with the GNU C Library; if not, see
  52760. + <http://www.gnu.org/licenses/>. */
  52761. #ifndef _MATH_H
  52762. # error "Never use <bits/nan.h> directly; include <math.h> instead."
  52763. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/netdb.h uClibc-git/libc/sysdeps/linux/common/bits/netdb.h
  52764. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/netdb.h 2012-05-15 09:20:09.000000000 +0200
  52765. +++ uClibc-git/libc/sysdeps/linux/common/bits/netdb.h 2014-02-03 12:32:56.000000000 +0100
  52766. @@ -12,9 +12,8 @@
  52767. Lesser General Public License for more details.
  52768. You should have received a copy of the GNU Lesser General Public
  52769. - License along with the GNU C Library; if not, write to the Free
  52770. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52771. - 02111-1307 USA. */
  52772. + License along with the GNU C Library; if not, see
  52773. + <http://www.gnu.org/licenses/>. */
  52774. #ifndef _NETDB_H
  52775. # error "Never include <bits/netdb.h> directly; use <netdb.h> instead."
  52776. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/poll.h uClibc-git/libc/sysdeps/linux/common/bits/poll.h
  52777. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  52778. +++ uClibc-git/libc/sysdeps/linux/common/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  52779. @@ -12,9 +12,8 @@
  52780. Lesser General Public License for more details.
  52781. You should have received a copy of the GNU Lesser General Public
  52782. - License along with the GNU C Library; if not, write to the Free
  52783. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52784. - 02111-1307 USA. */
  52785. + License along with the GNU C Library; if not, see
  52786. + <http://www.gnu.org/licenses/>. */
  52787. #ifndef _SYS_POLL_H
  52788. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  52789. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix1_lim.h uClibc-git/libc/sysdeps/linux/common/bits/posix1_lim.h
  52790. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix1_lim.h 2012-05-15 09:20:09.000000000 +0200
  52791. +++ uClibc-git/libc/sysdeps/linux/common/bits/posix1_lim.h 2014-02-03 12:32:56.000000000 +0100
  52792. @@ -12,9 +12,8 @@
  52793. Lesser General Public License for more details.
  52794. You should have received a copy of the GNU Lesser General Public
  52795. - License along with the GNU C Library; if not, write to the Free
  52796. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52797. - 02111-1307 USA. */
  52798. + License along with the GNU C Library; if not, see
  52799. + <http://www.gnu.org/licenses/>. */
  52800. /*
  52801. * POSIX Standard: 2.9.2 Minimum Values Added to <limits.h>
  52802. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix2_lim.h uClibc-git/libc/sysdeps/linux/common/bits/posix2_lim.h
  52803. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix2_lim.h 2012-05-15 09:20:09.000000000 +0200
  52804. +++ uClibc-git/libc/sysdeps/linux/common/bits/posix2_lim.h 2014-02-03 12:32:56.000000000 +0100
  52805. @@ -12,9 +12,8 @@
  52806. Lesser General Public License for more details.
  52807. You should have received a copy of the GNU Lesser General Public
  52808. - License along with the GNU C Library; if not, write to the Free
  52809. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  52810. - 02111-1307 USA. */
  52811. + License along with the GNU C Library; if not, see
  52812. + <http://www.gnu.org/licenses/>. */
  52813. /*
  52814. * Never include this file directly; include <limits.h> instead.
  52815. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix_opt.h uClibc-git/libc/sysdeps/linux/common/bits/posix_opt.h
  52816. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/posix_opt.h 2012-05-15 09:20:09.000000000 +0200
  52817. +++ uClibc-git/libc/sysdeps/linux/common/bits/posix_opt.h 2014-02-03 12:32:56.000000000 +0100
  52818. @@ -1,5 +1,5 @@
  52819. /* Define POSIX options for Linux.
  52820. - Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
  52821. + Copyright (C) 1996-2004, 2006, 2008, 2009 Free Software Foundation, Inc.
  52822. This file is part of the GNU C Library.
  52823. The GNU C Library is free software; you can redistribute it and/or
  52824. @@ -13,12 +13,11 @@
  52825. Lesser General Public License for more details.
  52826. You should have received a copy of the GNU Lesser General Public
  52827. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  52828. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  52829. - Boston, MA 02111-1307, USA. */
  52830. + License along with the GNU C Library; see the file COPYING.LIB. If
  52831. + not, see <http://www.gnu.org/licenses/>. */
  52832. -#ifndef _POSIX_OPT_H
  52833. -#define _POSIX_OPT_H 1
  52834. +#ifndef _BITS_POSIX_OPT_H
  52835. +#define _BITS_POSIX_OPT_H 1
  52836. /* Job control is supported. */
  52837. #define _POSIX_JOB_CONTROL 1
  52838. @@ -27,28 +26,28 @@
  52839. #define _POSIX_SAVED_IDS 1
  52840. /* Priority scheduling is supported. */
  52841. -#define _POSIX_PRIORITY_SCHEDULING 200112L
  52842. +#define _POSIX_PRIORITY_SCHEDULING 200809L
  52843. /* Synchronizing file data is supported. */
  52844. -#define _POSIX_SYNCHRONIZED_IO 200112L
  52845. +#define _POSIX_SYNCHRONIZED_IO 200809L
  52846. /* The fsync function is present. */
  52847. -#define _POSIX_FSYNC 200112L
  52848. +#define _POSIX_FSYNC 200809L
  52849. /* Mapping of files to memory is supported. */
  52850. -#define _POSIX_MAPPED_FILES 200112L
  52851. +#define _POSIX_MAPPED_FILES 200809L
  52852. /* Locking of all memory is supported. */
  52853. -#define _POSIX_MEMLOCK 200112L
  52854. +#define _POSIX_MEMLOCK 200809L
  52855. /* Locking of ranges of memory is supported. */
  52856. -#define _POSIX_MEMLOCK_RANGE 200112L
  52857. +#define _POSIX_MEMLOCK_RANGE 200809L
  52858. /* Setting of memory protections is supported. */
  52859. -#define _POSIX_MEMORY_PROTECTION 200112L
  52860. +#define _POSIX_MEMORY_PROTECTION 200809L
  52861. -/* Only root can change owner of file. */
  52862. -#define _POSIX_CHOWN_RESTRICTED 1
  52863. +/* Some filesystems allow all users to change file ownership. */
  52864. +#define _POSIX_CHOWN_RESTRICTED 0
  52865. /* `c_cc' member of 'struct termios' structure can be disabled by
  52866. using the value _POSIX_VDISABLE. */
  52867. @@ -60,53 +59,67 @@
  52868. /* X/Open realtime support is available. */
  52869. #define _XOPEN_REALTIME 1
  52870. +/* X/Open thread realtime support is available. */
  52871. +#define _XOPEN_REALTIME_THREADS 1
  52872. +
  52873. /* XPG4.2 shared memory is supported. */
  52874. #define _XOPEN_SHM 1
  52875. /* Tell we have POSIX threads. */
  52876. -#define _POSIX_THREADS 200112L
  52877. +#define _POSIX_THREADS 200809L
  52878. /* We have the reentrant functions described in POSIX. */
  52879. #define _POSIX_REENTRANT_FUNCTIONS 1
  52880. -#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
  52881. +#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
  52882. /* We provide priority scheduling for threads. */
  52883. -#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L
  52884. +#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
  52885. /* We support user-defined stack sizes. */
  52886. -#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
  52887. +#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
  52888. /* We support user-defined stacks. */
  52889. -#define _POSIX_THREAD_ATTR_STACKADDR 200112L
  52890. +#define _POSIX_THREAD_ATTR_STACKADDR 200809L
  52891. -#ifdef __UCLIBC_HAS_REALTIME__
  52892. -/* We support POSIX.1b semaphores. */
  52893. -#define _POSIX_SEMAPHORES 200112L
  52894. +/* We support priority inheritence. */
  52895. +#define _POSIX_THREAD_PRIO_INHERIT 200809L
  52896. +
  52897. +/* We support priority protection, though only for non-robust
  52898. + mutexes. */
  52899. +#define _POSIX_THREAD_PRIO_PROTECT 200809L
  52900. +
  52901. +#ifdef __USE_XOPEN2K8
  52902. +/* We support priority inheritence for robust mutexes. */
  52903. +# define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L
  52904. +
  52905. +/* We do not support priority protection for robust mutexes. */
  52906. +# define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
  52907. #endif
  52908. +/* We support POSIX.1b semaphores. */
  52909. +#define _POSIX_SEMAPHORES 200809L
  52910. +
  52911. /* Real-time signals are supported. */
  52912. -#define _POSIX_REALTIME_SIGNALS 200112L
  52913. +#define _POSIX_REALTIME_SIGNALS 200809L
  52914. /* We support asynchronous I/O. */
  52915. -#define _POSIX_ASYNCHRONOUS_IO 200112L
  52916. +#define _POSIX_ASYNCHRONOUS_IO 200809L
  52917. #define _POSIX_ASYNC_IO 1
  52918. /* Alternative name for Unix98. */
  52919. #define _LFS_ASYNCHRONOUS_IO 1
  52920. /* Support for prioritization is also available. */
  52921. -#define _POSIX_PRIORITIZED_IO 200112L
  52922. +#define _POSIX_PRIORITIZED_IO 200809L
  52923. /* The LFS support in asynchronous I/O is also available. */
  52924. #define _LFS64_ASYNCHRONOUS_IO 1
  52925. -#ifdef __UCLIBC_HAS_LFS__
  52926. /* The rest of the LFS is also available. */
  52927. #define _LFS_LARGEFILE 1
  52928. #define _LFS64_LARGEFILE 1
  52929. #define _LFS64_STDIO 1
  52930. -#endif
  52931. /* POSIX shared memory objects are implemented. */
  52932. -#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
  52933. +#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
  52934. /* CPU-time clocks support needs to be checked at runtime. */
  52935. #define _POSIX_CPUTIME 0
  52936. @@ -114,61 +127,53 @@
  52937. /* Clock support in threads must be also checked at runtime. */
  52938. #define _POSIX_THREAD_CPUTIME 0
  52939. -#ifdef __UCLIBC_HAS_REGEX__
  52940. /* GNU libc provides regular expression handling. */
  52941. #define _POSIX_REGEXP 1
  52942. -#endif
  52943. /* Reader/Writer locks are available. */
  52944. -#define _POSIX_READER_WRITER_LOCKS 200112L
  52945. +#define _POSIX_READER_WRITER_LOCKS 200809L
  52946. /* We have a POSIX shell. */
  52947. #define _POSIX_SHELL 1
  52948. /* We support the Timeouts option. */
  52949. -#define _POSIX_TIMEOUTS 200112L
  52950. +#define _POSIX_TIMEOUTS 200809L
  52951. /* We support spinlocks. */
  52952. -#define _POSIX_SPIN_LOCKS 200112L
  52953. +#define _POSIX_SPIN_LOCKS 200809L
  52954. /* The `spawn' function family is supported. */
  52955. -#if 0 /* no support in uClibc (yet) */
  52956. -#define _POSIX_SPAWN 200112L
  52957. -#endif
  52958. +#define _POSIX_SPAWN 200809L
  52959. /* We have POSIX timers. */
  52960. -#define _POSIX_TIMERS 200112L
  52961. +#define _POSIX_TIMERS 200809L
  52962. /* The barrier functions are available. */
  52963. -#define _POSIX_BARRIERS 200112L
  52964. +#define _POSIX_BARRIERS 200809L
  52965. /* POSIX message queues are available. */
  52966. -#define _POSIX_MESSAGE_PASSING 200112L
  52967. +#define _POSIX_MESSAGE_PASSING 200809L
  52968. /* Thread process-shared synchronization is supported. */
  52969. -#define _POSIX_THREAD_PROCESS_SHARED 200112L
  52970. +#define _POSIX_THREAD_PROCESS_SHARED 200809L
  52971. /* The monotonic clock might be available. */
  52972. #define _POSIX_MONOTONIC_CLOCK 0
  52973. /* The clock selection interfaces are available. */
  52974. -#define _POSIX_CLOCK_SELECTION 200112L
  52975. +#define _POSIX_CLOCK_SELECTION 200809L
  52976. /* Advisory information interfaces are available. */
  52977. -#define _POSIX_ADVISORY_INFO 200112L
  52978. +#define _POSIX_ADVISORY_INFO 200809L
  52979. -#ifdef __UCLIBC_HAS_IPV6__
  52980. /* IPv6 support is available. */
  52981. -#define _POSIX_IPV6 200112L
  52982. -#endif
  52983. +#define _POSIX_IPV6 200809L
  52984. -#ifdef __UCLIBC_HAS_SOCKET__
  52985. /* Raw socket support is available. */
  52986. -#define _POSIX_RAW_SOCKETS 200112L
  52987. -#endif
  52988. +#define _POSIX_RAW_SOCKETS 200809L
  52989. /* We have at least one terminal. */
  52990. -#define _POSIX2_CHAR_TERM 200112L
  52991. +#define _POSIX2_CHAR_TERM 200809L
  52992. /* Neither process nor thread sporadic server interfaces is available. */
  52993. #define _POSIX_SPORADIC_SERVER -1
  52994. @@ -183,8 +188,4 @@
  52995. /* Typed memory objects are not available. */
  52996. #define _POSIX_TYPED_MEMORY_OBJECTS -1
  52997. -/* No support for priority inheritance or protection so far. */
  52998. -#define _POSIX_THREAD_PRIO_INHERIT -1
  52999. -#define _POSIX_THREAD_PRIO_PROTECT -1
  53000. -
  53001. -#endif /* posix_opt.h */
  53002. +#endif /* bits/posix_opt.h */
  53003. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/resource.h uClibc-git/libc/sysdeps/linux/common/bits/resource.h
  53004. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  53005. +++ uClibc-git/libc/sysdeps/linux/common/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  53006. @@ -14,9 +14,8 @@
  53007. Lesser General Public License for more details.
  53008. You should have received a copy of the GNU Lesser General Public
  53009. - License along with the GNU C Library; if not, write to the Free
  53010. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53011. - 02111-1307 USA. */
  53012. + License along with the GNU C Library; if not, see
  53013. + <http://www.gnu.org/licenses/>. */
  53014. #ifndef _SYS_RESOURCE_H
  53015. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  53016. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sched.h uClibc-git/libc/sysdeps/linux/common/bits/sched.h
  53017. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sched.h 2012-05-15 09:20:09.000000000 +0200
  53018. +++ uClibc-git/libc/sysdeps/linux/common/bits/sched.h 2014-02-03 12:32:56.000000000 +0100
  53019. @@ -15,9 +15,8 @@
  53020. Lesser General Public License for more details.
  53021. You should have received a copy of the GNU Lesser General Public
  53022. - License along with the GNU C Library; if not, write to the Free
  53023. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53024. - 02111-1307 USA. */
  53025. + License along with the GNU C Library; if not, see
  53026. + <http://www.gnu.org/licenses/>. */
  53027. #ifndef __need_schedparam
  53028. @@ -109,6 +108,7 @@
  53029. /* Size definition for CPU sets. */
  53030. # define __CPU_SETSIZE 1024
  53031. # define __NCPUBITS (8 * sizeof (__cpu_mask))
  53032. +# include <stdlib.h>
  53033. /* Type for array elements in 'cpu_set_t'. */
  53034. typedef unsigned long int __cpu_mask;
  53035. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/select.h uClibc-git/libc/sysdeps/linux/common/bits/select.h
  53036. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/select.h 2012-05-15 09:20:09.000000000 +0200
  53037. +++ uClibc-git/libc/sysdeps/linux/common/bits/select.h 2014-02-03 12:32:56.000000000 +0100
  53038. @@ -12,9 +12,8 @@
  53039. Lesser General Public License for more details.
  53040. You should have received a copy of the GNU Lesser General Public
  53041. - License along with the GNU C Library; if not, write to the Free
  53042. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53043. - 02111-1307 USA. */
  53044. + License along with the GNU C Library; if not, see
  53045. + <http://www.gnu.org/licenses/>. */
  53046. #ifndef _SYS_SELECT_H
  53047. # error "Never use <bits/select.h> directly; include <sys/select.h> instead."
  53048. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sem.h uClibc-git/libc/sysdeps/linux/common/bits/sem.h
  53049. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  53050. +++ uClibc-git/libc/sysdeps/linux/common/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  53051. @@ -12,9 +12,8 @@
  53052. Lesser General Public License for more details.
  53053. You should have received a copy of the GNU Lesser General Public
  53054. - License along with the GNU C Library; if not, write to the Free
  53055. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53056. - 02111-1307 USA. */
  53057. + License along with the GNU C Library; if not, see
  53058. + <http://www.gnu.org/licenses/>. */
  53059. #ifndef _SYS_SEM_H
  53060. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  53061. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/shm.h uClibc-git/libc/sysdeps/linux/common/bits/shm.h
  53062. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  53063. +++ uClibc-git/libc/sysdeps/linux/common/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  53064. @@ -12,9 +12,8 @@
  53065. Lesser General Public License for more details.
  53066. You should have received a copy of the GNU Lesser General Public
  53067. - License along with the GNU C Library; if not, write to the Free
  53068. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53069. - 02111-1307 USA. */
  53070. + License along with the GNU C Library; if not, see
  53071. + <http://www.gnu.org/licenses/>. */
  53072. #ifndef _SYS_SHM_H
  53073. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  53074. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigaction.h uClibc-git/libc/sysdeps/linux/common/bits/sigaction.h
  53075. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  53076. +++ uClibc-git/libc/sysdeps/linux/common/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  53077. @@ -13,9 +13,8 @@
  53078. Lesser General Public License for more details.
  53079. You should have received a copy of the GNU Lesser General Public
  53080. - License along with the GNU C Library; if not, write to the Free
  53081. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53082. - 02111-1307 USA. */
  53083. + License along with the GNU C Library; if not, see
  53084. + <http://www.gnu.org/licenses/>. */
  53085. #ifndef _SIGNAL_H
  53086. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  53087. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/common/bits/sigcontext.h
  53088. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  53089. +++ uClibc-git/libc/sysdeps/linux/common/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  53090. @@ -12,9 +12,8 @@
  53091. Lesser General Public License for more details.
  53092. You should have received a copy of the GNU Lesser General Public
  53093. - License along with the GNU C Library; if not, write to the Free
  53094. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53095. - 02111-1307 USA. */
  53096. + License along with the GNU C Library; if not, see
  53097. + <http://www.gnu.org/licenses/>. */
  53098. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  53099. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  53100. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/common/bits/sigcontextinfo.h
  53101. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  53102. +++ uClibc-git/libc/sysdeps/linux/common/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  53103. @@ -13,9 +13,8 @@
  53104. Lesser General Public License for more details.
  53105. You should have received a copy of the GNU Lesser General Public
  53106. - License along with the GNU C Library; if not, write to the Free
  53107. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53108. - 02111-1307 USA. */
  53109. + License along with the GNU C Library; if not, see
  53110. + <http://www.gnu.org/licenses/>. */
  53111. /* In general we cannot provide any information. */
  53112. #define SIGCONTEXT struct sigcontext *
  53113. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/siginfo.h uClibc-git/libc/sysdeps/linux/common/bits/siginfo.h
  53114. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  53115. +++ uClibc-git/libc/sysdeps/linux/common/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  53116. @@ -13,9 +13,8 @@
  53117. Lesser General Public License for more details.
  53118. You should have received a copy of the GNU Lesser General Public
  53119. - License along with the GNU C Library; if not, write to the Free
  53120. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53121. - 02111-1307 USA. */
  53122. + License along with the GNU C Library; if not, see
  53123. + <http://www.gnu.org/licenses/>. */
  53124. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  53125. && !defined __need_sigevent_t
  53126. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/signum.h uClibc-git/libc/sysdeps/linux/common/bits/signum.h
  53127. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  53128. +++ uClibc-git/libc/sysdeps/linux/common/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  53129. @@ -13,9 +13,8 @@
  53130. Lesser General Public License for more details.
  53131. You should have received a copy of the GNU Lesser General Public
  53132. - License along with the GNU C Library; if not, write to the Free
  53133. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53134. - 02111-1307 USA. */
  53135. + License along with the GNU C Library; if not, see
  53136. + <http://www.gnu.org/licenses/>. */
  53137. #ifdef _SIGNAL_H
  53138. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigset.h uClibc-git/libc/sysdeps/linux/common/bits/sigset.h
  53139. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigset.h 2012-05-15 09:20:09.000000000 +0200
  53140. +++ uClibc-git/libc/sysdeps/linux/common/bits/sigset.h 2014-02-03 12:32:56.000000000 +0100
  53141. @@ -13,9 +13,8 @@
  53142. Lesser General Public License for more details.
  53143. You should have received a copy of the GNU Lesser General Public
  53144. - License along with the GNU C Library; if not, write to the Free
  53145. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53146. - 02111-1307 USA. */
  53147. + License along with the GNU C Library; if not, see
  53148. + <http://www.gnu.org/licenses/>. */
  53149. #ifndef _SIGSET_H_types
  53150. # define _SIGSET_H_types 1
  53151. @@ -153,7 +152,7 @@
  53152. checking is done in the non __ versions. */
  53153. # if !defined __USE_EXTERN_INLINES || defined __PROVIDE_OUT_OF_LINE_SIGSETFN
  53154. -extern int __sigismember (__const __sigset_t *, int);
  53155. +extern int __sigismember (const __sigset_t *, int);
  53156. libc_hidden_proto(__sigismember)
  53157. extern int __sigaddset (__sigset_t *, int);
  53158. libc_hidden_proto(__sigaddset)
  53159. @@ -179,7 +178,7 @@
  53160. return BODY; \
  53161. }
  53162. -__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, __const)
  53163. +__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, const)
  53164. __SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), )
  53165. __SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), )
  53166. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigstack.h uClibc-git/libc/sysdeps/linux/common/bits/sigstack.h
  53167. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  53168. +++ uClibc-git/libc/sysdeps/linux/common/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  53169. @@ -13,9 +13,8 @@
  53170. Lesser General Public License for more details.
  53171. You should have received a copy of the GNU Lesser General Public
  53172. - License along with the GNU C Library; if not, write to the Free
  53173. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53174. - 02111-1307 USA. */
  53175. + License along with the GNU C Library; if not, see
  53176. + <http://www.gnu.org/licenses/>. */
  53177. #ifndef _SIGNAL_H
  53178. # error "Never include this file directly. Use <signal.h> instead"
  53179. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigthread.h uClibc-git/libc/sysdeps/linux/common/bits/sigthread.h
  53180. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sigthread.h 2012-05-15 09:20:09.000000000 +0200
  53181. +++ uClibc-git/libc/sysdeps/linux/common/bits/sigthread.h 2014-02-03 12:32:56.000000000 +0100
  53182. @@ -13,9 +13,8 @@
  53183. Lesser General Public License for more details.
  53184. You should have received a copy of the GNU Lesser General Public
  53185. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  53186. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  53187. - Boston, MA 02111-1307, USA. */
  53188. + License along with the GNU C Library; see the file COPYING.LIB. If
  53189. + not, see <http://www.gnu.org/licenses/>. */
  53190. #ifndef _BITS_SIGTHREAD_H
  53191. #define _BITS_SIGTHREAD_H 1
  53192. @@ -29,7 +28,7 @@
  53193. /* Modify the signal mask for the calling thread. The arguments have
  53194. the same meaning as for sigprocmask(2). */
  53195. extern int pthread_sigmask (int __how,
  53196. - __const __sigset_t *__restrict __newmask,
  53197. + const __sigset_t *__restrict __newmask,
  53198. __sigset_t *__restrict __oldmask)__THROW;
  53199. /* Send signal SIGNO to the given thread. */
  53200. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sockaddr.h uClibc-git/libc/sysdeps/linux/common/bits/sockaddr.h
  53201. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/sockaddr.h 2012-05-15 09:20:09.000000000 +0200
  53202. +++ uClibc-git/libc/sysdeps/linux/common/bits/sockaddr.h 2014-02-03 12:32:56.000000000 +0100
  53203. @@ -13,9 +13,8 @@
  53204. Lesser General Public License for more details.
  53205. You should have received a copy of the GNU Lesser General Public
  53206. - License along with the GNU C Library; if not, write to the Free
  53207. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53208. - 02111-1307 USA. */
  53209. + License along with the GNU C Library; if not, see
  53210. + <http://www.gnu.org/licenses/>. */
  53211. /*
  53212. * Never include this file directly; use <sys/socket.h> instead.
  53213. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket.h uClibc-git/libc/sysdeps/linux/common/bits/socket.h
  53214. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket.h 2012-05-15 09:20:09.000000000 +0200
  53215. +++ uClibc-git/libc/sysdeps/linux/common/bits/socket.h 2014-02-03 12:32:56.000000000 +0100
  53216. @@ -1,5 +1,6 @@
  53217. /* System-specific socket constants and types. Linux version.
  53218. - Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc.
  53219. + Copyright (C) 1991,1992,1994-2001,2004,2006-2012
  53220. + Free Software Foundation, Inc.
  53221. This file is part of the GNU C Library.
  53222. The GNU C Library is free software; you can redistribute it and/or
  53223. @@ -13,19 +14,17 @@
  53224. Lesser General Public License for more details.
  53225. You should have received a copy of the GNU Lesser General Public
  53226. - License along with the GNU C Library; if not, write to the Free
  53227. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53228. - 02111-1307 USA. */
  53229. + License along with the GNU C Library; if not, see
  53230. + <http://www.gnu.org/licenses/>. */
  53231. #ifndef __BITS_SOCKET_H
  53232. #define __BITS_SOCKET_H
  53233. -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
  53234. +#ifndef _SYS_SOCKET_H
  53235. # error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
  53236. #endif
  53237. #define __need_size_t
  53238. -#define __need_NULL
  53239. #include <stddef.h>
  53240. #include <limits.h>
  53241. @@ -37,37 +36,8 @@
  53242. # define __socklen_t_defined
  53243. #endif
  53244. -/* Types of sockets. */
  53245. -enum __socket_type
  53246. -{
  53247. - SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  53248. - byte streams. */
  53249. -#define SOCK_STREAM SOCK_STREAM
  53250. - SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  53251. - of fixed maximum length. */
  53252. -#define SOCK_DGRAM SOCK_DGRAM
  53253. - SOCK_RAW = 3, /* Raw protocol interface. */
  53254. -#define SOCK_RAW SOCK_RAW
  53255. - SOCK_RDM = 4, /* Reliably-delivered messages. */
  53256. -#define SOCK_RDM SOCK_RDM
  53257. - SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  53258. - datagrams of fixed maximum length. */
  53259. -#define SOCK_SEQPACKET SOCK_SEQPACKET
  53260. - SOCK_PACKET = 10, /* Linux specific way of getting packets
  53261. - at the dev level. For writing rarp and
  53262. - other similar things on the user level. */
  53263. -#define SOCK_PACKET SOCK_PACKET
  53264. -
  53265. - /* Flags to be ORed into the type parameter of socket and socketpair and
  53266. - used for the flags parameter of paccept. */
  53267. -
  53268. - SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  53269. - new descriptor(s). */
  53270. -#define SOCK_CLOEXEC SOCK_CLOEXEC
  53271. - SOCK_NONBLOCK = 04000 /* Atomically mark descriptor(s) as
  53272. - non-blocking. */
  53273. -#define SOCK_NONBLOCK SOCK_NONBLOCK
  53274. -};
  53275. +/* Get the architecture-dependent definition of enum __socket_type. */
  53276. +#include <bits/socket_type.h>
  53277. /* Protocol families. */
  53278. #define PF_UNSPEC 0 /* Unspecified. */
  53279. @@ -94,22 +64,24 @@
  53280. #define PF_ASH 18 /* Ash. */
  53281. #define PF_ECONET 19 /* Acorn Econet. */
  53282. #define PF_ATMSVC 20 /* ATM SVCs. */
  53283. +#define PF_RDS 21 /* RDS sockets. */
  53284. #define PF_SNA 22 /* Linux SNA Project */
  53285. #define PF_IRDA 23 /* IRDA sockets. */
  53286. #define PF_PPPOX 24 /* PPPoX sockets. */
  53287. #define PF_WANPIPE 25 /* Wanpipe API sockets. */
  53288. -#define PF_LLC 26 /* Linux LLC. */
  53289. -#define PF_CAN 29 /* Controller Area Network. */
  53290. -#define PF_TIPC 30 /* TIPC sockets. */
  53291. +#define PF_LLC 26 /* Linux LLC. */
  53292. +#define PF_CAN 29 /* Controller Area Network. */
  53293. +#define PF_TIPC 30 /* TIPC sockets. */
  53294. #define PF_BLUETOOTH 31 /* Bluetooth sockets. */
  53295. #define PF_IUCV 32 /* IUCV sockets. */
  53296. -#define PF_RXRPC 33 /* RxRPC sockets. */
  53297. -#define PF_ISDN 34 /* mISDN sockets. */
  53298. -#define PF_PHONET 35 /* Phonet sockets. */
  53299. -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  53300. -#define PF_CAIF 37 /* CAIF sockets. */
  53301. -#define PF_ALG 38 /* Algorithm sockets. */
  53302. -#define PF_MAX 39 /* For now.. */
  53303. +#define PF_RXRPC 33 /* RxRPC sockets. */
  53304. +#define PF_ISDN 34 /* mISDN sockets. */
  53305. +#define PF_PHONET 35 /* Phonet sockets. */
  53306. +#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  53307. +#define PF_CAIF 37 /* CAIF sockets. */
  53308. +#define PF_ALG 38 /* Algorithm sockets. */
  53309. +#define PF_NFC 39 /* NFC sockets. */
  53310. +#define PF_MAX 40 /* For now.. */
  53311. /* Address families. */
  53312. #define AF_UNSPEC PF_UNSPEC
  53313. @@ -136,21 +108,23 @@
  53314. #define AF_ASH PF_ASH
  53315. #define AF_ECONET PF_ECONET
  53316. #define AF_ATMSVC PF_ATMSVC
  53317. +#define AF_RDS PF_RDS
  53318. #define AF_SNA PF_SNA
  53319. #define AF_IRDA PF_IRDA
  53320. #define AF_PPPOX PF_PPPOX
  53321. #define AF_WANPIPE PF_WANPIPE
  53322. -#define AF_LLC PF_LLC
  53323. -#define AF_CAN PF_CAN
  53324. -#define AF_TIPC PF_TIPC
  53325. +#define AF_LLC PF_LLC
  53326. +#define AF_CAN PF_CAN
  53327. +#define AF_TIPC PF_TIPC
  53328. #define AF_BLUETOOTH PF_BLUETOOTH
  53329. -#define AF_IUCV PF_IUCV
  53330. -#define AF_RXRPC PF_RXRPC
  53331. -#define AF_ISDN PF_ISDN
  53332. -#define AF_PHONET PF_PHONET
  53333. -#define AF_IEEE802154 PF_IEEE802154
  53334. -#define AF_CAIF PF_CAIF
  53335. -#define AF_ALG PF_ALG
  53336. +#define AF_IUCV PF_IUCV
  53337. +#define AF_RXRPC PF_RXRPC
  53338. +#define AF_ISDN PF_ISDN
  53339. +#define AF_PHONET PF_PHONET
  53340. +#define AF_IEEE802154 PF_IEEE802154
  53341. +#define AF_CAIF PF_CAIF
  53342. +#define AF_ALG PF_ALG
  53343. +#define AF_NFC PF_NFC
  53344. #define AF_MAX PF_MAX
  53345. /* Socket level values. Others are defined in the appropriate headers.
  53346. @@ -235,8 +209,14 @@
  53347. #define MSG_ERRQUEUE MSG_ERRQUEUE
  53348. MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
  53349. #define MSG_NOSIGNAL MSG_NOSIGNAL
  53350. - MSG_MORE = 0x8000 /* Sender will send more. */
  53351. + MSG_MORE = 0x8000, /* Sender will send more. */
  53352. #define MSG_MORE MSG_MORE
  53353. + MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/
  53354. +#define MSG_WAITFORONE MSG_WAITFORONE
  53355. + MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
  53356. + descriptor received through
  53357. + SCM_RIGHTS. */
  53358. +#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
  53359. };
  53360. @@ -290,7 +270,7 @@
  53361. #define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
  53362. #define CMSG_FIRSTHDR(mhdr) \
  53363. ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
  53364. - ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
  53365. + ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
  53366. #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
  53367. & (size_t) ~(sizeof (size_t) - 1))
  53368. #define CMSG_SPACE(len) (CMSG_ALIGN (len) \
  53369. @@ -302,14 +282,14 @@
  53370. libc_hidden_proto(__cmsg_nxthdr)
  53371. #ifdef __USE_EXTERN_INLINES
  53372. # ifndef _EXTERN_INLINE
  53373. -# define _EXTERN_INLINE extern __inline
  53374. +# define _EXTERN_INLINE __extern_inline
  53375. # endif
  53376. _EXTERN_INLINE struct cmsghdr *
  53377. __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
  53378. {
  53379. if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
  53380. /* The kernel header does this so there may be a reason. */
  53381. - return 0;
  53382. + return (struct cmsghdr *) 0;
  53383. __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
  53384. + CMSG_ALIGN (__cmsg->cmsg_len));
  53385. @@ -318,7 +298,7 @@
  53386. || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
  53387. > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
  53388. /* No more entries. */
  53389. - return 0;
  53390. + return (struct cmsghdr *) 0;
  53391. return __cmsg;
  53392. }
  53393. #endif /* Use `extern inline'. */
  53394. @@ -329,20 +309,21 @@
  53395. {
  53396. SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
  53397. #define SCM_RIGHTS SCM_RIGHTS
  53398. -#ifdef __USE_BSD
  53399. +#ifdef __USE_GNU
  53400. , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
  53401. # define SCM_CREDENTIALS SCM_CREDENTIALS
  53402. #endif
  53403. };
  53404. +#ifdef __USE_GNU
  53405. /* User visible structure for SCM_CREDENTIALS message */
  53406. -
  53407. struct ucred
  53408. {
  53409. pid_t pid; /* PID of sending process. */
  53410. uid_t uid; /* UID of sending process. */
  53411. gid_t gid; /* GID of sending process. */
  53412. };
  53413. +#endif
  53414. /* Get socket manipulation related informations from kernel headers. */
  53415. #ifndef __GLIBC__
  53416. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket_type.h uClibc-git/libc/sysdeps/linux/common/bits/socket_type.h
  53417. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  53418. +++ uClibc-git/libc/sysdeps/linux/common/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  53419. @@ -0,0 +1,54 @@
  53420. +/* Define enum __socket_type for generic Linux.
  53421. + Copyright (C) 1991-2012 Free Software Foundation, Inc.
  53422. + This file is part of the GNU C Library.
  53423. +
  53424. + The GNU C Library is free software; you can redistribute it and/or
  53425. + modify it under the terms of the GNU Lesser General Public
  53426. + License as published by the Free Software Foundation; either
  53427. + version 2.1 of the License, or (at your option) any later version.
  53428. +
  53429. + The GNU C Library is distributed in the hope that it will be useful,
  53430. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  53431. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  53432. + Lesser General Public License for more details.
  53433. +
  53434. + You should have received a copy of the GNU Lesser General Public
  53435. + License along with the GNU C Library; if not, see
  53436. + <http://www.gnu.org/licenses/>. */
  53437. +
  53438. +#ifndef _SYS_SOCKET_H
  53439. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  53440. +#endif
  53441. +
  53442. +/* Types of sockets. */
  53443. +enum __socket_type
  53444. +{
  53445. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  53446. + byte streams. */
  53447. +#define SOCK_STREAM SOCK_STREAM
  53448. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  53449. + of fixed maximum length. */
  53450. +#define SOCK_DGRAM SOCK_DGRAM
  53451. + SOCK_RAW = 3, /* Raw protocol interface. */
  53452. +#define SOCK_RAW SOCK_RAW
  53453. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  53454. +#define SOCK_RDM SOCK_RDM
  53455. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  53456. + datagrams of fixed maximum length. */
  53457. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  53458. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  53459. +#define SOCK_DCCP SOCK_DCCP
  53460. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  53461. + at the dev level. For writing rarp and
  53462. + other similar things on the user level. */
  53463. +#define SOCK_PACKET SOCK_PACKET
  53464. +
  53465. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  53466. +
  53467. + SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  53468. + new descriptor(s). */
  53469. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  53470. + SOCK_NONBLOCK = 00004000 /* Atomically mark descriptor(s) as
  53471. + non-blocking. */
  53472. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  53473. +};
  53474. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stab.def uClibc-git/libc/sysdeps/linux/common/bits/stab.def
  53475. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stab.def 2012-05-15 09:20:09.000000000 +0200
  53476. +++ uClibc-git/libc/sysdeps/linux/common/bits/stab.def 2014-02-03 12:32:56.000000000 +0100
  53477. @@ -13,9 +13,8 @@
  53478. Lesser General Public License for more details.
  53479. You should have received a copy of the GNU Lesser General Public
  53480. - License along with the GNU C Library; if not, write to the Free
  53481. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53482. - 02111-1307 USA. */
  53483. + License along with the GNU C Library; if not, see
  53484. + <http://www.gnu.org/licenses/>. */
  53485. /* This contains contribution from Cygnus Support. */
  53486. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/common/bits/stackinfo.h
  53487. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  53488. +++ uClibc-git/libc/sysdeps/linux/common/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  53489. @@ -12,9 +12,8 @@
  53490. Lesser General Public License for more details.
  53491. You should have received a copy of the GNU Lesser General Public
  53492. - License along with the GNU C Library; if not, write to the Free
  53493. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53494. - 02111-1307 USA. */
  53495. + License along with the GNU C Library; if not, see
  53496. + <http://www.gnu.org/licenses/>. */
  53497. /* This file contains a bit of information about the stack allocation
  53498. of the processor. Since there is no general truth we can't say
  53499. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statfs.h uClibc-git/libc/sysdeps/linux/common/bits/statfs.h
  53500. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  53501. +++ uClibc-git/libc/sysdeps/linux/common/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  53502. @@ -12,9 +12,8 @@
  53503. Lesser General Public License for more details.
  53504. You should have received a copy of the GNU Lesser General Public
  53505. - License along with the GNU C Library; if not, write to the Free
  53506. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53507. - 02111-1307 USA. */
  53508. + License along with the GNU C Library; if not, see
  53509. + <http://www.gnu.org/licenses/>. */
  53510. #ifndef _SYS_STATFS_H
  53511. # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  53512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stat.h uClibc-git/libc/sysdeps/linux/common/bits/stat.h
  53513. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  53514. +++ uClibc-git/libc/sysdeps/linux/common/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  53515. @@ -12,9 +12,8 @@
  53516. Lesser General Public License for more details.
  53517. You should have received a copy of the GNU Lesser General Public
  53518. - License along with the GNU C Library; if not, write to the Free
  53519. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53520. - 02111-1307 USA. */
  53521. + License along with the GNU C Library; if not, see
  53522. + <http://www.gnu.org/licenses/>. */
  53523. #ifndef _SYS_STAT_H
  53524. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  53525. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statvfs.h uClibc-git/libc/sysdeps/linux/common/bits/statvfs.h
  53526. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/statvfs.h 2012-05-15 09:20:09.000000000 +0200
  53527. +++ uClibc-git/libc/sysdeps/linux/common/bits/statvfs.h 2014-02-03 12:32:56.000000000 +0100
  53528. @@ -12,9 +12,8 @@
  53529. Lesser General Public License for more details.
  53530. You should have received a copy of the GNU Lesser General Public
  53531. - License along with the GNU C Library; if not, write to the Free
  53532. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53533. - 02111-1307 USA. */
  53534. + License along with the GNU C Library; if not, see
  53535. + <http://www.gnu.org/licenses/>. */
  53536. #ifndef _SYS_STATVFS_H
  53537. # error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead."
  53538. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio.h uClibc-git/libc/sysdeps/linux/common/bits/stdio.h
  53539. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio.h 2012-05-15 09:20:09.000000000 +0200
  53540. +++ uClibc-git/libc/sysdeps/linux/common/bits/stdio.h 2014-02-03 12:32:56.000000000 +0100
  53541. @@ -13,9 +13,8 @@
  53542. Lesser General Public License for more details.
  53543. You should have received a copy of the GNU Lesser General Public
  53544. - License along with the GNU C Library; if not, write to the Free
  53545. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53546. - 02111-1307 USA. */
  53547. + License along with the GNU C Library; if not, see
  53548. + <http://www.gnu.org/licenses/>. */
  53549. #ifndef _STDIO_H
  53550. # error "Never include <bits/stdio.h> directly; use <stdio.h> instead."
  53551. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio_lim.h uClibc-git/libc/sysdeps/linux/common/bits/stdio_lim.h
  53552. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/stdio_lim.h 2012-05-15 09:20:09.000000000 +0200
  53553. +++ uClibc-git/libc/sysdeps/linux/common/bits/stdio_lim.h 2014-02-03 12:32:56.000000000 +0100
  53554. @@ -12,9 +12,8 @@
  53555. Lesser General Public License for more details.
  53556. You should have received a copy of the GNU Lesser General Public
  53557. - License along with the GNU C Library; if not, write to the Free
  53558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53559. - 02111-1307 USA. */
  53560. + License along with the GNU C Library; if not, see
  53561. + <http://www.gnu.org/licenses/>. */
  53562. #if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX
  53563. # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
  53564. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/termios.h uClibc-git/libc/sysdeps/linux/common/bits/termios.h
  53565. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  53566. +++ uClibc-git/libc/sysdeps/linux/common/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  53567. @@ -14,9 +14,8 @@
  53568. Lesser General Public License for more details.
  53569. You should have received a copy of the GNU Lesser General Public
  53570. - License along with the GNU C Library; if not, write to the Free
  53571. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53572. - 02111-1307 USA. */
  53573. + License along with the GNU C Library; if not, see
  53574. + <http://www.gnu.org/licenses/>. */
  53575. #ifndef _TERMIOS_H
  53576. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  53577. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/time.h uClibc-git/libc/sysdeps/linux/common/bits/time.h
  53578. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/time.h 2012-05-15 09:20:09.000000000 +0200
  53579. +++ uClibc-git/libc/sysdeps/linux/common/bits/time.h 2014-02-03 12:32:56.000000000 +0100
  53580. @@ -13,9 +13,8 @@
  53581. Lesser General Public License for more details.
  53582. You should have received a copy of the GNU Lesser General Public
  53583. - License along with the GNU C Library; if not, write to the Free
  53584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53585. - 02111-1307 USA. */
  53586. + License along with the GNU C Library; if not, see
  53587. + <http://www.gnu.org/licenses/>. */
  53588. /*
  53589. * Never include this file directly; use <time.h> instead.
  53590. @@ -54,6 +53,12 @@
  53591. # define CLOCK_PROCESS_CPUTIME_ID 2
  53592. /* Thread-specific CPU-time clock. */
  53593. # define CLOCK_THREAD_CPUTIME_ID 3
  53594. +/* Monotonic system-wide clock, not adjusted for frequency scaling. */
  53595. +# define CLOCK_MONOTONIC_RAW 4
  53596. +/* Identifier for system-wide realtime clock, updated only on ticks. */
  53597. +# define CLOCK_REALTIME_COARSE 5
  53598. +/* Monotonic system-wide clock, updated only on ticks. */
  53599. +# define CLOCK_MONOTONIC_COARSE 6
  53600. /* Flag to indicate time is absolute. */
  53601. # define TIMER_ABSTIME 1
  53602. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/types.h uClibc-git/libc/sysdeps/linux/common/bits/types.h
  53603. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/types.h 2012-05-15 09:20:09.000000000 +0200
  53604. +++ uClibc-git/libc/sysdeps/linux/common/bits/types.h 2014-02-03 12:32:56.000000000 +0100
  53605. @@ -1,5 +1,5 @@
  53606. /* bits/types.h -- definitions of __*_t types underlying *_t types.
  53607. - Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
  53608. + Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
  53609. This file is part of the GNU C Library.
  53610. The GNU C Library is free software; you can redistribute it and/or
  53611. @@ -13,9 +13,8 @@
  53612. Lesser General Public License for more details.
  53613. You should have received a copy of the GNU Lesser General Public
  53614. - License along with the GNU C Library; if not, write to the Free
  53615. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53616. - 02111-1307 USA. */
  53617. + License along with the GNU C Library; if not, see
  53618. + <http://www.gnu.org/licenses/>. */
  53619. /*
  53620. * Never include this file directly; use <sys/types.h> instead.
  53621. @@ -27,8 +26,6 @@
  53622. #include <features.h>
  53623. #include <bits/wordsize.h>
  53624. -#define __need_size_t
  53625. -#include <stddef.h>
  53626. #ifdef _LIBC
  53627. #include <bits/kernel_types.h>
  53628. #endif
  53629. @@ -49,7 +46,7 @@
  53630. #if __WORDSIZE == 64
  53631. typedef signed long int __int64_t;
  53632. typedef unsigned long int __uint64_t;
  53633. -#elif defined(__GNUC__)
  53634. +#elif defined(__GNUC__) || defined __ICC || defined __TenDRA__
  53635. __extension__ typedef signed long long int __int64_t;
  53636. __extension__ typedef unsigned long long int __uint64_t;
  53637. #endif
  53638. @@ -58,7 +55,7 @@
  53639. #if __WORDSIZE == 64
  53640. typedef long int __quad_t;
  53641. typedef unsigned long int __u_quad_t;
  53642. -#elif defined(__GNUC__)
  53643. +#elif defined(__GNUC__) || defined __ICC || defined __TenDRA__
  53644. __extension__ typedef long long int __quad_t;
  53645. __extension__ typedef unsigned long long int __u_quad_t;
  53646. #else
  53647. @@ -200,9 +197,4 @@
  53648. #undef __STD_TYPE
  53649. -/* Now add the thread types. */
  53650. -#if defined __UCLIBC_HAS_THREADS__ && (defined __USE_POSIX199506 || defined __USE_UNIX98)
  53651. -# include <bits/pthreadtypes.h>
  53652. -#endif
  53653. -
  53654. #endif /* bits/types.h */
  53655. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/typesizes.h uClibc-git/libc/sysdeps/linux/common/bits/typesizes.h
  53656. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  53657. +++ uClibc-git/libc/sysdeps/linux/common/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  53658. @@ -13,9 +13,8 @@
  53659. Lesser General Public License for more details.
  53660. You should have received a copy of the GNU Lesser General Public
  53661. - License along with the GNU C Library; if not, write to the Free
  53662. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53663. - 02111-1307 USA. */
  53664. + License along with the GNU C Library; if not, see
  53665. + <http://www.gnu.org/licenses/>. */
  53666. #ifndef _BITS_TYPES_H
  53667. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  53668. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_arch_features.h
  53669. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  53670. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  53671. @@ -14,8 +14,8 @@
  53672. /* can your target use syscall6() for mmap ? */
  53673. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  53674. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  53675. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  53676. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  53677. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  53678. /* does your target have a broken create_module() ? */
  53679. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  53680. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_ctype.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_ctype.h
  53681. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_ctype.h 2012-05-15 09:20:09.000000000 +0200
  53682. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_ctype.h 2014-02-03 12:32:56.000000000 +0100
  53683. @@ -11,9 +11,8 @@
  53684. * Lesser General Public License for more details.
  53685. *
  53686. * You should have received a copy of the GNU Lesser General Public
  53687. - * License along with the GNU C Library; if not, write to the Free
  53688. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53689. - * 02111-1307 USA.
  53690. + * License along with the GNU C Library; see the file COPYING.LIB. If
  53691. + * not, see <http://www.gnu.org/licenses/>.
  53692. */
  53693. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  53694. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_fpmax.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_fpmax.h
  53695. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_fpmax.h 2012-05-15 09:20:09.000000000 +0200
  53696. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_fpmax.h 2014-02-03 12:32:56.000000000 +0100
  53697. @@ -12,10 +12,6 @@
  53698. #ifndef _UCLIBC_FPMAX_H
  53699. #define _UCLIBC_FPMAX_H
  53700. -#ifndef _ISOC99_SOURCE
  53701. -#define _ISOC99_SOURCE 1
  53702. -#endif
  53703. -
  53704. #include <features.h>
  53705. #include <float.h>
  53706. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_locale.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_locale.h
  53707. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_locale.h 2012-05-15 09:20:09.000000000 +0200
  53708. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_locale.h 2014-02-03 12:32:56.000000000 +0100
  53709. @@ -11,9 +11,8 @@
  53710. * Lesser General Public License for more details.
  53711. *
  53712. * You should have received a copy of the GNU Lesser General Public
  53713. - * License along with the GNU C Library; if not, write to the Free
  53714. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53715. - * 02111-1307 USA.
  53716. + * License along with the GNU C Library; see the file COPYING.LIB. If
  53717. + * not, see <http://www.gnu.org/licenses/>.
  53718. */
  53719. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  53720. @@ -93,7 +92,7 @@
  53721. #ifdef _LIBC
  53722. /* extern void _locale_set(const unsigned char *p); */
  53723. -/* extern void _locale_init(void); */
  53724. +extern void weak_function _locale_init(void) attribute_hidden;
  53725. #include <stddef.h>
  53726. #include <stdint.h>
  53727. @@ -338,7 +337,9 @@
  53728. extern __locale_t __curlocale_var;
  53729. # ifdef __UCLIBC_HAS_THREADS__
  53730. extern __locale_t __curlocale(void) __THROW __attribute__ ((__const__));
  53731. +libc_hidden_proto(__curlocale)
  53732. extern __locale_t __curlocale_set(__locale_t newloc);
  53733. +libc_hidden_proto(__curlocale_set)
  53734. # define __UCLIBC_CURLOCALE (__curlocale())
  53735. # else
  53736. # define __UCLIBC_CURLOCALE (__curlocale_var)
  53737. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_local_lim.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_local_lim.h
  53738. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_local_lim.h 2012-05-15 09:20:09.000000000 +0200
  53739. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_local_lim.h 2014-02-03 12:32:56.000000000 +0100
  53740. @@ -11,14 +11,22 @@
  53741. #define _BITS_UCLIBC_LOCAL_LIM_H 1
  53742. /* This file works correctly only if local_lim.h is the NPTL version */
  53743. -#if !defined PTHREAD_KEYS_MAX || defined TIMER_MAX
  53744. +#if !defined PTHREAD_KEYS_MAX || defined TIMER_MAX || !defined SEM_VALUE_MAX
  53745. # error local_lim.h was incorrectly updated, use the NPTL version from glibc
  53746. #endif
  53747. /* This should really be moved to thread specific directories */
  53748. #if defined __UCLIBC_HAS_THREADS__ && !defined __UCLIBC_HAS_THREADS_NATIVE__
  53749. +/* glibc uses 16384 */
  53750. # define PTHREAD_THREADS_MAX 1024
  53751. # define TIMER_MAX 256
  53752. +# ifdef __LINUXTHREADS_OLD__
  53753. +# undef SEM_VALUE_MAX
  53754. +# define SEM_VALUE_MAX ((int) ((~0u) >> 1))
  53755. +# endif
  53756. +# undef PTHREAD_STACK_MIN
  53757. +/* glibc uses at least 16364 */
  53758. +# define PTHREAD_STACK_MIN 1024
  53759. #endif
  53760. #ifndef __UCLIBC_HAS_THREADS__
  53761. @@ -28,6 +36,7 @@
  53762. # undef PTHREAD_DESTRUCTOR_ITERATIONS
  53763. # undef PTHREAD_STACK_MIN
  53764. # undef DELAYTIMER_MAX
  53765. +# undef SEM_VALUE_MAX
  53766. #endif
  53767. #endif /* bits/uClibc_local_lim.h */
  53768. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_mutex.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_mutex.h
  53769. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_mutex.h 2012-05-15 09:20:09.000000000 +0200
  53770. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_mutex.h 2014-02-03 12:32:56.000000000 +0100
  53771. @@ -13,7 +13,9 @@
  53772. #ifdef __UCLIBC_HAS_THREADS__
  53773. #include <pthread.h>
  53774. +#ifdef _LIBC
  53775. #include <bits/uClibc_pthread.h>
  53776. +#endif
  53777. #define __UCLIBC_MUTEX_TYPE pthread_mutex_t
  53778. @@ -108,8 +110,8 @@
  53779. #define __UCLIBC_IO_MUTEX_AUTO_UNLOCK(M,A) __UCLIBC_MUTEX_AUTO_UNLOCK(M,A)
  53780. #define __UCLIBC_IO_MUTEX_LOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(M)
  53781. #define __UCLIBC_IO_MUTEX_UNLOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(M)
  53782. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M, 1)
  53783. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M, 1)
  53784. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M,C)
  53785. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M,C)
  53786. #endif /* of __USE_STDIO_FUTEXES__ */
  53787. @@ -146,8 +148,8 @@
  53788. #define __UCLIBC_IO_MUTEX_AUTO_UNLOCK(M,A) __UCLIBC_MUTEX_AUTO_UNLOCK(M,A)
  53789. #define __UCLIBC_IO_MUTEX_LOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(M)
  53790. #define __UCLIBC_IO_MUTEX_UNLOCK_CANCEL_UNSAFE(M) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(M)
  53791. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M, 1)
  53792. -#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M, 1)
  53793. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_LOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M,C)
  53794. +#define __UCLIBC_IO_MUTEX_CONDITIONAL_UNLOCK(M,C) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M,C)
  53795. #endif /* of __UCLIBC_HAS_THREADS__ */
  53796. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_page.h
  53797. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  53798. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  53799. @@ -11,9 +11,8 @@
  53800. * Lesser General Public License for more details.
  53801. *
  53802. * You should have received a copy of the GNU Lesser General Public
  53803. - * License along with the GNU C Library; if not, write to the Free
  53804. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53805. - * 02111-1307 USA.
  53806. + * License along with the GNU C Library; see the file COPYING.LIB. If
  53807. + * not, see <http://www.gnu.org/licenses/>.
  53808. */
  53809. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  53810. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h
  53811. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h 1970-01-01 01:00:00.000000000 +0100
  53812. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_posix_opt.h 2014-02-03 12:32:56.000000000 +0100
  53813. @@ -0,0 +1,136 @@
  53814. +/*
  53815. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  53816. + *
  53817. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  53818. + */
  53819. +/*
  53820. + * Never include this file directly; use <unistd.h> instead.
  53821. + */
  53822. +
  53823. +#ifndef _BITS_UCLIBC_POSIX_OPT_H
  53824. +#define _BITS_UCLIBC_POSIX_OPT_H 1
  53825. +
  53826. +/* This file works correctly only if posix_opt.h is the NPTL version */
  53827. +#ifndef _POSIX_THREADS
  53828. +# error posix_opt.h was incorrectly updated, use the NPTL version from glibc
  53829. +#endif
  53830. +
  53831. +/* change first options based on what glibc does */
  53832. +
  53833. +#ifndef __UCLIBC_HAS_THREADS_NATIVE__
  53834. +# undef _POSIX_THREAD_PROCESS_SHARED
  53835. +# define _POSIX_THREAD_PROCESS_SHARED -1
  53836. +# undef _POSIX_CLOCK_SELECTION
  53837. +# define _POSIX_CLOCK_SELECTION -1
  53838. +# undef _POSIX_THREAD_PRIO_INHERIT
  53839. +# define _POSIX_THREAD_PRIO_INHERIT -1
  53840. +# undef _POSIX_THREAD_PRIO_PROTECT
  53841. +# define _POSIX_THREAD_PRIO_PROTECT -1
  53842. +# undef _POSIX_THREAD_ROBUST_PRIO_INHERIT
  53843. +# undef _POSIX_THREAD_ROBUST_PRIO_PROTECT
  53844. +#endif
  53845. +
  53846. +/* this has to be adapted to uClibc, not all are thread related */
  53847. +#ifndef __UCLIBC_HAS_THREADS__
  53848. +# undef _XOPEN_REALTIME_THREADS
  53849. +# undef _POSIX_THREADS
  53850. +# undef _POSIX_REENTRANT_FUNCTIONS
  53851. +# undef _POSIX_THREAD_SAFE_FUNCTIONS
  53852. +# undef _POSIX_THREAD_PRIORITY_SCHEDULING
  53853. +# undef _POSIX_THREAD_ATTR_STACKSIZE
  53854. +# undef _POSIX_THREAD_ATTR_STACKADDR
  53855. +# undef _POSIX_THREAD_PRIO_INHERIT
  53856. +# undef _POSIX_THREAD_PRIO_PROTECT
  53857. +# undef _POSIX_SEMAPHORES
  53858. +# undef _POSIX_ASYNCHRONOUS_IO
  53859. +# undef _POSIX_ASYNC_IO
  53860. +# undef _LFS_ASYNCHRONOUS_IO
  53861. +# undef _POSIX_PRIORITIZED_IO
  53862. +# undef _LFS64_ASYNCHRONOUS_IO
  53863. +# undef _POSIX_CPUTIME
  53864. +# undef _POSIX_THREAD_CPUTIME
  53865. +# undef _POSIX_READER_WRITER_LOCKS
  53866. +# undef _POSIX_TIMEOUTS
  53867. +# undef _POSIX_SPIN_LOCKS
  53868. +# undef _POSIX_BARRIERS
  53869. +# undef _POSIX_MESSAGE_PASSING
  53870. +# undef _POSIX_THREAD_PROCESS_SHARED
  53871. +# undef _POSIX_CLOCK_SELECTION
  53872. +# undef _POSIX_ADVISORY_INFO
  53873. +/*# undef _POSIX_RAW_SOCKETS*/
  53874. +/*# undef _POSIX2_CHAR_TERM*/
  53875. +# undef _POSIX_SPORADIC_SERVER
  53876. +# undef _POSIX_THREAD_SPORADIC_SERVER
  53877. +/*# undef _POSIX_TRACE
  53878. +# undef _POSIX_TRACE_EVENT_FILTER
  53879. +# undef _POSIX_TRACE_INHERIT
  53880. +# undef _POSIX_TRACE_LOG
  53881. +# undef _POSIX_TYPED_MEMORY_OBJECTS*/
  53882. +#endif
  53883. +
  53884. +/* were in earlier version, used by sysconf */
  53885. +#define _POSIX_POLL 1
  53886. +#define _POSIX_SELECT 1
  53887. +
  53888. +/* disable independently unsupported features */
  53889. +#undef _POSIX_TRACE
  53890. +#undef _POSIX_TRACE_EVENT_FILTER
  53891. +#undef _POSIX_TRACE_INHERIT
  53892. +#undef _POSIX_TRACE_LOG
  53893. +#undef _POSIX_TYPED_MEMORY_OBJECTS
  53894. +#undef _POSIX_SPAWN
  53895. +
  53896. +#if 0 /* does uClibc support these? */
  53897. +# undef _POSIX_ASYNCHRONOUS_IO
  53898. +# undef _POSIX_ASYNC_IO
  53899. +# undef _LFS_ASYNCHRONOUS_IO
  53900. +# undef _POSIX_PRIORITIZED_IO
  53901. +# undef _LFS64_ASYNCHRONOUS_IO
  53902. +# undef _POSIX_MESSAGE_PASSING
  53903. +#endif
  53904. +
  53905. +/* change options based on uClibc config options */
  53906. +
  53907. +#if 0 /*ndef __UCLIBC_HAS_POSIX_TIMERS__*/
  53908. +# undef _POSIX_TIMERS
  53909. +# undef _POSIX_THREAD_CPUTIME
  53910. +#endif
  53911. +
  53912. +#if 0 /*ndef __UCLIBC_HAS_POSIX_BARRIERS__*/
  53913. +# undef _POSIX_BARRIERS
  53914. +#endif
  53915. +
  53916. +#if 0 /*ndef __UCLIBC_HAS_POSIX_SPINLOCKS__*/
  53917. +# undef _POSIX_SPIN_LOCKS
  53918. +#endif
  53919. +
  53920. +#ifndef __ARCH_USE_MMU__
  53921. +# undef _POSIX_MEMLOCK
  53922. +# undef _POSIX_MEMLOCK_RANGE
  53923. +# undef _POSIX_MEMORY_PROTECTION
  53924. +#endif
  53925. +
  53926. +#ifndef __UCLIBC_HAS_LFS__
  53927. +# undef _LFS64_ASYNCHRONOUS_IO
  53928. +# undef _LFS_LARGEFILE
  53929. +# undef _LFS64_LARGEFILE
  53930. +# undef _LFS64_STDIO
  53931. +#endif
  53932. +
  53933. +#ifndef __UCLIBC_HAS_REALTIME__
  53934. +# undef _POSIX_SEMAPHORES
  53935. +#endif
  53936. +
  53937. +#ifndef __UCLIBC_HAS_REGEX__
  53938. +# undef _POSIX_REGEXP
  53939. +#endif
  53940. +
  53941. +#ifndef __UCLIBC_HAS_IPV6__
  53942. +# undef _POSIX_IPV6
  53943. +#endif
  53944. +
  53945. +#ifndef __UCLIBC_HAS_SOCKET__
  53946. +# undef _POSIX_RAW_SOCKETS
  53947. +#endif
  53948. +
  53949. +#endif /* bits/uClibc_posix_opt.h */
  53950. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_pthread.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_pthread.h
  53951. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_pthread.h 2012-05-15 09:20:09.000000000 +0200
  53952. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_pthread.h 2014-02-03 12:32:56.000000000 +0100
  53953. @@ -11,9 +11,8 @@
  53954. * Lesser General Public License for more details.
  53955. *
  53956. * You should have received a copy of the GNU Lesser General Public
  53957. - * License along with the GNU C Library; if not, write to the Free
  53958. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  53959. - * 02111-1307 USA.
  53960. + * License along with the GNU C Library; see the file COPYING.LIB. If
  53961. + * not, see <http://www.gnu.org/licenses/>.
  53962. */
  53963. /* Supply prototypes for the internal thread functions used by the
  53964. @@ -27,15 +26,12 @@
  53965. # error "Always include <pthread.h> rather than <bits/uClibc_pthread.h>"
  53966. #endif
  53967. -#if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc)
  53968. -
  53969. struct _pthread_cleanup_buffer;
  53970. /* Threading functions internal to uClibc. Make these thread functions
  53971. * weak so that we can elide them from single-threaded processes. */
  53972. extern int weak_function __pthread_mutex_init (pthread_mutex_t *__mutex,
  53973. - __const pthread_mutexattr_t *__mutex_attr);
  53974. -extern int weak_function __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  53975. + const pthread_mutexattr_t *__mutex_attr);
  53976. extern int weak_function __pthread_mutex_lock (pthread_mutex_t *__mutex);
  53977. extern int weak_function __pthread_mutex_unlock (pthread_mutex_t *__mutex);
  53978. extern int weak_function __pthread_mutex_trylock (pthread_mutex_t *__mutex);
  53979. @@ -47,5 +43,3 @@
  53980. int __execute);
  53981. #endif
  53982. -
  53983. -#endif
  53984. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_stdio.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_stdio.h
  53985. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_stdio.h 2012-05-15 09:20:09.000000000 +0200
  53986. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_stdio.h 2014-02-03 12:32:56.000000000 +0100
  53987. @@ -54,27 +54,6 @@
  53988. #endif
  53989. /**********************************************************************/
  53990. -/* Make sure defines related to large files are consistent. */
  53991. -#ifdef _LIBC
  53992. -
  53993. -#ifdef __UCLIBC_HAS_LFS__
  53994. -#undef __USE_LARGEFILE
  53995. -#undef __USE_LARGEFILE64
  53996. -#undef __USE_FILE_OFFSET64
  53997. -/* If we're actually building uClibc with large file support, only define... */
  53998. -#define __USE_LARGEFILE64 1
  53999. -#endif /* __UCLIBC_HAS_LFS__ */
  54000. -
  54001. -#else /* not _LIBC */
  54002. -
  54003. -#ifndef __UCLIBC_HAS_LFS__
  54004. -#if defined(__LARGEFILE64_SOURCE) || defined(__USE_LARGEFILE64) || defined(__USE_FILE_OFFSET64)
  54005. -#error Sorry... uClibc was built without large file support!
  54006. -#endif
  54007. -#endif /* __UCLIBC_HAS_LFS__ */
  54008. -
  54009. -#endif /* _LIBC */
  54010. -/**********************************************************************/
  54011. #ifdef __UCLIBC_HAS_WCHAR__
  54012. #define __need_wchar_t
  54013. @@ -99,22 +78,7 @@
  54014. #define __STDIO_PUTC_MACRO
  54015. #endif
  54016. -
  54017. -/* These are consistency checks on the different options */
  54018. -
  54019. -#ifndef __STDIO_BUFFERS
  54020. -#undef __STDIO_GETC_MACRO
  54021. -#undef __STDIO_PUTC_MACRO
  54022. -#endif
  54023. -
  54024. -#ifdef __BCC__
  54025. -#undef __UCLIBC_HAS_LFS__
  54026. -#endif
  54027. -
  54028. -#ifndef __UCLIBC_HAS_LFS__
  54029. -#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
  54030. -#endif
  54031. -
  54032. +#ifdef _LIBC
  54033. /**********************************************************************/
  54034. #include <bits/uClibc_mutex.h>
  54035. @@ -169,6 +133,8 @@
  54036. #endif
  54037. #endif
  54038. +#endif /* _LIBC */
  54039. +
  54040. /**********************************************************************/
  54041. #define __STDIO_IOFBF 0 /* Fully buffered. */
  54042. @@ -209,7 +175,7 @@
  54043. typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __bufsize);
  54044. typedef __ssize_t __io_write_fn(void *__cookie,
  54045. - __const char *__buf, size_t __bufsize);
  54046. + const char *__buf, size_t __bufsize);
  54047. /* NOTE: GLIBC difference!!! -- fopencookie seek function
  54048. * For glibc, the type of pos is always (__off64_t *) but in our case
  54049. * it is type (__off_t *) when the lib is built without large file support.
  54050. @@ -224,7 +190,7 @@
  54051. __io_close_fn *close;
  54052. } _IO_cookie_io_functions_t;
  54053. -#if defined(_LIBC) || defined(_GNU_SOURCE)
  54054. +#ifdef __USE_GNU
  54055. typedef __io_read_fn cookie_read_function_t;
  54056. typedef __io_write_fn cookie_write_function_t;
  54057. @@ -238,6 +204,17 @@
  54058. #endif
  54059. /**********************************************************************/
  54060. +#if defined __UCLIBC_HAS_THREADS__ && !defined __UCLIBC_IO_MUTEX
  54061. +/* keep this in sync with uClibc_mutex.h */
  54062. +# ifdef __USE_STDIO_FUTEXES__
  54063. +# include <bits/stdio-lock.h>
  54064. +# define __UCLIBC_IO_MUTEX(M) _IO_lock_t M
  54065. +# else
  54066. +# include <bits/pthreadtypes.h>
  54067. +# define __UCLIBC_IO_MUTEX(M) pthread_mutex_t M
  54068. +# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
  54069. +#endif
  54070. +
  54071. struct __STDIO_FILE_STRUCT {
  54072. unsigned short __modeflags;
  54073. /* There could be a hole here, but modeflags is used most.*/
  54074. @@ -351,22 +328,27 @@
  54075. **********************************************************************/
  54076. #if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc)
  54077. -extern void _stdio_init(void) attribute_hidden;
  54078. -extern void _stdio_term(void) attribute_hidden;
  54079. +extern void weak_function _stdio_init(void) attribute_hidden;
  54080. +extern void weak_function _stdio_term(void) attribute_hidden;
  54081. #ifdef __STDIO_HAS_OPENLIST
  54082. extern struct __STDIO_FILE_STRUCT *_stdio_openlist;
  54083. #ifdef __UCLIBC_HAS_THREADS__
  54084. -__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_add_lock);
  54085. +__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_add_lock)
  54086. +# ifndef __UCLIBC_HAS_THREADS_NATIVE__
  54087. + attribute_hidden
  54088. +# endif
  54089. + ;
  54090. #ifdef __STDIO_BUFFERS
  54091. -__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_del_lock);
  54092. -extern volatile int _stdio_openlist_use_count; /* _stdio_openlist_del_lock */
  54093. -extern int _stdio_openlist_del_count; /* _stdio_openlist_del_lock */
  54094. +__UCLIBC_IO_MUTEX_EXTERN(_stdio_openlist_del_lock)
  54095. +# ifndef __UCLIBC_HAS_THREADS_NATIVE__
  54096. + attribute_hidden
  54097. +# endif
  54098. + ;
  54099. #endif
  54100. extern int _stdio_user_locking;
  54101. -extern void __stdio_init_mutex(__UCLIBC_MUTEX_TYPE *m) attribute_hidden;
  54102. #endif
  54103. #endif
  54104. @@ -465,6 +447,8 @@
  54105. #else
  54106. +# define __stdin stdin
  54107. +
  54108. #endif /* __STDIO_GETC_MACRO */
  54109. @@ -524,4 +508,8 @@
  54110. # endif
  54111. # endif
  54112. +#else
  54113. +
  54114. +# define __stdout stdout
  54115. +
  54116. #endif /* __STDIO_PUTC_MACRO */
  54117. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_touplow.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_touplow.h
  54118. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_touplow.h 2012-05-15 09:20:09.000000000 +0200
  54119. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_touplow.h 2014-02-03 12:32:56.000000000 +0100
  54120. @@ -11,9 +11,8 @@
  54121. * Lesser General Public License for more details.
  54122. *
  54123. * You should have received a copy of the GNU Lesser General Public
  54124. - * License along with the GNU C Library; if not, write to the Free
  54125. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54126. - * 02111-1307 USA.
  54127. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54128. + * not, see <http://www.gnu.org/licenses/>.
  54129. */
  54130. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54131. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h
  54132. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h 2012-05-15 09:20:09.000000000 +0200
  54133. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_uintmaxtostr.h 2014-02-03 12:32:56.000000000 +0100
  54134. @@ -11,9 +11,8 @@
  54135. * Lesser General Public License for more details.
  54136. *
  54137. * You should have received a copy of the GNU Lesser General Public
  54138. - * License along with the GNU C Library; if not, write to the Free
  54139. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54140. - * 02111-1307 USA.
  54141. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54142. + * not, see <http://www.gnu.org/licenses/>.
  54143. */
  54144. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54145. @@ -28,16 +27,6 @@
  54146. #ifndef _UINTMAXTOSTR_H
  54147. #define _UINTMAXTOSTR_H 1
  54148. -#ifdef _FEATURES_H
  54149. -# ifndef __USE_ISOC99
  54150. -# error features was included without defining _ISOC99_SOURCE!
  54151. -# endif
  54152. -#else
  54153. -# ifndef _ISOC99_SOURCE
  54154. -# define _ISOC99_SOURCE
  54155. -# endif
  54156. -#endif
  54157. -
  54158. #include <features.h>
  54159. #include <limits.h>
  54160. #include <stdint.h>
  54161. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uwchar.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_uwchar.h
  54162. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_uwchar.h 2012-05-15 09:20:09.000000000 +0200
  54163. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_uwchar.h 2014-02-03 12:32:56.000000000 +0100
  54164. @@ -11,9 +11,8 @@
  54165. * Lesser General Public License for more details.
  54166. *
  54167. * You should have received a copy of the GNU Lesser General Public
  54168. - * License along with the GNU C Library; if not, write to the Free
  54169. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54170. - * 02111-1307 USA.
  54171. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54172. + * not, see <http://www.gnu.org/licenses/>.
  54173. */
  54174. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  54175. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_va_copy.h uClibc-git/libc/sysdeps/linux/common/bits/uClibc_va_copy.h
  54176. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uClibc_va_copy.h 2012-05-15 09:20:09.000000000 +0200
  54177. +++ uClibc-git/libc/sysdeps/linux/common/bits/uClibc_va_copy.h 2014-02-03 12:32:56.000000000 +0100
  54178. @@ -13,9 +13,8 @@
  54179. * Lesser General Public License for more details.
  54180. *
  54181. * You should have received a copy of the GNU Lesser General Public
  54182. - * License along with the GNU C Library; if not, write to the Free
  54183. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54184. - * 02111-1307 USA.
  54185. + * License along with the GNU C Library; see the file COPYING.LIB. If
  54186. + * not, see <http://www.gnu.org/licenses/>.
  54187. */
  54188. #ifndef _UCLIBC_VA_COPY_H
  54189. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uio.h uClibc-git/libc/sysdeps/linux/common/bits/uio.h
  54190. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/uio.h 2012-05-15 09:20:09.000000000 +0200
  54191. +++ uClibc-git/libc/sysdeps/linux/common/bits/uio.h 2014-02-03 12:32:56.000000000 +0100
  54192. @@ -12,9 +12,8 @@
  54193. Lesser General Public License for more details.
  54194. You should have received a copy of the GNU Lesser General Public
  54195. - License along with the GNU C Library; if not, write to the Free
  54196. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54197. - 02111-1307 USA. */
  54198. + License along with the GNU C Library; if not, see
  54199. + <http://www.gnu.org/licenses/>. */
  54200. #if !defined _SYS_UIO_H && !defined _FCNTL_H
  54201. # error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
  54202. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ustat.h uClibc-git/libc/sysdeps/linux/common/bits/ustat.h
  54203. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/ustat.h 2012-05-15 09:20:09.000000000 +0200
  54204. +++ uClibc-git/libc/sysdeps/linux/common/bits/ustat.h 2014-02-03 12:32:56.000000000 +0100
  54205. @@ -12,9 +12,8 @@
  54206. Lesser General Public License for more details.
  54207. You should have received a copy of the GNU Lesser General Public
  54208. - License along with the GNU C Library; if not, write to the Free
  54209. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54210. - 02111-1307 USA. */
  54211. + License along with the GNU C Library; if not, see
  54212. + <http://www.gnu.org/licenses/>. */
  54213. #ifndef _SYS_USTAT_H
  54214. # error "Never include <bits/ustat.h> directly; use <sys/ustat.h> instead."
  54215. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmp.h uClibc-git/libc/sysdeps/linux/common/bits/utmp.h
  54216. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmp.h 2012-05-15 09:20:09.000000000 +0200
  54217. +++ uClibc-git/libc/sysdeps/linux/common/bits/utmp.h 2014-02-03 12:32:56.000000000 +0100
  54218. @@ -14,9 +14,8 @@
  54219. Lesser General Public License for more details.
  54220. You should have received a copy of the GNU Lesser General Public
  54221. - License along with the GNU C Library; if not, write to the Free
  54222. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54223. - 02111-1307 USA. */
  54224. + License along with the GNU C Library; if not, see
  54225. + <http://www.gnu.org/licenses/>. */
  54226. #ifndef _UTMP_H
  54227. # error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
  54228. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmpx.h uClibc-git/libc/sysdeps/linux/common/bits/utmpx.h
  54229. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utmpx.h 2012-05-15 09:20:09.000000000 +0200
  54230. +++ uClibc-git/libc/sysdeps/linux/common/bits/utmpx.h 2014-02-03 12:32:56.000000000 +0100
  54231. @@ -13,9 +13,8 @@
  54232. Lesser General Public License for more details.
  54233. You should have received a copy of the GNU Lesser General Public
  54234. - License along with the GNU C Library; if not, write to the Free
  54235. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54236. - 02111-1307 USA. */
  54237. + License along with the GNU C Library; if not, see
  54238. + <http://www.gnu.org/licenses/>. */
  54239. #ifndef _UTMPX_H
  54240. # error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
  54241. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utsname.h uClibc-git/libc/sysdeps/linux/common/bits/utsname.h
  54242. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/utsname.h 2012-05-15 09:20:09.000000000 +0200
  54243. +++ uClibc-git/libc/sysdeps/linux/common/bits/utsname.h 2014-02-03 12:32:56.000000000 +0100
  54244. @@ -12,9 +12,8 @@
  54245. Lesser General Public License for more details.
  54246. You should have received a copy of the GNU Lesser General Public
  54247. - License along with the GNU C Library; if not, write to the Free
  54248. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54249. - 02111-1307 USA. */
  54250. + License along with the GNU C Library; if not, see
  54251. + <http://www.gnu.org/licenses/>. */
  54252. #ifndef _SYS_UTSNAME_H
  54253. # error "Never include <bits/utsname.h> directly; use <sys/utsname.h> instead."
  54254. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitflags.h uClibc-git/libc/sysdeps/linux/common/bits/waitflags.h
  54255. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitflags.h 2012-05-15 09:20:09.000000000 +0200
  54256. +++ uClibc-git/libc/sysdeps/linux/common/bits/waitflags.h 2014-02-03 12:32:56.000000000 +0100
  54257. @@ -13,9 +13,8 @@
  54258. Lesser General Public License for more details.
  54259. You should have received a copy of the GNU Lesser General Public
  54260. - License along with the GNU C Library; if not, write to the Free
  54261. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54262. - 02111-1307 USA. */
  54263. + License along with the GNU C Library; if not, see
  54264. + <http://www.gnu.org/licenses/>. */
  54265. #if !defined _SYS_WAIT_H && !defined _STDLIB_H
  54266. # error "Never include <bits/waitflags.h> directly; use <sys/wait.h> instead."
  54267. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitstatus.h uClibc-git/libc/sysdeps/linux/common/bits/waitstatus.h
  54268. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/waitstatus.h 2012-05-15 09:20:09.000000000 +0200
  54269. +++ uClibc-git/libc/sysdeps/linux/common/bits/waitstatus.h 2014-02-03 12:32:56.000000000 +0100
  54270. @@ -13,9 +13,8 @@
  54271. Lesser General Public License for more details.
  54272. You should have received a copy of the GNU Lesser General Public
  54273. - License along with the GNU C Library; if not, write to the Free
  54274. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54275. - 02111-1307 USA. */
  54276. + License along with the GNU C Library; if not, see
  54277. + <http://www.gnu.org/licenses/>. */
  54278. #if !defined _SYS_WAIT_H && !defined _STDLIB_H
  54279. # error "Never include <bits/waitstatus.h> directly; use <sys/wait.h> instead."
  54280. @@ -25,7 +24,7 @@
  54281. /* Everything extant so far uses these same bits. */
  54282. -/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
  54283. +/* If WIFEXITED(STATUS), the low-order 8 bits of exit(N). */
  54284. #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
  54285. /* If WIFSIGNALED(STATUS), the terminating signal. */
  54286. @@ -37,12 +36,20 @@
  54287. /* Nonzero if STATUS indicates normal termination. */
  54288. #define __WIFEXITED(status) (__WTERMSIG(status) == 0)
  54289. -/* Nonzero if STATUS indicates termination by a signal. */
  54290. -#define __WIFSIGNALED(status) \
  54291. - (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
  54292. +/* Nonzero if STATUS indicates termination by a signal.
  54293. + * Note that status 0x007f is "died from signal 127", not "stopped by signal 0".
  54294. + * This does happen on MIPS.
  54295. + * The comparison is "< 0xff", not "< 0x7f", because WCOREDUMP bit (0x80)
  54296. + * can be set too.
  54297. + */
  54298. +#define __WIFSIGNALED(status) (((unsigned)((status) & 0xffff) - 1U) < 0xffU)
  54299. /* Nonzero if STATUS indicates the child is stopped. */
  54300. +#if !defined(__mips__)
  54301. #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
  54302. +#else
  54303. +#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f && ((status) & 0xff00))
  54304. +#endif
  54305. /* Nonzero if STATUS indicates the child continued after a stop. We only
  54306. define this if <bits/waitflags.h> provides the WCONTINUED flag bit. */
  54307. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/wchar.h uClibc-git/libc/sysdeps/linux/common/bits/wchar.h
  54308. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/wchar.h 2012-05-15 09:20:09.000000000 +0200
  54309. +++ uClibc-git/libc/sysdeps/linux/common/bits/wchar.h 2014-02-03 12:32:56.000000000 +0100
  54310. @@ -13,9 +13,8 @@
  54311. Lesser General Public License for more details.
  54312. You should have received a copy of the GNU Lesser General Public
  54313. - License along with the GNU C Library; if not, write to the Free
  54314. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54315. - 02111-1307 USA. */
  54316. + License along with the GNU C Library; if not, see
  54317. + <http://www.gnu.org/licenses/>. */
  54318. #ifndef _BITS_WCHAR_H
  54319. #define _BITS_WCHAR_H 1
  54320. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/xopen_lim.h uClibc-git/libc/sysdeps/linux/common/bits/xopen_lim.h
  54321. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/bits/xopen_lim.h 2012-05-15 09:20:09.000000000 +0200
  54322. +++ uClibc-git/libc/sysdeps/linux/common/bits/xopen_lim.h 2014-02-03 12:32:56.000000000 +0100
  54323. @@ -12,9 +12,8 @@
  54324. Lesser General Public License for more details.
  54325. You should have received a copy of the GNU Lesser General Public
  54326. - License along with the GNU C Library; if not, write to the Free
  54327. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54328. - 02111-1307 USA. */
  54329. + License along with the GNU C Library; if not, see
  54330. + <http://www.gnu.org/licenses/>. */
  54331. /*
  54332. * Never include this file directly; use <limits.h> instead.
  54333. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/brk.c uClibc-git/libc/sysdeps/linux/common/brk.c
  54334. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/brk.c 2012-05-15 09:20:09.000000000 +0200
  54335. +++ uClibc-git/libc/sysdeps/linux/common/brk.c 2014-02-03 12:32:56.000000000 +0100
  54336. @@ -8,10 +8,8 @@
  54337. #include <unistd.h>
  54338. #include <sys/syscall.h>
  54339. -libc_hidden_proto(brk)
  54340. -
  54341. #define __NR___syscall_brk __NR_brk
  54342. -static inline _syscall1(void *, __syscall_brk, void *, end)
  54343. +static __always_inline _syscall1(void *, __syscall_brk, void *, end)
  54344. /* This must be initialized data because commons can't have aliases. */
  54345. void * __curbrk attribute_hidden = 0;
  54346. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/capget.c uClibc-git/libc/sysdeps/linux/common/capget.c
  54347. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/capget.c 2012-05-15 09:20:09.000000000 +0200
  54348. +++ uClibc-git/libc/sysdeps/linux/common/capget.c 2014-02-03 12:32:56.000000000 +0100
  54349. @@ -8,7 +8,8 @@
  54350. */
  54351. #include <sys/syscall.h>
  54352. -int capget(void *header, void *data);
  54353. +
  54354. #ifdef __NR_capget
  54355. +int capget(void *header, void *data);
  54356. _syscall2(int, capget, void *, header, void *, data)
  54357. #endif
  54358. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/capset.c uClibc-git/libc/sysdeps/linux/common/capset.c
  54359. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/capset.c 2012-05-15 09:20:09.000000000 +0200
  54360. +++ uClibc-git/libc/sysdeps/linux/common/capset.c 2014-02-03 12:32:56.000000000 +0100
  54361. @@ -9,7 +9,7 @@
  54362. #include <sys/syscall.h>
  54363. -int capset(void *header, const void *data);
  54364. #ifdef __NR_capset
  54365. +int capset(void *header, const void *data);
  54366. _syscall2(int, capset, void *, header, const void *, data)
  54367. #endif
  54368. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/chdir.c uClibc-git/libc/sysdeps/linux/common/chdir.c
  54369. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/chdir.c 2012-05-15 09:20:09.000000000 +0200
  54370. +++ uClibc-git/libc/sysdeps/linux/common/chdir.c 2014-02-03 12:32:56.000000000 +0100
  54371. @@ -8,15 +8,7 @@
  54372. */
  54373. #include <sys/syscall.h>
  54374. -#include <string.h>
  54375. #include <unistd.h>
  54376. -#include <sys/param.h>
  54377. -
  54378. -#define __NR___syscall_chdir __NR_chdir
  54379. -static __inline__ _syscall1(int, __syscall_chdir, const char *, path)
  54380. -int chdir(const char *path)
  54381. -{
  54382. - return __syscall_chdir(path);
  54383. -}
  54384. +_syscall1(int, chdir, const char *, path)
  54385. libc_hidden_def(chdir)
  54386. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/chmod.c uClibc-git/libc/sysdeps/linux/common/chmod.c
  54387. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/chmod.c 2012-05-15 09:20:09.000000000 +0200
  54388. +++ uClibc-git/libc/sysdeps/linux/common/chmod.c 2014-02-03 12:32:56.000000000 +0100
  54389. @@ -9,13 +9,22 @@
  54390. #include <sys/syscall.h>
  54391. #include <sys/stat.h>
  54392. +#include <unistd.h>
  54393. +#if defined __NR_fchmodat && !defined __NR_chmod
  54394. +# include <fcntl.h>
  54395. +int chmod(const char *path, mode_t mode)
  54396. +{
  54397. + return fchmodat(AT_FDCWD, path, mode, 0);
  54398. +}
  54399. -#define __NR___syscall_chmod __NR_chmod
  54400. +#else
  54401. +# define __NR___syscall_chmod __NR_chmod
  54402. static __inline__ _syscall2(int, __syscall_chmod, const char *, path, __kernel_mode_t, mode)
  54403. int chmod(const char *path, mode_t mode)
  54404. {
  54405. return __syscall_chmod(path, mode);
  54406. }
  54407. +#endif
  54408. libc_hidden_def(chmod)
  54409. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/chown.c uClibc-git/libc/sysdeps/linux/common/chown.c
  54410. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/chown.c 2012-05-15 09:20:09.000000000 +0200
  54411. +++ uClibc-git/libc/sysdeps/linux/common/chown.c 2014-02-03 12:32:56.000000000 +0100
  54412. @@ -11,18 +11,26 @@
  54413. #include <unistd.h>
  54414. #include <bits/wordsize.h>
  54415. +#if defined __NR_fchownat && !defined __NR_chown
  54416. +# include <fcntl.h>
  54417. +int chown(const char *path, uid_t owner, gid_t group)
  54418. +{
  54419. + return fchownat(AT_FDCWD, path, owner, group, 0);
  54420. +}
  54421. -#if (__WORDSIZE == 32 && defined(__NR_chown32)) || __WORDSIZE == 64
  54422. -# ifdef __NR_chown32
  54423. -# undef __NR_chown
  54424. -# define __NR_chown __NR_chown32
  54425. -# endif
  54426. +#else
  54427. +
  54428. +# if (__WORDSIZE == 32 && defined(__NR_chown32)) || __WORDSIZE == 64
  54429. +# ifdef __NR_chown32
  54430. +# undef __NR_chown
  54431. +# define __NR_chown __NR_chown32
  54432. +# endif
  54433. _syscall3(int, chown, const char *, path, uid_t, owner, gid_t, group)
  54434. -#else
  54435. +# else
  54436. -# define __NR___syscall_chown __NR_chown
  54437. +# define __NR___syscall_chown __NR_chown
  54438. static __inline__ _syscall3(int, __syscall_chown, const char *, path,
  54439. __kernel_uid_t, owner, __kernel_gid_t, group)
  54440. @@ -35,6 +43,7 @@
  54441. }
  54442. return (__syscall_chown(path, owner, group));
  54443. }
  54444. -#endif
  54445. +# endif
  54446. +#endif
  54447. libc_hidden_def(chown)
  54448. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_getres.c uClibc-git/libc/sysdeps/linux/common/clock_getres.c
  54449. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_getres.c 2012-05-15 09:20:09.000000000 +0200
  54450. +++ uClibc-git/libc/sysdeps/linux/common/clock_getres.c 2014-02-03 12:32:56.000000000 +0100
  54451. @@ -9,11 +9,11 @@
  54452. #include <sys/syscall.h>
  54453. #include <time.h>
  54454. -#include <unistd.h>
  54455. #ifdef __NR_clock_getres
  54456. _syscall2(int, clock_getres, clockid_t, clock_id, struct timespec*, res)
  54457. #else
  54458. +# include <unistd.h>
  54459. int clock_getres(clockid_t clock_id, struct timespec* res)
  54460. {
  54461. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_gettime.c uClibc-git/libc/sysdeps/linux/common/clock_gettime.c
  54462. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  54463. +++ uClibc-git/libc/sysdeps/linux/common/clock_gettime.c 2014-02-03 12:32:56.000000000 +0100
  54464. @@ -10,11 +10,11 @@
  54465. #include <sys/syscall.h>
  54466. #include <time.h>
  54467. -#include <sys/time.h>
  54468. #ifdef __NR_clock_gettime
  54469. _syscall2(int, clock_gettime, clockid_t, clock_id, struct timespec*, tp)
  54470. #else
  54471. +# include <sys/time.h>
  54472. int clock_gettime(clockid_t clock_id, struct timespec* tp)
  54473. {
  54474. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_settime.c uClibc-git/libc/sysdeps/linux/common/clock_settime.c
  54475. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/clock_settime.c 2012-05-15 09:20:09.000000000 +0200
  54476. +++ uClibc-git/libc/sysdeps/linux/common/clock_settime.c 2014-02-03 12:32:56.000000000 +0100
  54477. @@ -9,11 +9,11 @@
  54478. #include <sys/syscall.h>
  54479. #include <time.h>
  54480. -#include <sys/time.h>
  54481. #ifdef __NR_clock_settime
  54482. _syscall2(int, clock_settime, clockid_t, clock_id, const struct timespec*, tp)
  54483. #else
  54484. +# include <sys/time.h>
  54485. int clock_settime(clockid_t clock_id, const struct timespec* tp)
  54486. {
  54487. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/close.c uClibc-git/libc/sysdeps/linux/common/close.c
  54488. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/close.c 2012-05-15 09:20:09.000000000 +0200
  54489. +++ uClibc-git/libc/sysdeps/linux/common/close.c 2014-02-03 12:32:56.000000000 +0100
  54490. @@ -9,12 +9,13 @@
  54491. #include <sys/syscall.h>
  54492. #include <unistd.h>
  54493. +#include <cancel.h>
  54494. -_syscall1(int, close, int, fd)
  54495. +#define __NR___close_nocancel __NR_close
  54496. +_syscall1(int, __NC(close), int, fd)
  54497. -#ifndef __LINUXTHREADS_OLD__
  54498. -libc_hidden_def(close)
  54499. -#else
  54500. -libc_hidden_weak(close)
  54501. -strong_alias(close,__libc_close)
  54502. -#endif
  54503. +#define __NR___close_nocancel_no_status __NR_close
  54504. +_syscall_noerr1(void, __close_nocancel_no_status, int, fd)
  54505. +
  54506. +CANCELLABLE_SYSCALL(int, close, (int fd), (fd))
  54507. +lt_libc_hidden(close)
  54508. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/cmsg_nxthdr.c uClibc-git/libc/sysdeps/linux/common/cmsg_nxthdr.c
  54509. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/cmsg_nxthdr.c 2012-05-15 09:20:09.000000000 +0200
  54510. +++ uClibc-git/libc/sysdeps/linux/common/cmsg_nxthdr.c 2014-02-03 12:32:56.000000000 +0100
  54511. @@ -13,12 +13,11 @@
  54512. Lesser General Public License for more details.
  54513. You should have received a copy of the GNU Lesser General Public
  54514. - License along with the GNU C Library; if not, write to the Free
  54515. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54516. - 02111-1307 USA. */
  54517. + License along with the GNU C Library; if not, see
  54518. + <http://www.gnu.org/licenses/>. */
  54519. -#define __FORCE_GLIBC
  54520. #include <features.h>
  54521. +#include <stddef.h>
  54522. /* Prevent math.h from defining a colliding inline */
  54523. #undef __USE_EXTERN_INLINES
  54524. #include <sys/socket.h>
  54525. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/creat64.c uClibc-git/libc/sysdeps/linux/common/creat64.c
  54526. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/creat64.c 2012-05-15 09:20:09.000000000 +0200
  54527. +++ uClibc-git/libc/sysdeps/linux/common/creat64.c 2014-02-03 12:32:56.000000000 +0100
  54528. @@ -12,19 +12,17 @@
  54529. Lesser General Public License for more details.
  54530. You should have received a copy of the GNU Lesser General Public
  54531. - License along with the GNU C Library; if not, write to the Free
  54532. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54533. - 02111-1307 USA. */
  54534. + License along with the GNU C Library; if not, see
  54535. + <http://www.gnu.org/licenses/>. */
  54536. #include <_lfs_64.h>
  54537. -
  54538. -#ifdef __UCLIBC_HAS_LFS__
  54539. #include <fcntl.h>
  54540. -#include <sys/types.h>
  54541. +#include <cancel.h>
  54542. /* Create FILE with protections MODE. */
  54543. int creat64(const char *file, mode_t mode)
  54544. {
  54545. - return open64(file, O_WRONLY|O_CREAT|O_TRUNC, mode);
  54546. + return open64(file, O_WRONLY | O_CREAT | O_TRUNC, mode);
  54547. }
  54548. -#endif /* __UCLIBC_HAS_LFS__ */
  54549. +/* open handled cancellation, noop on uClibc */
  54550. +LIBC_CANCEL_HANDLED();
  54551. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/creat.c uClibc-git/libc/sysdeps/linux/common/creat.c
  54552. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/creat.c 2012-05-15 09:20:09.000000000 +0200
  54553. +++ uClibc-git/libc/sysdeps/linux/common/creat.c 2014-02-03 12:32:56.000000000 +0100
  54554. @@ -8,8 +8,11 @@
  54555. */
  54556. #include <fcntl.h>
  54557. +#include <cancel.h>
  54558. int creat(const char *file, mode_t mode)
  54559. {
  54560. return open(file, O_WRONLY | O_CREAT | O_TRUNC, mode);
  54561. }
  54562. +/* open handled cancellation, noop on uClibc */
  54563. +LIBC_CANCEL_HANDLED();
  54564. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/create_module.c uClibc-git/libc/sysdeps/linux/common/create_module.c
  54565. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/create_module.c 2012-05-15 09:20:09.000000000 +0200
  54566. +++ uClibc-git/libc/sysdeps/linux/common/create_module.c 2014-02-03 12:32:56.000000000 +0100
  54567. @@ -7,10 +7,10 @@
  54568. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  54569. */
  54570. -#include <errno.h>
  54571. -#include <unistd.h>
  54572. #include <features.h>
  54573. -#include <sys/types.h>
  54574. +#define __need_size_t
  54575. +#include <stddef.h>
  54576. +#include <errno.h>
  54577. #include <sys/syscall.h>
  54578. #ifdef __NR_create_module
  54579. @@ -22,7 +22,7 @@
  54580. static __inline__ _syscall2(long, __create_module, const char *, name, size_t, size)
  54581. /* By checking the value of errno, we know if we have been fooled
  54582. * by the syscall2 macro making a very high address look like a
  54583. - * negative, so we we fix it up here. */
  54584. + * negative, so we fix it up here. */
  54585. unsigned long create_module(const char *name, size_t size)
  54586. {
  54587. long ret = __create_module(name, size);
  54588. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/delete_module.c uClibc-git/libc/sysdeps/linux/common/delete_module.c
  54589. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/delete_module.c 2012-05-15 09:20:09.000000000 +0200
  54590. +++ uClibc-git/libc/sysdeps/linux/common/delete_module.c 2014-02-03 12:32:56.000000000 +0100
  54591. @@ -7,7 +7,7 @@
  54592. */
  54593. #include <sys/syscall.h>
  54594. -int delete_module(const char *name, unsigned int flags);
  54595. #ifdef __NR_delete_module
  54596. +int delete_module(const char *name, unsigned int flags);
  54597. _syscall2(int, delete_module, const char *, name, unsigned int, flags)
  54598. #endif
  54599. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/dl-osinfo.h uClibc-git/libc/sysdeps/linux/common/dl-osinfo.h
  54600. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/dl-osinfo.h 2012-05-15 09:20:09.000000000 +0200
  54601. +++ uClibc-git/libc/sysdeps/linux/common/dl-osinfo.h 2014-02-03 12:32:56.000000000 +0100
  54602. @@ -17,10 +17,11 @@
  54603. # endif
  54604. # include <stdint.h>
  54605. -# include <sys/time.h>
  54606. # ifdef IS_IN_libc
  54607. -#include <fcntl.h>
  54608. +# include <fcntl.h>
  54609. +# include <unistd.h>
  54610. +# include <sys/time.h>
  54611. # define OPEN open
  54612. # define READ read
  54613. # define CLOSE close
  54614. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/dup2.c uClibc-git/libc/sysdeps/linux/common/dup2.c
  54615. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/dup2.c 2012-05-15 09:20:09.000000000 +0200
  54616. +++ uClibc-git/libc/sysdeps/linux/common/dup2.c 2014-02-03 12:32:56.000000000 +0100
  54617. @@ -9,7 +9,24 @@
  54618. #include <sys/syscall.h>
  54619. #include <unistd.h>
  54620. +#if defined __NR_dup3 && !defined __NR_dup2
  54621. +# include <fcntl.h>
  54622. +extern int __libc_fcntl (int fd, int cmd, ...);
  54623. +libc_hidden_proto(__libc_fcntl);
  54624. +int dup2(int old, int newfd)
  54625. +{
  54626. + /*
  54627. + * Check if old fd is valid before we try
  54628. + * to ducplicate it. Return it if valid
  54629. + * or EBADF otherwise
  54630. + */
  54631. + if (old == newfd)
  54632. + return fcntl(old, F_GETFL, 0) < 0 ? -1 : newfd;
  54633. + return dup3(old, newfd, 0);
  54634. +}
  54635. +#else
  54636. _syscall2(int, dup2, int, oldfd, int, newfd)
  54637. +#endif
  54638. libc_hidden_def(dup2)
  54639. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/dup3.c uClibc-git/libc/sysdeps/linux/common/dup3.c
  54640. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/dup3.c 1970-01-01 01:00:00.000000000 +0100
  54641. +++ uClibc-git/libc/sysdeps/linux/common/dup3.c 2014-02-03 12:32:56.000000000 +0100
  54642. @@ -0,0 +1,16 @@
  54643. +/* vi: set sw=4 ts=4: */
  54644. +/*
  54645. + * dup3() for uClibc
  54646. + *
  54647. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  54648. + *
  54649. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  54650. + */
  54651. +
  54652. +#include <sys/syscall.h>
  54653. +#include <unistd.h>
  54654. +
  54655. +#if defined(__NR_dup3)
  54656. +_syscall3(int, dup3, int, oldfd, int, newfd, int, flags)
  54657. +libc_hidden_def(dup3)
  54658. +#endif
  54659. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/epoll.c uClibc-git/libc/sysdeps/linux/common/epoll.c
  54660. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/epoll.c 2012-05-15 09:20:09.000000000 +0200
  54661. +++ uClibc-git/libc/sysdeps/linux/common/epoll.c 2014-02-03 12:32:56.000000000 +0100
  54662. @@ -1,6 +1,6 @@
  54663. /* vi: set sw=4 ts=4: */
  54664. /*
  54665. - * epoll_create() / epoll_ctl() / epoll_wait() for uClibc
  54666. + * epoll_create() / epoll_ctl() / epoll_wait() / epoll_pwait() for uClibc
  54667. *
  54668. * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  54669. *
  54670. @@ -9,75 +9,61 @@
  54671. #include <sys/syscall.h>
  54672. #include <sys/epoll.h>
  54673. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54674. -# include <sysdep-cancel.h>
  54675. -#else
  54676. -# define SINGLE_THREAD_P 1
  54677. -#endif
  54678. +#include <cancel.h>
  54679. -/*
  54680. - * epoll_create()
  54681. - */
  54682. #ifdef __NR_epoll_create
  54683. _syscall1(int, epoll_create, int, size)
  54684. #endif
  54685. -/*
  54686. - * epoll_create1()
  54687. - */
  54688. #ifdef __NR_epoll_create1
  54689. _syscall1(int, epoll_create1, int, flags)
  54690. #endif
  54691. -/*
  54692. - * epoll_ctl()
  54693. - */
  54694. +#if defined __NR_epoll_create1 && !defined __NR_epoll_create
  54695. +int epoll_create(int size)
  54696. +{
  54697. + return INLINE_SYSCALL(epoll_create1, 1, 0);
  54698. +}
  54699. +
  54700. +#endif
  54701. +
  54702. #ifdef __NR_epoll_ctl
  54703. -_syscall4(int,epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, event)
  54704. +_syscall4(int, epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, event)
  54705. #endif
  54706. -/*
  54707. - * epoll_wait()
  54708. - */
  54709. #ifdef __NR_epoll_wait
  54710. -extern __typeof(epoll_wait) __libc_epoll_wait;
  54711. -int __libc_epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
  54712. +static int __NC(epoll_wait)(int epfd, struct epoll_event *events, int maxevents, int timeout)
  54713. {
  54714. - if (SINGLE_THREAD_P)
  54715. - return INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
  54716. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54717. - else {
  54718. - int oldtype = LIBC_CANCEL_ASYNC ();
  54719. - int result = INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
  54720. - LIBC_CANCEL_RESET (oldtype);
  54721. - return result;
  54722. - }
  54723. -# endif
  54724. + return INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
  54725. }
  54726. -weak_alias(__libc_epoll_wait, epoll_wait)
  54727. +CANCELLABLE_SYSCALL(int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout),
  54728. + (epfd, events, maxevents, timeout))
  54729. #endif
  54730. -/*
  54731. - * epoll_pwait()
  54732. - */
  54733. #ifdef __NR_epoll_pwait
  54734. # include <signal.h>
  54735. -extern __typeof(epoll_pwait) __libc_epoll_pwait;
  54736. -int __libc_epoll_pwait(int epfd, struct epoll_event *events, int maxevents,
  54737. - int timeout, const sigset_t *set)
  54738. +# define __NR___syscall_epoll_pwait __NR_epoll_pwait
  54739. +static __always_inline _syscall6(int, __syscall_epoll_pwait, int, epfd, struct epoll_event *, events,
  54740. + int, maxevents, int, timeout, const sigset_t *, sigmask, size_t, sigsetsize)
  54741. +
  54742. +static int __NC(epoll_pwait)(int epfd, struct epoll_event *events, int maxevents, int timeout,
  54743. + const sigset_t *set)
  54744. {
  54745. - int nsig = _NSIG / 8;
  54746. - if (SINGLE_THREAD_P)
  54747. - return INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
  54748. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54749. - else {
  54750. - int oldtype = LIBC_CANCEL_ASYNC ();
  54751. - int result = INLINE_SYSCALL(epoll_pwait, 6, epfd, events, maxevents, timeout, set, nsig);
  54752. - LIBC_CANCEL_RESET (oldtype);
  54753. - return result;
  54754. - }
  54755. -# endif
  54756. + return __syscall_epoll_pwait(epfd, events, maxevents, timeout, set, __SYSCALL_SIGSET_T_SIZE);
  54757. }
  54758. -weak_alias(__libc_epoll_pwait, epoll_pwait)
  54759. +CANCELLABLE_SYSCALL(int, epoll_pwait, (int epfd, struct epoll_event *events, int maxevents, int timeout,
  54760. + const sigset_t *set),
  54761. + (epfd, events, maxevents, timeout, set))
  54762. +/*
  54763. + * If epoll_wait is not defined, then call epoll_pwait instead using NULL
  54764. + * for sigmask argument
  54765. + */
  54766. +# ifndef __NR_epoll_wait
  54767. +# include <stddef.h>
  54768. +int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
  54769. +{
  54770. + return INLINE_SYSCALL(epoll_pwait, 5, epfd, events, maxevents, timeout, NULL);
  54771. +}
  54772. +# endif
  54773. #endif
  54774. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/eventfd.c uClibc-git/libc/sysdeps/linux/common/eventfd.c
  54775. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/eventfd.c 2012-05-15 09:20:09.000000000 +0200
  54776. +++ uClibc-git/libc/sysdeps/linux/common/eventfd.c 2014-02-03 12:32:56.000000000 +0100
  54777. @@ -7,12 +7,24 @@
  54778. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  54779. */
  54780. +#include <errno.h>
  54781. #include <sys/syscall.h>
  54782. #include <sys/eventfd.h>
  54783. /*
  54784. * eventfd()
  54785. */
  54786. -#ifdef __NR_eventfd
  54787. -_syscall2(int, eventfd, int, count, int, flags)
  54788. +#if defined __NR_eventfd || defined __NR_eventfd2
  54789. +int eventfd (int count, int flags)
  54790. +{
  54791. +#if defined __NR_eventfd2
  54792. + return INLINE_SYSCALL (eventfd2, 2, count, flags);
  54793. +#elif defined __NR_eventfd
  54794. + if (flags != 0) {
  54795. + __set_errno (EINVAL);
  54796. + return -1;
  54797. + }
  54798. + return INLINE_SYSCALL (eventfd, 1, count);
  54799. +#endif
  54800. +}
  54801. #endif
  54802. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/_exit.c uClibc-git/libc/sysdeps/linux/common/_exit.c
  54803. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/_exit.c 2012-05-15 09:20:09.000000000 +0200
  54804. +++ uClibc-git/libc/sysdeps/linux/common/_exit.c 2014-02-03 12:32:56.000000000 +0100
  54805. @@ -7,28 +7,36 @@
  54806. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  54807. */
  54808. -#include <features.h>
  54809. -#include <errno.h>
  54810. #include <unistd.h>
  54811. -#include <sys/types.h>
  54812. +#include <stdlib.h>
  54813. #include <sys/syscall.h>
  54814. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54815. -#include <sysdep.h>
  54816. +#include <bits/kernel-features.h>
  54817. +
  54818. +#ifdef __UCLIBC_ABORT_INSTRUCTION__
  54819. +# define ABORT_INSTRUCTION __asm__(__UCLIBC_ABORT_INSTRUCTION__)
  54820. +#else
  54821. +# warning "no abort instruction defined for this arch"
  54822. #endif
  54823. +/* have to check for kernel 2.5.35 too, since NR was earlier present */
  54824. +#if defined __NR_exit_group && __LINUX_KERNEL_VERSION >= 0x020600 \
  54825. + && defined __UCLIBC_HAS_THREADS__
  54826. +# undef __NR_exit
  54827. +# define __NR_exit __NR_exit_group
  54828. +#endif
  54829. -void attribute_noreturn _exit(int status)
  54830. +void _exit(int status)
  54831. {
  54832. /* The loop is added only to keep gcc happy. */
  54833. while(1)
  54834. {
  54835. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54836. -# ifdef __NR_exit_group
  54837. - INLINE_SYSCALL(exit_group, 1, status);
  54838. -# endif
  54839. -#endif
  54840. INLINE_SYSCALL(exit, 1, status);
  54841. +#ifdef ABORT_INSTRUCTION
  54842. + ABORT_INSTRUCTION;
  54843. +#endif
  54844. }
  54845. }
  54846. libc_hidden_def(_exit)
  54847. +#ifdef __USE_ISOC99
  54848. weak_alias(_exit,_Exit)
  54849. +#endif
  54850. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/faccessat.c uClibc-git/libc/sysdeps/linux/common/faccessat.c
  54851. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/faccessat.c 2012-05-15 09:20:09.000000000 +0200
  54852. +++ uClibc-git/libc/sysdeps/linux/common/faccessat.c 2014-02-03 12:32:56.000000000 +0100
  54853. @@ -11,6 +11,7 @@
  54854. #ifdef __NR_faccessat
  54855. _syscall4(int, faccessat, int, fd, const char *, file, int, type, int, flag)
  54856. +libc_hidden_def(faccessat)
  54857. #else
  54858. /* should add emulation with faccess() and /proc/self/fd/ ... */
  54859. #endif
  54860. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fchdir.c uClibc-git/libc/sysdeps/linux/common/fchdir.c
  54861. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fchdir.c 2012-05-15 09:20:09.000000000 +0200
  54862. +++ uClibc-git/libc/sysdeps/linux/common/fchdir.c 2014-02-03 12:32:56.000000000 +0100
  54863. @@ -10,6 +10,7 @@
  54864. #include <sys/syscall.h>
  54865. #include <unistd.h>
  54866. -
  54867. +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  54868. _syscall1(int, fchdir, int, fd)
  54869. libc_hidden_def(fchdir)
  54870. +#endif
  54871. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fchmodat.c uClibc-git/libc/sysdeps/linux/common/fchmodat.c
  54872. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fchmodat.c 2012-05-15 09:20:09.000000000 +0200
  54873. +++ uClibc-git/libc/sysdeps/linux/common/fchmodat.c 2014-02-03 12:32:56.000000000 +0100
  54874. @@ -32,6 +32,7 @@
  54875. return INLINE_SYSCALL(fchmodat, 3, fd, file, mode);
  54876. }
  54877. +libc_hidden_def(fchmodat)
  54878. #else
  54879. /* should add emulation with fchmod() and /proc/self/fd/ ... */
  54880. #endif
  54881. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fchownat.c uClibc-git/libc/sysdeps/linux/common/fchownat.c
  54882. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fchownat.c 2012-05-15 09:20:09.000000000 +0200
  54883. +++ uClibc-git/libc/sysdeps/linux/common/fchownat.c 2014-02-03 12:32:56.000000000 +0100
  54884. @@ -11,6 +11,7 @@
  54885. #ifdef __NR_fchownat
  54886. _syscall5(int, fchownat, int, fd, const char *, file, uid_t, owner, gid_t, group, int, flag)
  54887. +libc_hidden_def(fchownat)
  54888. #else
  54889. /* should add emulation with fchown() and /proc/self/fd/ ... */
  54890. #endif
  54891. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fdatasync.c uClibc-git/libc/sysdeps/linux/common/fdatasync.c
  54892. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fdatasync.c 2012-05-15 09:20:09.000000000 +0200
  54893. +++ uClibc-git/libc/sysdeps/linux/common/fdatasync.c 2014-02-03 12:32:56.000000000 +0100
  54894. @@ -8,36 +8,17 @@
  54895. */
  54896. #include <sys/syscall.h>
  54897. -#include <unistd.h>
  54898. #if !defined __NR_fdatasync && defined __NR_osf_fdatasync
  54899. # define __NR_fdatasync __NR_osf_fdatasync
  54900. #endif
  54901. #ifdef __NR_fdatasync
  54902. +# include <unistd.h>
  54903. +# include <cancel.h>
  54904. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54905. -# include <sysdep-cancel.h>
  54906. -# else
  54907. -# define SINGLE_THREAD_P 1
  54908. -# endif
  54909. -
  54910. -#define __NR___syscall_fdatasync __NR_fdatasync
  54911. -
  54912. -static __always_inline
  54913. -_syscall1(int, __syscall_fdatasync, int, fd)
  54914. -
  54915. -int fdatasync(int fd)
  54916. -{
  54917. - if (SINGLE_THREAD_P)
  54918. - return __syscall_fdatasync(fd);
  54919. -
  54920. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  54921. - int oldtype = LIBC_CANCEL_ASYNC ();
  54922. - int result = __syscall_fdatasync(fd);
  54923. - LIBC_CANCEL_RESET (oldtype);
  54924. - return result;
  54925. -# endif
  54926. -}
  54927. +# define __NR___fdatasync_nocancel __NR_fdatasync
  54928. +static _syscall1(int, __NC(fdatasync), int, fd)
  54929. +CANCELLABLE_SYSCALL(int, fdatasync, (int fd), (fd))
  54930. #endif
  54931. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fork.c uClibc-git/libc/sysdeps/linux/common/fork.c
  54932. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fork.c 2012-05-15 09:20:09.000000000 +0200
  54933. +++ uClibc-git/libc/sysdeps/linux/common/fork.c 2014-02-03 12:32:56.000000000 +0100
  54934. @@ -8,16 +8,35 @@
  54935. */
  54936. #include <sys/syscall.h>
  54937. -#include <unistd.h>
  54938. -#ifdef __ARCH_USE_MMU__
  54939. -
  54940. -#ifdef __NR_fork
  54941. -#define __NR___libc_fork __NR_fork
  54942. +#if defined __ARCH_USE_MMU__
  54943. +# include <unistd.h>
  54944. extern __typeof(fork) __libc_fork;
  54945. -_syscall0(pid_t, __libc_fork)
  54946. -weak_alias(__libc_fork,fork)
  54947. +# if defined __NR_fork
  54948. +# include <cancel.h>
  54949. +# define __NR___libc_fork __NR_fork
  54950. +_syscall0(pid_t, fork)
  54951. +
  54952. +# elif defined __NR_clone && !defined __NR_fork
  54953. +# include <sys/types.h>
  54954. +# include <signal.h>
  54955. +# include <stddef.h>
  54956. +pid_t fork(void)
  54957. +{
  54958. + pid_t pid = INLINE_SYSCALL(clone, 4, SIGCHLD, NULL, NULL, NULL);
  54959. +
  54960. + if (pid < 0)
  54961. + return -1;
  54962. +
  54963. + return pid;
  54964. +}
  54965. +
  54966. +# endif
  54967. +# ifdef __UCLIBC_HAS_THREADS__
  54968. +strong_alias(fork,__libc_fork)
  54969. libc_hidden_weak(fork)
  54970. -#endif
  54971. +# else
  54972. +libc_hidden_def(fork)
  54973. +# endif
  54974. #endif
  54975. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fpu_control.h uClibc-git/libc/sysdeps/linux/common/fpu_control.h
  54976. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  54977. +++ uClibc-git/libc/sysdeps/linux/common/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  54978. @@ -13,9 +13,8 @@
  54979. Lesser General Public License for more details.
  54980. You should have received a copy of the GNU Lesser General Public
  54981. - License along with the GNU C Library; if not, write to the Free
  54982. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  54983. - 02111-1307 USA. */
  54984. + License along with the GNU C Library; if not, see
  54985. + <http://www.gnu.org/licenses/>. */
  54986. #ifndef _FPU_CONTROL_H
  54987. #define _FPU_CONTROL_H
  54988. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat64.c uClibc-git/libc/sysdeps/linux/common/fstat64.c
  54989. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat64.c 2012-05-15 09:20:09.000000000 +0200
  54990. +++ uClibc-git/libc/sysdeps/linux/common/fstat64.c 2014-02-03 12:32:56.000000000 +0100
  54991. @@ -7,20 +7,20 @@
  54992. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  54993. */
  54994. +#include <_lfs_64.h>
  54995. #include <sys/syscall.h>
  54996. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_fstat64
  54997. -#include <unistd.h>
  54998. -#include <sys/stat.h>
  54999. -#include "xstatconv.h"
  55000. -
  55001. -
  55002. -#define __NR___syscall_fstat64 __NR_fstat64
  55003. -static __inline__ _syscall2(int, __syscall_fstat64,
  55004. - int, filedes, struct kernel_stat64 *, buf)
  55005. +#ifdef __NR_fstat64
  55006. +# include <unistd.h>
  55007. +# include <sys/stat.h>
  55008. +# include "xstatconv.h"
  55009. +# define __NR___syscall_fstat64 __NR_fstat64
  55010. +static __always_inline _syscall2(int, __syscall_fstat64,
  55011. + int, filedes, struct kernel_stat64 *, buf)
  55012. int fstat64(int fd, struct stat64 *buf)
  55013. {
  55014. +#ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55015. int result;
  55016. struct kernel_stat64 kbuf;
  55017. @@ -29,6 +29,9 @@
  55018. __xstat64_conv(&kbuf, buf);
  55019. }
  55020. return result;
  55021. +#else
  55022. + return __syscall_fstat64(fd, buf);
  55023. +#endif
  55024. }
  55025. libc_hidden_def(fstat64)
  55026. #endif
  55027. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat64.c uClibc-git/libc/sysdeps/linux/common/fstatat64.c
  55028. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat64.c 2012-05-15 09:20:09.000000000 +0200
  55029. +++ uClibc-git/libc/sysdeps/linux/common/fstatat64.c 2014-02-03 12:32:56.000000000 +0100
  55030. @@ -6,20 +6,21 @@
  55031. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55032. */
  55033. +#include <_lfs_64.h>
  55034. +#include <bits/wordsize.h>
  55035. #include <sys/syscall.h>
  55036. -#include <sys/stat.h>
  55037. -#include "xstatconv.h"
  55038. -
  55039. -#ifdef __UCLIBC_HAS_LFS__
  55040. /* 64bit ports tend to favor newfstatat() */
  55041. -#ifdef __NR_newfstatat
  55042. +#if __WORDSIZE == 64 && defined __NR_newfstatat
  55043. # define __NR_fstatat64 __NR_newfstatat
  55044. #endif
  55045. #ifdef __NR_fstatat64
  55046. +# include <sys/stat.h>
  55047. +# include "xstatconv.h"
  55048. int fstatat64(int fd, const char *file, struct stat64 *buf, int flag)
  55049. {
  55050. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55051. int ret;
  55052. struct kernel_stat64 kbuf;
  55053. @@ -28,9 +29,11 @@
  55054. __xstat64_conv(&kbuf, buf);
  55055. return ret;
  55056. +# else
  55057. + return INLINE_SYSCALL(fstatat64, 4, fd, file, buf, flag);
  55058. +# endif
  55059. }
  55060. +libc_hidden_def(fstatat64)
  55061. #else
  55062. /* should add emulation with fstat64() and /proc/self/fd/ ... */
  55063. #endif
  55064. -
  55065. -#endif
  55066. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat.c uClibc-git/libc/sysdeps/linux/common/fstatat.c
  55067. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatat.c 2012-05-15 09:20:09.000000000 +0200
  55068. +++ uClibc-git/libc/sysdeps/linux/common/fstatat.c 2014-02-03 12:32:56.000000000 +0100
  55069. @@ -11,7 +11,7 @@
  55070. #include "xstatconv.h"
  55071. /* 64bit ports tend to favor newfstatat() */
  55072. -#ifdef __NR_newfstatat
  55073. +#if __WORDSIZE == 64 && defined __NR_newfstatat
  55074. # define __NR_fstatat64 __NR_newfstatat
  55075. #endif
  55076. @@ -19,14 +19,26 @@
  55077. int fstatat(int fd, const char *file, struct stat *buf, int flag)
  55078. {
  55079. int ret;
  55080. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55081. struct kernel_stat64 kbuf;
  55082. -
  55083. ret = INLINE_SYSCALL(fstatat64, 4, fd, file, &kbuf, flag);
  55084. if (ret == 0)
  55085. __xstat32_conv(&kbuf, buf);
  55086. -
  55087. +# else
  55088. + ret = INLINE_SYSCALL(fstatat64, 4, fd, file, buf, flag);
  55089. + if (ret == 0) {
  55090. + /* Did we overflow */
  55091. + if (buf->__pad1 || buf->__pad2 || buf->__pad3
  55092. + || buf->__pad4 || buf->__pad5 || buf->__pad6
  55093. + || buf->__pad7) {
  55094. + __set_errno(EOVERFLOW);
  55095. + return -1;
  55096. + }
  55097. + }
  55098. +# endif /* __ARCH_HAS_DEPRECATED_SYSCALLS__ */
  55099. return ret;
  55100. }
  55101. +libc_hidden_def(fstatat)
  55102. #else
  55103. /* should add emulation with fstat() and /proc/self/fd/ ... */
  55104. #endif
  55105. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat.c uClibc-git/libc/sysdeps/linux/common/fstat.c
  55106. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstat.c 2012-05-15 09:20:09.000000000 +0200
  55107. +++ uClibc-git/libc/sysdeps/linux/common/fstat.c 2014-02-03 12:32:56.000000000 +0100
  55108. @@ -12,10 +12,28 @@
  55109. #include <sys/stat.h>
  55110. #include "xstatconv.h"
  55111. +#if defined __NR_fstat64 && !defined __NR_fstat
  55112. +int fstat(int fd, struct stat *buf)
  55113. +{
  55114. + int result = INLINE_SYSCALL(fstat64, 2, fd, buf);
  55115. + if (result == 0) {
  55116. + /* Did we overflow? */
  55117. + if (buf->__pad1 || buf->__pad2 || buf->__pad3
  55118. + || buf->__pad4 || buf->__pad5
  55119. + || buf->__pad6 || buf->__pad7) {
  55120. + __set_errno(EOVERFLOW);
  55121. + return -1;
  55122. + }
  55123. + }
  55124. + return result;
  55125. +}
  55126. +libc_hidden_def(fstat)
  55127. +
  55128. +#elif defined __NR_fstat
  55129. int fstat(int fd, struct stat *buf)
  55130. {
  55131. int result;
  55132. -#ifdef __NR_fstat64
  55133. +# ifdef __NR_fstat64
  55134. /* normal stat call has limited values for various stat elements
  55135. * e.g. uid device major/minor etc.
  55136. * so we use 64 variant if available
  55137. @@ -26,19 +44,21 @@
  55138. if (result == 0) {
  55139. __xstat32_conv(&kbuf, buf);
  55140. }
  55141. -#else
  55142. +# else
  55143. struct kernel_stat kbuf;
  55144. result = INLINE_SYSCALL(fstat, 2, fd, &kbuf);
  55145. if (result == 0) {
  55146. __xstat_conv(&kbuf, buf);
  55147. }
  55148. -#endif
  55149. +# endif
  55150. return result;
  55151. }
  55152. libc_hidden_def(fstat)
  55153. -#if ! defined __NR_fstat64 && defined __UCLIBC_HAS_LFS__
  55154. +# if ! defined __NR_fstat64 && defined __UCLIBC_HAS_LFS__
  55155. strong_alias_untyped(fstat,fstat64)
  55156. libc_hidden_def(fstat64)
  55157. +# endif
  55158. +
  55159. #endif
  55160. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatfs.c uClibc-git/libc/sysdeps/linux/common/fstatfs.c
  55161. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fstatfs.c 2012-05-15 09:20:09.000000000 +0200
  55162. +++ uClibc-git/libc/sysdeps/linux/common/fstatfs.c 2014-02-03 12:32:56.000000000 +0100
  55163. @@ -9,8 +9,9 @@
  55164. #include <sys/syscall.h>
  55165. #include <sys/vfs.h>
  55166. +#include <string.h>
  55167. -#ifndef __USE_FILE_OFFSET64
  55168. +#ifndef __USE_FILE_OFFSET64__
  55169. extern int fstatfs (int __fildes, struct statfs *__buf)
  55170. __THROW __nonnull ((2));
  55171. #else
  55172. @@ -23,8 +24,26 @@
  55173. #endif
  55174. extern __typeof(fstatfs) __libc_fstatfs attribute_hidden;
  55175. -#define __NR___libc_fstatfs __NR_fstatfs
  55176. +#ifdef __NR_fstatfs
  55177. +# define __NR___libc_fstatfs __NR_fstatfs
  55178. _syscall2(int, __libc_fstatfs, int, fd, struct statfs *, buf)
  55179. +#else
  55180. +int __libc_fstatfs (int __fildes, struct statfs *__buf)
  55181. +{
  55182. + int err = INLINE_SYSCALL(fstatfs64, 3, __fildes, sizeof(*__buf), __buf);
  55183. +
  55184. + if (err == 0) {
  55185. + /* Did we overflow? */
  55186. + if (__buf->__pad1 || __buf->__pad2 || __buf->__pad3 ||
  55187. + __buf->__pad4 || __buf->__pad5) {
  55188. + __set_errno(EOVERFLOW);
  55189. + return -1;
  55190. + }
  55191. + }
  55192. + return err;
  55193. +};
  55194. +/* Redefined fstatfs because we need it for backwards compatibility */
  55195. +#endif /* __NR_fstatfs */
  55196. #if defined __UCLIBC_LINUX_SPECIFIC__
  55197. weak_alias(__libc_fstatfs,fstatfs)
  55198. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/fsync.c uClibc-git/libc/sysdeps/linux/common/fsync.c
  55199. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/fsync.c 2012-05-15 09:20:09.000000000 +0200
  55200. +++ uClibc-git/libc/sysdeps/linux/common/fsync.c 2014-02-03 12:32:56.000000000 +0100
  55201. @@ -9,29 +9,9 @@
  55202. #include <sys/syscall.h>
  55203. #include <unistd.h>
  55204. +#include <cancel.h>
  55205. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55206. -#include "sysdep-cancel.h"
  55207. -#else
  55208. -#define SINGLE_THREAD_P 1
  55209. -#endif
  55210. +#define __NR___fsync_nocancel __NR_fsync
  55211. +static _syscall1(int, __NC(fsync), int, fd)
  55212. -#define __NR___syscall_fsync __NR_fsync
  55213. -static inline _syscall1(int, __syscall_fsync, int, fd)
  55214. -
  55215. -extern __typeof(fsync) __libc_fsync;
  55216. -
  55217. -int __libc_fsync(int fd)
  55218. -{
  55219. - if (SINGLE_THREAD_P)
  55220. - return __syscall_fsync(fd);
  55221. -
  55222. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55223. - int oldtype = LIBC_CANCEL_ASYNC ();
  55224. - int result = __syscall_fsync(fd);
  55225. - LIBC_CANCEL_RESET (oldtype);
  55226. - return result;
  55227. -#endif
  55228. -}
  55229. -
  55230. -weak_alias(__libc_fsync, fsync)
  55231. +CANCELLABLE_SYSCALL(int, fsync, (int fd), (fd))
  55232. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate64.c uClibc-git/libc/sysdeps/linux/common/ftruncate64.c
  55233. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate64.c 2012-05-15 09:20:09.000000000 +0200
  55234. +++ uClibc-git/libc/sysdeps/linux/common/ftruncate64.c 2014-02-03 12:32:56.000000000 +0100
  55235. @@ -7,50 +7,41 @@
  55236. * and on 32 bit machines this sends things into the kernel as
  55237. * two 32-bit arguments (high and low 32 bits of length) that
  55238. * are ordered based on endianess. It turns out endian.h has
  55239. - * just the macro we need to order things, __LONG_LONG_PAIR.
  55240. + * just the macro we need to order things, OFF64_HI_LO.
  55241. */
  55242. -#include <features.h>
  55243. +#include <_lfs_64.h>
  55244. +#include <sys/syscall.h>
  55245. +#include <unistd.h>
  55246. -#ifdef __UCLIBC_HAS_LFS__
  55247. +#ifdef __NR_ftruncate64
  55248. +# include <bits/wordsize.h>
  55249. -# include <unistd.h>
  55250. -# include <errno.h>
  55251. -# include <endian.h>
  55252. -# include <stdint.h>
  55253. -# include <sys/types.h>
  55254. -# include <sys/syscall.h>
  55255. -
  55256. -
  55257. -# ifdef __NR_ftruncate64
  55258. -
  55259. -# if __WORDSIZE == 64
  55260. +# if __WORDSIZE == 64
  55261. /* For a 64 bit machine, life is simple... */
  55262. _syscall2(int, ftruncate64, int, fd, __off64_t, length)
  55263. -# elif __WORDSIZE == 32
  55264. +# elif __WORDSIZE == 32
  55265. +# include <endian.h>
  55266. +# include <stdint.h>
  55267. /* The exported ftruncate64 function. */
  55268. int ftruncate64 (int fd, __off64_t length)
  55269. {
  55270. - uint32_t low = length & 0xffffffff;
  55271. - uint32_t high = length >> 32;
  55272. -# if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
  55273. - return INLINE_SYSCALL(ftruncate64,
  55274. - 4, fd, 0, __LONG_LONG_PAIR (high, low));
  55275. -# else
  55276. - return INLINE_SYSCALL(ftruncate64, 3, fd,
  55277. - __LONG_LONG_PAIR (high, low));
  55278. -# endif
  55279. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  55280. + return INLINE_SYSCALL(ftruncate64, 4, fd, 0, OFF64_HI_LO(length));
  55281. +# else
  55282. + return INLINE_SYSCALL(ftruncate64, 3, fd, OFF64_HI_LO(length));
  55283. +# endif
  55284. }
  55285. -# else /* __WORDSIZE */
  55286. -# error Your machine is not 64 bit or 32 bit, I am dazed and confused.
  55287. -# endif /* __WORDSIZE */
  55288. -
  55289. -# else /* __NR_ftruncate64 */
  55290. +# else /* __WORDSIZE */
  55291. +# error Your machine is not 64 bit or 32 bit, I am dazed and confused.
  55292. +# endif /* __WORDSIZE */
  55293. +#else /* __NR_ftruncate64 */
  55294. +# include <errno.h>
  55295. int ftruncate64 (int fd, __off64_t length)
  55296. {
  55297. @@ -65,7 +56,5 @@
  55298. return -1;
  55299. }
  55300. -# endif /* __NR_ftruncate64 */
  55301. +#endif /* __NR_ftruncate64 */
  55302. libc_hidden_def(ftruncate64)
  55303. -
  55304. -#endif /* __UCLIBC_HAS_LFS__ */
  55305. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate.c uClibc-git/libc/sysdeps/linux/common/ftruncate.c
  55306. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ftruncate.c 2012-05-15 09:20:09.000000000 +0200
  55307. +++ uClibc-git/libc/sysdeps/linux/common/ftruncate.c 2014-02-03 12:32:56.000000000 +0100
  55308. @@ -10,6 +10,20 @@
  55309. #include <sys/syscall.h>
  55310. #include <unistd.h>
  55311. +#if defined __NR_ftruncate64 && !defined __NR_ftruncate
  55312. +# include <endian.h>
  55313. +# include <stdint.h>
  55314. +int ftruncate(int fd, __off_t length)
  55315. +{
  55316. +# if defined __UCLIBC_HAS_LFS__
  55317. + return ftruncate64(fd, length);
  55318. +# elif __WORDSIZE == 32
  55319. + return INLINE_SYSCALL(ftruncate64, 3, fd, OFF_HI_LO(length));
  55320. +# endif
  55321. +}
  55322. +libc_hidden_def(ftruncate);
  55323. +#else
  55324. _syscall2(int, ftruncate, int, fd, __off_t, length)
  55325. libc_hidden_def(ftruncate)
  55326. +#endif
  55327. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/futimens.c uClibc-git/libc/sysdeps/linux/common/futimens.c
  55328. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/futimens.c 2012-05-15 09:20:09.000000000 +0200
  55329. +++ uClibc-git/libc/sysdeps/linux/common/futimens.c 2014-02-03 12:32:56.000000000 +0100
  55330. @@ -16,13 +16,13 @@
  55331. * Note that due to not including the header, we have to alias the call
  55332. * manually.
  55333. */
  55334. -extern int utimensat (int __fd, __const char *__path,
  55335. - __const struct timespec __times[2],
  55336. +extern int utimensat (int __fd, const char *__path,
  55337. + const struct timespec __times[2],
  55338. int __flags) __THROW;
  55339. libc_hidden_proto(utimensat)
  55340. -int futimens (int __fd, __const struct timespec __times[2]) __THROW;
  55341. -int futimens (int fd, __const struct timespec ts[2])
  55342. +int futimens (int __fd, const struct timespec __times[2]) __THROW;
  55343. +int futimens (int fd, const struct timespec ts[2])
  55344. {
  55345. return utimensat(fd, 0, ts, 0);
  55346. }
  55347. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents64.c uClibc-git/libc/sysdeps/linux/common/getdents64.c
  55348. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents64.c 2012-05-15 09:20:09.000000000 +0200
  55349. +++ uClibc-git/libc/sysdeps/linux/common/getdents64.c 2014-02-03 12:32:56.000000000 +0100
  55350. @@ -4,7 +4,11 @@
  55351. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55352. */
  55353. -#include <features.h>
  55354. +#include <_lfs_64.h>
  55355. +#include <sys/syscall.h>
  55356. +
  55357. +#ifdef __NR_getdents64
  55358. +
  55359. #include <assert.h>
  55360. #include <errno.h>
  55361. #include <dirent.h>
  55362. @@ -13,17 +17,9 @@
  55363. #include <string.h>
  55364. #include <unistd.h>
  55365. #include <sys/param.h>
  55366. -#include <sys/types.h>
  55367. -#include <sys/syscall.h>
  55368. -#include <bits/kernel_types.h>
  55369. +#include <bits/wordsize.h>
  55370. #include <bits/uClibc_alloc.h>
  55371. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_getdents64
  55372. -
  55373. -# ifndef offsetof
  55374. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  55375. -# endif
  55376. -
  55377. struct kernel_dirent64
  55378. {
  55379. uint64_t d_ino;
  55380. @@ -36,7 +32,6 @@
  55381. # define __NR___syscall_getdents64 __NR_getdents64
  55382. static __inline__ _syscall3(int, __syscall_getdents64, int, fd, unsigned char *, dirp, size_t, count)
  55383. -ssize_t __getdents64 (int fd, char *buf, size_t nbytes) attribute_hidden;
  55384. ssize_t __getdents64 (int fd, char *buf, size_t nbytes)
  55385. {
  55386. struct dirent64 *dp;
  55387. @@ -96,10 +91,10 @@
  55388. return (char *) dp - buf;
  55389. }
  55390. -#if __WORDSIZE == 64
  55391. +#if __WORDSIZE == 64 || (defined __UCLIBC_HAS_LFS__ && !defined __NR_getdents)
  55392. /* since getdents doesnt give us d_type but getdents64 does, try and
  55393. * use getdents64 as much as possible */
  55394. -attribute_hidden strong_alias(__getdents64,__getdents)
  55395. +strong_alias(__getdents64,__getdents)
  55396. #endif
  55397. #endif
  55398. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents.c uClibc-git/libc/sysdeps/linux/common/getdents.c
  55399. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getdents.c 2012-05-15 09:20:09.000000000 +0200
  55400. +++ uClibc-git/libc/sysdeps/linux/common/getdents.c 2014-02-03 12:32:56.000000000 +0100
  55401. @@ -4,21 +4,17 @@
  55402. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55403. */
  55404. -#include <assert.h>
  55405. -#include <errno.h>
  55406. +#include <sys/syscall.h>
  55407. +#include <bits/wordsize.h>
  55408. +
  55409. +#if !(defined __UCLIBC_HAS_LFS__ && defined __NR_getdents64 && __WORDSIZE == 64)
  55410. +
  55411. #include <dirent.h>
  55412. -#include <stddef.h>
  55413. -#include <stdint.h>
  55414. #include <string.h>
  55415. -#include <unistd.h>
  55416. -#include <sys/param.h>
  55417. #include <sys/types.h>
  55418. -#include <sys/syscall.h>
  55419. #include <bits/kernel_types.h>
  55420. #include <bits/kernel-features.h>
  55421. -#include <bits/uClibc_alloc.h>
  55422. -#if !(defined __UCLIBC_HAS_LFS__ && defined __NR_getdents64 && __WORDSIZE == 64)
  55423. /* If the condition above is met, __getdents is defined as an alias
  55424. * for __getdents64 (see getdents64.c). Otherwise...
  55425. */
  55426. @@ -30,10 +26,7 @@
  55427. * version / arch details.
  55428. */
  55429. -#ifndef offsetof
  55430. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  55431. -#endif
  55432. -
  55433. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55434. struct kernel_dirent
  55435. {
  55436. long int d_ino;
  55437. @@ -41,13 +34,16 @@
  55438. unsigned short int d_reclen;
  55439. char d_name[256];
  55440. };
  55441. +# else
  55442. +# define kernel_dirent dirent
  55443. +# endif
  55444. -ssize_t __getdents (int fd, char *buf, size_t nbytes) attribute_hidden;
  55445. -
  55446. -#define __NR___syscall_getdents __NR_getdents
  55447. +# if defined __NR_getdents
  55448. +# define __NR___syscall_getdents __NR_getdents
  55449. static __always_inline _syscall3(int, __syscall_getdents, int, fd, unsigned char *, kdirp, size_t, count)
  55450. +# endif
  55451. -#if defined __ASSUME_GETDENTS32_D_TYPE
  55452. +# if defined __ASSUME_GETDENTS32_D_TYPE && defined __NR_getdents
  55453. ssize_t __getdents (int fd, char *buf, size_t nbytes)
  55454. {
  55455. @@ -76,7 +72,14 @@
  55456. return retval;
  55457. }
  55458. -#elif ! defined __UCLIBC_HAS_LFS__ || ! defined __NR_getdents64
  55459. +# elif ! defined __UCLIBC_HAS_LFS__ || !defined __NR_getdents64
  55460. +
  55461. +# include <assert.h>
  55462. +# include <stddef.h>
  55463. +# include <errno.h>
  55464. +# include <unistd.h>
  55465. +# include <sys/param.h>
  55466. +# include <bits/uClibc_alloc.h>
  55467. ssize_t __getdents (int fd, char *buf, size_t nbytes)
  55468. {
  55469. @@ -88,6 +91,7 @@
  55470. const size_t size_diff = (offsetof (struct dirent, d_name)
  55471. - offsetof (struct kernel_dirent, d_name));
  55472. +# ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  55473. red_nbytes = MIN (nbytes - ((nbytes /
  55474. (offsetof (struct dirent, d_name) + 14)) * size_diff),
  55475. nbytes - size_diff);
  55476. @@ -96,6 +100,21 @@
  55477. skdp = kdp = stack_heap_alloc(red_nbytes);
  55478. retval = __syscall_getdents(fd, (unsigned char *)kdp, red_nbytes);
  55479. +# else
  55480. +
  55481. + dp = (struct dirent *) buf;
  55482. + skdp = kdp = stack_heap_alloc(nbytes);
  55483. +
  55484. + retval = INLINE_SYSCALL(getdents64, 3, fd, (unsigned char *)kdp, nbytes);
  55485. + if (retval > 0) {
  55486. + /* Did we overflow? */
  55487. + if (kdp->__pad1 || kdp->__pad2) {
  55488. + __set_errno(EINVAL);
  55489. + return -1;
  55490. + }
  55491. + }
  55492. +# endif
  55493. +
  55494. if (retval == -1) {
  55495. stack_heap_free(skdp);
  55496. return -1;
  55497. @@ -137,9 +156,10 @@
  55498. return (char *) dp - buf;
  55499. }
  55500. -#elif __WORDSIZE == 32
  55501. +# elif __WORDSIZE == 32 && !defined __NR_getdents64
  55502. +
  55503. +# include <stddef.h>
  55504. -extern __typeof(__getdents) __getdents64 attribute_hidden;
  55505. ssize_t __getdents (int fd, char *buf, size_t nbytes)
  55506. {
  55507. struct dirent *dp;
  55508. @@ -165,10 +185,10 @@
  55509. return ret;
  55510. }
  55511. -#endif
  55512. +# endif
  55513. -#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
  55514. -attribute_hidden strong_alias(__getdents,__getdents64)
  55515. -#endif
  55516. +# if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
  55517. +strong_alias(__getdents,__getdents64)
  55518. +# endif
  55519. #endif
  55520. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getdirname.c uClibc-git/libc/sysdeps/linux/common/getdirname.c
  55521. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getdirname.c 2012-05-15 09:20:09.000000000 +0200
  55522. +++ uClibc-git/libc/sysdeps/linux/common/getdirname.c 2014-02-03 12:32:56.000000000 +0100
  55523. @@ -13,9 +13,8 @@
  55524. Lesser General Public License for more details.
  55525. You should have received a copy of the GNU Lesser General Public
  55526. - License along with the GNU C Library; if not, write to the Free
  55527. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55528. - 02111-1307 USA. */
  55529. + License along with the GNU C Library; if not, see
  55530. + <http://www.gnu.org/licenses/>. */
  55531. #include <features.h>
  55532. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getgroups.c uClibc-git/libc/sysdeps/linux/common/getgroups.c
  55533. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getgroups.c 2012-05-15 09:20:09.000000000 +0200
  55534. +++ uClibc-git/libc/sysdeps/linux/common/getgroups.c 2014-02-03 12:32:56.000000000 +0100
  55535. @@ -8,10 +8,7 @@
  55536. */
  55537. #include <sys/syscall.h>
  55538. -#include <stdlib.h>
  55539. #include <unistd.h>
  55540. -#include <grp.h>
  55541. -
  55542. #if defined(__NR_getgroups32)
  55543. # undef __NR_getgroups
  55544. @@ -22,12 +19,14 @@
  55545. _syscall2(int, getgroups, int, size, gid_t *, list)
  55546. #else
  55547. -
  55548. -#define MIN(a,b) (((a)<(b))?(a):(b))
  55549. -
  55550. -#define __NR___syscall_getgroups __NR_getgroups
  55551. -static __inline__ _syscall2(int, __syscall_getgroups,
  55552. - int, size, __kernel_gid_t *, list)
  55553. +# include <errno.h>
  55554. +# include <stdlib.h>
  55555. +# include <sys/types.h>
  55556. +# include <sys/param.h>
  55557. +
  55558. +# define __NR___syscall_getgroups __NR_getgroups
  55559. +static __always_inline
  55560. +_syscall2(int, __syscall_getgroups, int, size, __kernel_gid_t *, list)
  55561. int getgroups(int size, gid_t groups[])
  55562. {
  55563. @@ -56,5 +55,4 @@
  55564. }
  55565. }
  55566. #endif
  55567. -
  55568. libc_hidden_def(getgroups)
  55569. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/get_kernel_syms.c uClibc-git/libc/sysdeps/linux/common/get_kernel_syms.c
  55570. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/get_kernel_syms.c 2012-05-15 09:20:09.000000000 +0200
  55571. +++ uClibc-git/libc/sysdeps/linux/common/get_kernel_syms.c 2014-02-03 12:32:56.000000000 +0100
  55572. @@ -9,8 +9,8 @@
  55573. #include <sys/syscall.h>
  55574. -struct kernel_sym;
  55575. -int get_kernel_syms(struct kernel_sym *table attribute_unused);
  55576. #ifdef __NR_get_kernel_syms
  55577. +struct kernel_sym;
  55578. +int get_kernel_syms(struct kernel_sym *table);
  55579. _syscall1(int, get_kernel_syms, struct kernel_sym *, table)
  55580. #endif
  55581. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getpagesize.c uClibc-git/libc/sysdeps/linux/common/getpagesize.c
  55582. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getpagesize.c 2012-05-15 09:20:09.000000000 +0200
  55583. +++ uClibc-git/libc/sysdeps/linux/common/getpagesize.c 2014-02-03 12:32:56.000000000 +0100
  55584. @@ -12,16 +12,13 @@
  55585. Lesser General Public License for more details.
  55586. You should have received a copy of the GNU Lesser General Public
  55587. - License along with the GNU C Library; if not, write to the Free
  55588. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55589. - 02111-1307 USA. */
  55590. + License along with the GNU C Library; if not, see
  55591. + <http://www.gnu.org/licenses/>. */
  55592. #include <unistd.h>
  55593. #include <features.h>
  55594. #include <sys/param.h>
  55595. -extern size_t __pagesize;
  55596. -
  55597. /* Return the system page size. */
  55598. /* couldn't make __getpagesize hidden, because shm.h uses it in a macro */
  55599. extern __typeof(getpagesize) __getpagesize;
  55600. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit64.c uClibc-git/libc/sysdeps/linux/common/getrlimit64.c
  55601. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit64.c 2012-05-15 09:20:09.000000000 +0200
  55602. +++ uClibc-git/libc/sysdeps/linux/common/getrlimit64.c 2014-02-03 12:32:56.000000000 +0100
  55603. @@ -12,20 +12,16 @@
  55604. Lesser General Public License for more details.
  55605. You should have received a copy of the GNU Lesser General Public
  55606. - License along with the GNU C Library; if not, write to the Free
  55607. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55608. - 02111-1307 USA. */
  55609. + License along with the GNU C Library; if not, see
  55610. + <http://www.gnu.org/licenses/>. */
  55611. #include <_lfs_64.h>
  55612. -
  55613. -#include <sys/types.h>
  55614. -#include <sys/resource.h>
  55615. #include <bits/wordsize.h>
  55616. /* the regular getrlimit will work just fine for 64bit users */
  55617. +#if __WORDSIZE == 32
  55618. -#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  55619. -
  55620. +# include <sys/resource.h>
  55621. /* Put the soft and hard limits for RESOURCE in *RLIMITS.
  55622. Returns 0 if successful, -1 if not (and sets errno). */
  55623. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit.c uClibc-git/libc/sysdeps/linux/common/getrlimit.c
  55624. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/getrlimit.c 2012-05-15 09:20:09.000000000 +0200
  55625. +++ uClibc-git/libc/sysdeps/linux/common/getrlimit.c 2014-02-03 12:32:56.000000000 +0100
  55626. @@ -7,12 +7,9 @@
  55627. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55628. */
  55629. -#define getrlimit64 __hide_getrlimit64
  55630. #include <sys/syscall.h>
  55631. -#include <unistd.h>
  55632. #include <sys/resource.h>
  55633. -#undef getrlimit64
  55634. -
  55635. +#include <bits/wordsize.h>
  55636. /* Only wrap getrlimit if the new ugetrlimit is not present and getrlimit sucks */
  55637. @@ -25,14 +22,14 @@
  55638. struct rlimit *, rlim)
  55639. int getrlimit(__rlimit_resource_t resource, struct rlimit *rlimits)
  55640. {
  55641. - return (__syscall_ugetrlimit(resource, rlimits));
  55642. + return __syscall_ugetrlimit(resource, rlimits);
  55643. }
  55644. #elif !defined(__UCLIBC_HANDLE_OLDER_RLIMIT__)
  55645. /* We don't need to wrap getrlimit() */
  55646. _syscall2(int, getrlimit, __rlimit_resource_t, resource,
  55647. - struct rlimit *, rlim)
  55648. + struct rlimit *, rlim)
  55649. #else
  55650. @@ -59,9 +56,8 @@
  55651. return result;
  55652. }
  55653. #endif
  55654. -
  55655. libc_hidden_def(getrlimit)
  55656. #if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  55657. -strong_alias(getrlimit, getrlimit64)
  55658. +strong_alias_untyped(getrlimit, getrlimit64)
  55659. #endif
  55660. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/gettimeofday.c uClibc-git/libc/sysdeps/linux/common/gettimeofday.c
  55661. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/gettimeofday.c 2012-05-15 09:20:09.000000000 +0200
  55662. +++ uClibc-git/libc/sysdeps/linux/common/gettimeofday.c 2014-02-03 12:32:56.000000000 +0100
  55663. @@ -10,9 +10,5 @@
  55664. #include <sys/syscall.h>
  55665. #include <sys/time.h>
  55666. -#ifdef __USE_BSD
  55667. -_syscall2(int, gettimeofday, struct timeval *, tv, struct timezone *, tz)
  55668. -#else
  55669. -_syscall2(int, gettimeofday, struct timeval *, tv, void *, tz)
  55670. -#endif
  55671. +_syscall2(int, gettimeofday, struct timeval *, tv, __timezone_ptr_t, tz)
  55672. libc_hidden_def(gettimeofday)
  55673. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/hp-timing.h uClibc-git/libc/sysdeps/linux/common/hp-timing.h
  55674. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/hp-timing.h 2012-05-15 09:20:09.000000000 +0200
  55675. +++ uClibc-git/libc/sysdeps/linux/common/hp-timing.h 2014-02-03 12:32:56.000000000 +0100
  55676. @@ -14,9 +14,8 @@
  55677. Lesser General Public License for more details.
  55678. You should have received a copy of the GNU Lesser General Public
  55679. - License along with the GNU C Library; if not, write to the Free
  55680. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55681. - 02111-1307 USA. */
  55682. + License along with the GNU C Library; if not, see
  55683. + <http://www.gnu.org/licenses/>. */
  55684. #ifndef _HP_TIMING_H
  55685. #define _HP_TIMING_H 1
  55686. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/init_module.c uClibc-git/libc/sysdeps/linux/common/init_module.c
  55687. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/init_module.c 2012-05-15 09:20:09.000000000 +0200
  55688. +++ uClibc-git/libc/sysdeps/linux/common/init_module.c 2014-02-03 12:32:56.000000000 +0100
  55689. @@ -8,12 +8,13 @@
  55690. */
  55691. #include <sys/syscall.h>
  55692. -int init_module(void *first, void *second, void *third, void *fourth, void *fifth);
  55693. +
  55694. #ifdef __NR_init_module
  55695. +int init_module(void *first, void *second, void *third, void *fourth, void *fifth);
  55696. /* This may have 5 arguments (for old 2.0 kernels) or 2 arguments
  55697. * (for 2.2 and 2.4 kernels). Use the greatest common denominator,
  55698. * and let the kernel cope with whatever it gets. It's good at that. */
  55699. _syscall5(int, init_module, void *, first, void *, second, void *, third,
  55700. - void *, fourth, void *, fifth)
  55701. + void *, fourth, void *, fifth)
  55702. #endif
  55703. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/inotify.c uClibc-git/libc/sysdeps/linux/common/inotify.c
  55704. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/inotify.c 2012-05-15 09:20:09.000000000 +0200
  55705. +++ uClibc-git/libc/sysdeps/linux/common/inotify.c 2014-02-03 12:32:56.000000000 +0100
  55706. @@ -19,6 +19,13 @@
  55707. _syscall1(int, inotify_init1, int, flags)
  55708. #endif
  55709. +#if defined __NR_inotify_init1 && !defined __NR_inotify_init
  55710. +int inotify_init(void)
  55711. +{
  55712. + return INLINE_SYSCALL(inotify_init1, 1, 0);
  55713. +}
  55714. +#endif
  55715. +
  55716. #ifdef __NR_inotify_add_watch
  55717. _syscall3(int, inotify_add_watch, int, fd, const char *, path, uint32_t, mask)
  55718. #endif
  55719. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ioctl.c uClibc-git/libc/sysdeps/linux/common/ioctl.c
  55720. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ioctl.c 2012-05-15 09:20:09.000000000 +0200
  55721. +++ uClibc-git/libc/sysdeps/linux/common/ioctl.c 2014-02-03 12:32:56.000000000 +0100
  55722. @@ -10,14 +10,7 @@
  55723. #include <sys/syscall.h>
  55724. #include <stdarg.h>
  55725. #include <sys/ioctl.h>
  55726. -
  55727. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55728. -#include <sysdep-cancel.h>
  55729. -#else
  55730. -#define SINGLE_THREAD_P 1
  55731. -#endif
  55732. -
  55733. -libc_hidden_proto(ioctl)
  55734. +#include <cancel.h>
  55735. #define __NR___syscall_ioctl __NR_ioctl
  55736. static __always_inline
  55737. @@ -30,17 +23,16 @@
  55738. va_start(list, request);
  55739. arg = va_arg(list, void *);
  55740. -
  55741. va_end(list);
  55742. if (SINGLE_THREAD_P)
  55743. return __syscall_ioctl(fd, request, arg);
  55744. -
  55745. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55746. +#ifdef __NEW_THREADS
  55747. int oldtype = LIBC_CANCEL_ASYNC ();
  55748. int result = __syscall_ioctl(fd, request, arg);
  55749. LIBC_CANCEL_RESET (oldtype);
  55750. return result;
  55751. #endif
  55752. }
  55753. -libc_hidden_def(ioctl)
  55754. +lt_strong_alias(ioctl)
  55755. +lt_libc_hidden(ioctl)
  55756. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ioperm.c uClibc-git/libc/sysdeps/linux/common/ioperm.c
  55757. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ioperm.c 2012-05-15 09:20:09.000000000 +0200
  55758. +++ uClibc-git/libc/sysdeps/linux/common/ioperm.c 2014-02-03 12:32:56.000000000 +0100
  55759. @@ -13,10 +13,6 @@
  55760. /* psm: can't #include <sys/io.h>, some archs miss it */
  55761. extern int ioperm(unsigned long __from, unsigned long __num, int __turn_on) __THROW;
  55762. -/* Not needed internally;
  55763. -libc_hidden_proto(ioperm)
  55764. -*/
  55765. _syscall3(int, ioperm, unsigned long, from, unsigned long, num, int, turn_on)
  55766. -/*libc_hidden_def(ioperm)*/
  55767. #endif
  55768. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/common/jmpbuf-offsets.h
  55769. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  55770. +++ uClibc-git/libc/sysdeps/linux/common/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  55771. @@ -0,0 +1,6 @@
  55772. +/* Private macros for accessing __jmp_buf contents. dummy version. */
  55773. +/*
  55774. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  55775. + *
  55776. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55777. + */
  55778. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lchown.c uClibc-git/libc/sysdeps/linux/common/lchown.c
  55779. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lchown.c 2012-05-15 09:20:09.000000000 +0200
  55780. +++ uClibc-git/libc/sysdeps/linux/common/lchown.c 2014-02-03 12:32:56.000000000 +0100
  55781. @@ -11,17 +11,26 @@
  55782. #include <unistd.h>
  55783. #include <bits/wordsize.h>
  55784. -#if (__WORDSIZE == 32 && defined(__NR_lchown32)) || __WORDSIZE == 64
  55785. -# ifdef __NR_lchown32
  55786. -# undef __NR_lchown
  55787. -# define __NR_lchown __NR_lchown32
  55788. -# endif
  55789. +#if defined __NR_fchownat && !defined __NR_lchown
  55790. +# include <fcntl.h>
  55791. +int lchown(const char *path, uid_t owner, gid_t group)
  55792. +{
  55793. + return fchownat(AT_FDCWD, path, owner, group, AT_SYMLINK_NOFOLLOW);
  55794. +}
  55795. +
  55796. +#else
  55797. +
  55798. +# if (__WORDSIZE == 32 && defined(__NR_lchown32)) || __WORDSIZE == 64
  55799. +# ifdef __NR_lchown32
  55800. +# undef __NR_lchown
  55801. +# define __NR_lchown __NR_lchown32
  55802. +# endif
  55803. _syscall3(int, lchown, const char *, path, uid_t, owner, gid_t, group)
  55804. -#else
  55805. +# else
  55806. -# define __NR___syscall_lchown __NR_lchown
  55807. +# define __NR___syscall_lchown __NR_lchown
  55808. static __inline__ _syscall3(int, __syscall_lchown, const char *, path,
  55809. __kernel_uid_t, owner, __kernel_gid_t, group)
  55810. @@ -35,4 +44,6 @@
  55811. return __syscall_lchown(path, owner, group);
  55812. }
  55813. +# endif
  55814. +
  55815. #endif
  55816. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/linkat.c uClibc-git/libc/sysdeps/linux/common/linkat.c
  55817. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/linkat.c 2012-05-15 09:20:09.000000000 +0200
  55818. +++ uClibc-git/libc/sysdeps/linux/common/linkat.c 2014-02-03 12:32:56.000000000 +0100
  55819. @@ -11,6 +11,7 @@
  55820. #ifdef __NR_linkat
  55821. _syscall5(int, linkat, int, fromfd, const char *, from, int, tofd, const char *, to, int, flags)
  55822. +libc_hidden_def(linkat)
  55823. #else
  55824. /* should add emulation with link() and /proc/self/fd/ ... */
  55825. #endif
  55826. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/link.c uClibc-git/libc/sysdeps/linux/common/link.c
  55827. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/link.c 2012-05-15 09:20:09.000000000 +0200
  55828. +++ uClibc-git/libc/sysdeps/linux/common/link.c 2014-02-03 12:32:56.000000000 +0100
  55829. @@ -9,4 +9,13 @@
  55830. #include <sys/syscall.h>
  55831. #include <unistd.h>
  55832. +
  55833. +#if defined __NR_linkat && !defined __NR_link
  55834. +# include <fcntl.h>
  55835. +int link(const char *oldpath, const char *newpath)
  55836. +{
  55837. + return linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0);
  55838. +}
  55839. +#else
  55840. _syscall2(int, link, const char *, oldpath, const char *, newpath)
  55841. +#endif
  55842. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/llseek.c uClibc-git/libc/sysdeps/linux/common/llseek.c
  55843. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/llseek.c 2012-05-15 09:20:09.000000000 +0200
  55844. +++ uClibc-git/libc/sysdeps/linux/common/llseek.c 2014-02-03 12:32:56.000000000 +0100
  55845. @@ -7,36 +7,26 @@
  55846. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55847. */
  55848. -#include <unistd.h>
  55849. -#include <sys/types.h>
  55850. +#include <_lfs_64.h>
  55851. #include <sys/syscall.h>
  55852. +#include <bits/wordsize.h>
  55853. /* Newer kernel ports have llseek() instead of _llseek() */
  55854. #if !defined __NR__llseek && defined __NR_llseek
  55855. # define __NR__llseek __NR_llseek
  55856. #endif
  55857. -#if defined __NR__llseek && defined __UCLIBC_HAS_LFS__
  55858. -
  55859. -loff_t lseek64(int fd, loff_t offset, int whence)
  55860. -{
  55861. - loff_t result;
  55862. - return (loff_t)(INLINE_SYSCALL(_llseek, 5, fd, (off_t) (offset >> 32),
  55863. - (off_t) (offset & 0xffffffff), &result, whence) ?: result);
  55864. -}
  55865. -
  55866. -#else
  55867. -
  55868. -loff_t lseek64(int fd, loff_t offset, int whence)
  55869. +#if defined __NR__llseek && __WORDSIZE == 32
  55870. +# include <unistd.h>
  55871. +# include <endian.h>
  55872. +# include <cancel.h>
  55873. +off64_t __NC(lseek64)(int fd, off64_t offset, int whence)
  55874. {
  55875. - return (loff_t)(lseek(fd, (off_t) (offset), whence));
  55876. + off64_t result;
  55877. + /* do we not need to handle the offset with __LONG_LONG_PAIR depending on endianness? */
  55878. + return (off64_t)INLINE_SYSCALL(_llseek, 5, fd, (off_t) OFF64_HI(offset),
  55879. + (off_t) OFF64_LO(offset), &result, whence) ?: result;
  55880. }
  55881. -
  55882. -#endif
  55883. -
  55884. -#ifndef __LINUXTHREADS_OLD__
  55885. -libc_hidden_def(lseek64)
  55886. -#else
  55887. -libc_hidden_weak(lseek64)
  55888. -strong_alias(lseek64,__libc_lseek64)
  55889. +CANCELLABLE_SYSCALL(off64_t, lseek64, (int fd, off64_t offset, int whence), (fd, offset, whence))
  55890. +lt_libc_hidden(lseek64)
  55891. #endif
  55892. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/longjmp.c uClibc-git/libc/sysdeps/linux/common/longjmp.c
  55893. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/longjmp.c 2012-05-15 09:20:09.000000000 +0200
  55894. +++ uClibc-git/libc/sysdeps/linux/common/longjmp.c 2014-02-03 12:32:56.000000000 +0100
  55895. @@ -12,23 +12,13 @@
  55896. Lesser General Public License for more details.
  55897. You should have received a copy of the GNU Lesser General Public
  55898. - License along with the GNU C Library; if not, write to the Free
  55899. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  55900. - 02111-1307 USA. */
  55901. + License along with the GNU C Library; if not, see
  55902. + <http://www.gnu.org/licenses/>. */
  55903. #include <stddef.h>
  55904. #include <setjmp.h>
  55905. #include <signal.h>
  55906. -
  55907. -extern void __longjmp (__jmp_buf __env, int __val) attribute_noreturn;
  55908. -libc_hidden_proto(__longjmp)
  55909. -
  55910. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  55911. -extern void _longjmp_unwind (jmp_buf env, int val);
  55912. -#endif
  55913. -
  55914. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  55915. /* Set the signal mask to the one specified in ENV, and jump
  55916. to the position specified in ENV, causing the setjmp
  55917. call there to return VAL, or 1 if VAL is 0. */
  55918. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lseek.c uClibc-git/libc/sysdeps/linux/common/lseek.c
  55919. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lseek.c 2012-05-15 09:20:09.000000000 +0200
  55920. +++ uClibc-git/libc/sysdeps/linux/common/lseek.c 2014-02-03 12:32:56.000000000 +0100
  55921. @@ -9,19 +9,55 @@
  55922. #include <sys/syscall.h>
  55923. #include <unistd.h>
  55924. +#include <cancel.h>
  55925. #ifdef __NR_lseek
  55926. -_syscall3(__off_t, lseek, int, fildes, __off_t, offset, int, whence)
  55927. +# define __NR___lseek_nocancel __NR_lseek
  55928. +_syscall3(off_t, __NC(lseek), int, fd, off_t, offset, int, whence)
  55929. +/* Use lseek64 if __NR_lseek is not defined but UCLIBC_HAS_LFS is enabled */
  55930. +#elif !defined __NR_lseek && defined __NR_llseek
  55931. +#include <endian.h>
  55932. +off_t __NC(lseek)(int fd, off_t offset, int whence)
  55933. +{
  55934. +#if defined __UCLIBC_HAS_LFS__
  55935. + return lseek64(fd, offset, whence);
  55936. +#elif __WORDSIZE == 32
  55937. + __off64_t result;
  55938. + __off_t high = 0;
  55939. + return INLINE_SYSCALL(llseek, 5, fd,
  55940. + __LONG_LONG_PAIR(high, offset),
  55941. + &result, whence) ?: result;
  55942. +#endif
  55943. +/* No need to handle __WORDSIZE == 64 as such a kernel won't define __NR_llseek */
  55944. +}
  55945. #else
  55946. -
  55947. -__off_t lseek(int fildes, __off_t offset, int whence)
  55948. +# include <errno.h>
  55949. +off_t __NC(lseek)(int fd, off_t offset attribute_unused, int whence)
  55950. {
  55951. - return lseek64(fildes, offset, whence);
  55952. + if (fd < 0) {
  55953. + __set_errno(EBADF);
  55954. + return -1;
  55955. + }
  55956. +
  55957. + switch(whence) {
  55958. + case SEEK_SET:
  55959. + case SEEK_CUR:
  55960. + case SEEK_END:
  55961. + break;
  55962. + default:
  55963. + __set_errno(EINVAL);
  55964. + return -1;
  55965. + }
  55966. +
  55967. + __set_errno(ENOSYS);
  55968. + return -1;
  55969. }
  55970. #endif
  55971. -#ifndef __LINUXTHREADS_OLD__
  55972. -libc_hidden_def(lseek)
  55973. -#else
  55974. -libc_hidden_weak(lseek)
  55975. -strong_alias(lseek,__libc_lseek)
  55976. +CANCELLABLE_SYSCALL(off_t, lseek, (int fd, off_t offset, int whence), (fd, offset, whence))
  55977. +lt_libc_hidden(lseek)
  55978. +#if defined __UCLIBC_HAS_LFS__ && (__WORDSIZE == 64 || (!defined __NR__llseek && !defined __NR_llseek))
  55979. +strong_alias_untyped(__NC(lseek),__NC(lseek64))
  55980. +strong_alias_untyped(lseek,lseek64)
  55981. +lt_strong_alias(lseek64)
  55982. +lt_libc_hidden(lseek64)
  55983. #endif
  55984. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat64.c uClibc-git/libc/sysdeps/linux/common/lstat64.c
  55985. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat64.c 2012-05-15 09:20:09.000000000 +0200
  55986. +++ uClibc-git/libc/sysdeps/linux/common/lstat64.c 2014-02-03 12:32:56.000000000 +0100
  55987. @@ -7,17 +7,27 @@
  55988. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  55989. */
  55990. +#include <_lfs_64.h>
  55991. #include <sys/syscall.h>
  55992. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_lstat64
  55993. # include <unistd.h>
  55994. # include <sys/stat.h>
  55995. -# include "xstatconv.h"
  55996. +#if defined __NR_fstatat64 && !defined __NR_lstat64
  55997. +# include <fcntl.h>
  55998. +
  55999. +int lstat64(const char *file_name, struct stat64 *buf)
  56000. +{
  56001. + return fstatat64(AT_FDCWD, file_name, buf, AT_SYMLINK_NOFOLLOW);
  56002. +}
  56003. +libc_hidden_def(lstat64)
  56004. +/* For systems which have both, prefer the old one */
  56005. +#elif defined __NR_lstat64
  56006. +# include "xstatconv.h"
  56007. # define __NR___syscall_lstat64 __NR_lstat64
  56008. -static __inline__ _syscall2(int, __syscall_lstat64, const char *, file_name,
  56009. - struct kernel_stat64 *, buf)
  56010. +static __always_inline _syscall2(int, __syscall_lstat64, const char *, file_name,
  56011. + struct kernel_stat64 *, buf)
  56012. int lstat64(const char *file_name, struct stat64 *buf)
  56013. {
  56014. @@ -31,5 +41,4 @@
  56015. return result;
  56016. }
  56017. libc_hidden_def(lstat64)
  56018. -
  56019. #endif
  56020. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat.c uClibc-git/libc/sysdeps/linux/common/lstat.c
  56021. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/lstat.c 2012-05-15 09:20:09.000000000 +0200
  56022. +++ uClibc-git/libc/sysdeps/linux/common/lstat.c 2014-02-03 12:32:56.000000000 +0100
  56023. @@ -10,12 +10,23 @@
  56024. #include <sys/syscall.h>
  56025. #include <unistd.h>
  56026. #include <sys/stat.h>
  56027. -#include "xstatconv.h"
  56028. +
  56029. +#if defined __NR_fstatat64 && !defined __NR_lstat
  56030. +# include <fcntl.h>
  56031. int lstat(const char *file_name, struct stat *buf)
  56032. {
  56033. + return fstatat(AT_FDCWD, file_name, buf, AT_SYMLINK_NOFOLLOW);
  56034. +}
  56035. +libc_hidden_def(lstat)
  56036. +
  56037. +/* For systems which have both, prefer the old one */
  56038. +#else
  56039. +# include "xstatconv.h"
  56040. +int lstat(const char *file_name, struct stat *buf)
  56041. +{
  56042. int result;
  56043. -#ifdef __NR_lstat64
  56044. +# ifdef __NR_lstat64
  56045. /* normal stat call has limited values for various stat elements
  56046. * e.g. uid device major/minor etc.
  56047. * so we use 64 variant if available
  56048. @@ -26,19 +37,22 @@
  56049. if (result == 0) {
  56050. __xstat32_conv(&kbuf, buf);
  56051. }
  56052. -#else
  56053. +# else
  56054. struct kernel_stat kbuf;
  56055. result = INLINE_SYSCALL(lstat, 2, file_name, &kbuf);
  56056. if (result == 0) {
  56057. __xstat_conv(&kbuf, buf);
  56058. }
  56059. -#endif
  56060. +# endif /* __NR_lstat64 */
  56061. return result;
  56062. }
  56063. libc_hidden_def(lstat)
  56064. -#if ! defined __NR_lstat64 && defined __UCLIBC_HAS_LFS__
  56065. +# if ! defined __NR_fstatat64 && ! defined __NR_lstat64 \
  56066. + && defined __UCLIBC_HAS_LFS__
  56067. strong_alias_untyped(lstat,lstat64)
  56068. libc_hidden_def(lstat64)
  56069. -#endif
  56070. +# endif
  56071. +
  56072. +#endif /* __NR_fstatat64 */
  56073. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/Makefile.in uClibc-git/libc/sysdeps/linux/common/Makefile.in
  56074. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  56075. +++ uClibc-git/libc/sysdeps/linux/common/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  56076. @@ -23,6 +23,7 @@
  56077. bdflush.c \
  56078. capget.c \
  56079. capset.c \
  56080. + dup3.c \
  56081. eventfd.c \
  56082. inotify.c \
  56083. ioperm.c \
  56084. @@ -64,24 +65,30 @@
  56085. # NPTL needs these internally: madvise.c
  56086. CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) += madvise.c
  56087. ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  56088. -CSRC- += fork.c getpid.c raise.c open.c close.c read.c write.c
  56089. +CSRC- += fork.c getpid.c raise.c #open.c close.c read.c write.c
  56090. CSRC- += $(if $(findstring =arm=,=$(TARGET_ARCH)=),vfork.c)
  56091. CSRC- += $(if $(findstring =x86_64=,=$(TARGET_ARCH)=),vfork.c)
  56092. -CSRC- += $(if $(findstring =mips=y=,=$(TARGET_ARCH)=$(CONFIG_MIPS_O32_ABI)=),waitpid.c)
  56093. +#CSRC- += $(if $(findstring =mips=y=,=$(TARGET_ARCH)=$(CONFIG_MIPS_O32_ABI)=),waitpid.c)
  56094. +CSRC- += $(if $(findstring =metag=,=$(TARGET_ARCH)=),vfork.c)
  56095. +endif
  56096. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  56097. +# No conversion is needed for new architectures
  56098. +CSRC- += xstatconv.c
  56099. endif
  56100. # stubbed out in mman.h
  56101. CSRC-$(ARCH_USE_MMU) += msync.c
  56102. # we need these internally: getdomainname.c
  56103. CSRC-$(UCLIBC_BSD_SPECIFIC) += mincore.c setdomainname.c
  56104. CSRC-$(UCLIBC_NTP_LEGACY) += ntp_gettime.c
  56105. -# aio_cancel|aio_error|aio_fsync|aio_read|aio_return|aio_suspend|aio_write|clock_getres|clock_gettime|clock_settime|clock_settime|fdatasync|lio_listio|mlockall|munlockall|mlock|munlock|mq_close|mq_getattr|mq_notify|mq_open|mq_receive|mq_timedreceive|mq_send|mq_timedsend|mq_setattr|mq_unlink|nanosleep|sched_getparam|sched_get_priority_max|sched_get_priority_min|sched_getscheduler|sched_rr_get_interval|sched_setparam|sched_setscheduler|sem_close|sem_destroy|sem_getvalue|sem_init|sem_open|sem_post|sem_trywait|sem_wait|sem_unlink|sem_wait|shm_open|shm_unlink|sigqueue|sigtimedwait|sigwaitinfo|sigwaitinfo|timer_create|timer_delete|timer_getoverrun|timer_gettime|timer_settime
  56106. +# aio_cancel|aio_error|aio_fsync|aio_read|aio_return|aio_suspend|aio_write|clock_getres|clock_gettime|clock_settime|clock_settime|fdatasync|lio_listio|mlockall|munlockall|mlock|munlock|mq_close|mq_getattr|mq_notify|mq_open|mq_receive|mq_timedreceive|mq_send|mq_timedsend|mq_setattr|mq_unlink|nanosleep|sched_getparam|sched_get_priority_max|sched_get_priority_min|sched_getscheduler|sched_rr_get_interval|sched_setparam|sched_setscheduler|sem_close|sem_destroy|sem_getvalue|sem_init|sem_open|sem_post|sem_trywait|sem_wait|sem_unlink|sem_wait|shm_open|shm_unlink|sigqueue|sigtimedwait|sigwaitinfo|timer_create|timer_delete|timer_getoverrun|timer_gettime|timer_settime
  56107. CSRC-$(UCLIBC_HAS_REALTIME) += clock_getres.c clock_gettime.c clock_settime.c \
  56108. fdatasync.c mlockall.c mlock.c munlockall.c munlock.c \
  56109. nanosleep.c __rt_sigtimedwait.c __rt_sigwaitinfo.c sched_getparam.c \
  56110. sched_get_priority_max.c sched_get_priority_min.c sched_getscheduler.c \
  56111. sched_rr_get_interval.c sched_setparam.c sched_setscheduler.c sigqueue.c
  56112. # clock_getcpuclockid|clock_nanosleep|mq_timedreceive|mq_timedsend|posix_fadvise|posix_fallocate|posix_madvise|posix_memalign|posix_mem_offset|posix_spawnattr_destroy|posix_spawnattr_init|posix_spawnattr_getflags|posix_spawnattr_setflags|posix_spawnattr_getpgroup|posix_spawnattr_setpgroup|posix_spawnattr_getschedparam|posix_spawnattr_setschedparam|posix_spawnattr_getschedpolicy|posix_spawnattr_setschedpolicy|posix_spawnattr_getsigdefault|posix_spawnattr_setsigdefault|posix_spawnattr_getsigmask|posix_spawnattr_setsigmask|posix_spawnattr_init|posix_spawnattr_setflags|posix_spawnattr_setpgroup|posix_spawnattr_setschedparam|posix_spawnattr_setschedpolicy|posix_spawnattr_setsigdefault|posix_spawnattr_setsigmask|posix_spawn_file_actions_addclose|posix_spawn_file_actions_addopen|posix_spawn_file_actions_adddup2|posix_spawn_file_actions_addopen|posix_spawn_file_actions_destroy|posix_spawn_file_actions_init|posix_spawn_file_actions_init|posix_spawn|posix_spawnp|posix_spawnp|posix_typed_mem_get_info|pthread_mutex_timedlock|sem_timedwait
  56113. -CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c
  56114. +CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c \
  56115. + posix_fallocate.c posix_fallocate64.c
  56116. CSRC-$(UCLIBC_SUSV4_LEGACY) += utime.c
  56117. CSRC-$(UCLIBC_HAS_EPOLL) += epoll.c
  56118. CSRC-$(UCLIBC_HAS_XATTR) += xattr.c
  56119. @@ -96,11 +103,11 @@
  56120. # provided via pthreads builddir
  56121. CSRC-y := $(filter-out $(libc_a_CSRC) $(notdir $(libpthread_libc_OBJS:.o=.c)),$(CSRC-y))
  56122. -SSRC := $(filter-out $(libc_a_SSRC) $(notdir $(libpthread_libc_OBJS:.o=.S)),$(SSRC))
  56123. +SSRC-y := $(filter-out $(libc_a_SSRC) $(notdir $(libpthread_libc_OBJS:.o=.S)),$(SSRC-y))
  56124. # fails for some reason
  56125. -ifneq ($(strip $(ARCH_OBJS)),)
  56126. -CSRC-y := $(filter-out $(notdir $(ARCH_OBJS:.o=.c)) $(ARCH_OBJ_FILTEROUT),$(CSRC-y))
  56127. +ifneq ($(strip $(ARCH_OBJS-y)),)
  56128. +CSRC-y := $(filter-out $(notdir $(ARCH_OBJS-y:.o=.c)) $(ARCH_OBJ_FILTEROUT-y),$(CSRC-y))
  56129. endif
  56130. CFLAGS-ssp.c := $(SSP_DISABLE_FLAGS)
  56131. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdirat.c uClibc-git/libc/sysdeps/linux/common/mkdirat.c
  56132. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdirat.c 2012-05-15 09:20:09.000000000 +0200
  56133. +++ uClibc-git/libc/sysdeps/linux/common/mkdirat.c 2014-02-03 12:32:56.000000000 +0100
  56134. @@ -11,6 +11,7 @@
  56135. #ifdef __NR_mkdirat
  56136. _syscall3(int, mkdirat, int, fd, const char *, path, mode_t, mode)
  56137. +libc_hidden_def(mkdirat)
  56138. #else
  56139. /* should add emulation with mkdir() and /proc/self/fd/ ... */
  56140. #endif
  56141. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdir.c uClibc-git/libc/sysdeps/linux/common/mkdir.c
  56142. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mkdir.c 2012-05-15 09:20:09.000000000 +0200
  56143. +++ uClibc-git/libc/sysdeps/linux/common/mkdir.c 2014-02-03 12:32:56.000000000 +0100
  56144. @@ -10,8 +10,15 @@
  56145. #include <sys/syscall.h>
  56146. #include <sys/stat.h>
  56147. +#if defined __NR_mkdirat && !defined __NR_mkdir
  56148. +# include <fcntl.h>
  56149. +int mkdir(const char *pathname, mode_t mode)
  56150. +{
  56151. + return mkdirat(AT_FDCWD, pathname, mode);
  56152. +}
  56153. -#define __NR___syscall_mkdir __NR_mkdir
  56154. +#else
  56155. +# define __NR___syscall_mkdir __NR_mkdir
  56156. static __inline__ _syscall2(int, __syscall_mkdir, const char *, pathname,
  56157. __kernel_mode_t, mode)
  56158. @@ -19,4 +26,5 @@
  56159. {
  56160. return (__syscall_mkdir(pathname, mode));
  56161. }
  56162. +#endif
  56163. libc_hidden_def(mkdir)
  56164. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mkfifo.c uClibc-git/libc/sysdeps/linux/common/mkfifo.c
  56165. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mkfifo.c 2012-05-15 09:20:09.000000000 +0200
  56166. +++ uClibc-git/libc/sysdeps/linux/common/mkfifo.c 2014-02-03 12:32:56.000000000 +0100
  56167. @@ -12,9 +12,8 @@
  56168. Lesser General Public License for more details.
  56169. You should have received a copy of the GNU Lesser General Public
  56170. - License along with the GNU C Library; if not, write to the Free
  56171. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56172. - 02111-1307 USA. */
  56173. + License along with the GNU C Library; if not, see
  56174. + <http://www.gnu.org/licenses/>. */
  56175. #include <errno.h>
  56176. #include <stddef.h>
  56177. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mknod.c uClibc-git/libc/sysdeps/linux/common/mknod.c
  56178. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mknod.c 2012-05-15 09:20:09.000000000 +0200
  56179. +++ uClibc-git/libc/sysdeps/linux/common/mknod.c 2014-02-03 12:32:56.000000000 +0100
  56180. @@ -10,6 +10,13 @@
  56181. #include <sys/syscall.h>
  56182. #include <sys/stat.h>
  56183. +#if defined __NR_mknodat && !defined __NR_mknod
  56184. +# include <fcntl.h>
  56185. +int mknod(const char *path, mode_t mode, dev_t dev)
  56186. +{
  56187. + return mknodat(AT_FDCWD, path, mode, dev);
  56188. +}
  56189. +#else
  56190. int mknod(const char *path, mode_t mode, dev_t dev)
  56191. {
  56192. unsigned long long int k_dev;
  56193. @@ -19,4 +26,5 @@
  56194. return INLINE_SYSCALL(mknod, 3, path, mode, (unsigned int)k_dev);
  56195. }
  56196. +#endif
  56197. libc_hidden_def(mknod)
  56198. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap64.c uClibc-git/libc/sysdeps/linux/common/mmap64.c
  56199. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap64.c 2012-05-15 09:20:09.000000000 +0200
  56200. +++ uClibc-git/libc/sysdeps/linux/common/mmap64.c 2014-02-03 12:32:56.000000000 +0100
  56201. @@ -6,18 +6,12 @@
  56202. /* Massivly hacked up for uClibc by Erik Andersen */
  56203. #include <_lfs_64.h>
  56204. -
  56205. -#ifdef __UCLIBC_HAS_LFS__
  56206. -
  56207. -#include <errno.h>
  56208. #include <stdint.h>
  56209. -#include <unistd.h>
  56210. -#include <sys/mman.h>
  56211. #include <sys/syscall.h>
  56212. -#include <bits/uClibc_page.h>
  56213. -
  56214. +#include <errno.h>
  56215. +#include <sys/mman.h>
  56216. -# if !defined __NR_mmap2
  56217. +#ifndef __NR_mmap2
  56218. /*
  56219. * This version is a stub that just chops off everything at the mmap 32 bit
  56220. @@ -27,7 +21,7 @@
  56221. *
  56222. */
  56223. -__ptr_t mmap64(__ptr_t addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56224. +void *mmap64(void *addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56225. {
  56226. if (offset != (off_t) offset ||
  56227. (offset + len) != (off_t) (offset + len)) {
  56228. @@ -38,17 +32,18 @@
  56229. return mmap(addr, len, prot, flags, fd, (off_t) offset);
  56230. }
  56231. -# else
  56232. +#else
  56233. +# include <bits/uClibc_page.h>
  56234. -/* Some architectures always use 12 as page shift for mmap2() eventhough the
  56235. +/* Some architectures always use 12 as page shift for mmap2() even though the
  56236. * real PAGE_SHIFT != 12. Other architectures use the same value as
  56237. * PAGE_SHIFT...
  56238. */
  56239. -# ifndef MMAP2_PAGE_SHIFT
  56240. -# define MMAP2_PAGE_SHIFT 12
  56241. -# endif
  56242. +# ifndef MMAP2_PAGE_SHIFT
  56243. +# define MMAP2_PAGE_SHIFT 12
  56244. +# endif
  56245. -__ptr_t mmap64(__ptr_t addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56246. +void *mmap64(void *addr, size_t len, int prot, int flags, int fd, __off64_t offset)
  56247. {
  56248. /*
  56249. * Some arches check the size in INLINE_SYSCALL() and barf if it's
  56250. @@ -73,8 +68,7 @@
  56251. */
  56252. sysoff = (uint64_t)offset >> MMAP2_PAGE_SHIFT;
  56253. - return (__ptr_t) INLINE_SYSCALL(mmap2, 6, addr, len, prot, flags, fd, sysoff);
  56254. + return (void*) INLINE_SYSCALL(mmap2, 6, addr, len, prot, flags, fd, sysoff);
  56255. }
  56256. -# endif
  56257. -#endif /* __UCLIBC_HAS_LFS__ */
  56258. +#endif
  56259. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap.c uClibc-git/libc/sysdeps/linux/common/mmap.c
  56260. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mmap.c 2012-05-15 09:20:09.000000000 +0200
  56261. +++ uClibc-git/libc/sysdeps/linux/common/mmap.c 2014-02-03 12:32:56.000000000 +0100
  56262. @@ -7,25 +7,57 @@
  56263. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56264. */
  56265. -#include <sys/syscall.h>
  56266. -#include <unistd.h>
  56267. #include <sys/mman.h>
  56268. -#include <bits/uClibc_page.h>
  56269. +#include <sys/syscall.h>
  56270. -#ifdef __NR_mmap
  56271. +#if defined __UCLIBC_MMAP_HAS_6_ARGS__ && defined __NR_mmap
  56272. +# ifndef _syscall6
  56273. +# error disable __UCLIBC_MMAP_HAS_6_ARGS__ for this arch
  56274. +# endif
  56275. -#ifdef __UCLIBC_MMAP_HAS_6_ARGS__
  56276. +# define __NR__mmap __NR_mmap
  56277. +static _syscall6(void *, _mmap, void *, addr, size_t, len,
  56278. + int, prot, int, flags, int, fd, __off_t, offset)
  56279. -_syscall6(void *, mmap, void *, start, size_t, length,
  56280. - int, prot, int, flags, int, fd, off_t, offset)
  56281. +#elif defined __NR_mmap2 && defined _syscall6
  56282. -#else
  56283. +# include <errno.h>
  56284. +# include <bits/uClibc_page.h>
  56285. +# ifndef MMAP2_PAGE_SHIFT
  56286. +# define MMAP2_PAGE_SHIFT 12
  56287. +# endif
  56288. -# define __NR__mmap __NR_mmap
  56289. -static __inline__ _syscall1(__ptr_t, _mmap, unsigned long *, buffer)
  56290. -__ptr_t mmap(__ptr_t addr, size_t len, int prot,
  56291. - int flags, int fd, __off_t offset)
  56292. +# define __NR___syscall_mmap2 __NR_mmap2
  56293. +static __inline__ _syscall6(void *, __syscall_mmap2, void *, addr, size_t, len,
  56294. + int, prot, int, flags, int, fd, __off_t, offset)
  56295. +
  56296. +static void *_mmap(void *addr, size_t len, int prot, int flags,
  56297. + int fd, __off_t offset)
  56298. +{
  56299. + const int mmap2_shift = MMAP2_PAGE_SHIFT;
  56300. + const __off_t mmap2_mask = ((__off_t) 1 << MMAP2_PAGE_SHIFT) - 1;
  56301. + /* check if offset is page aligned */
  56302. + if (offset & mmap2_mask) {
  56303. + __set_errno(EINVAL);
  56304. + return MAP_FAILED;
  56305. + }
  56306. +# ifdef __USE_FILE_OFFSET64
  56307. + return __syscall_mmap2(addr, len, prot, flags, fd,
  56308. + ((__u_quad_t) offset >> mmap2_shift));
  56309. +# else
  56310. + return __syscall_mmap2(addr, len, prot, flags, fd,
  56311. + ((__u_long) offset >> mmap2_shift));
  56312. +# endif
  56313. +}
  56314. +
  56315. +#elif defined __NR_mmap
  56316. +
  56317. +# define __NR___syscall_mmap __NR_mmap
  56318. +static __inline__ _syscall1(void *, __syscall_mmap, unsigned long *, buffer)
  56319. +
  56320. +static void *_mmap(void *addr, size_t len, int prot, int flags,
  56321. + int fd, __off_t offset)
  56322. {
  56323. unsigned long buffer[6];
  56324. @@ -35,37 +67,14 @@
  56325. buffer[3] = (unsigned long) flags;
  56326. buffer[4] = (unsigned long) fd;
  56327. buffer[5] = (unsigned long) offset;
  56328. - return (__ptr_t) _mmap(buffer);
  56329. + return __syscall_mmap(buffer);
  56330. }
  56331. -#endif
  56332. -
  56333. -libc_hidden_def(mmap)
  56334. -
  56335. -#elif defined(__NR_mmap2)
  56336. -
  56337. +#else
  56338. -#define __NR___syscall_mmap2 __NR_mmap2
  56339. -static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
  56340. - size_t, len, int, prot, int, flags, int, fd, off_t, offset)
  56341. +# error "Your architecture doesn't seem to provide mmap() !?"
  56342. -/* Some architectures always use 12 as page shift for mmap2() eventhough the
  56343. - * real PAGE_SHIFT != 12. Other architectures use the same value as
  56344. - * PAGE_SHIFT...
  56345. - */
  56346. -# ifndef MMAP2_PAGE_SHIFT
  56347. -# define MMAP2_PAGE_SHIFT 12
  56348. -# endif
  56349. -
  56350. -__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
  56351. -{
  56352. - if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1)) {
  56353. - __set_errno(EINVAL);
  56354. - return MAP_FAILED;
  56355. - }
  56356. - return __syscall_mmap2(addr, len, prot, flags, fd, offset >> MMAP2_PAGE_SHIFT);
  56357. -}
  56358. +#endif
  56359. +strong_alias(_mmap,mmap)
  56360. libc_hidden_def(mmap)
  56361. -
  56362. -#endif
  56363. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/mount.c uClibc-git/libc/sysdeps/linux/common/mount.c
  56364. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/mount.c 2012-05-15 09:20:09.000000000 +0200
  56365. +++ uClibc-git/libc/sysdeps/linux/common/mount.c 2014-02-03 12:32:56.000000000 +0100
  56366. @@ -10,5 +10,5 @@
  56367. #include <sys/syscall.h>
  56368. #include <sys/mount.h>
  56369. _syscall5(int, mount, const char *, specialfile, const char *, dir,
  56370. - const char *, filesystemtype, unsigned long, rwflag,
  56371. - const void *, data)
  56372. + const char *, filesystemtype, unsigned long, rwflag,
  56373. + const void *, data)
  56374. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/msync.c uClibc-git/libc/sysdeps/linux/common/msync.c
  56375. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/msync.c 2012-05-15 09:20:09.000000000 +0200
  56376. +++ uClibc-git/libc/sysdeps/linux/common/msync.c 2014-02-03 12:32:56.000000000 +0100
  56377. @@ -8,38 +8,14 @@
  56378. */
  56379. #include <sys/syscall.h>
  56380. -#include <unistd.h>
  56381. -#include <sys/mman.h>
  56382. -#ifdef __NR_msync
  56383. +#if defined __NR_msync && defined __ARCH_USE_MMU__
  56384. +# include <sys/mman.h>
  56385. +# include <cancel.h>
  56386. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56387. -#include <sysdep-cancel.h>
  56388. -#else
  56389. -#define SINGLE_THREAD_P 1
  56390. -#endif
  56391. -
  56392. -#define __NR___syscall_msync __NR_msync
  56393. -static __always_inline _syscall3(int, __syscall_msync, void *, addr, size_t, length,
  56394. - int, flags)
  56395. -
  56396. -extern __typeof(msync) __libc_msync;
  56397. -int __libc_msync(void * addr, size_t length, int flags)
  56398. -{
  56399. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56400. - int oldtype, result;
  56401. -#endif
  56402. -
  56403. - if (SINGLE_THREAD_P)
  56404. - return __syscall_msync(addr, length, flags);
  56405. -
  56406. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56407. - oldtype = LIBC_CANCEL_ASYNC ();
  56408. - result = __syscall_msync(addr, length, flags);
  56409. - LIBC_CANCEL_RESET (oldtype);
  56410. - return result;
  56411. -#endif
  56412. -}
  56413. -weak_alias(__libc_msync,msync)
  56414. +# define __NR___msync_nocancel __NR_msync
  56415. +static _syscall3(int, __NC(msync), void *, addr, size_t, length, int, flags)
  56416. +CANCELLABLE_SYSCALL(int, msync, (void *addr, size_t length, int flags),
  56417. + (addr, length, flags))
  56418. #endif
  56419. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/munmap.c uClibc-git/libc/sysdeps/linux/common/munmap.c
  56420. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/munmap.c 2012-05-15 09:20:09.000000000 +0200
  56421. +++ uClibc-git/libc/sysdeps/linux/common/munmap.c 2014-02-03 12:32:56.000000000 +0100
  56422. @@ -8,9 +8,7 @@
  56423. */
  56424. #include <sys/syscall.h>
  56425. -#include <unistd.h>
  56426. #include <sys/mman.h>
  56427. -
  56428. _syscall2(int, munmap, void *, start, size_t, length)
  56429. libc_hidden_def(munmap)
  56430. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/nanosleep.c uClibc-git/libc/sysdeps/linux/common/nanosleep.c
  56431. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/nanosleep.c 2012-05-15 09:20:09.000000000 +0200
  56432. +++ uClibc-git/libc/sysdeps/linux/common/nanosleep.c 2014-02-03 12:32:56.000000000 +0100
  56433. @@ -9,32 +9,13 @@
  56434. #include <sys/syscall.h>
  56435. #include <time.h>
  56436. +#include <cancel.h>
  56437. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56438. -#include <sysdep-cancel.h>
  56439. -#include <pthreadP.h>
  56440. -#else
  56441. -#define SINGLE_THREAD_P 1
  56442. -#endif
  56443. -
  56444. -#define __NR___syscall_nanosleep __NR_nanosleep
  56445. -static inline _syscall2(int, __syscall_nanosleep, const struct timespec *, req,
  56446. - struct timespec *, rem);
  56447. -
  56448. -extern __typeof(nanosleep) __libc_nanosleep;
  56449. -
  56450. -int __libc_nanosleep(const struct timespec *req, struct timespec *rem)
  56451. -{
  56452. - if (SINGLE_THREAD_P)
  56453. - return __syscall_nanosleep(req, rem);
  56454. -
  56455. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56456. - int oldtype = LIBC_CANCEL_ASYNC ();
  56457. - int result = __syscall_nanosleep(req, rem);
  56458. - LIBC_CANCEL_RESET (oldtype);
  56459. - return result;
  56460. -#endif
  56461. -}
  56462. -
  56463. -weak_alias(__libc_nanosleep,nanosleep)
  56464. -libc_hidden_weak(nanosleep)
  56465. +#define __NR___nanosleep_nocancel __NR_nanosleep
  56466. +static _syscall2(int, __NC(nanosleep), const struct timespec *, req,
  56467. + struct timespec *, rem);
  56468. +
  56469. +CANCELLABLE_SYSCALL(int, nanosleep,
  56470. + (const struct timespec *req, struct timespec *rem),
  56471. + (req, rem))
  56472. +lt_libc_hidden(nanosleep)
  56473. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/nice.c uClibc-git/libc/sysdeps/linux/common/nice.c
  56474. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/nice.c 2012-05-15 09:20:09.000000000 +0200
  56475. +++ uClibc-git/libc/sysdeps/linux/common/nice.c 2014-02-03 12:32:56.000000000 +0100
  56476. @@ -25,15 +25,15 @@
  56477. static __inline__ int int_add_no_wrap(int a, int b)
  56478. {
  56479. - int s = a + b;
  56480. -
  56481. if (b < 0) {
  56482. - if (s > a) s = INT_MIN;
  56483. + if (a < INT_MIN - b)
  56484. + return INT_MIN;
  56485. } else {
  56486. - if (s < a) s = INT_MAX;
  56487. + if (a > INT_MAX - b)
  56488. + return INT_MAX;
  56489. }
  56490. - return s;
  56491. + return a + b;
  56492. }
  56493. static __inline__ int __syscall_nice(int incr)
  56494. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/noophooks.c uClibc-git/libc/sysdeps/linux/common/noophooks.c
  56495. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/noophooks.c 2012-05-15 09:20:09.000000000 +0200
  56496. +++ uClibc-git/libc/sysdeps/linux/common/noophooks.c 2014-02-03 12:32:56.000000000 +0100
  56497. @@ -14,11 +14,8 @@
  56498. Lesser General Public License for more details.
  56499. You should have received a copy of the GNU Lesser General Public
  56500. - License along with the GNU C Library; if not, write to the Free
  56501. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56502. - 02111-1307 USA. */
  56503. -
  56504. -#include <libc-internal.h>
  56505. + License along with the GNU C Library; if not, see
  56506. + <http://www.gnu.org/licenses/>. */
  56507. void
  56508. __cyg_profile_func_enter (attribute_unused void *this_fn, attribute_unused void *call_site);
  56509. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/not-cancel.h uClibc-git/libc/sysdeps/linux/common/not-cancel.h
  56510. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  56511. +++ uClibc-git/libc/sysdeps/linux/common/not-cancel.h 2014-02-03 12:32:56.000000000 +0100
  56512. @@ -1,5 +1,5 @@
  56513. /* Uncancelable versions of cancelable interfaces. Linux version.
  56514. - Copyright (C) 2003 Free Software Foundation, Inc.
  56515. + Copyright (C) 2003, 2006 Free Software Foundation, Inc.
  56516. This file is part of the GNU C Library.
  56517. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
  56518. @@ -14,17 +14,50 @@
  56519. Lesser General Public License for more details.
  56520. You should have received a copy of the GNU Lesser General Public
  56521. - License along with the GNU C Library; if not, write to the Free
  56522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56523. - 02111-1307 USA. */
  56524. + License along with the GNU C Library; if not, see
  56525. + <http://www.gnu.org/licenses/>. */
  56526. +#include <sys/types.h>
  56527. #include <sysdep.h>
  56528. +#ifdef NOT_IN_libc
  56529. +
  56530. /* Uncancelable open. */
  56531. +#if defined __NR_openat && !defined __NR_open
  56532. +#define open_not_cancel(name, flags, mode) \
  56533. + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), (flags), (mode))
  56534. +#define open_not_cancel_2(name, flags) \
  56535. + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), (flags))
  56536. +#else
  56537. #define open_not_cancel(name, flags, mode) \
  56538. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  56539. #define open_not_cancel_2(name, flags) \
  56540. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  56541. +#endif
  56542. +
  56543. +#if 0
  56544. +/* Uncancelable openat. */
  56545. +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  56546. +extern int __openat_nocancel (int fd, const char *fname, int oflag,
  56547. + mode_t mode) attribute_hidden;
  56548. +extern int __openat64_nocancel (int fd, const char *fname, int oflag,
  56549. + mode_t mode) attribute_hidden;
  56550. +#else
  56551. +# define __openat_nocancel(fd, fname, oflag, mode) \
  56552. + openat (fd, fname, oflag, mode)
  56553. +# define __openat64_nocancel(fd, fname, oflag, mode) \
  56554. + openat64 (fd, fname, oflag, mode)
  56555. +#endif
  56556. +
  56557. +#define openat_not_cancel(fd, fname, oflag, mode) \
  56558. + __openat_nocancel (fd, fname, oflag, mode)
  56559. +#define openat_not_cancel_3(fd, fname, oflag) \
  56560. + __openat_nocancel (fd, fname, oflag, 0)
  56561. +#define openat64_not_cancel(fd, fname, oflag, mode) \
  56562. + __openat64_nocancel (fd, fname, oflag, mode)
  56563. +#define openat64_not_cancel_3(fd, fname, oflag) \
  56564. + __openat64_nocancel (fd, fname, oflag, 0)
  56565. +#endif
  56566. /* Uncancelable close. */
  56567. #define close_not_cancel(fd) \
  56568. @@ -37,10 +70,13 @@
  56569. #define read_not_cancel(fd, buf, n) \
  56570. INLINE_SYSCALL (read, 3, (fd), (buf), (n))
  56571. +#ifdef __LINUXTHREADS_NEW__
  56572. /* Uncancelable write. */
  56573. #define write_not_cancel(fd, buf, n) \
  56574. INLINE_SYSCALL (write, 3, (fd), (buf), (n))
  56575. +#endif
  56576. +#if 0
  56577. /* Uncancelable writev. */
  56578. #define writev_not_cancel_no_status(fd, iov, n) \
  56579. (void) ({ INTERNAL_SYSCALL_DECL (err); \
  56580. @@ -49,12 +85,68 @@
  56581. /* Uncancelable fcntl. */
  56582. #define fcntl_not_cancel(fd, cmd, val) \
  56583. __fcntl_nocancel (fd, cmd, val)
  56584. +#endif
  56585. +#ifdef __LINUXTHREADS_NEW__
  56586. /* Uncancelable waitpid. */
  56587. -#ifdef __NR_waitpid
  56588. +#if 0 /*def __NR_waitpid*/
  56589. # define waitpid_not_cancel(pid, stat_loc, options) \
  56590. INLINE_SYSCALL (waitpid, 3, pid, stat_loc, options)
  56591. #else
  56592. # define waitpid_not_cancel(pid, stat_loc, options) \
  56593. INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL)
  56594. #endif
  56595. +#endif
  56596. +
  56597. +/* Uncancelable pause. */
  56598. +#ifdef __NR_pause
  56599. +# define pause_not_cancel() \
  56600. + INLINE_SYSCALL (pause, 0)
  56601. +#else
  56602. +# include <unistd.h>
  56603. +extern __typeof(pause) __pause_nocancel;
  56604. +# define pause_not_cancel() \
  56605. + __pause_nocancel ()
  56606. +#endif
  56607. +
  56608. +/* Uncancelable nanosleep. */
  56609. +#ifdef __NR_nanosleep
  56610. +# define nanosleep_not_cancel(requested_time, remaining) \
  56611. + INLINE_SYSCALL (nanosleep, 2, requested_time, remaining)
  56612. +/*#else
  56613. +# define nanosleep_not_cancel(requested_time, remaining) \
  56614. + __nanosleep_nocancel (requested_time, remaining)*/
  56615. +#endif
  56616. +
  56617. +#if 0
  56618. +/* Uncancelable sigsuspend. */
  56619. +#define sigsuspend_not_cancel(set) \
  56620. + __sigsuspend_nocancel (set)
  56621. +#endif
  56622. +
  56623. +#elif !defined NOT_IN_libc
  56624. +
  56625. +#include <cancel.h>
  56626. +#include <fcntl.h>
  56627. +#include <unistd.h>
  56628. +
  56629. +#define open_not_cancel(name, flags, mode) \
  56630. + __NC(open)(name, flags, mode)
  56631. +#define open_not_cancel_2(name, flags) \
  56632. + __NC(open2)(name, flags)
  56633. +
  56634. +#define close_not_cancel(fd) \
  56635. + __NC(close)(fd)
  56636. +#define close_not_cancel_no_status(fd) \
  56637. + __close_nocancel_no_status(fd)
  56638. +
  56639. +#define read_not_cancel(fd, buf, n) \
  56640. + __NC(read)(fd, buf, n)
  56641. +
  56642. +#define write_not_cancel(fd, buf, n) \
  56643. + __NC(write)(fd, buf, n)
  56644. +
  56645. +#define fcntl_not_cancel(fd, cmd, val) \
  56646. + __NC(fcntl)(fd, cmd, val)
  56647. +
  56648. +#endif
  56649. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ntp_gettime.c uClibc-git/libc/sysdeps/linux/common/ntp_gettime.c
  56650. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ntp_gettime.c 2012-05-15 09:20:09.000000000 +0200
  56651. +++ uClibc-git/libc/sysdeps/linux/common/ntp_gettime.c 2014-02-03 12:32:56.000000000 +0100
  56652. @@ -12,9 +12,8 @@
  56653. Lesser General Public License for more details.
  56654. You should have received a copy of the GNU Lesser General Public
  56655. - License along with the GNU C Library; if not, write to the Free
  56656. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56657. - 02111-1307 USA. */
  56658. + License along with the GNU C Library; if not, see
  56659. + <http://www.gnu.org/licenses/>. */
  56660. #include <sys/timex.h>
  56661. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/open64.c uClibc-git/libc/sysdeps/linux/common/open64.c
  56662. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/open64.c 2012-05-15 09:20:09.000000000 +0200
  56663. +++ uClibc-git/libc/sysdeps/linux/common/open64.c 2014-02-03 12:32:56.000000000 +0100
  56664. @@ -4,54 +4,30 @@
  56665. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56666. */
  56667. -#include <features.h>
  56668. +#include <_lfs_64.h>
  56669. #include <fcntl.h>
  56670. #include <stdarg.h>
  56671. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56672. -#include <errno.h>
  56673. -#include <sysdep-cancel.h>
  56674. -#endif
  56675. -
  56676. -#ifdef __UCLIBC_HAS_LFS__
  56677. -
  56678. -#ifndef O_LARGEFILE
  56679. -# define O_LARGEFILE 0100000
  56680. -#endif
  56681. +#include <cancel.h>
  56682. /* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
  56683. a third argument is the file protection. */
  56684. -int open64 (const char *file, int oflag, ...)
  56685. +int open64(const char *file, int oflag, ...)
  56686. {
  56687. - mode_t mode = 0;
  56688. -
  56689. - if (oflag & O_CREAT)
  56690. - {
  56691. - va_list arg;
  56692. - va_start (arg, oflag);
  56693. - mode = va_arg (arg, mode_t);
  56694. - va_end (arg);
  56695. - }
  56696. -
  56697. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56698. - if (SINGLE_THREAD_P)
  56699. - return INLINE_SYSCALL (open, 3, file, oflag | O_LARGEFILE, mode);
  56700. + mode_t mode = 0;
  56701. - int oldtype = LIBC_CANCEL_ASYNC ();
  56702. -
  56703. - int result = INLINE_SYSCALL (open, 3, file, oflag | O_LARGEFILE, mode);
  56704. -
  56705. - LIBC_CANCEL_RESET (oldtype);
  56706. -
  56707. - return result;
  56708. + if (oflag & O_CREAT) {
  56709. + va_list arg;
  56710. + va_start (arg, oflag);
  56711. + mode = va_arg (arg, mode_t);
  56712. + va_end (arg);
  56713. + }
  56714. +#if defined __NR_openat && !defined __NR_open
  56715. + return openat(AT_FDCWD, file, oflag | O_LARGEFILE, mode);
  56716. #else
  56717. - return open(file, oflag | O_LARGEFILE, mode);
  56718. + return open(file, oflag | O_LARGEFILE, mode);
  56719. #endif
  56720. }
  56721. -#ifndef __LINUXTHREADS_OLD__
  56722. -libc_hidden_def(open64)
  56723. -#else
  56724. -libc_hidden_weak(open64)
  56725. -strong_alias(open64,__libc_open64)
  56726. -#endif
  56727. -
  56728. -#endif /* __UCLIBC_HAS_LFS__ */
  56729. +lt_strong_alias(open64)
  56730. +lt_libc_hidden(open64)
  56731. +/* open handled cancellation, noop on uClibc */
  56732. +LIBC_CANCEL_HANDLED();
  56733. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/openat64.c uClibc-git/libc/sysdeps/linux/common/openat64.c
  56734. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/openat64.c 2012-05-15 09:20:09.000000000 +0200
  56735. +++ uClibc-git/libc/sysdeps/linux/common/openat64.c 2014-02-03 12:32:56.000000000 +0100
  56736. @@ -6,27 +6,16 @@
  56737. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56738. */
  56739. -#define openat64 __xx_openat
  56740. +#include <_lfs_64.h>
  56741. #include <sys/syscall.h>
  56742. #include <fcntl.h>
  56743. -#undef openat64
  56744. -
  56745. -#ifdef __UCLIBC_HAS_LFS__
  56746. #ifdef __NR_openat
  56747. -/* The openat() prototype is varargs based, but we don't care about that
  56748. - * here, so need to provide our own dedicated signature.
  56749. - */
  56750. -extern int openat64(int fd, const char *file, int oflag, mode_t mode);
  56751. -libc_hidden_proto(openat64)
  56752. -
  56753. -int openat64(int fd, const char *file, int oflag, mode_t mode)
  56754. +static int __openat64(int fd, const char *file, int oflag, mode_t mode)
  56755. {
  56756. return openat(fd, file, oflag | O_LARGEFILE, mode);
  56757. }
  56758. -libc_hidden_def(openat64)
  56759. +strong_alias_untyped(__openat64,openat64)
  56760. #else
  56761. /* should add emulation with open() and /proc/self/fd/ ... */
  56762. #endif
  56763. -
  56764. -#endif
  56765. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/openat.c uClibc-git/libc/sysdeps/linux/common/openat.c
  56766. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/openat.c 2012-05-15 09:20:09.000000000 +0200
  56767. +++ uClibc-git/libc/sysdeps/linux/common/openat.c 2014-02-03 12:32:56.000000000 +0100
  56768. @@ -6,19 +6,13 @@
  56769. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56770. */
  56771. -#define openat __xx_openat
  56772. #include <sys/syscall.h>
  56773. #include <fcntl.h>
  56774. -#undef openat
  56775. #ifdef __NR_openat
  56776. -/* The openat() prototype is varargs based, but we don't care about that
  56777. - * here, so need to provide our own dedicated signature.
  56778. - */
  56779. -extern int openat(int fd, const char *file, int oflag, mode_t mode);
  56780. -libc_hidden_proto(openat)
  56781. -
  56782. -_syscall4(int, openat, int, fd, const char *, file, int, oflag, mode_t, mode)
  56783. +# define __NR___syscall_openat __NR_openat
  56784. +static __inline__ _syscall4(int, __syscall_openat, int, fd, const char *, file, int, oflag, mode_t, mode)
  56785. +strong_alias_untyped(__syscall_openat,openat)
  56786. libc_hidden_def(openat)
  56787. #else
  56788. /* should add emulation with open() and /proc/self/fd/ ... */
  56789. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/open.c uClibc-git/libc/sysdeps/linux/common/open.c
  56790. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/open.c 2012-05-15 09:20:09.000000000 +0200
  56791. +++ uClibc-git/libc/sysdeps/linux/common/open.c 2014-02-03 12:32:56.000000000 +0100
  56792. @@ -8,15 +8,22 @@
  56793. */
  56794. #include <sys/syscall.h>
  56795. -#include <stdlib.h>
  56796. -#include <stdarg.h>
  56797. #include <fcntl.h>
  56798. -#include <string.h>
  56799. -#include <sys/param.h>
  56800. +#include <stdarg.h>
  56801. +#include <cancel.h>
  56802. +
  56803. +#if defined __NR_open
  56804. +# define __NR___syscall_open __NR_open
  56805. +static __always_inline _syscall3(int, __syscall_open, const char *, file,
  56806. + int, flags, __kernel_mode_t, mode)
  56807. +strong_alias_untyped(__syscall_open,__NC(open))
  56808. -#define __NR___syscall_open __NR_open
  56809. -static __inline__ _syscall3(int, __syscall_open, const char *, file,
  56810. - int, flags, __kernel_mode_t, mode)
  56811. +# define __NR___open2_nocancel __NR_open
  56812. +_syscall2(int, __NC(open2), const char *, file, int, flags)
  56813. +#else
  56814. +int __open2_nocancel(const char *, int) __nonnull ((1)) attribute_hidden;
  56815. +int __open_nocancel(const char *, int, mode_t) __nonnull ((1)) attribute_hidden;
  56816. +#endif
  56817. int open(const char *file, int oflag, ...)
  56818. {
  56819. @@ -29,11 +36,27 @@
  56820. va_end(arg);
  56821. }
  56822. - return __syscall_open(file, oflag, mode);
  56823. + if (SINGLE_THREAD_P)
  56824. +#if defined(__NR_open)
  56825. + return __NC(open)(file, oflag, mode);
  56826. +#elif defined(__NR_openat)
  56827. + return openat(AT_FDCWD, file, oflag, mode);
  56828. +#endif
  56829. +
  56830. +#ifdef __NEW_THREADS
  56831. + int oldtype = LIBC_CANCEL_ASYNC ();
  56832. +# if defined(__NR_open)
  56833. + int result = __NC(open)(file, oflag, mode);
  56834. +# else
  56835. + int result = openat(AT_FDCWD, file, oflag, mode);
  56836. +# endif
  56837. + LIBC_CANCEL_RESET (oldtype);
  56838. + return result;
  56839. +#endif
  56840. }
  56841. -#ifndef __LINUXTHREADS_OLD__
  56842. -libc_hidden_def(open)
  56843. -#else
  56844. -libc_hidden_weak(open)
  56845. -strong_alias(open,__libc_open)
  56846. +lt_strong_alias(open)
  56847. +lt_libc_hidden(open)
  56848. +#if !defined(__NR_open)
  56849. +strong_alias_untyped(open,__open2_nocancel)
  56850. +strong_alias_untyped(open,__open_nocancel)
  56851. #endif
  56852. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pause.c uClibc-git/libc/sysdeps/linux/common/pause.c
  56853. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pause.c 2012-05-15 09:20:09.000000000 +0200
  56854. +++ uClibc-git/libc/sysdeps/linux/common/pause.c 2014-02-03 12:32:56.000000000 +0100
  56855. @@ -7,35 +7,35 @@
  56856. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  56857. */
  56858. -#define __UCLIBC_HIDE_DEPRECATED__
  56859. #include <sys/syscall.h>
  56860. #include <unistd.h>
  56861. +#include <cancel.h>
  56862. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56863. -#include <sysdep-cancel.h>
  56864. -#endif
  56865. -
  56866. -#include <signal.h>
  56867. +#ifdef __NR_pause
  56868. +/* even if it is not obvious, glibc uses the pause syscall, see syscalls.list */
  56869. +# define __NR___pause_nocancel __NR_pause
  56870. +static _syscall0(int, __NC(pause))
  56871. +CANCELLABLE_SYSCALL(int, pause, (void), ())
  56872. +#else
  56873. +# define __need_NULL
  56874. +# include <stddef.h>
  56875. +# include <signal.h>
  56876. -/* Suspend the process until a signal arrives.
  56877. - This always returns -1 and sets errno to EINTR. */
  56878. -extern __typeof(pause) __libc_pause;
  56879. int
  56880. -__libc_pause (void)
  56881. +# ifdef __LINUXTHREADS_OLD__
  56882. +weak_function
  56883. +# endif
  56884. +__NC(pause)(void)
  56885. {
  56886. - sigset_t set;
  56887. -
  56888. - /*__sigemptyset (&set); - why? */
  56889. - sigprocmask (SIG_BLOCK, NULL, &set);
  56890. + sigset_t set;
  56891. - /* pause is a cancellation point, but so is sigsuspend.
  56892. - So no need for anything special here. */
  56893. + /*__sigemptyset (&set); - why? */
  56894. + sigprocmask (SIG_BLOCK, NULL, &set);
  56895. - return sigsuspend (&set);
  56896. + /* pause is a cancellation point, but so is sigsuspend.
  56897. + So no need for anything special here. */
  56898. + return sigsuspend(&set);
  56899. }
  56900. -weak_alias (__libc_pause, pause)
  56901. -
  56902. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56903. +CANCELLABLE_SYSCALL(int, pause, (void), ())
  56904. LIBC_CANCEL_HANDLED (); /* sigsuspend handles our cancellation. */
  56905. #endif
  56906. -
  56907. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pipe.c uClibc-git/libc/sysdeps/linux/common/pipe.c
  56908. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pipe.c 2012-05-15 09:20:09.000000000 +0200
  56909. +++ uClibc-git/libc/sysdeps/linux/common/pipe.c 2014-02-03 12:32:56.000000000 +0100
  56910. @@ -11,5 +11,13 @@
  56911. #include <unistd.h>
  56912. +#if defined __NR_pipe2 && !defined __NR_pipe
  56913. +int pipe(int filedes[2])
  56914. +{
  56915. + return pipe2(filedes, 0);
  56916. +}
  56917. +/* If both are defined then use the pipe syscall */
  56918. +#else
  56919. _syscall1(int, pipe, int *, filedes)
  56920. +#endif
  56921. libc_hidden_def(pipe)
  56922. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pivot_root.c uClibc-git/libc/sysdeps/linux/common/pivot_root.c
  56923. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pivot_root.c 2012-05-15 09:20:09.000000000 +0200
  56924. +++ uClibc-git/libc/sysdeps/linux/common/pivot_root.c 2014-02-03 12:32:56.000000000 +0100
  56925. @@ -9,7 +9,7 @@
  56926. #include <sys/syscall.h>
  56927. -int pivot_root(const char *new_root, const char *put_old);
  56928. #ifdef __NR_pivot_root
  56929. +int pivot_root(const char *new_root, const char *put_old);
  56930. _syscall2(int, pivot_root, const char *, new_root, const char *, put_old)
  56931. #endif
  56932. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/poll.c uClibc-git/libc/sysdeps/linux/common/poll.c
  56933. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/poll.c 2012-05-15 09:20:09.000000000 +0200
  56934. +++ uClibc-git/libc/sysdeps/linux/common/poll.c 2014-02-03 12:32:56.000000000 +0100
  56935. @@ -13,40 +13,20 @@
  56936. Lesser General Public License for more details.
  56937. You should have received a copy of the GNU Lesser General Public
  56938. - License along with the GNU C Library; if not, write to the Free
  56939. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  56940. - 02111-1307 USA. */
  56941. + License along with the GNU C Library; if not, see
  56942. + <http://www.gnu.org/licenses/>. */
  56943. #include <sys/syscall.h>
  56944. #include <sys/poll.h>
  56945. #include <bits/kernel-features.h>
  56946. -
  56947. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56948. -#include <sysdep-cancel.h>
  56949. -#else
  56950. -#define SINGLE_THREAD_P 1
  56951. -#endif
  56952. -
  56953. -libc_hidden_proto(poll)
  56954. +#include <cancel.h>
  56955. #if defined __ASSUME_POLL_SYSCALL && defined __NR_poll
  56956. -#define __NR___syscall_poll __NR_poll
  56957. -static inline _syscall3(int, __syscall_poll, struct pollfd *, fds,
  56958. - unsigned long int, nfds, int, timeout);
  56959. -
  56960. -int poll(struct pollfd *fds, nfds_t nfds, int timeout)
  56961. -{
  56962. - if (SINGLE_THREAD_P)
  56963. - return __syscall_poll(fds, nfds, timeout);
  56964. +#define __NR___poll_nocancel __NR_poll
  56965. +static _syscall3(int, __NC(poll), struct pollfd *, fds,
  56966. + unsigned long int, nfds, int, timeout)
  56967. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  56968. - int oldtype = LIBC_CANCEL_ASYNC ();
  56969. - int result = __syscall_poll(fds, nfds, timeout);
  56970. - LIBC_CANCEL_RESET (oldtype);
  56971. - return result;
  56972. -#endif
  56973. -}
  56974. #else /* !__NR_poll */
  56975. #include <alloca.h>
  56976. @@ -56,9 +36,7 @@
  56977. #include <sys/time.h>
  56978. #include <sys/param.h>
  56979. #include <unistd.h>
  56980. -
  56981. -libc_hidden_proto(getdtablesize)
  56982. -libc_hidden_proto(select)
  56983. +#include <sys/select.h>
  56984. /* uClinux 2.0 doesn't have poll, emulate it using select */
  56985. @@ -68,7 +46,7 @@
  56986. Returns the number of file descriptors with events, zero if timed out,
  56987. or -1 for errors. */
  56988. -int poll(struct pollfd *fds, nfds_t nfds, int timeout)
  56989. +int __NC(poll)(struct pollfd *fds, nfds_t nfds, int timeout)
  56990. {
  56991. static int max_fd_size;
  56992. struct timeval tv;
  56993. @@ -139,7 +117,7 @@
  56994. while (1)
  56995. {
  56996. - ready = select (maxfd + 1, rset, wset, xset,
  56997. + ready = __NC(select) (maxfd + 1, rset, wset, xset,
  56998. timeout == -1 ? NULL : &tv);
  56999. /* It might be that one or more of the file descriptors is invalid.
  57000. @@ -182,7 +160,7 @@
  57001. if (f->events & POLLPRI)
  57002. FD_SET (f->fd, sngl_xset);
  57003. - n = select (f->fd + 1, sngl_rset, sngl_wset, sngl_xset,
  57004. + n = __NC(select) (f->fd + 1, sngl_rset, sngl_wset, sngl_xset,
  57005. &sngl_tv);
  57006. if (n != -1)
  57007. {
  57008. @@ -227,4 +205,6 @@
  57009. }
  57010. #endif
  57011. -libc_hidden_def(poll)
  57012. +CANCELLABLE_SYSCALL(int, poll, (struct pollfd *fds, nfds_t nfds, int timeout),
  57013. + (fds, nfds, timeout))
  57014. +lt_libc_hidden(poll)
  57015. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise64.c uClibc-git/libc/sysdeps/linux/common/posix_fadvise64.c
  57016. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  57017. +++ uClibc-git/libc/sysdeps/linux/common/posix_fadvise64.c 2014-02-03 12:32:56.000000000 +0100
  57018. @@ -8,63 +8,32 @@
  57019. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  57020. */
  57021. -#include <features.h>
  57022. -#include <unistd.h>
  57023. -#include <errno.h>
  57024. -#include <endian.h>
  57025. -#include <stdint.h>
  57026. -#include <sys/types.h>
  57027. +#include <_lfs_64.h>
  57028. #include <sys/syscall.h>
  57029. -#include <fcntl.h>
  57030. +#include <bits/wordsize.h>
  57031. -#ifdef __UCLIBC_HAS_LFS__
  57032. -#ifdef __NR_fadvise64_64
  57033. -
  57034. -/* 64 bit implementation is cake ... or more like pie ... */
  57035. -#if __WORDSIZE == 64
  57036. -
  57037. -#define __NR_posix_fadvise64 __NR_fadvise64_64
  57038. -
  57039. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  57040. -{
  57041. - if (len != (off_t) len)
  57042. - return EOVERFLOW;
  57043. - INTERNAL_SYSCALL_DECL (err);
  57044. - int ret = INTERNAL_SYSCALL (posix_fadvise64, err, 5, fd,
  57045. - __LONG_LONG_PAIR ((long) (offset >> 32),
  57046. - (long) offset),
  57047. - (off_t) len, advice);
  57048. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  57049. - return 0;
  57050. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  57051. -}
  57052. +#ifdef __NR_arm_fadvise64_64
  57053. +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
  57054. +#endif
  57055. -/* 32 bit implementation is kind of a pita */
  57056. -#elif __WORDSIZE == 32
  57057. +#if defined __NR_fadvise64_64 && __WORDSIZE == 32
  57058. +# include <fcntl.h>
  57059. +# include <endian.h>
  57060. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  57061. +int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice)
  57062. {
  57063. INTERNAL_SYSCALL_DECL (err);
  57064. + /* ARM has always been funky. */
  57065. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__) || defined(__arm__)
  57066. + int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,
  57067. + OFF64_HI_LO (offset), OFF64_HI_LO (len));
  57068. +# else
  57069. int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
  57070. - __LONG_LONG_PAIR(offset >> 32, offset & 0xffffffff),
  57071. - __LONG_LONG_PAIR(len >> 32, len & 0xffffffff),
  57072. - advice);
  57073. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  57074. - return 0;
  57075. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  57076. + OFF64_HI_LO (offset), OFF64_HI_LO (len),
  57077. + advice);
  57078. +# endif
  57079. + if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  57080. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57081. + return 0;
  57082. }
  57083. -
  57084. -#else
  57085. -#error your machine is neither 32 bit or 64 bit ... it must be magical
  57086. #endif
  57087. -
  57088. -#elif !defined __NR_fadvise64 && defined __UCLIBC_HAS_STUBS__
  57089. -/* This is declared as a strong alias in posix_fadvise.c if __NR_fadvise64
  57090. - * is defined.
  57091. - */
  57092. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  57093. -{
  57094. - return ENOSYS;
  57095. -}
  57096. -#endif /* __NR_fadvise64_64 */
  57097. -#endif /* __UCLIBC_HAS_LFS__ */
  57098. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise.c uClibc-git/libc/sysdeps/linux/common/posix_fadvise.c
  57099. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  57100. +++ uClibc-git/libc/sysdeps/linux/common/posix_fadvise.c 2014-02-03 12:32:56.000000000 +0100
  57101. @@ -9,27 +9,46 @@
  57102. */
  57103. #include <sys/syscall.h>
  57104. -#include <fcntl.h>
  57105. -#ifdef __NR_fadvise64
  57106. -#define __NR_posix_fadvise __NR_fadvise64
  57107. +#ifdef __NR_arm_fadvise64_64
  57108. +/* We handle the 64bit alignment issue which is why the arm guys renamed their
  57109. + * syscall in the first place. So rename it back.
  57110. + */
  57111. +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
  57112. +#endif
  57113. +
  57114. +#if defined(__NR_fadvise64) || defined(__NR_fadvise64_64)
  57115. +# include <fcntl.h>
  57116. +# include <endian.h>
  57117. +# include <bits/wordsize.h>
  57118. +
  57119. +# ifdef __NR_fadvise64_64
  57120. +int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice);
  57121. +# endif
  57122. +
  57123. int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  57124. {
  57125. +# ifdef __NR_fadvise64_64
  57126. + return posix_fadvise64(fd, offset, len, advice);
  57127. +# else
  57128. + int ret;
  57129. INTERNAL_SYSCALL_DECL(err);
  57130. - int ret = (int) (INTERNAL_SYSCALL(posix_fadvise, err, 5, fd,
  57131. - __LONG_LONG_PAIR (offset >> 31, offset), len, advice));
  57132. - if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  57133. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  57134. - return 0;
  57135. +# if __WORDSIZE == 64
  57136. + ret = INTERNAL_SYSCALL(fadvise64, err, 4, fd, offset, len, advice);
  57137. +# else
  57138. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  57139. + ret = INTERNAL_SYSCALL(fadvise64, err, 6, fd, /*unused*/0,
  57140. +# else
  57141. + ret = INTERNAL_SYSCALL(fadvise64, err, 5, fd,
  57142. +# endif
  57143. + OFF_HI_LO (offset), len, advice);
  57144. +# endif
  57145. + if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  57146. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57147. + return 0;
  57148. +# endif
  57149. }
  57150. -
  57151. -#if defined __UCLIBC_HAS_LFS__ && !defined __NR_fadvise64_64
  57152. +# if defined __UCLIBC_HAS_LFS__ && (!defined __NR_fadvise64_64 || __WORDSIZE == 64)
  57153. strong_alias(posix_fadvise,posix_fadvise64)
  57154. -#endif
  57155. -
  57156. -#elif defined __UCLIBC_HAS_STUBS__
  57157. -int posix_fadvise(int fd attribute_unused, off_t offset attribute_unused, off_t len attribute_unused, int advice attribute_unused)
  57158. -{
  57159. - return ENOSYS;
  57160. -}
  57161. +# endif
  57162. #endif
  57163. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate64.c uClibc-git/libc/sysdeps/linux/common/posix_fallocate64.c
  57164. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate64.c 1970-01-01 01:00:00.000000000 +0100
  57165. +++ uClibc-git/libc/sysdeps/linux/common/posix_fallocate64.c 2014-02-03 12:32:56.000000000 +0100
  57166. @@ -0,0 +1,34 @@
  57167. +/* vi: set sw=4 ts=4: */
  57168. +/*
  57169. + * posix_fallocate() for uClibc
  57170. + * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
  57171. + *
  57172. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  57173. + *
  57174. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  57175. + */
  57176. +
  57177. +#include <sys/syscall.h>
  57178. +#include <fcntl.h>
  57179. +#include <bits/kernel-features.h>
  57180. +#include <stdint.h>
  57181. +
  57182. +#if defined __NR_fallocate
  57183. +
  57184. +# if __WORDSIZE == 64
  57185. +/* Can use normal posix_fallocate() */
  57186. +# elif __WORDSIZE == 32
  57187. +int posix_fallocate64(int fd, __off64_t offset, __off64_t len)
  57188. +{
  57189. + int ret;
  57190. + INTERNAL_SYSCALL_DECL(err);
  57191. + ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
  57192. + OFF64_HI_LO (offset), OFF64_HI_LO (len)));
  57193. + if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
  57194. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57195. + return 0;
  57196. +}
  57197. +# else
  57198. +# error your machine is neither 32 bit or 64 bit ... it must be magical
  57199. +# endif
  57200. +#endif
  57201. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate.c uClibc-git/libc/sysdeps/linux/common/posix_fallocate.c
  57202. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_fallocate.c 1970-01-01 01:00:00.000000000 +0100
  57203. +++ uClibc-git/libc/sysdeps/linux/common/posix_fallocate.c 2014-02-03 12:32:56.000000000 +0100
  57204. @@ -0,0 +1,43 @@
  57205. +/* vi: set sw=4 ts=4: */
  57206. +/*
  57207. + * posix_fallocate() for uClibc
  57208. + * http://www.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
  57209. + *
  57210. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  57211. + *
  57212. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  57213. + */
  57214. +
  57215. +#include <sys/syscall.h>
  57216. +#include <fcntl.h>
  57217. +#include <bits/kernel-features.h>
  57218. +#include <stdint.h>
  57219. +
  57220. +#if defined __NR_fallocate
  57221. +int posix_fallocate(int fd, __off_t offset, __off_t len)
  57222. +{
  57223. + int ret;
  57224. +
  57225. +# if __WORDSIZE == 32
  57226. + uint32_t off_low = offset;
  57227. + uint32_t len_low = len;
  57228. + /* may assert that these >>31 are 0 */
  57229. + uint32_t zero = 0;
  57230. + INTERNAL_SYSCALL_DECL(err);
  57231. + ret = (int) (INTERNAL_SYSCALL(fallocate, err, 6, fd, 0,
  57232. + __LONG_LONG_PAIR (zero, off_low),
  57233. + __LONG_LONG_PAIR (zero, len_low)));
  57234. +# elif __WORDSIZE == 64
  57235. + INTERNAL_SYSCALL_DECL(err);
  57236. + ret = (int) (INTERNAL_SYSCALL(fallocate, err, 4, fd, 0, offset, len));
  57237. +# else
  57238. +# error your machine is neither 32 bit or 64 bit ... it must be magical
  57239. +#endif
  57240. + if (unlikely(INTERNAL_SYSCALL_ERROR_P (ret, err)))
  57241. + return INTERNAL_SYSCALL_ERRNO (ret, err);
  57242. + return 0;
  57243. +}
  57244. +# if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  57245. +strong_alias(posix_fallocate,posix_fallocate64)
  57246. +# endif
  57247. +#endif
  57248. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_madvise.c uClibc-git/libc/sysdeps/linux/common/posix_madvise.c
  57249. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/posix_madvise.c 1970-01-01 01:00:00.000000000 +0100
  57250. +++ uClibc-git/libc/sysdeps/linux/common/posix_madvise.c 2014-02-03 12:32:56.000000000 +0100
  57251. @@ -0,0 +1,25 @@
  57252. +/* vi: set sw=4 ts=4: */
  57253. +/* Licensed under the LGPL v2.1, see the file LICENSE in this tarball. */
  57254. +
  57255. +#include <sys/mman.h>
  57256. +#include <sys/syscall.h>
  57257. +
  57258. +#if defined __NR_madvise && defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  57259. +int posix_madvise(void *addr, size_t len, int advice)
  57260. +{
  57261. + int result;
  57262. + /* We have one problem: the kernel's MADV_DONTNEED does not
  57263. + * correspond to POSIX's POSIX_MADV_DONTNEED. The former simply
  57264. + * discards changes made to the memory without writing it back to
  57265. + * disk, if this would be necessary. The POSIX behaviour does not
  57266. + * allow this. There is no functionality mapping for the POSIX
  57267. + * behaviour so far so we ignore that advice for now. */
  57268. + if (advice == POSIX_MADV_DONTNEED)
  57269. + return 0;
  57270. +
  57271. + /* this part might use madvise function */
  57272. + INTERNAL_SYSCALL_DECL (err);
  57273. + result = INTERNAL_SYSCALL (madvise, err, 3, addr, len, advice);
  57274. + return INTERNAL_SYSCALL_ERRNO (result, err);
  57275. +}
  57276. +#endif
  57277. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ppoll.c uClibc-git/libc/sysdeps/linux/common/ppoll.c
  57278. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ppoll.c 2012-05-15 09:20:09.000000000 +0200
  57279. +++ uClibc-git/libc/sysdeps/linux/common/ppoll.c 2014-02-03 12:32:56.000000000 +0100
  57280. @@ -13,26 +13,22 @@
  57281. Lesser General Public License for more details.
  57282. You should have received a copy of the GNU Lesser General Public
  57283. - License along with the GNU C Library; if not, write to the Free
  57284. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57285. - 02111-1307 USA. */
  57286. + License along with the GNU C Library; if not, see
  57287. + <http://www.gnu.org/licenses/>. */
  57288. -#include <signal.h>
  57289. #include <sys/syscall.h>
  57290. -#include <sys/poll.h>
  57291. +
  57292. +#if defined __NR_ppoll && defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU
  57293. +
  57294. #define __need_NULL
  57295. #include <stddef.h>
  57296. +#include <signal.h>
  57297. +#include <sys/poll.h>
  57298. +#include <cancel.h>
  57299. -#if defined __NR_ppoll && defined __UCLIBC_LINUX_SPECIFIC__
  57300. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57301. -# include <sysdep-cancel.h>
  57302. -# else
  57303. -# define SINGLE_THREAD_P 1
  57304. -# endif
  57305. -
  57306. -int
  57307. -ppoll(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
  57308. - const sigset_t *sigmask)
  57309. +static int
  57310. +__NC(ppoll)(struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
  57311. + const sigset_t *sigmask)
  57312. {
  57313. /* The Linux kernel can in some situations update the timeout value.
  57314. We do not want that so use a local variable. */
  57315. @@ -41,15 +37,11 @@
  57316. tval = *timeout;
  57317. timeout = &tval;
  57318. }
  57319. - if (SINGLE_THREAD_P)
  57320. - return INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, _NSIG / 8);
  57321. -
  57322. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57323. - int oldtype = LIBC_CANCEL_ASYNC ();
  57324. - int result = INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, _NSIG / 8);
  57325. - LIBC_CANCEL_RESET (oldtype);
  57326. - return result;
  57327. -# endif
  57328. + return INLINE_SYSCALL(ppoll, 5, fds, nfds, timeout, sigmask, __SYSCALL_SIGSET_T_SIZE);
  57329. }
  57330. -libc_hidden_def(ppoll)
  57331. +
  57332. +CANCELLABLE_SYSCALL(int, ppoll, (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout,
  57333. + const sigset_t *sigmask),
  57334. + (fds, nfds, timeout, sigmask))
  57335. +
  57336. #endif
  57337. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/prctl.c uClibc-git/libc/sysdeps/linux/common/prctl.c
  57338. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/prctl.c 2012-05-15 09:20:09.000000000 +0200
  57339. +++ uClibc-git/libc/sysdeps/linux/common/prctl.c 2014-02-03 12:32:56.000000000 +0100
  57340. @@ -8,10 +8,10 @@
  57341. */
  57342. #include <sys/syscall.h>
  57343. -#include <stdarg.h>
  57344. /* psm: including sys/prctl.h would depend on kernel headers */
  57345. #ifdef __NR_prctl
  57346. -extern int prctl (int, long, long, long, long);
  57347. -_syscall5(int, prctl, int, option, long, _a2, long, _a3, long, _a4, long, _a5)
  57348. +int prctl (int, long, long, long, long);
  57349. +_syscall5(int, prctl, int, option, long, _prctl_a2, long, _prctl_a3,
  57350. + long, _prctl_a4, long, _prctl_a5)
  57351. #endif
  57352. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pread_write.c uClibc-git/libc/sysdeps/linux/common/pread_write.c
  57353. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  57354. +++ uClibc-git/libc/sysdeps/linux/common/pread_write.c 2014-02-03 12:32:56.000000000 +0100
  57355. @@ -15,173 +15,101 @@
  57356. #include <sys/syscall.h>
  57357. #include <unistd.h>
  57358. -#include <stdint.h>
  57359. #include <endian.h>
  57360. +#include <bits/wordsize.h>
  57361. +#include <cancel.h>
  57362. -extern __typeof(pread) __libc_pread;
  57363. -extern __typeof(pwrite) __libc_pwrite;
  57364. -#ifdef __UCLIBC_HAS_LFS__
  57365. -extern __typeof(pread64) __libc_pread64;
  57366. -extern __typeof(pwrite64) __libc_pwrite64;
  57367. +#ifdef __NR_pread64
  57368. +# undef __NR_pread
  57369. +# define __NR_pread __NR_pread64
  57370. +#endif
  57371. +#ifdef __NR_pwrite64
  57372. +# undef __NR_pwrite
  57373. +# define __NR_pwrite __NR_pwrite64
  57374. #endif
  57375. -#include <bits/kernel_types.h>
  57376. -
  57377. -#ifdef __NR_pread
  57378. -
  57379. -# define __NR___syscall_pread __NR_pread
  57380. -static __inline__ _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
  57381. - size_t, count, off_t, offset_hi, off_t, offset_lo)
  57382. -
  57383. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  57384. -{
  57385. - return __syscall_pread(fd, buf, count, __LONG_LONG_PAIR(offset >> 31, offset));
  57386. -}
  57387. -weak_alias(__libc_pread,pread)
  57388. -
  57389. -# ifdef __UCLIBC_HAS_LFS__
  57390. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  57391. -{
  57392. - uint32_t low = offset & 0xffffffff;
  57393. - uint32_t high = offset >> 32;
  57394. - return __syscall_pread(fd, buf, count, __LONG_LONG_PAIR(high, low));
  57395. -}
  57396. -weak_alias(__libc_pread64,pread64)
  57397. -# endif /* __UCLIBC_HAS_LFS__ */
  57398. -
  57399. -#endif /* __NR_pread */
  57400. -
  57401. -#ifdef __NR_pwrite
  57402. -
  57403. -# define __NR___syscall_pwrite __NR_pwrite
  57404. -static __inline__ _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  57405. - size_t, count, off_t, offset_hi, off_t, offset_lo)
  57406. -
  57407. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  57408. -{
  57409. - return __syscall_pwrite(fd, buf, count, __LONG_LONG_PAIR(offset >> 31, offset));
  57410. -}
  57411. -weak_alias(__libc_pwrite,pwrite)
  57412. -
  57413. -# ifdef __UCLIBC_HAS_LFS__
  57414. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  57415. -{
  57416. - uint32_t low = offset & 0xffffffff;
  57417. - uint32_t high = offset >> 32;
  57418. - return __syscall_pwrite(fd, buf, count, __LONG_LONG_PAIR(high, low));
  57419. -}
  57420. -weak_alias(__libc_pwrite64,pwrite64)
  57421. -# endif /* __UCLIBC_HAS_LFS__ */
  57422. -#endif /* __NR_pwrite */
  57423. -
  57424. -#if ! defined __NR_pread || ! defined __NR_pwrite
  57425. -
  57426. -static ssize_t __fake_pread_write(int fd, void *buf,
  57427. - size_t count, off_t offset, int do_pwrite)
  57428. -{
  57429. - int save_errno;
  57430. - ssize_t result;
  57431. - off_t old_offset;
  57432. -
  57433. - /* Since we must not change the file pointer preserve the
  57434. - * value so that we can restore it later. */
  57435. - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
  57436. - return -1;
  57437. -
  57438. - /* Set to wanted position. */
  57439. - if (lseek(fd, offset, SEEK_SET) == (off_t) -1)
  57440. - return -1;
  57441. -
  57442. - if (do_pwrite == 1) {
  57443. - /* Write the data. */
  57444. - result = write(fd, buf, count);
  57445. - } else {
  57446. - /* Read the data. */
  57447. - result = read(fd, buf, count);
  57448. - }
  57449. -
  57450. - /* Now we have to restore the position. If this fails we
  57451. - * have to return this as an error. */
  57452. - save_errno = errno;
  57453. - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
  57454. - {
  57455. - if (result == -1)
  57456. - __set_errno(save_errno);
  57457. - return -1;
  57458. - }
  57459. - __set_errno(save_errno);
  57460. - return(result);
  57461. -}
  57462. -
  57463. -# ifdef __UCLIBC_HAS_LFS__
  57464. +#ifndef MY_PREAD
  57465. +# ifdef __NR_pread
  57466. +# define __NR___syscall_pread __NR_pread
  57467. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  57468. +static _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  57469. + size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  57470. +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, 0, OFF_HI_LO(offset))
  57471. +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, 0, OFF64_HI_LO(offset))
  57472. +# elif __WORDSIZE == 32
  57473. +static _syscall5(ssize_t, __syscall_pread, int, fd, void *, buf,
  57474. + size_t, count, off_t, offset_hi, off_t, offset_lo)
  57475. +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF_HI_LO(offset))
  57476. +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, OFF64_HI_LO(offset))
  57477. +# else
  57478. +static _syscall4(ssize_t, __syscall_pread, int, fd, void *, buf,
  57479. + size_t, count, off_t, offset)
  57480. +# define MY_PREAD(fd, buf, count, offset) __syscall_pread(fd, buf, count, offset)
  57481. +# define MY_PREAD64(fd, buf, count, offset) __syscall_pread(fd, buf, count, offset)
  57482. +# endif
  57483. +# endif
  57484. +#endif
  57485. -static ssize_t __fake_pread_write64(int fd, void *buf,
  57486. - size_t count, off64_t offset, int do_pwrite)
  57487. -{
  57488. - int save_errno;
  57489. - ssize_t result;
  57490. - off64_t old_offset;
  57491. -
  57492. - /* Since we must not change the file pointer preserve the
  57493. - * value so that we can restore it later. */
  57494. - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
  57495. - return -1;
  57496. -
  57497. - /* Set to wanted position. */
  57498. - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
  57499. - return -1;
  57500. -
  57501. - if (do_pwrite == 1) {
  57502. - /* Write the data. */
  57503. - result = write(fd, buf, count);
  57504. - } else {
  57505. - /* Read the data. */
  57506. - result = read(fd, buf, count);
  57507. - }
  57508. -
  57509. - /* Now we have to restore the position. */
  57510. - save_errno = errno;
  57511. - if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) {
  57512. - if (result == -1)
  57513. - __set_errno (save_errno);
  57514. - return -1;
  57515. - }
  57516. - __set_errno (save_errno);
  57517. - return result;
  57518. -}
  57519. -# endif /* __UCLIBC_HAS_LFS__ */
  57520. -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */
  57521. +#ifndef MY_PWRITE
  57522. +# ifdef __NR_pwrite
  57523. +# define __NR___syscall_pwrite __NR_pwrite
  57524. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  57525. +static _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  57526. + size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  57527. +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, 0, OFF_HI_LO(offset))
  57528. +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, 0, OFF64_HI_LO(offset))
  57529. +# elif __WORDSIZE == 32
  57530. +static _syscall5(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  57531. + size_t, count, off_t, offset_hi, off_t, offset_lo)
  57532. +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF_HI_LO(offset))
  57533. +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, OFF64_HI_LO(offset))
  57534. +# else
  57535. +static _syscall4(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  57536. + size_t, count, off_t, offset)
  57537. +# define MY_PWRITE(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, offset)
  57538. +# define MY_PWRITE64(fd, buf, count, offset) __syscall_pwrite(fd, buf, count, offset)
  57539. +# endif
  57540. +# endif
  57541. +#endif
  57542. -#ifndef __NR_pread
  57543. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  57544. +static ssize_t __NC(pread)(int fd, void *buf, size_t count, off_t offset)
  57545. {
  57546. - return __fake_pread_write(fd, buf, count, offset, 0);
  57547. + return MY_PREAD(fd, buf, count, offset);
  57548. }
  57549. -weak_alias(__libc_pread,pread)
  57550. +CANCELLABLE_SYSCALL(ssize_t, pread, (int fd, void *buf, size_t count, off_t offset),
  57551. + (fd, buf, count, offset))
  57552. -# ifdef __UCLIBC_HAS_LFS__
  57553. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  57554. +static ssize_t __NC(pwrite)(int fd, const void *buf, size_t count, off_t offset)
  57555. {
  57556. - return __fake_pread_write64(fd, buf, count, offset, 0);
  57557. + return MY_PWRITE(fd, buf, count, offset);
  57558. }
  57559. -weak_alias(__libc_pread64,pread64)
  57560. -# endif /* __UCLIBC_HAS_LFS__ */
  57561. -#endif /* ! __NR_pread */
  57562. +CANCELLABLE_SYSCALL(ssize_t, pwrite, (int fd, const void *buf, size_t count, off_t offset),
  57563. + (fd, buf, count, offset))
  57564. -#ifndef __NR_pwrite
  57565. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  57566. +#ifdef __UCLIBC_HAS_LFS__
  57567. +# if __WORDSIZE == 32
  57568. +static ssize_t __NC(pread64)(int fd, void *buf, size_t count, off64_t offset)
  57569. {
  57570. - /* we won't actually be modifying the buffer,
  57571. - *just cast it to get rid of warnings */
  57572. - return __fake_pread_write(fd, (void*)buf, count, offset, 1);
  57573. + return MY_PREAD64(fd, buf, count, offset);
  57574. }
  57575. -weak_alias(__libc_pwrite,pwrite)
  57576. +CANCELLABLE_SYSCALL(ssize_t, pread64, (int fd, void *buf, size_t count, off64_t offset),
  57577. + (fd, buf, count, offset))
  57578. -# ifdef __UCLIBC_HAS_LFS__
  57579. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  57580. -{
  57581. - return __fake_pread_write64(fd, (void*)buf, count, offset, 1);
  57582. -}
  57583. -weak_alias(__libc_pwrite64,pwrite64)
  57584. -# endif /* __UCLIBC_HAS_LFS__ */
  57585. -#endif /* ! __NR_pwrite */
  57586. +static ssize_t __NC(pwrite64)(int fd, const void *buf, size_t count, off64_t offset)
  57587. +{
  57588. + return MY_PWRITE64(fd, buf, count, offset);
  57589. +}
  57590. +CANCELLABLE_SYSCALL(ssize_t, pwrite64, (int fd, const void *buf, size_t count, off64_t offset),
  57591. + (fd, buf, count, offset))
  57592. +# else
  57593. +# ifdef __LINUXTHREADS_OLD__
  57594. +weak_alias(pread,pread64)
  57595. +weak_alias(pwrite,pwrite64)
  57596. +lt_strong_alias(pread64)
  57597. +lt_strong_alias(pwrite64)
  57598. +# else
  57599. +strong_alias_untyped(pread,pread64)
  57600. +strong_alias_untyped(pwrite,pwrite64)
  57601. +# endif
  57602. +# endif
  57603. +#endif
  57604. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/pselect.c uClibc-git/libc/sysdeps/linux/common/pselect.c
  57605. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/pselect.c 2012-05-15 09:20:09.000000000 +0200
  57606. +++ uClibc-git/libc/sysdeps/linux/common/pselect.c 2014-02-03 12:32:56.000000000 +0100
  57607. @@ -13,82 +13,53 @@
  57608. Lesser General Public License for more details.
  57609. You should have received a copy of the GNU Lesser General Public
  57610. - License along with the GNU C Library; if not, write to the Free
  57611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57612. - 02111-1307 USA. */
  57613. + License along with the GNU C Library; if not, see
  57614. + <http://www.gnu.org/licenses/>. */
  57615. -#include <errno.h>
  57616. -#include <signal.h>
  57617. -#include <stddef.h> /* For NULL. */
  57618. -#include <sys/time.h>
  57619. -#include <sys/select.h>
  57620. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57621. -#include <sysdep-cancel.h>
  57622. -#endif
  57623. +#include <features.h>
  57624. -libc_hidden_proto(sigprocmask)
  57625. -libc_hidden_proto(select)
  57626. +#ifdef __USE_XOPEN2K
  57627. +#include <sys/syscall.h>
  57628. +#include <sys/select.h>
  57629. +#include <sys/time.h>
  57630. +#include <signal.h>
  57631. +#include <cancel.h>
  57632. -/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
  57633. - readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
  57634. - (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
  57635. - after waiting the interval specified therein. Additionally set the sigmask
  57636. - SIGMASK for this call. Returns the number of ready descriptors, or -1 for
  57637. - errors. */
  57638. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57639. -static int
  57640. -__pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  57641. -#else
  57642. -int
  57643. -pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  57644. -#endif
  57645. - const struct timespec *timeout, const sigset_t *sigmask)
  57646. +static int __NC(pselect)(int nfds, fd_set *readfds, fd_set *writefds,
  57647. + fd_set *exceptfds, const struct timespec *timeout,
  57648. + const sigset_t *sigmask)
  57649. {
  57650. - struct timeval tval;
  57651. - int retval;
  57652. - sigset_t savemask;
  57653. -
  57654. - /* Change nanosecond number to microseconds. This might mean losing
  57655. - precision and therefore the `pselect` should be available. But
  57656. - for now it is hardly found. */
  57657. - if (timeout != NULL)
  57658. - TIMESPEC_TO_TIMEVAL (&tval, timeout);
  57659. -
  57660. - /* The setting and restoring of the signal mask and the select call
  57661. - should be an atomic operation. This can't be done without kernel
  57662. - help. */
  57663. - if (sigmask != NULL)
  57664. - sigprocmask (SIG_SETMASK, sigmask, &savemask);
  57665. -
  57666. - /* Note the pselect() is a cancellation point. But since we call
  57667. - select() which itself is a cancellation point we do not have
  57668. - to do anything here. */
  57669. - retval = select (nfds, readfds, writefds, exceptfds,
  57670. - timeout != NULL ? &tval : NULL);
  57671. + struct timeval tval;
  57672. + int retval;
  57673. + sigset_t savemask;
  57674. +
  57675. + /* Change nanosecond number to microseconds. This might mean losing
  57676. + precision and therefore the `pselect` should be available. But
  57677. + for now it is hardly found. */
  57678. + if (timeout != NULL)
  57679. + TIMESPEC_TO_TIMEVAL (&tval, timeout);
  57680. +
  57681. + /* The setting and restoring of the signal mask and the select call
  57682. + should be an atomic operation. This can't be done without kernel
  57683. + help. */
  57684. + if (sigmask != NULL)
  57685. + sigprocmask (SIG_SETMASK, sigmask, &savemask);
  57686. +
  57687. + /* The comment below does not apply on uClibc, since we use __select_nocancel */
  57688. + /* Note the pselect() is a cancellation point. But since we call
  57689. + select() which itself is a cancellation point we do not have
  57690. + to do anything here. */
  57691. + retval = __NC(select)(nfds, readfds, writefds, exceptfds,
  57692. + timeout != NULL ? &tval : NULL);
  57693. - if (sigmask != NULL)
  57694. - sigprocmask (SIG_SETMASK, &savemask, NULL);
  57695. + if (sigmask != NULL)
  57696. + sigprocmask (SIG_SETMASK, &savemask, NULL);
  57697. - return retval;
  57698. + return retval;
  57699. }
  57700. +CANCELLABLE_SYSCALL(int, pselect, (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  57701. + const struct timespec *timeout, const sigset_t *sigmask),
  57702. + (nfds, readfds, writefds, exceptfds, timeout, sigmask))
  57703. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57704. -int
  57705. -pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  57706. - const struct timespec *timeout, const sigset_t *sigmask)
  57707. -{
  57708. - if (SINGLE_THREAD_P)
  57709. - return __pselect (nfds, readfds, writefds, exceptfds,
  57710. - timeout, sigmask);
  57711. -
  57712. - int oldtype = LIBC_CANCEL_ASYNC ();
  57713. -
  57714. - int result = __pselect (nfds, readfds, writefds, exceptfds,
  57715. - timeout, sigmask);
  57716. -
  57717. - LIBC_CANCEL_RESET (oldtype);
  57718. -
  57719. - return result;
  57720. -}
  57721. #endif
  57722. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readahead.c uClibc-git/libc/sysdeps/linux/common/readahead.c
  57723. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readahead.c 2012-05-15 09:20:09.000000000 +0200
  57724. +++ uClibc-git/libc/sysdeps/linux/common/readahead.c 2014-02-03 12:32:56.000000000 +0100
  57725. @@ -13,46 +13,33 @@
  57726. Lesser General Public License for more details.
  57727. You should have received a copy of the GNU Lesser General Public
  57728. - License along with the GNU C Library; if not, write to the Free
  57729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  57730. - 02111-1307 USA. */
  57731. -
  57732. -#include <errno.h>
  57733. -#include <fcntl.h>
  57734. -#include <sys/types.h>
  57735. -#include <sys/syscall.h>
  57736. -#include <bits/wordsize.h>
  57737. -
  57738. -#ifdef __UCLIBC_HAS_LFS__
  57739. + License along with the GNU C Library; if not, see
  57740. + <http://www.gnu.org/licenses/>. */
  57741. -#include <_lfs_64.h>
  57742. +#include <sys/syscall.h>
  57743. -#ifdef __NR_readahead
  57744. +#if defined __NR_readahead && defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
  57745. -# define __NR___readahead __NR_readahead
  57746. +# include <fcntl.h>
  57747. +# include <bits/wordsize.h>
  57748. # if __WORDSIZE == 64
  57749. -static __inline__ _syscall3(ssize_t, __readahead, int, fd,
  57750. - off_t, offset, size_t, count)
  57751. -
  57752. -ssize_t readahead(int fd, off_t offset, size_t count)
  57753. -{
  57754. - return __readahead(fd, offset, count);
  57755. -}
  57756. +_syscall3(ssize_t, readahead, int, fd, off_t, offset, size_t, count)
  57757. # else
  57758. -static __inline__ _syscall4(ssize_t, __readahead, int, fd,
  57759. - off_t, high_offset, off_t, low_offset, size_t, count)
  57760. -
  57761. ssize_t readahead(int fd, off64_t offset, size_t count)
  57762. {
  57763. - return __readahead(fd, (off_t) (offset >> 32), (off_t) (offset & 0xffffffff), count);
  57764. + return INLINE_SYSCALL(readahead,
  57765. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  57766. + 5, fd, 0,
  57767. +# else
  57768. + 4, fd,
  57769. +# endif
  57770. + OFF64_HI_LO(offset), count);
  57771. }
  57772. # endif
  57773. #endif
  57774. -
  57775. -#endif /* __UCLIBC_HAS_LFS__ */
  57776. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/read.c uClibc-git/libc/sysdeps/linux/common/read.c
  57777. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/read.c 2012-05-15 09:20:09.000000000 +0200
  57778. +++ uClibc-git/libc/sysdeps/linux/common/read.c 2014-02-03 12:32:56.000000000 +0100
  57779. @@ -9,11 +9,11 @@
  57780. #include <sys/syscall.h>
  57781. #include <unistd.h>
  57782. +#include <cancel.h>
  57783. -_syscall3(ssize_t, read, int, fd, __ptr_t, buf, size_t, count)
  57784. -#ifndef __LINUXTHREADS_OLD__
  57785. -libc_hidden_def(read)
  57786. -#else
  57787. -libc_hidden_weak(read)
  57788. -strong_alias(read,__libc_read)
  57789. -#endif
  57790. +#define __NR___read_nocancel __NR_read
  57791. +_syscall3(ssize_t, __NC(read), int, fd, void *, buf, size_t, count)
  57792. +
  57793. +CANCELLABLE_SYSCALL(ssize_t, read, (int fd, void *buf, size_t count),
  57794. + (fd, buf, count))
  57795. +lt_libc_hidden(read)
  57796. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readlinkat.c uClibc-git/libc/sysdeps/linux/common/readlinkat.c
  57797. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readlinkat.c 2012-05-15 09:20:09.000000000 +0200
  57798. +++ uClibc-git/libc/sysdeps/linux/common/readlinkat.c 2014-02-03 12:32:56.000000000 +0100
  57799. @@ -11,6 +11,7 @@
  57800. #ifdef __NR_readlinkat
  57801. _syscall4(ssize_t, readlinkat, int, fd, const char *, path, char *, buf, size_t, len)
  57802. +libc_hidden_def(readlinkat)
  57803. #else
  57804. /* should add emulation with readlink() and /proc/self/fd/ ... */
  57805. #endif
  57806. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readlink.c uClibc-git/libc/sysdeps/linux/common/readlink.c
  57807. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readlink.c 2012-05-15 09:20:09.000000000 +0200
  57808. +++ uClibc-git/libc/sysdeps/linux/common/readlink.c 2014-02-03 12:32:56.000000000 +0100
  57809. @@ -10,5 +10,13 @@
  57810. #include <sys/syscall.h>
  57811. #include <unistd.h>
  57812. +#if defined(__NR_readlinkat) && !defined(__NR_readlink)
  57813. +# include <fcntl.h>
  57814. +ssize_t readlink (const char *path, char *buf, size_t len)
  57815. +{
  57816. + return readlinkat(AT_FDCWD, path, buf, len);
  57817. +}
  57818. +#else
  57819. _syscall3(ssize_t, readlink, const char *, path, char *, buf, size_t, bufsiz)
  57820. +#endif
  57821. libc_hidden_def(readlink)
  57822. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/readv.c uClibc-git/libc/sysdeps/linux/common/readv.c
  57823. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/readv.c 2012-05-15 09:20:09.000000000 +0200
  57824. +++ uClibc-git/libc/sysdeps/linux/common/readv.c 2014-02-03 12:32:56.000000000 +0100
  57825. @@ -10,41 +10,21 @@
  57826. #include <sys/syscall.h>
  57827. #include <sys/uio.h>
  57828. -
  57829. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57830. -#include <sysdep-cancel.h>
  57831. +#include <cancel.h>
  57832. /* We should deal with kernel which have a smaller UIO_FASTIOV as well
  57833. as a very big count. */
  57834. -static ssize_t __readv (int fd, const struct iovec *vector, int count)
  57835. +static ssize_t __NC(readv)(int fd, const struct iovec *vector, int count)
  57836. {
  57837. - ssize_t bytes_read;
  57838. -
  57839. - bytes_read = INLINE_SYSCALL (readv, 3, fd, vector, count);
  57840. -
  57841. - if (bytes_read >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  57842. - return bytes_read;
  57843. -
  57844. - /* glibc tries again, but we do not. */
  57845. - //return __atomic_readv_replacement (fd, vector, count);
  57846. -
  57847. - return -1;
  57848. -}
  57849. -
  57850. -ssize_t readv (int fd, const struct iovec *vector, int count)
  57851. -{
  57852. - if (SINGLE_THREAD_P)
  57853. - return __readv (fd, vector, count);
  57854. -
  57855. - int oldtype = LIBC_CANCEL_ASYNC ();
  57856. + ssize_t bytes_read = INLINE_SYSCALL(readv, 3, fd, vector, count);
  57857. - int result = __readv (fd, vector, count);
  57858. + if (bytes_read >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  57859. + return bytes_read;
  57860. - LIBC_CANCEL_RESET (oldtype);
  57861. + /* glibc tries again, but we do not. */
  57862. + /* return __atomic_readv_replacement (fd, vector, count); */
  57863. - return result;
  57864. + return -1;
  57865. }
  57866. -#else
  57867. -_syscall3(ssize_t, readv, int, filedes, const struct iovec *, vector,
  57868. - int, count)
  57869. -#endif
  57870. +CANCELLABLE_SYSCALL(ssize_t, readv, (int fd, const struct iovec *vector, int count),
  57871. + (fd, vector, count))
  57872. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/renameat.c uClibc-git/libc/sysdeps/linux/common/renameat.c
  57873. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/renameat.c 2012-05-15 09:20:09.000000000 +0200
  57874. +++ uClibc-git/libc/sysdeps/linux/common/renameat.c 2014-02-03 12:32:56.000000000 +0100
  57875. @@ -11,6 +11,7 @@
  57876. #ifdef __NR_renameat
  57877. _syscall4(int, renameat, int, oldfd, const char *, old, int, newfd, const char *, new)
  57878. +libc_hidden_def(renameat)
  57879. #else
  57880. /* should add emulation with rename() and /proc/self/fd/ ... */
  57881. #endif
  57882. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/rename.c uClibc-git/libc/sysdeps/linux/common/rename.c
  57883. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/rename.c 2012-05-15 09:20:09.000000000 +0200
  57884. +++ uClibc-git/libc/sysdeps/linux/common/rename.c 2014-02-03 12:32:56.000000000 +0100
  57885. @@ -8,17 +8,15 @@
  57886. */
  57887. #include <sys/syscall.h>
  57888. -#include <unistd.h>
  57889. -#include <string.h>
  57890. -#include <sys/param.h>
  57891. #include <stdio.h>
  57892. +#include <unistd.h>
  57893. -#define __NR___syscall_rename __NR_rename
  57894. -static __inline__ _syscall2(int, __syscall_rename, const char *, oldpath,
  57895. - const char *, newpath)
  57896. -
  57897. -int rename(const char * oldpath, const char * newpath)
  57898. +#if defined __NR_renameat && !defined __NR_rename
  57899. +# include <fcntl.h>
  57900. +int rename(const char *oldpath, const char *newpath)
  57901. {
  57902. - return __syscall_rename(oldpath, newpath);
  57903. + return renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath);
  57904. }
  57905. -
  57906. +#else
  57907. +_syscall2(int, rename, const char *, oldpath, const char *, newpath)
  57908. +#endif
  57909. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/rmdir.c uClibc-git/libc/sysdeps/linux/common/rmdir.c
  57910. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/rmdir.c 2012-05-15 09:20:09.000000000 +0200
  57911. +++ uClibc-git/libc/sysdeps/linux/common/rmdir.c 2014-02-03 12:32:56.000000000 +0100
  57912. @@ -11,5 +11,13 @@
  57913. #include <unistd.h>
  57914. +#if defined __NR_unlinkat && !defined __NR_rmdir
  57915. +# include <fcntl.h>
  57916. +int rmdir(const char *pathname)
  57917. +{
  57918. + return unlinkat(AT_FDCWD, pathname, AT_REMOVEDIR);
  57919. +}
  57920. +#else
  57921. _syscall1(int, rmdir, const char *, pathname)
  57922. +#endif
  57923. libc_hidden_def(rmdir)
  57924. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigtimedwait.c uClibc-git/libc/sysdeps/linux/common/__rt_sigtimedwait.c
  57925. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigtimedwait.c 2012-05-15 09:20:09.000000000 +0200
  57926. +++ uClibc-git/libc/sysdeps/linux/common/__rt_sigtimedwait.c 2014-02-03 12:32:56.000000000 +0100
  57927. @@ -9,42 +9,49 @@
  57928. */
  57929. #include <sys/syscall.h>
  57930. -#include <signal.h>
  57931. -#include <string.h>
  57932. #ifdef __NR_rt_sigtimedwait
  57933. -
  57934. +# include <signal.h>
  57935. +# include <cancel.h>
  57936. # ifdef __UCLIBC_HAS_THREADS_NATIVE__
  57937. -# include <sysdep-cancel.h>
  57938. # include <pthreadP.h> /* SIGCANCEL */
  57939. +# endif
  57940. +# ifdef SIGCANCEL
  57941. +# define __need_NULL
  57942. +# include <stddef.h>
  57943. +# include <string.h>
  57944. +# endif
  57945. -static int do_sigtimedwait(const sigset_t *set, siginfo_t *info,
  57946. - const struct timespec *timeout)
  57947. +int __NC(sigtimedwait)(const sigset_t *set, siginfo_t *info,
  57948. + const struct timespec *timeout)
  57949. {
  57950. -# ifdef SIGCANCEL
  57951. +# ifdef SIGCANCEL
  57952. sigset_t tmpset;
  57953. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  57954. -# ifdef SIGSETXID
  57955. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  57956. -# endif
  57957. + if (set != NULL && (unlikely (__sigismember (set, SIGCANCEL))
  57958. +# ifdef SIGSETXID
  57959. + || unlikely (__sigismember (set, SIGSETXID))
  57960. +# endif
  57961. ))
  57962. {
  57963. /* Create a temporary mask without the bit for SIGCANCEL set. */
  57964. // We are not copying more than we have to.
  57965. memcpy (&tmpset, set, _NSIG / 8);
  57966. __sigdelset (&tmpset, SIGCANCEL);
  57967. -# ifdef SIGSETXID
  57968. +# ifdef SIGSETXID
  57969. __sigdelset (&tmpset, SIGSETXID);
  57970. -# endif
  57971. +# endif
  57972. set = &tmpset;
  57973. }
  57974. -# endif
  57975. +# endif
  57976. +/* if this is enabled, enable the disabled section in sigwait.c */
  57977. +# if defined SI_TKILL && defined SI_USER
  57978. /* XXX The size argument hopefully will have to be changed to the
  57979. real size of the user-level sigset_t. */
  57980. - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, set, info,
  57981. - timeout, _NSIG / 8);
  57982. + /* on uClibc we use the kernel sigset_t size */
  57983. + int result = INLINE_SYSCALL(rt_sigtimedwait, 4, set, info,
  57984. + timeout, __SYSCALL_SIGSET_T_SIZE);
  57985. /* The kernel generates a SI_TKILL code in si_code in case tkill is
  57986. used. tkill is transparently used in raise(). Since having
  57987. @@ -54,39 +61,14 @@
  57988. info->si_code = SI_USER;
  57989. return result;
  57990. -}
  57991. -
  57992. -/* Return any pending signal or wait for one for the given time. */
  57993. -int attribute_hidden __sigtimedwait(const sigset_t *set, siginfo_t *info,
  57994. - const struct timespec *timeout)
  57995. -{
  57996. - if(SINGLE_THREAD_P)
  57997. - return do_sigtimedwait(set, info, timeout);
  57998. -
  57999. - int oldtype = LIBC_CANCEL_ASYNC();
  58000. -
  58001. - /* XXX The size argument hopefully will have to be changed to the
  58002. - real size of the user-level sigset_t. */
  58003. - int result = do_sigtimedwait(set, info, timeout);
  58004. -
  58005. - LIBC_CANCEL_RESET(oldtype);
  58006. -
  58007. - return result;
  58008. -}
  58009. # else
  58010. -# define __need_NULL
  58011. -# include <stddef.h>
  58012. -# define __NR___rt_sigtimedwait __NR_rt_sigtimedwait
  58013. -static _syscall4(int, __rt_sigtimedwait, const sigset_t *, set,
  58014. - siginfo_t *, info, const struct timespec *, timeout,
  58015. - size_t, setsize);
  58016. -
  58017. -int attribute_hidden __sigtimedwait(const sigset_t * set, siginfo_t * info,
  58018. - const struct timespec *timeout)
  58019. -{
  58020. - return __rt_sigtimedwait(set, info, timeout, _NSIG / 8);
  58021. + /* on uClibc we use the kernel sigset_t size */
  58022. + return INLINE_SYSCALL(rt_sigtimedwait, 4, set, info,
  58023. + timeout, __SYSCALL_SIGSET_T_SIZE);
  58024. +# endif
  58025. }
  58026. -# endif /* !__UCLIBC_HAS_THREADS_NATIVE__ */
  58027. -weak_alias(__sigtimedwait,sigtimedwait)
  58028. -libc_hidden_weak(sigtimedwait)
  58029. +CANCELLABLE_SYSCALL(int, sigtimedwait,
  58030. + (const sigset_t *set, siginfo_t *info, const struct timespec *timeout),
  58031. + (set, info, timeout))
  58032. +lt_libc_hidden(sigtimedwait)
  58033. #endif
  58034. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigwaitinfo.c uClibc-git/libc/sysdeps/linux/common/__rt_sigwaitinfo.c
  58035. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__rt_sigwaitinfo.c 2012-05-15 09:20:09.000000000 +0200
  58036. +++ uClibc-git/libc/sysdeps/linux/common/__rt_sigwaitinfo.c 2014-02-03 12:32:56.000000000 +0100
  58037. @@ -9,81 +9,17 @@
  58038. */
  58039. #include <sys/syscall.h>
  58040. -#include <signal.h>
  58041. -#include <string.h>
  58042. #ifdef __NR_rt_sigtimedwait
  58043. +# define __need_NULL
  58044. +# include <stddef.h>
  58045. +# include <signal.h>
  58046. +# include <cancel.h>
  58047. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58048. -# include <sysdep-cancel.h>
  58049. -
  58050. -static int do_sigwaitinfo(const sigset_t *set, siginfo_t *info)
  58051. -{
  58052. -# ifdef SIGCANCEL
  58053. - sigset_t tmpset;
  58054. -
  58055. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  58056. -# ifdef SIGSETXID
  58057. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  58058. -# endif
  58059. - ))
  58060. - {
  58061. - /* Create a temporary mask without the bit for SIGCANCEL set. */
  58062. - // We are not copying more than we have to.
  58063. - memcpy (&tmpset, set, _NSIG / 8);
  58064. - __sigdelset (&tmpset, SIGCANCEL);
  58065. -# ifdef SIGSETXID
  58066. - __sigdelset (&tmpset, SIGSETXID);
  58067. -# endif
  58068. - set = &tmpset;
  58069. - }
  58070. -# endif
  58071. -
  58072. - /* XXX The size argument hopefully will have to be changed to the
  58073. - real size of the user-level sigset_t. */
  58074. - int result = INLINE_SYSCALL (rt_sigtimedwait, 4, set, info,
  58075. - NULL, _NSIG / 8);
  58076. -
  58077. - /* The kernel generates a SI_TKILL code in si_code in case tkill is
  58078. - used. tkill is transparently used in raise(). Since having
  58079. - SI_TKILL as a code is useful in general we fold the results
  58080. - here. */
  58081. - if (result != -1 && info != NULL && info->si_code == SI_TKILL)
  58082. - info->si_code = SI_USER;
  58083. -
  58084. - return result;
  58085. -}
  58086. -
  58087. -/* Return any pending signal or wait for one for the given time. */
  58088. -int __sigwaitinfo(const sigset_t *set, siginfo_t *info)
  58089. -{
  58090. - if(SINGLE_THREAD_P)
  58091. - return do_sigwaitinfo(set, info);
  58092. -
  58093. - int oldtype = LIBC_CANCEL_ASYNC();
  58094. -
  58095. - /* XXX The size argument hopefully will have to be changed to the
  58096. - real size of the user-level sigset_t. */
  58097. - int result = do_sigwaitinfo(set, info);
  58098. -
  58099. - LIBC_CANCEL_RESET(oldtype);
  58100. -
  58101. - return result;
  58102. -}
  58103. -# else
  58104. -# define __need_NULL
  58105. -# include <stddef.h>
  58106. -# define __NR___rt_sigwaitinfo __NR_rt_sigtimedwait
  58107. -static _syscall4(int, __rt_sigwaitinfo, const sigset_t *, set,
  58108. - siginfo_t *, info, const struct timespec *, timeout,
  58109. - size_t, setsize);
  58110. -
  58111. -int attribute_hidden __sigwaitinfo(const sigset_t * set, siginfo_t * info)
  58112. +int sigwaitinfo(const sigset_t *set, siginfo_t *info)
  58113. {
  58114. - return __rt_sigwaitinfo(set, info, NULL, _NSIG / 8);
  58115. + return sigtimedwait(set, info, NULL);
  58116. }
  58117. -# endif
  58118. -libc_hidden_proto(sigwaitinfo)
  58119. -weak_alias (__sigwaitinfo, sigwaitinfo)
  58120. -libc_hidden_weak(sigwaitinfo)
  58121. +/* cancellation handled by sigtimedwait, noop on uClibc */
  58122. +LIBC_CANCEL_HANDLED();
  58123. #endif
  58124. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_cpucount.c uClibc-git/libc/sysdeps/linux/common/sched_cpucount.c
  58125. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_cpucount.c 2012-05-15 09:20:09.000000000 +0200
  58126. +++ uClibc-git/libc/sysdeps/linux/common/sched_cpucount.c 2014-02-03 12:32:56.000000000 +0100
  58127. @@ -12,9 +12,8 @@
  58128. Lesser General Public License for more details.
  58129. You should have received a copy of the GNU Lesser General Public
  58130. - License along with the GNU C Library; if not, write to the Free
  58131. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58132. - 02111-1307 USA. */
  58133. + License along with the GNU C Library; if not, see
  58134. + <http://www.gnu.org/licenses/>. */
  58135. #include <limits.h>
  58136. #include <sched.h>
  58137. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_getaffinity.c uClibc-git/libc/sysdeps/linux/common/sched_getaffinity.c
  58138. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_getaffinity.c 2012-05-15 09:20:09.000000000 +0200
  58139. +++ uClibc-git/libc/sysdeps/linux/common/sched_getaffinity.c 2014-02-03 12:32:56.000000000 +0100
  58140. @@ -12,24 +12,19 @@
  58141. Lesser General Public License for more details.
  58142. You should have received a copy of the GNU Lesser General Public
  58143. - License along with the GNU C Library; if not, write to the Free
  58144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58145. - 02111-1307 USA. */
  58146. + License along with the GNU C Library; if not, see
  58147. + <http://www.gnu.org/licenses/>. */
  58148. -#include <features.h>
  58149. -#ifdef __USE_GNU
  58150. -
  58151. -#include <sched.h>
  58152. -#include <sys/types.h>
  58153. #include <sys/syscall.h>
  58154. -#include <string.h>
  58155. -#include <sys/param.h>
  58156. -
  58157. -#if defined __NR_sched_getaffinity
  58158. -#define __NR___syscall_sched_getaffinity __NR_sched_getaffinity
  58159. -static __inline__ _syscall3(int, __syscall_sched_getaffinity, __kernel_pid_t, pid,
  58160. - size_t, cpusetsize, cpu_set_t *, cpuset)
  58161. +#if defined __NR_sched_getaffinity && defined __USE_GNU
  58162. +# include <sched.h>
  58163. +# include <string.h>
  58164. +# include <sys/types.h>
  58165. +# include <sys/param.h>
  58166. +# define __NR___syscall_sched_getaffinity __NR_sched_getaffinity
  58167. +static __always_inline _syscall3(int, __syscall_sched_getaffinity, __kernel_pid_t, pid,
  58168. + size_t, cpusetsize, cpu_set_t *, cpuset)
  58169. int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *cpuset)
  58170. {
  58171. @@ -45,4 +40,3 @@
  58172. return res;
  58173. }
  58174. #endif
  58175. -#endif
  58176. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_setaffinity.c uClibc-git/libc/sysdeps/linux/common/sched_setaffinity.c
  58177. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sched_setaffinity.c 2012-05-15 09:20:09.000000000 +0200
  58178. +++ uClibc-git/libc/sysdeps/linux/common/sched_setaffinity.c 2014-02-03 12:32:56.000000000 +0100
  58179. @@ -12,26 +12,20 @@
  58180. Lesser General Public License for more details.
  58181. You should have received a copy of the GNU Lesser General Public
  58182. - License along with the GNU C Library; if not, write to the Free
  58183. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58184. - 02111-1307 USA. */
  58185. + License along with the GNU C Library; if not, see
  58186. + <http://www.gnu.org/licenses/>. */
  58187. -#include <features.h>
  58188. -#ifdef __USE_GNU
  58189. -
  58190. -#include <sched.h>
  58191. -#include <sys/types.h>
  58192. #include <sys/syscall.h>
  58193. -#include <string.h>
  58194. -#include <unistd.h>
  58195. -#include <sys/param.h>
  58196. -#include <alloca.h>
  58197. -
  58198. -#if defined __NR_sched_setaffinity
  58199. -
  58200. -#define __NR___syscall_sched_setaffinity __NR_sched_setaffinity
  58201. -static __inline__ _syscall3(int, __syscall_sched_setaffinity, __kernel_pid_t, pid,
  58202. - size_t, cpusetsize, cpu_set_t *, cpuset)
  58203. +
  58204. +#if defined __NR_sched_setaffinity && defined __USE_GNU
  58205. +# include <sched.h>
  58206. +# include <sys/types.h>
  58207. +# include <string.h>
  58208. +# include <unistd.h>
  58209. +# include <alloca.h>
  58210. +# define __NR___syscall_sched_setaffinity __NR_sched_setaffinity
  58211. +static __always_inline _syscall3(int, __syscall_sched_setaffinity, __kernel_pid_t, pid,
  58212. + size_t, cpusetsize, const cpu_set_t *, cpuset)
  58213. static size_t __kernel_cpumask_size;
  58214. @@ -68,7 +62,6 @@
  58215. return -1;
  58216. }
  58217. - return INLINE_SYSCALL (sched_setaffinity, 3, pid, cpusetsize, cpuset);
  58218. + return __syscall_sched_setaffinity(pid, cpusetsize, cpuset);
  58219. }
  58220. #endif
  58221. -#endif /* __USE_GNU */
  58222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/select.c uClibc-git/libc/sysdeps/linux/common/select.c
  58223. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/select.c 2012-05-15 09:20:09.000000000 +0200
  58224. +++ uClibc-git/libc/sysdeps/linux/common/select.c 2014-02-03 12:32:56.000000000 +0100
  58225. @@ -9,27 +9,24 @@
  58226. #include <sys/syscall.h>
  58227. #include <sys/select.h>
  58228. -#include <stdint.h>
  58229. +#include <cancel.h>
  58230. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58231. -#include <sysdep-cancel.h>
  58232. -#else
  58233. -#define SINGLE_THREAD_P 1
  58234. +#ifdef __NR__newselect
  58235. +# undef __NR_select
  58236. +# define __NR_select __NR__newselect
  58237. #endif
  58238. -#define USEC_PER_SEC 1000000L
  58239. -
  58240. -extern __typeof(select) __libc_select;
  58241. -
  58242. -#if !defined(__NR__newselect) && !defined(__NR_select) && defined __USE_XOPEN2K
  58243. -# define __NR___libc_pselect6 __NR_pselect6
  58244. -static _syscall6(int, __libc_pselect6, int, n, fd_set *, readfds, fd_set *, writefds,
  58245. - fd_set *, exceptfds, const struct timespec *, timeout,
  58246. - const sigset_t *, sigmask)
  58247. +#if !defined __NR_select && defined __NR_pselect6
  58248. +# include <stdint.h>
  58249. +# define USEC_PER_SEC 1000000L
  58250. +#endif
  58251. -int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58252. - struct timeval *timeout)
  58253. +int __NC(select)(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58254. + struct timeval *timeout)
  58255. {
  58256. +#ifdef __NR_select
  58257. + return INLINE_SYSCALL(select, 5, n, readfds, writefds, exceptfds, timeout);
  58258. +#elif defined __NR_pselect6
  58259. struct timespec _ts, *ts = 0;
  58260. if (timeout) {
  58261. uint32_t usec;
  58262. @@ -51,44 +48,14 @@
  58263. ts = &_ts;
  58264. }
  58265. -
  58266. - if (SINGLE_THREAD_P)
  58267. - return __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
  58268. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58269. - int oldtype = LIBC_CANCEL_ASYNC ();
  58270. - int result = __libc_pselect6(n, readfds, writefds, exceptfds, ts, 0);
  58271. - LIBC_CANCEL_RESET (oldtype);
  58272. - return result;
  58273. -#endif
  58274. -
  58275. -}
  58276. -
  58277. -#else
  58278. -
  58279. -#ifdef __NR__newselect
  58280. -# define __NR___syscall_select __NR__newselect
  58281. -#else
  58282. -# define __NR___syscall_select __NR_select
  58283. -#endif
  58284. -
  58285. -static _syscall5(int, __syscall_select, int, n, fd_set *, readfds,
  58286. - fd_set *, writefds, fd_set *, exceptfds, struct timeval *, timeout);
  58287. -
  58288. -int __libc_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
  58289. - struct timeval *timeout)
  58290. -{
  58291. - if (SINGLE_THREAD_P)
  58292. - return __syscall_select(n, readfds, writefds, exceptfds, timeout);
  58293. -
  58294. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58295. - int oldtype = LIBC_CANCEL_ASYNC ();
  58296. - int result = __syscall_select(n, readfds, writefds, exceptfds, timeout);
  58297. - LIBC_CANCEL_RESET (oldtype);
  58298. - return result;
  58299. + return INLINE_SYSCALL(pselect6, 6, n, readfds, writefds, exceptfds, ts, 0);
  58300. #endif
  58301. }
  58302. -
  58303. +/* we should guard it, but we need it in other files, so let it fail
  58304. + * if we miss any of the syscalls */
  58305. +#if 1 /*defined __NR_select || defined __NR_pselect6*/
  58306. +CANCELLABLE_SYSCALL(int, select, (int n, fd_set *readfds, fd_set *writefds,
  58307. + fd_set *exceptfds, struct timeval *timeout),
  58308. + (n, readfds, writefds, exceptfds, timeout))
  58309. +lt_libc_hidden(select)
  58310. #endif
  58311. -
  58312. -weak_alias(__libc_select,select)
  58313. -libc_hidden_weak(select)
  58314. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile64.c uClibc-git/libc/sysdeps/linux/common/sendfile64.c
  58315. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile64.c 2012-05-15 09:20:09.000000000 +0200
  58316. +++ uClibc-git/libc/sysdeps/linux/common/sendfile64.c 2014-02-03 12:32:56.000000000 +0100
  58317. @@ -10,15 +10,12 @@
  58318. * just the macro we need to order things, __LONG_LONG_PAIR.
  58319. */
  58320. -#include <features.h>
  58321. -#include <unistd.h>
  58322. -#include <errno.h>
  58323. -#include <endian.h>
  58324. -#include <stdint.h>
  58325. -#include <sys/sendfile.h>
  58326. +#include <_lfs_64.h>
  58327. #include <sys/syscall.h>
  58328. #include <bits/wordsize.h>
  58329. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_sendfile64
  58330. +#if defined __NR_sendfile64 && __WORDSIZE != 64
  58331. +# include <sys/sendfile.h>
  58332. _syscall4(ssize_t,sendfile64, int, out_fd, int, in_fd, __off64_t *, offset, size_t, count)
  58333. +libc_hidden_def(sendfile64)
  58334. #endif
  58335. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile.c uClibc-git/libc/sysdeps/linux/common/sendfile.c
  58336. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sendfile.c 2012-05-15 09:20:09.000000000 +0200
  58337. +++ uClibc-git/libc/sysdeps/linux/common/sendfile.c 2014-02-03 12:32:56.000000000 +0100
  58338. @@ -8,16 +8,57 @@
  58339. */
  58340. #include <sys/syscall.h>
  58341. -#include <unistd.h>
  58342. -#include <sys/sendfile.h>
  58343. -#ifdef __NR_sendfile
  58344. +# include <sys/sendfile.h>
  58345. +# include <bits/wordsize.h>
  58346. +#if defined __NR_sendfile
  58347. _syscall4(ssize_t, sendfile, int, out_fd, int, in_fd, __off_t *, offset,
  58348. - size_t, count)
  58349. + size_t, count)
  58350. +# if defined __UCLIBC_HAS_LFS__ && (!defined __NR_sendfile64 || __WORDSIZE == 64)
  58351. +libc_hidden_def(sendfile64)
  58352. +strong_alias_untyped(sendfile,sendfile64)
  58353. +# endif
  58354. -#if ! defined __NR_sendfile64 && defined __UCLIBC_HAS_LFS__
  58355. -strong_alias(sendfile,sendfile64)
  58356. -#endif
  58357. +#elif defined __NR_sendfile64 && !defined __NR_sendfile
  58358. +# include <unistd.h>
  58359. +# include <stddef.h>
  58360. +
  58361. +ssize_t sendfile(int out_fd, int in_fd, __off_t *offset, size_t count)
  58362. +{
  58363. + __off64_t off64, *off;
  58364. + ssize_t res;
  58365. +
  58366. + /*
  58367. + * Check if valid fds and valid pointers were passed
  58368. + * This does not prevent the user from passing
  58369. + * an arbitrary pointer causing a segfault or
  58370. + * other security issues
  58371. + */
  58372. +
  58373. + if (in_fd < 0 || out_fd < 0) {
  58374. + __set_errno(EBADF);
  58375. + return -1;
  58376. + }
  58377. +
  58378. + if (offset == NULL || (int)offset < 0) {
  58379. + __set_errno(EFAULT);
  58380. + return -1;
  58381. + }
  58382. -#endif /* __NR_sendfile */
  58383. + if (offset) {
  58384. + off = &off64;
  58385. + off64 = *offset;
  58386. + } else {
  58387. + off = NULL;
  58388. + }
  58389. +
  58390. + res = INLINE_SYSCALL(sendfile64, 4, out_fd, in_fd, off, count);
  58391. +
  58392. + if (res >= 0)
  58393. + *offset = off64;
  58394. +
  58395. + return res;
  58396. +}
  58397. +
  58398. +#endif
  58399. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setgroups.c uClibc-git/libc/sysdeps/linux/common/setgroups.c
  58400. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setgroups.c 2012-05-15 09:20:09.000000000 +0200
  58401. +++ uClibc-git/libc/sysdeps/linux/common/setgroups.c 2014-02-03 12:32:56.000000000 +0100
  58402. @@ -8,12 +8,9 @@
  58403. */
  58404. #include <sys/syscall.h>
  58405. -#include <stdlib.h>
  58406. -#include <unistd.h>
  58407. -#include <grp.h>
  58408. #ifdef __USE_BSD
  58409. -
  58410. +#include <grp.h>
  58411. #if defined(__NR_setgroups32)
  58412. # undef __NR_setgroups
  58413. @@ -24,11 +21,14 @@
  58414. _syscall2(int, setgroups, size_t, size, const gid_t *, list)
  58415. #else
  58416. -
  58417. -
  58418. -#define __NR___syscall_setgroups __NR_setgroups
  58419. -static __inline__ _syscall2(int, __syscall_setgroups,
  58420. - size_t, size, const __kernel_gid_t *, list)
  58421. +# include <errno.h>
  58422. +# include <stdlib.h>
  58423. +# include <unistd.h>
  58424. +# include <sys/types.h>
  58425. +
  58426. +# define __NR___syscall_setgroups __NR_setgroups
  58427. +static __always_inline _syscall2(int, __syscall_setgroups,
  58428. + size_t, size, const __kernel_gid_t *, list)
  58429. int setgroups(size_t size, const gid_t *groups)
  58430. {
  58431. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setpgrp.c uClibc-git/libc/sysdeps/linux/common/setpgrp.c
  58432. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setpgrp.c 2012-05-15 09:20:09.000000000 +0200
  58433. +++ uClibc-git/libc/sysdeps/linux/common/setpgrp.c 2014-02-03 12:32:56.000000000 +0100
  58434. @@ -4,10 +4,8 @@
  58435. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  58436. */
  58437. -#include <syscall.h>
  58438. #include <unistd.h>
  58439. -
  58440. int setpgrp(void)
  58441. {
  58442. return setpgid(0,0);
  58443. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit64.c uClibc-git/libc/sysdeps/linux/common/setrlimit64.c
  58444. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit64.c 2012-05-15 09:20:09.000000000 +0200
  58445. +++ uClibc-git/libc/sysdeps/linux/common/setrlimit64.c 2014-02-03 12:32:56.000000000 +0100
  58446. @@ -12,20 +12,16 @@
  58447. Lesser General Public License for more details.
  58448. You should have received a copy of the GNU Lesser General Public
  58449. - License along with the GNU C Library; if not, write to the Free
  58450. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58451. - 02111-1307 USA. */
  58452. + License along with the GNU C Library; if not, see
  58453. + <http://www.gnu.org/licenses/>. */
  58454. #include <_lfs_64.h>
  58455. -
  58456. -#include <sys/types.h>
  58457. -#include <sys/resource.h>
  58458. #include <bits/wordsize.h>
  58459. /* the regular setrlimit will work just fine for 64bit users */
  58460. +#if __WORDSIZE == 32
  58461. -#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  58462. -
  58463. +# include <sys/resource.h>
  58464. /* Set the soft and hard limits for RESOURCE to *RLIMITS.
  58465. Only the super-user can increase hard limits.
  58466. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit.c uClibc-git/libc/sysdeps/linux/common/setrlimit.c
  58467. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setrlimit.c 2012-05-15 09:20:09.000000000 +0200
  58468. +++ uClibc-git/libc/sysdeps/linux/common/setrlimit.c 2014-02-03 12:32:56.000000000 +0100
  58469. @@ -7,12 +7,9 @@
  58470. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  58471. */
  58472. -#define setrlimit64 __hide_setrlimit64
  58473. #include <sys/syscall.h>
  58474. -#include <unistd.h>
  58475. #include <sys/resource.h>
  58476. -#undef setrlimit64
  58477. -
  58478. +#include <bits/wordsize.h>
  58479. /* Only wrap setrlimit if the new usetrlimit is not present and setrlimit sucks */
  58480. @@ -25,7 +22,7 @@
  58481. const struct rlimit *, rlim)
  58482. int setrlimit(__rlimit_resource_t resource, struct rlimit *rlimits)
  58483. {
  58484. - return (__syscall_usetrlimit(resource, rlimits));
  58485. + return __syscall_usetrlimit(resource, rlimits);
  58486. }
  58487. #elif !defined(__UCLIBC_HANDLE_OLDER_RLIMIT__)
  58488. @@ -36,6 +33,11 @@
  58489. #else
  58490. +# define __need_NULL
  58491. +# include <stddef.h>
  58492. +# include <errno.h>
  58493. +# include <sys/param.h>
  58494. +
  58495. /* we have to handle old style setrlimit() */
  58496. # define __NR___syscall_setrlimit __NR_setrlimit
  58497. static __always_inline
  58498. @@ -52,18 +54,15 @@
  58499. /* We might have to correct the limits values. Since the old values
  58500. * were signed the new values might be too large. */
  58501. -# define RMIN(x, y) ((x) < (y) ? (x) : (y))
  58502. - rlimits_small.rlim_cur = RMIN((unsigned long int) rlimits->rlim_cur,
  58503. + rlimits_small.rlim_cur = MIN((unsigned long int) rlimits->rlim_cur,
  58504. RLIM_INFINITY >> 1);
  58505. - rlimits_small.rlim_max = RMIN((unsigned long int) rlimits->rlim_max,
  58506. + rlimits_small.rlim_max = MIN((unsigned long int) rlimits->rlim_max,
  58507. RLIM_INFINITY >> 1);
  58508. -#undef RMIN
  58509. - return (__syscall_setrlimit(resource, &rlimits_small));
  58510. + return __syscall_setrlimit(resource, &rlimits_small);
  58511. }
  58512. #endif
  58513. -
  58514. libc_hidden_def(setrlimit)
  58515. #if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  58516. -strong_alias(setrlimit, setrlimit64)
  58517. +strong_alias_untyped(setrlimit, setrlimit64)
  58518. #endif
  58519. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setsid.c uClibc-git/libc/sysdeps/linux/common/setsid.c
  58520. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setsid.c 2012-05-15 09:20:09.000000000 +0200
  58521. +++ uClibc-git/libc/sysdeps/linux/common/setsid.c 2014-02-03 12:32:56.000000000 +0100
  58522. @@ -10,6 +10,5 @@
  58523. #include <sys/syscall.h>
  58524. #include <unistd.h>
  58525. -
  58526. _syscall0(pid_t, setsid)
  58527. libc_hidden_def(setsid)
  58528. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/settimeofday.c uClibc-git/libc/sysdeps/linux/common/settimeofday.c
  58529. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/settimeofday.c 2012-05-15 09:20:09.000000000 +0200
  58530. +++ uClibc-git/libc/sysdeps/linux/common/settimeofday.c 2014-02-03 12:32:56.000000000 +0100
  58531. @@ -8,12 +8,36 @@
  58532. */
  58533. #include <sys/syscall.h>
  58534. -#include <sys/time.h>
  58535. #ifdef __USE_BSD
  58536. +# include <sys/time.h>
  58537. +# ifdef __NR_settimeofday
  58538. +_syscall2(int, settimeofday, const struct timeval *, tv,
  58539. + const struct timezone *, tz)
  58540. +# elif defined __USE_SVID && defined __NR_stime
  58541. +# define __need_NULL
  58542. +# include <stddef.h>
  58543. +# include <errno.h>
  58544. +# include <time.h>
  58545. +int settimeofday(const struct timeval *tv, const struct timezone *tz)
  58546. +{
  58547. + time_t when;
  58548. + if (tv == NULL) {
  58549. + __set_errno(EINVAL);
  58550. + return -1;
  58551. + }
  58552. -_syscall2(int, settimeofday, const struct timeval *, tv,
  58553. - const struct timezone *, tz)
  58554. + if (tz != NULL || tv->tv_usec % 1000000 != 0) {
  58555. + __set_errno(ENOSYS);
  58556. + return -1;
  58557. + }
  58558. +
  58559. + when = tv->tv_sec + (tv->tv_usec / 1000000);
  58560. + return stime(&when);
  58561. +}
  58562. +# endif
  58563. +# if defined __NR_settimeofday || (defined __USE_SVID && defined __NR_stime)
  58564. libc_hidden_def(settimeofday)
  58565. +# endif
  58566. #endif
  58567. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/setuid.c uClibc-git/libc/sysdeps/linux/common/setuid.c
  58568. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/setuid.c 2012-05-15 09:20:09.000000000 +0200
  58569. +++ uClibc-git/libc/sysdeps/linux/common/setuid.c 2014-02-03 12:32:56.000000000 +0100
  58570. @@ -22,7 +22,7 @@
  58571. #else
  58572. # define __NR___syscall_setuid __NR_setuid
  58573. -static __inline__ _syscall1(int, __syscall_setuid, __kernel_uid_t, uid)
  58574. +static __always_inline _syscall1(int, __syscall_setuid, __kernel_uid_t, uid)
  58575. int setuid(uid_t uid)
  58576. {
  58577. @@ -30,6 +30,6 @@
  58578. __set_errno(EINVAL);
  58579. return -1;
  58580. }
  58581. - return (__syscall_setuid(uid));
  58582. + return __syscall_setuid(uid);
  58583. }
  58584. #endif
  58585. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/signalfd.c uClibc-git/libc/sysdeps/linux/common/signalfd.c
  58586. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/signalfd.c 2012-05-15 09:20:09.000000000 +0200
  58587. +++ uClibc-git/libc/sysdeps/linux/common/signalfd.c 2014-02-03 12:32:56.000000000 +0100
  58588. @@ -25,13 +25,13 @@
  58589. int signalfd (int fd, const sigset_t *mask, int flags)
  58590. {
  58591. #if defined __NR___syscall_signalfd4
  58592. - return __syscall_signalfd4(fd, mask, _NSIG / 8, flags);
  58593. + return __syscall_signalfd4(fd, mask, __SYSCALL_SIGSET_T_SIZE, flags);
  58594. #elif defined __NR___syscall_signalfd
  58595. if (flags != 0) {
  58596. __set_errno(EINVAL);
  58597. return -1;
  58598. }
  58599. - return __syscall_signalfd(fd, mask, _NSIG / 8);
  58600. + return __syscall_signalfd(fd, mask, __SYSCALL_SIGSET_T_SIZE);
  58601. #endif
  58602. }
  58603. #endif
  58604. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigpending.c uClibc-git/libc/sysdeps/linux/common/sigpending.c
  58605. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigpending.c 2012-05-15 09:20:09.000000000 +0200
  58606. +++ uClibc-git/libc/sysdeps/linux/common/sigpending.c 2014-02-03 12:32:56.000000000 +0100
  58607. @@ -19,7 +19,7 @@
  58608. int sigpending(sigset_t * set)
  58609. {
  58610. - return __rt_sigpending(set, _NSIG / 8);
  58611. + return __rt_sigpending(set, __SYSCALL_SIGSET_T_SIZE);
  58612. }
  58613. #else
  58614. _syscall1(int, sigpending, sigset_t *, set)
  58615. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigprocmask.c uClibc-git/libc/sysdeps/linux/common/sigprocmask.c
  58616. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigprocmask.c 2012-05-15 09:20:09.000000000 +0200
  58617. +++ uClibc-git/libc/sysdeps/linux/common/sigprocmask.c 2014-02-03 12:32:56.000000000 +0100
  58618. @@ -35,9 +35,9 @@
  58619. * The only thing we have to make sure here is that SIGCANCEL and
  58620. * SIGSETXID are not blocked.
  58621. */
  58622. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  58623. + if (set != NULL && (unlikely (__sigismember (set, SIGCANCEL))
  58624. # ifdef SIGSETXID
  58625. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  58626. + || unlikely (__sigismember (set, SIGSETXID))
  58627. # endif
  58628. ))
  58629. {
  58630. @@ -50,7 +50,7 @@
  58631. }
  58632. #endif
  58633. - return __rt_sigprocmask(how, set, oldset, _NSIG / 8);
  58634. + return __rt_sigprocmask(how, set, oldset, __SYSCALL_SIGSET_T_SIZE);
  58635. }
  58636. @@ -70,9 +70,9 @@
  58637. * The only thing we have to make sure here is that SIGCANCEL and
  58638. * SIGSETXID are not blocked.
  58639. */
  58640. - if (set != NULL && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
  58641. + if (set != NULL && (unlikely (__sigismember (set, SIGCANCEL))
  58642. # ifdef SIGSETXID
  58643. - || __builtin_expect (__sigismember (set, SIGSETXID), 0)
  58644. + || unlikely (__sigismember (set, SIGSETXID))
  58645. # endif
  58646. ))
  58647. {
  58648. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigqueue.c uClibc-git/libc/sysdeps/linux/common/sigqueue.c
  58649. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigqueue.c 2012-05-15 09:20:09.000000000 +0200
  58650. +++ uClibc-git/libc/sysdeps/linux/common/sigqueue.c 2014-02-03 12:32:56.000000000 +0100
  58651. @@ -12,41 +12,35 @@
  58652. Lesser General Public License for more details.
  58653. You should have received a copy of the GNU Lesser General Public
  58654. - License along with the GNU C Library; if not, write to the Free
  58655. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58656. - 02111-1307 USA. */
  58657. -
  58658. -#include <errno.h>
  58659. -#include <signal.h>
  58660. -#include <unistd.h>
  58661. -#include <string.h>
  58662. + License along with the GNU C Library; if not, see
  58663. + <http://www.gnu.org/licenses/>. */
  58664. #include <sys/syscall.h>
  58665. -#if defined __USE_POSIX199309
  58666. +#if defined __NR_rt_sigqueueinfo && defined __USE_POSIX199309
  58667. +# include <signal.h>
  58668. +# include <unistd.h>
  58669. +# include <string.h>
  58670. -#ifdef __NR_rt_sigqueueinfo
  58671. -
  58672. -# define __NR___libc_rt_sigqueueinfo __NR_rt_sigqueueinfo
  58673. -static __inline__ _syscall3(int, __libc_rt_sigqueueinfo, pid_t, pid, int, sig, void*, value)
  58674. +# define __NR___syscall_rt_sigqueueinfo __NR_rt_sigqueueinfo
  58675. +static __always_inline _syscall3(int, __syscall_rt_sigqueueinfo, pid_t, pid, int, sig, void*, value)
  58676. /* Return any pending signal or wait for one for the given time. */
  58677. int sigqueue (pid_t pid, int sig, const union sigval val)
  58678. {
  58679. - siginfo_t info;
  58680. + siginfo_t info;
  58681. - /* First, clear the siginfo_t structure, so that we don't pass our
  58682. - stack content to other tasks. */
  58683. - memset (&info, 0, sizeof (siginfo_t));
  58684. - /* We must pass the information about the data in a siginfo_t value. */
  58685. - info.si_signo = sig;
  58686. - info.si_code = SI_QUEUE;
  58687. - info.si_pid = getpid ();
  58688. - info.si_uid = getuid ();
  58689. - info.si_value = val;
  58690. + /* First, clear the siginfo_t structure, so that we don't pass our
  58691. + stack content to other tasks. */
  58692. + memset(&info, 0, sizeof(info));
  58693. + /* We must pass the information about the data in a siginfo_t value. */
  58694. + info.si_signo = sig;
  58695. + info.si_code = SI_QUEUE;
  58696. + info.si_pid = getpid ();
  58697. + info.si_uid = getuid ();
  58698. + info.si_value = val;
  58699. - return __libc_rt_sigqueueinfo(pid, sig, &info);
  58700. + return __syscall_rt_sigqueueinfo(pid, sig, &info);
  58701. }
  58702. #endif
  58703. -#endif
  58704. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sigsuspend.c uClibc-git/libc/sysdeps/linux/common/sigsuspend.c
  58705. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sigsuspend.c 2012-05-15 09:20:09.000000000 +0200
  58706. +++ uClibc-git/libc/sysdeps/linux/common/sigsuspend.c 2014-02-03 12:32:56.000000000 +0100
  58707. @@ -9,51 +9,18 @@
  58708. #include <sys/syscall.h>
  58709. -#if defined __USE_POSIX
  58710. +#ifdef __USE_POSIX
  58711. #include <signal.h>
  58712. -#undef sigsuspend
  58713. +#include <cancel.h>
  58714. -libc_hidden_proto(sigsuspend)
  58715. -
  58716. -#ifdef __NR_rt_sigsuspend
  58717. -# define __NR___rt_sigsuspend __NR_rt_sigsuspend
  58718. -
  58719. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  58720. -# include <errno.h>
  58721. -# include <sysdep-cancel.h>
  58722. -
  58723. -/* Change the set of blocked signals to SET,
  58724. - wait until a signal arrives, and restore the set of blocked signals. */
  58725. -int sigsuspend (const sigset_t *set)
  58726. +int __NC(sigsuspend)(const sigset_t *set)
  58727. {
  58728. - if (SINGLE_THREAD_P)
  58729. - return INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
  58730. -
  58731. - int oldtype = LIBC_CANCEL_ASYNC ();
  58732. -
  58733. - int result = INLINE_SYSCALL (rt_sigsuspend, 2, set, _NSIG / 8);
  58734. -
  58735. - LIBC_CANCEL_RESET (oldtype);
  58736. -
  58737. - return result;
  58738. -}
  58739. -# else
  58740. -static inline _syscall2(int, __rt_sigsuspend, const sigset_t *, mask, size_t, size)
  58741. -
  58742. -int sigsuspend(const sigset_t * mask)
  58743. -{
  58744. - return __rt_sigsuspend(mask, _NSIG / 8);
  58745. -}
  58746. -# endif
  58747. +#ifdef __NR_rt_sigsuspend
  58748. + return INLINE_SYSCALL(rt_sigsuspend, 2, set, __SYSCALL_SIGSET_T_SIZE);
  58749. #else
  58750. -# define __NR___syscall_sigsuspend __NR_sigsuspend
  58751. -static __inline__ _syscall3(int, __syscall_sigsuspend, int, a, unsigned long int, b,
  58752. - unsigned long int, c)
  58753. -
  58754. -int sigsuspend(const sigset_t * set)
  58755. -{
  58756. - return __syscall_sigsuspend(0, 0, set->__val[0]);
  58757. -}
  58758. + return INLINE_SYSCALL(sigsuspend, 3, 0, 0, set->__val[0]);
  58759. #endif
  58760. -libc_hidden_def(sigsuspend)
  58761. +}
  58762. +CANCELLABLE_SYSCALL(int, sigsuspend, (const sigset_t *set), (set))
  58763. +lt_libc_hidden(sigsuspend)
  58764. #endif
  58765. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__socketcall.c uClibc-git/libc/sysdeps/linux/common/__socketcall.c
  58766. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__socketcall.c 2012-05-15 09:20:09.000000000 +0200
  58767. +++ uClibc-git/libc/sysdeps/linux/common/__socketcall.c 2014-02-03 12:32:56.000000000 +0100
  58768. @@ -8,8 +8,18 @@
  58769. */
  58770. #include <sys/syscall.h>
  58771. +
  58772. +/* At the time of this writing,
  58773. + * several arches provide the individual calls and do _not_ go through
  58774. + * this demuxer.
  58775. + *
  58776. + * Verify all arches supported by your kernel before you remove the
  58777. + * guard below!
  58778. + */
  58779. #ifdef __NR_socketcall
  58780. +#include <sys/socket.h>
  58781. +
  58782. #define __NR___socketcall __NR_socketcall
  58783. -int __socketcall(int __call, unsigned long *__args) attribute_hidden;
  58784. _syscall2(int, __socketcall, int, call, unsigned long *, args)
  58785. +
  58786. #endif
  58787. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/splice.c uClibc-git/libc/sysdeps/linux/common/splice.c
  58788. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/splice.c 2012-05-15 09:20:09.000000000 +0200
  58789. +++ uClibc-git/libc/sysdeps/linux/common/splice.c 2014-02-03 12:32:56.000000000 +0100
  58790. @@ -8,9 +8,10 @@
  58791. */
  58792. #include <sys/syscall.h>
  58793. -#include <fcntl.h>
  58794. -#ifdef __NR_splice
  58795. -_syscall6(ssize_t, splice, int, __fdin, __off64_t *, __offin, int, __fdout,
  58796. - __off64_t *, __offout, size_t, __len, unsigned int, __flags)
  58797. +#if defined __NR_splice && defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
  58798. +# include <fcntl.h>
  58799. +
  58800. +_syscall6(ssize_t, splice, int, __fdin, off64_t *, __offin, int, __fdout,
  58801. + off64_t *, __offout, size_t, __len, unsigned int, __flags)
  58802. #endif
  58803. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp.c uClibc-git/libc/sysdeps/linux/common/ssp.c
  58804. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp.c 2012-05-15 09:20:09.000000000 +0200
  58805. +++ uClibc-git/libc/sysdeps/linux/common/ssp.c 2014-02-03 12:32:56.000000000 +0100
  58806. @@ -20,103 +20,113 @@
  58807. #error "file must not be compiled with stack protection enabled on it. Use -fno-stack-protector"
  58808. #endif
  58809. +#include <string.h>
  58810. +#include <unistd.h>
  58811. +#include <signal.h>
  58812. +#ifdef __UCLIBC_HAS_SYSLOG__
  58813. +#include <sys/syslog.h>
  58814. +#endif
  58815. +
  58816. #ifdef __PROPOLICE_BLOCK_SEGV__
  58817. # define SSP_SIGTYPE SIGSEGV
  58818. #else
  58819. # define SSP_SIGTYPE SIGABRT
  58820. #endif
  58821. -#include <string.h>
  58822. -#include <unistd.h>
  58823. -#include <signal.h>
  58824. -#if defined __UCLIBC_HAS_SYSLOG__
  58825. -#include <sys/syslog.h>
  58826. +static void do_write(const char *msg)
  58827. +{
  58828. + /* could use inlined syscall here to be sure ... */
  58829. + return (void) write(STDERR_FILENO, msg, strlen(msg));
  58830. +}
  58831. +static void __cold do_msg(const char *msg1, const char *msg2, const char *msg3)
  58832. +{
  58833. + do_write(msg1);
  58834. + do_write(msg2);
  58835. + do_write(msg3);
  58836. + do_write("\n");
  58837. +#ifdef __UCLIBC_HAS_SYSLOG__
  58838. + syslog(LOG_INFO, "%s%s%s()", msg1, msg2, msg3);
  58839. #endif
  58840. +}
  58841. -
  58842. -static void block_signals(void)
  58843. +static void __cold attribute_noreturn
  58844. +#ifdef __UCLIBC_HAS_SSP_COMPAT__
  58845. +ssp_handler(char func[])
  58846. +#else
  58847. +ssp_handler(void)
  58848. +#endif
  58849. {
  58850. + pid_t pid;
  58851. + static const char msg_ssd[] = "*** stack smashing detected ***: ";
  58852. + static const char msg_terminated[] = " terminated";
  58853. +#ifdef __UCLIBC_HAS_SSP_COMPAT__
  58854. + static const char msg_ssa[] = ": stack smashing attack in function ";
  58855. +#endif
  58856. +
  58857. +#ifdef __DODEBUG__
  58858. struct sigaction sa;
  58859. sigset_t mask;
  58860. __sigfillset(&mask);
  58861. __sigdelset(&mask, SSP_SIGTYPE); /* Block all signal handlers */
  58862. sigprocmask(SIG_BLOCK, &mask, NULL); /* except SSP_SIGTYPE */
  58863. +#endif
  58864. +
  58865. +#ifdef __UCLIBC_HAS_SSP_COMPAT__
  58866. + if (func != NULL)
  58867. + do_msg(__uclibc_progname, msg_ssa, func);
  58868. + else
  58869. +#endif
  58870. + do_msg(msg_ssd, __uclibc_progname, msg_terminated);
  58871. + pid = getpid();
  58872. +#ifdef __DODEBUG__
  58873. /* Make the default handler associated with the signal handler */
  58874. memset(&sa, 0, sizeof(sa));
  58875. __sigfillset(&sa.sa_mask); /* Block all signals */
  58876. if (SIG_DFL) /* if it's constant zero, it's already done */
  58877. sa.sa_handler = SIG_DFL;
  58878. - sigaction(SSP_SIGTYPE, &sa, NULL);
  58879. -}
  58880. -
  58881. -static void __cold ssp_write(int fd, const char *msg1, const char *msg2, const char *msg3)
  58882. -{
  58883. - write(fd, msg1, strlen(msg1));
  58884. - write(fd, msg2, strlen(msg2));
  58885. - write(fd, msg3, strlen(msg3));
  58886. - write(fd, "()\n", 3);
  58887. -#if defined __UCLIBC_HAS_SYSLOG__
  58888. - openlog("ssp", LOG_CONS | LOG_PID, LOG_USER);
  58889. - syslog(LOG_INFO, "%s%s%s()", msg1, msg2, msg3);
  58890. - closelog();
  58891. + if (sigaction(SSP_SIGTYPE, &sa, NULL) == 0)
  58892. + (void)kill(pid, SSP_SIGTYPE);
  58893. #endif
  58894. -}
  58895. -
  58896. -static attribute_noreturn void terminate(void)
  58897. -{
  58898. - (void) kill(getpid(), SSP_SIGTYPE);
  58899. - _exit(127);
  58900. + (void)kill(pid, SIGKILL);
  58901. + /* The loop is added only to keep gcc happy. */
  58902. + while(1)
  58903. + _exit(127);
  58904. }
  58905. #ifdef __UCLIBC_HAS_SSP_COMPAT__
  58906. -void __stack_smash_handler(char func[], int damaged __attribute__ ((unused))) attribute_noreturn __cold;
  58907. -void __stack_smash_handler(char func[], int damaged)
  58908. +void __stack_smash_handler(char func[], int damaged) attribute_noreturn __cold;
  58909. +void __stack_smash_handler(char func[], int damaged attribute_unused)
  58910. {
  58911. - static const char message[] = ": stack smashing attack in function ";
  58912. -
  58913. - block_signals();
  58914. -
  58915. - ssp_write(STDERR_FILENO, __uclibc_progname, message, func);
  58916. -
  58917. - /* The loop is added only to keep gcc happy. */
  58918. - while(1)
  58919. - terminate();
  58920. + ssp_handler(func);
  58921. }
  58922. -#endif
  58923. -#ifdef __UCLIBC_HAS_SSP__
  58924. -void __stack_chk_fail(void) attribute_noreturn __cold;
  58925. void __stack_chk_fail(void)
  58926. {
  58927. - static const char msg1[] = "stack smashing detected: ";
  58928. - static const char msg3[] = " terminated";
  58929. -
  58930. - block_signals();
  58931. -
  58932. - ssp_write(STDERR_FILENO, msg1, __uclibc_progname, msg3);
  58933. -
  58934. - /* The loop is added only to keep gcc happy. */
  58935. - while(1)
  58936. - terminate();
  58937. + ssp_handler(NULL);
  58938. }
  58939. +#else
  58940. +strong_alias(ssp_handler,__stack_chk_fail)
  58941. #endif
  58942. #ifdef __UCLIBC_HAS_FORTIFY__
  58943. +/* should be redone when activated to use common code above.
  58944. + * for now, it works without debugging support */
  58945. void __chk_fail(void)
  58946. {
  58947. - static const char msg1[] = "buffer overflow detected: ";
  58948. - static const char msg3[] = " terminated";
  58949. -
  58950. - block_signals();
  58951. + static const char msg_fail[] = "*** buffer overflow detected ***: ";
  58952. + static const char msg_terminated[] = " terminated";
  58953. + pid_t pid;
  58954. - ssp_write(STDERR_FILENO, msg1, __uclibc_progname, msg3);
  58955. + do_msg(msg_fail, __uclibc_progname, msg_terminated);
  58956. + pid = getpid();
  58957. + (void)kill(pid, SIGKILL);
  58958. /* The loop is added only to keep gcc happy. */
  58959. while(1)
  58960. - terminate();
  58961. + _exit(127);
  58962. }
  58963. libc_hidden_def(__chk_fail)
  58964. #endif
  58965. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp-local.c uClibc-git/libc/sysdeps/linux/common/ssp-local.c
  58966. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ssp-local.c 2012-05-15 09:20:09.000000000 +0200
  58967. +++ uClibc-git/libc/sysdeps/linux/common/ssp-local.c 2014-02-03 12:32:56.000000000 +0100
  58968. @@ -12,18 +12,19 @@
  58969. Lesser General Public License for more details.
  58970. You should have received a copy of the GNU Lesser General Public
  58971. - License along with the GNU C Library; if not, write to the Free
  58972. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  58973. - 02111-1307 USA. */
  58974. + License along with the GNU C Library; if not, see
  58975. + <http://www.gnu.org/licenses/>. */
  58976. /*
  58977. * Peter S. Mazinger ps.m[@]gmx.net
  58978. * copied stack_chk_fail_local.c from glibc and adapted for uClibc
  58979. */
  58980. -#include <features.h>
  58981. +#if defined __SSP__ || defined __SSP_ALL__
  58982. +# error "file must not be compiled with stack protection enabled on it. Use -fno-stack-protector"
  58983. +#endif
  58984. -extern void __stack_chk_fail (void) attribute_noreturn;
  58985. +#include <features.h>
  58986. /* On some architectures, this helps needless PIC pointer setup
  58987. that would be needed just for the __stack_chk_fail call. */
  58988. @@ -31,5 +32,5 @@
  58989. void __stack_chk_fail_local (void) attribute_noreturn attribute_hidden;
  58990. void __stack_chk_fail_local (void)
  58991. {
  58992. - __stack_chk_fail ();
  58993. + __stack_chk_fail ();
  58994. }
  58995. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stat64.c uClibc-git/libc/sysdeps/linux/common/stat64.c
  58996. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stat64.c 2012-05-15 09:20:09.000000000 +0200
  58997. +++ uClibc-git/libc/sysdeps/linux/common/stat64.c 2014-02-03 12:32:56.000000000 +0100
  58998. @@ -7,17 +7,28 @@
  58999. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59000. */
  59001. +#include <_lfs_64.h>
  59002. #include <sys/syscall.h>
  59003. #include <sys/stat.h>
  59004. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_stat64
  59005. +#if defined __UCLIBC_HAS_LFS__
  59006. -# define __NR___syscall_stat64 __NR_stat64
  59007. +# if defined __NR_fstatat64 && !defined __NR_stat64
  59008. +# include <fcntl.h>
  59009. # include <unistd.h>
  59010. -# include "xstatconv.h"
  59011. -static __inline__ _syscall2(int, __syscall_stat64,
  59012. - const char *, file_name, struct kernel_stat64 *, buf)
  59013. +int stat64(const char *file_name, struct stat64 *buf)
  59014. +{
  59015. + return fstatat64(AT_FDCWD, file_name, buf, 0);
  59016. +}
  59017. +libc_hidden_def(stat64)
  59018. +
  59019. +/* For systems which have both, prefer the old one */
  59020. +# elif defined __NR_stat64
  59021. +# define __NR___syscall_stat64 __NR_stat64
  59022. +# include "xstatconv.h"
  59023. +static __always_inline _syscall2(int, __syscall_stat64,
  59024. + const char *, file_name, struct kernel_stat64 *, buf)
  59025. int stat64(const char *file_name, struct stat64 *buf)
  59026. {
  59027. @@ -31,4 +42,6 @@
  59028. return result;
  59029. }
  59030. libc_hidden_def(stat64)
  59031. -#endif
  59032. +# endif
  59033. +
  59034. +#endif /* __UCLIBC_HAS_LFS__ */
  59035. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stat.c uClibc-git/libc/sysdeps/linux/common/stat.c
  59036. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stat.c 2012-05-15 09:20:09.000000000 +0200
  59037. +++ uClibc-git/libc/sysdeps/linux/common/stat.c 2014-02-03 12:32:56.000000000 +0100
  59038. @@ -10,14 +10,24 @@
  59039. #include <sys/syscall.h>
  59040. #include <unistd.h>
  59041. #include <sys/stat.h>
  59042. -#include "xstatconv.h"
  59043. #undef stat
  59044. +#if defined __NR_fstatat64 && !defined __NR_stat
  59045. +# include <fcntl.h>
  59046. +
  59047. +int stat(const char *file_name, struct stat *buf)
  59048. +{
  59049. + return fstatat(AT_FDCWD, file_name, buf, 0);
  59050. +}
  59051. +
  59052. +#else
  59053. +# include "xstatconv.h"
  59054. +
  59055. int stat(const char *file_name, struct stat *buf)
  59056. {
  59057. int result;
  59058. -#ifdef __NR_stat64
  59059. +# ifdef __NR_stat64
  59060. /* normal stat call has limited values for various stat elements
  59061. * e.g. uid device major/minor etc.
  59062. * so we use 64 variant if available
  59063. @@ -28,19 +38,21 @@
  59064. if (result == 0) {
  59065. __xstat32_conv(&kbuf, buf);
  59066. }
  59067. -#else
  59068. +# else
  59069. struct kernel_stat kbuf;
  59070. result = INLINE_SYSCALL(stat, 2, file_name, &kbuf);
  59071. if (result == 0) {
  59072. __xstat_conv(&kbuf, buf);
  59073. }
  59074. -#endif
  59075. +# endif /* __NR_stat64 */
  59076. return result;
  59077. }
  59078. +#endif /* __NR_fstat64 */
  59079. libc_hidden_def(stat)
  59080. -#if ! defined __NR_stat64 && defined __UCLIBC_HAS_LFS__
  59081. +#if ! defined __NR_stat64 && ! defined __NR_fstatat64 && \
  59082. + defined __UCLIBC_HAS_LFS__
  59083. strong_alias_untyped(stat,stat64)
  59084. libc_hidden_def(stat64)
  59085. #endif
  59086. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/statfs.c uClibc-git/libc/sysdeps/linux/common/statfs.c
  59087. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/statfs.c 2012-05-15 09:20:09.000000000 +0200
  59088. +++ uClibc-git/libc/sysdeps/linux/common/statfs.c 2014-02-03 12:32:56.000000000 +0100
  59089. @@ -13,10 +13,39 @@
  59090. #include <sys/vfs.h>
  59091. extern __typeof(statfs) __libc_statfs attribute_hidden;
  59092. -#define __NR___libc_statfs __NR_statfs
  59093. +
  59094. +#if defined __NR_statfs64 && !defined __NR_statfs
  59095. +
  59096. +int __libc_statfs(const char *path, struct statfs *buf)
  59097. +{
  59098. + int err = INLINE_SYSCALL(statfs64, 3, path, sizeof(*buf), buf);
  59099. +
  59100. + if (err == 0) {
  59101. + /* Did we overflow? */
  59102. + if (buf->__pad1 || buf->__pad2 || buf->__pad3 ||
  59103. + buf->__pad4 || buf->__pad5) {
  59104. + __set_errno(EOVERFLOW);
  59105. + return -1;
  59106. + }
  59107. + }
  59108. +
  59109. + return err;
  59110. +}
  59111. +# if defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__
  59112. +/* statfs is used by NPTL, so it must exported in case */
  59113. +weak_alias(__libc_statfs, statfs)
  59114. +# endif
  59115. +
  59116. +/* For systems which have both, prefer the old one */
  59117. +#else
  59118. +
  59119. +# define __NR___libc_statfs __NR_statfs
  59120. _syscall2(int, __libc_statfs, const char *, path, struct statfs *, buf)
  59121. -#if defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__
  59122. +# if defined __UCLIBC_LINUX_SPECIFIC__ || defined __UCLIBC_HAS_THREADS_NATIVE__
  59123. /* statfs is used by NPTL, so it must exported in case */
  59124. -weak_alias(__libc_statfs,statfs)
  59125. +weak_alias(__libc_statfs, statfs)
  59126. +# endif
  59127. +
  59128. #endif
  59129. +libc_hidden_def(statfs)
  59130. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stime.c uClibc-git/libc/sysdeps/linux/common/stime.c
  59131. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stime.c 2012-05-15 09:20:09.000000000 +0200
  59132. +++ uClibc-git/libc/sysdeps/linux/common/stime.c 2014-02-03 12:32:56.000000000 +0100
  59133. @@ -8,15 +8,17 @@
  59134. */
  59135. #include <sys/syscall.h>
  59136. -#include <time.h>
  59137. -#include <sys/time.h>
  59138. #ifdef __USE_SVID
  59139. -#ifdef __NR_stime
  59140. +# include <time.h>
  59141. +# ifdef __NR_stime
  59142. _syscall1(int, stime, const time_t *, t)
  59143. -#else
  59144. -
  59145. -int stime(const time_t * when)
  59146. +# elif defined __USE_BSD && defined __NR_settimeofday
  59147. +# define __need_NULL
  59148. +# include <stddef.h>
  59149. +# include <errno.h>
  59150. +# include <sys/time.h>
  59151. +int stime(const time_t *when)
  59152. {
  59153. struct timeval tv;
  59154. @@ -28,5 +30,8 @@
  59155. tv.tv_usec = 0;
  59156. return settimeofday(&tv, (struct timezone *) 0);
  59157. }
  59158. -#endif
  59159. +# endif
  59160. +# if defined __NR_stime || (defined __USE_BSD && defined __NR_settimeofday)
  59161. +libc_hidden_def(stime)
  59162. +# endif
  59163. #endif
  59164. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/stubs.c uClibc-git/libc/sysdeps/linux/common/stubs.c
  59165. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/stubs.c 2012-05-15 09:20:09.000000000 +0200
  59166. +++ uClibc-git/libc/sysdeps/linux/common/stubs.c 2014-02-03 12:32:56.000000000 +0100
  59167. @@ -6,31 +6,52 @@
  59168. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59169. */
  59170. +/* Please keep the list sorted alphabetically, in ascending order
  59171. + * of the stub name! */
  59172. +
  59173. #include <errno.h>
  59174. #include <bits/wordsize.h>
  59175. #include <sys/syscall.h>
  59176. #ifdef __UCLIBC_HAS_STUBS__
  59177. -static int enosys_stub(void) __attribute_used__;
  59178. -static int enosys_stub(void)
  59179. +__attribute_used__ static int enosys_stub(void)
  59180. {
  59181. __set_errno(ENOSYS);
  59182. return -1;
  59183. }
  59184. +__attribute_used__ static int ret_enosys_stub(void)
  59185. +{
  59186. + return ENOSYS;
  59187. +}
  59188. +
  59189. #define make_stub(stub) \
  59190. link_warning(stub, #stub ": this function is not implemented") \
  59191. strong_alias(enosys_stub, stub)
  59192. +#define make_ret_stub(stub) \
  59193. + link_warning(stub, #stub ": this function is not implemented") \
  59194. + strong_alias(ret_enosys_stub, stub)
  59195. +
  59196. #ifndef __ARCH_USE_MMU__
  59197. # undef __NR_fork
  59198. #endif
  59199. -#ifndef __UCLIBC_HAS_LFS__
  59200. -# undef __NR_fadvise64
  59201. -# undef __NR_fadvise64_64
  59202. -# undef __NR_sync_file_range
  59203. +#ifdef __arm__
  59204. +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
  59205. +# define __NR_fadvise64 __NR_arm_fadvise64_64
  59206. +/* ARM always provides funcs w/out syscalls; disable the stubs */
  59207. +# define __NR_ioperm 0
  59208. +# define __NR_iopl 0
  59209. +#endif
  59210. +
  59211. +#ifdef __mips__
  59212. +# define __NR_fadvise64_64 __NR_fadvise64
  59213. +#endif
  59214. +
  59215. +#ifdef __xtensa__
  59216. +# define __NR_fadvise64 __NR_fadvise64_64
  59217. #endif
  59218. #if !defined __NR_accept && !defined __NR_socketcall && defined __UCLIBC_HAS_SOCKET__
  59219. @@ -45,14 +66,6 @@
  59220. make_stub(arch_prctl)
  59221. #endif
  59222. -#if !defined __NR_capget && defined __UCLIBC_LINUX_SPECIFIC__
  59223. -make_stub(capget)
  59224. -#endif
  59225. -
  59226. -#if !defined __NR_capset && defined __UCLIBC_LINUX_SPECIFIC__
  59227. -make_stub(capset)
  59228. -#endif
  59229. -
  59230. #if !defined __NR_bdflush && defined __UCLIBC_LINUX_SPECIFIC__
  59231. make_stub(bdflush)
  59232. #endif
  59233. @@ -61,11 +74,11 @@
  59234. make_stub(bind)
  59235. #endif
  59236. -#ifndef __NR_capget
  59237. +#if !defined __NR_capget && defined __UCLIBC_LINUX_SPECIFIC__
  59238. make_stub(capget)
  59239. #endif
  59240. -#ifndef __NR_capset
  59241. +#if !defined __NR_capset && defined __UCLIBC_LINUX_SPECIFIC__
  59242. make_stub(capset)
  59243. #endif
  59244. @@ -81,38 +94,44 @@
  59245. make_stub(delete_module)
  59246. #endif
  59247. -#ifndef __NR_epoll_create
  59248. +#if !defined __NR_epoll_create && defined __UCLIBC_HAS_EPOLL__ \
  59249. + && !defined __NR_epoll_create1
  59250. make_stub(epoll_create)
  59251. #endif
  59252. -#ifndef __NR_epoll_ctl
  59253. +#if !defined __NR_epoll_ctl && defined __UCLIBC_HAS_EPOLL__
  59254. make_stub(epoll_ctl)
  59255. #endif
  59256. -#ifndef __NR_epoll_wait
  59257. +#if !defined __NR_epoll_pwait && defined __UCLIBC_HAS_EPOLL__
  59258. +make_stub(epoll_pwait)
  59259. +#endif
  59260. +
  59261. +#if !defined __NR_epoll_wait && defined __UCLIBC_HAS_EPOLL__ \
  59262. + && !defined __NR_epoll_pwait
  59263. make_stub(epoll_wait)
  59264. #endif
  59265. -#if !defined __NR_eventfd && defined __UCLIBC_LINUX_SPECIFIC__
  59266. +#if !defined __NR_eventfd && !defined __NR_eventfd2 && defined __UCLIBC_LINUX_SPECIFIC__
  59267. make_stub(eventfd)
  59268. #endif
  59269. -#ifndef __NR_fdatasync
  59270. +#if !defined __NR_fdatasync && !defined __NR_osf_fdatasync
  59271. make_stub(fdatasync)
  59272. #endif
  59273. +#ifndef __NR_fgetxattr
  59274. +make_stub(fgetxattr)
  59275. +#endif
  59276. +
  59277. #ifndef __NR_flistxattr
  59278. make_stub(flistxattr)
  59279. #endif
  59280. -#ifndef __NR_fork
  59281. +#if !defined __NR_fork && !defined __NR_clone
  59282. make_stub(fork)
  59283. #endif
  59284. -#ifndef __NR_fgetxattr
  59285. -make_stub(fgetxattr)
  59286. -#endif
  59287. -
  59288. #ifndef __NR_fremovexattr
  59289. make_stub(fremovexattr)
  59290. #endif
  59291. @@ -121,7 +140,8 @@
  59292. make_stub(fsetxattr)
  59293. #endif
  59294. -#if !defined __NR_fstatfs && defined __UCLIBC_LINUX_SPECIFIC__
  59295. +#if !defined __NR_fstatfs && !defined __NR_fstatfs64 \
  59296. + && defined __UCLIBC_LINUX_SPECIFIC__
  59297. make_stub(fstatfs)
  59298. #endif
  59299. @@ -129,10 +149,6 @@
  59300. make_stub(get_kernel_syms)
  59301. #endif
  59302. -#if !defined __NR_getcpu && defined __UCLIBC_LINUX_SPECIFIC__ && ((defined __x86_64__ && !defined __UCLIBC_HAS_TLS__) || !defined __x86_64__)
  59303. -make_stub(sched_getcpu)
  59304. -#endif
  59305. -
  59306. #if !defined __NR_getpeername && !defined __NR_socketcall && defined __UCLIBC_HAS_SOCKET__
  59307. make_stub(getpeername)
  59308. #endif
  59309. @@ -157,7 +173,12 @@
  59310. make_stub(init_module)
  59311. #endif
  59312. -#if !defined __NR_inotify_init && defined __UCLIBC_LINUX_SPECIFIC__
  59313. +#if !defined __NR_inotify_add_watch && defined __UCLIBC_LINUX_SPECIFIC__
  59314. +make_stub(inotify_add_watch)
  59315. +#endif
  59316. +
  59317. +#if !defined __NR_inotify_init && defined __UCLIBC_LINUX_SPECIFIC__ \
  59318. + && !defined __NR_inotify_init1
  59319. make_stub(inotify_init)
  59320. #endif
  59321. @@ -165,19 +186,15 @@
  59322. make_stub(inotify_init1)
  59323. #endif
  59324. -#if !defined __NR_inotify_add_watch && defined __UCLIBC_LINUX_SPECIFIC__
  59325. -make_stub(inotify_add_watch)
  59326. -#endif
  59327. -
  59328. #if !defined __NR_inotify_rm_watch && defined __UCLIBC_LINUX_SPECIFIC__
  59329. make_stub(inotify_rm_watch)
  59330. #endif
  59331. -#if !defined __NR_ioperm && defined __UCLIBC_LINUX_SPECIFIC__ && !defined __arm__
  59332. +#if !defined __NR_ioperm && defined __UCLIBC_LINUX_SPECIFIC__
  59333. make_stub(ioperm)
  59334. #endif
  59335. -#if !defined __NR_iopl && defined __UCLIBC_LINUX_SPECIFIC__ && !defined __arm__
  59336. +#if !defined __NR_iopl && defined __UCLIBC_LINUX_SPECIFIC__
  59337. make_stub(iopl)
  59338. #endif
  59339. @@ -213,6 +230,13 @@
  59340. make_stub(modify_ldt)
  59341. #endif
  59342. +#ifndef __NR_openat
  59343. +make_stub(openat)
  59344. +# ifdef __UCLIBC_HAS_LFS__
  59345. +make_stub(openat64)
  59346. +# endif
  59347. +#endif
  59348. +
  59349. #if !defined __NR_personality && defined __UCLIBC_LINUX_SPECIFIC__
  59350. make_stub(personality)
  59351. #endif
  59352. @@ -225,6 +249,18 @@
  59353. make_stub(pivot_root)
  59354. #endif
  59355. +#if !defined __NR_fadvise64 && defined __UCLIBC_HAS_LFS__
  59356. +make_ret_stub(posix_fadvise)
  59357. +#endif
  59358. +
  59359. +#if !defined __NR_fadvise64_64 && defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  59360. +make_ret_stub(posix_fadvise64)
  59361. +#endif
  59362. +
  59363. +#ifndef __NR_madvise
  59364. +make_ret_stub(posix_madvise)
  59365. +#endif
  59366. +
  59367. #if !defined __NR_ppoll && defined __UCLIBC_LINUX_SPECIFIC__
  59368. make_stub(ppoll)
  59369. #endif
  59370. @@ -233,6 +269,10 @@
  59371. make_stub(prctl)
  59372. #endif
  59373. +#if !defined __NR_query_module && defined __UCLIBC_LINUX_MODULE_24__
  59374. +make_stub(query_module)
  59375. +#endif
  59376. +
  59377. #if !defined __NR_readahead && defined __UCLIBC_LINUX_SPECIFIC__
  59378. make_stub(readahead)
  59379. #endif
  59380. @@ -241,10 +281,6 @@
  59381. make_stub(reboot)
  59382. #endif
  59383. -#if !defined __NR_query_module && defined __UCLIBC_LINUX_MODULE_24__
  59384. -make_stub(query_module)
  59385. -#endif
  59386. -
  59387. #if !defined __NR_recv && !defined __NR_socketcall && !defined __NR_recvfrom && defined __UCLIBC_HAS_SOCKET__
  59388. make_stub(recv)
  59389. #endif
  59390. @@ -265,10 +301,18 @@
  59391. make_stub(removexattr)
  59392. #endif
  59393. +#ifndef __NR_renameat
  59394. +make_stub(renameat)
  59395. +#endif
  59396. +
  59397. #if !defined __NR_sched_getaffinity && defined __UCLIBC_LINUX_SPECIFIC__
  59398. make_stub(sched_getaffinity)
  59399. #endif
  59400. +#if !defined __NR_getcpu && defined __UCLIBC_LINUX_SPECIFIC__ && ((defined __x86_64__ && !defined __UCLIBC_HAS_TLS__) || !defined __x86_64__)
  59401. +make_stub(sched_getcpu)
  59402. +#endif
  59403. +
  59404. #if !defined __NR_sched_setaffinity && defined __UCLIBC_LINUX_SPECIFIC__
  59405. make_stub(sched_setaffinity)
  59406. #endif
  59407. @@ -277,7 +321,8 @@
  59408. make_stub(send)
  59409. #endif
  59410. -#if !defined __NR_sendfile && defined __UCLIBC_LINUX_SPECIFIC__
  59411. +#if !defined __NR_sendfile && !defined __NR_sendfile64 \
  59412. + && defined __UCLIBC_LINUX_SPECIFIC__
  59413. make_stub(sendfile)
  59414. #endif
  59415. @@ -325,6 +370,15 @@
  59416. make_stub(signalfd)
  59417. #endif
  59418. +#ifndef __NR_rt_sigtimedwait
  59419. +make_stub(sigtimedwait)
  59420. +make_stub(sigwaitinfo)
  59421. +#endif
  59422. +
  59423. +#ifndef __NR_rt_sigqueueinfo
  59424. +make_stub(sigqueue)
  59425. +#endif
  59426. +
  59427. #if !defined __NR_socket && !defined __NR_socketcall && defined __UCLIBC_HAS_SOCKET__
  59428. make_stub(socket)
  59429. #endif
  59430. @@ -337,9 +391,9 @@
  59431. make_stub(socketpair)
  59432. #endif
  59433. -#ifndef __NR_rt_sigtimedwait
  59434. -make_stub(sigtimedwait)
  59435. -make_stub(sigwaitinfo)
  59436. +#if !defined __NR_stime && !defined __NR_settimeofday
  59437. +make_stub(stime)
  59438. +make_stub(settimeofday)
  59439. #endif
  59440. #if !defined __NR_splice && defined __UCLIBC_LINUX_SPECIFIC__
  59441. @@ -354,6 +408,10 @@
  59442. make_stub(swapon)
  59443. #endif
  59444. +#if !defined __NR_symlink && !defined __NR_symlinkat
  59445. +make_stub(symlink)
  59446. +#endif
  59447. +
  59448. #if !defined __NR_sync_file_range && defined __UCLIBC_LINUX_SPECIFIC__
  59449. make_stub(sync_file_range)
  59450. #endif
  59451. @@ -382,6 +440,21 @@
  59452. make_stub(timerfd_gettime)
  59453. #endif
  59454. +#ifndef __NR_utimensat
  59455. +make_stub(futimens)
  59456. +make_stub(utimensat)
  59457. +# ifndef __NR_lutimes
  59458. +make_stub(lutimes)
  59459. +# endif
  59460. +#endif
  59461. +
  59462. +#ifndef __NR_utimensat
  59463. +#if !defined __NR_utime && !defined __NR_utimes
  59464. +/*make_stub(utime) obsoleted */
  59465. +make_stub(utimes)
  59466. +#endif
  59467. +#endif
  59468. +
  59469. #if !defined __NR_umount && !defined __NR_umount2 && defined __UCLIBC_LINUX_SPECIFIC__
  59470. make_stub(umount)
  59471. #endif
  59472. @@ -394,19 +467,15 @@
  59473. make_stub(unshare)
  59474. #endif
  59475. -#ifndef __NR_utimensat
  59476. -make_stub(futimens)
  59477. -make_stub(utimensat)
  59478. -# ifndef __NR_lutimes
  59479. -make_stub(lutimes)
  59480. -# endif
  59481. +#if defined __UCLIBC_SV4_DEPRECATED__ && !defined __NR_ustat
  59482. +make_stub(ustat)
  59483. #endif
  59484. #if !defined __NR_vhangup && defined __UCLIBC_LINUX_SPECIFIC__
  59485. make_stub(vhangup)
  59486. #endif
  59487. -#ifndef __NR_vmsplice
  59488. +#if !defined __NR_vmsplice && defined __UCLIBC_LINUX_SPECIFIC__
  59489. make_stub(vmsplice)
  59490. #endif
  59491. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/symlinkat.c uClibc-git/libc/sysdeps/linux/common/symlinkat.c
  59492. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/symlinkat.c 2012-05-15 09:20:09.000000000 +0200
  59493. +++ uClibc-git/libc/sysdeps/linux/common/symlinkat.c 2014-02-03 12:32:56.000000000 +0100
  59494. @@ -11,6 +11,7 @@
  59495. #ifdef __NR_symlinkat
  59496. _syscall3(int, symlinkat, const char *, from, int, tofd, const char *, to)
  59497. +libc_hidden_def(symlinkat)
  59498. #else
  59499. /* should add emulation with symlink() and /proc/self/fd/ ... */
  59500. #endif
  59501. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/symlink.c uClibc-git/libc/sysdeps/linux/common/symlink.c
  59502. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/symlink.c 2012-05-15 09:20:09.000000000 +0200
  59503. +++ uClibc-git/libc/sysdeps/linux/common/symlink.c 2014-02-03 12:32:56.000000000 +0100
  59504. @@ -9,6 +9,19 @@
  59505. #include <sys/syscall.h>
  59506. #if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K
  59507. -#include <unistd.h>
  59508. +# include <unistd.h>
  59509. +
  59510. +# if defined __NR_symlinkat && !defined __NR_symlink
  59511. +# include <fcntl.h>
  59512. +int symlink(const char *oldpath, const char *newpath)
  59513. +{
  59514. + return symlinkat(oldpath, AT_FDCWD, newpath);
  59515. +}
  59516. +
  59517. +# elif defined(__NR_symlink)
  59518. +
  59519. _syscall2(int, symlink, const char *, oldpath, const char *, newpath)
  59520. +
  59521. +# endif
  59522. +
  59523. #endif
  59524. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sync.c uClibc-git/libc/sysdeps/linux/common/sync.c
  59525. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sync.c 2012-05-15 09:20:09.000000000 +0200
  59526. +++ uClibc-git/libc/sysdeps/linux/common/sync.c 2014-02-03 12:32:56.000000000 +0100
  59527. @@ -8,12 +8,8 @@
  59528. */
  59529. #include <sys/syscall.h>
  59530. -# if defined __USE_BSD || defined __USE_UNIX98
  59531. -#include <sys/types.h>
  59532. -#include <unistd.h>
  59533. -void sync(void)
  59534. -{
  59535. - INLINE_SYSCALL(sync, 0);
  59536. -}
  59537. +#if defined __USE_BSD || defined __USE_UNIX98
  59538. +# include <unistd.h>
  59539. +_syscall0(void, sync)
  59540. #endif
  59541. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sync_file_range.c uClibc-git/libc/sysdeps/linux/common/sync_file_range.c
  59542. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sync_file_range.c 2012-05-15 09:20:09.000000000 +0200
  59543. +++ uClibc-git/libc/sysdeps/linux/common/sync_file_range.c 2014-02-15 14:18:15.000000000 +0100
  59544. @@ -4,24 +4,34 @@
  59545. *
  59546. * Copyright (C) 2008 Bernhard Reutner-Fischer <uclibc@uclibc.org>
  59547. *
  59548. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59549. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  59550. */
  59551. #include <sys/syscall.h>
  59552. -#if defined __USE_GNU
  59553. -#include <fcntl.h>
  59554. +#if defined __UCLIBC_HAS_LFS__ && defined __USE_GNU
  59555. +# include <bits/wordsize.h>
  59556. +# include <endian.h>
  59557. +# include <fcntl.h>
  59558. +# include <cancel.h>
  59559. -#if defined __NR_sync_file_range && defined __UCLIBC_HAS_LFS__
  59560. -#define __NR___syscall_sync_file_range __NR_sync_file_range
  59561. -static __inline__ _syscall6(int, __syscall_sync_file_range, int, fd,
  59562. - off_t, offset_hi, off_t, offset_lo,
  59563. - off_t, nbytes_hi, off_t, nbytes_lo, unsigned int, flags)
  59564. -int sync_file_range(int fd, off64_t offset, off64_t nbytes, unsigned int flags)
  59565. +# ifdef __NR_sync_file_range2
  59566. +# undef __NR_sync_file_range
  59567. +# define __NR_sync_file_range __NR_sync_file_range2
  59568. +# endif
  59569. +
  59570. +# ifdef __NR_sync_file_range
  59571. +static int __NC(sync_file_range)(int fd, off64_t offset, off64_t nbytes, unsigned int flags)
  59572. {
  59573. - return __syscall_sync_file_range(fd,
  59574. - __LONG_LONG_PAIR((long)(offset >> 32), (long)(offset & 0xffffffff)),
  59575. - __LONG_LONG_PAIR((long)(nbytes >> 32), (long)(nbytes & 0xffffffff)),
  59576. - flags);
  59577. +# if defined __powerpc__ && __WORDSIZE == 64
  59578. + return INLINE_SYSCALL(sync_file_range, 4, fd, offset, nbytes, flags);
  59579. +# elif defined __mips__ && _MIPS_SIM == _ABIO32
  59580. + return INLINE_SYSCALL(sync_file_range, 7, fd, 0,
  59581. + OFF64_HI_LO(offset), OFF64_HI_LO(nbytes), flags);
  59582. +# else
  59583. + return INLINE_SYSCALL(sync_file_range, 6, fd,
  59584. + OFF64_HI_LO(offset), OFF64_HI_LO(nbytes), flags);
  59585. +# endif
  59586. }
  59587. -#endif
  59588. +CANCELLABLE_SYSCALL(int, sync_file_range, (int fd, off64_t offset, off64_t nbytes, unsigned int flags), (fd, offset, nbytes, flags))
  59589. +# endif
  59590. #endif
  59591. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/acct.h uClibc-git/libc/sysdeps/linux/common/sys/acct.h
  59592. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/acct.h 2012-05-15 09:20:09.000000000 +0200
  59593. +++ uClibc-git/libc/sysdeps/linux/common/sys/acct.h 2014-02-03 12:32:56.000000000 +0100
  59594. @@ -1,4 +1,4 @@
  59595. -/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
  59596. +/* Copyright (C) 1996, 1997, 1998, 1999, 2007 Free Software Foundation, Inc.
  59597. This file is part of the GNU C Library.
  59598. The GNU C Library is free software; you can redistribute it and/or
  59599. @@ -12,15 +12,15 @@
  59600. Lesser General Public License for more details.
  59601. You should have received a copy of the GNU Lesser General Public
  59602. - License along with the GNU C Library; if not, write to the Free
  59603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59604. - 02111-1307 USA. */
  59605. + License along with the GNU C Library; if not, see
  59606. + <http://www.gnu.org/licenses/>. */
  59607. #ifndef _SYS_ACCT_H
  59608. #define _SYS_ACCT_H 1
  59609. #include <features.h>
  59610. +#include <endian.h>
  59611. #define __need_time_t
  59612. #include <time.h>
  59613. #include <sys/types.h>
  59614. @@ -38,25 +38,51 @@
  59615. typedef u_int16_t comp_t;
  59616. struct acct
  59617. - {
  59618. - char ac_flag; /* Accounting flags. */
  59619. - u_int16_t ac_uid; /* Accounting user ID. */
  59620. - u_int16_t ac_gid; /* Accounting group ID. */
  59621. - u_int16_t ac_tty; /* Controlling tty. */
  59622. - u_int32_t ac_btime; /* Beginning time. */
  59623. - comp_t ac_utime; /* Accounting user time. */
  59624. - comp_t ac_stime; /* Accounting system time. */
  59625. - comp_t ac_etime; /* Accounting elapsed time. */
  59626. - comp_t ac_mem; /* Accounting average memory usage. */
  59627. - comp_t ac_io; /* Accounting chars transferred. */
  59628. - comp_t ac_rw; /* Accounting blocks read or written. */
  59629. - comp_t ac_minflt; /* Accounting minor pagefaults. */
  59630. - comp_t ac_majflt; /* Accounting major pagefaults. */
  59631. - comp_t ac_swaps; /* Accounting number of swaps. */
  59632. - u_int32_t ac_exitcode; /* Accounting process exitcode. */
  59633. - char ac_comm[ACCT_COMM+1]; /* Accounting command name. */
  59634. - char ac_pad[10]; /* Accounting padding bytes. */
  59635. - };
  59636. +{
  59637. + char ac_flag; /* Flags. */
  59638. + u_int16_t ac_uid; /* Real user ID. */
  59639. + u_int16_t ac_gid; /* Real group ID. */
  59640. + u_int16_t ac_tty; /* Controlling terminal. */
  59641. + u_int32_t ac_btime; /* Beginning time. */
  59642. + comp_t ac_utime; /* User time. */
  59643. + comp_t ac_stime; /* System time. */
  59644. + comp_t ac_etime; /* Elapsed time. */
  59645. + comp_t ac_mem; /* Average memory usage. */
  59646. + comp_t ac_io; /* Chars transferred. */
  59647. + comp_t ac_rw; /* Blocks read or written. */
  59648. + comp_t ac_minflt; /* Minor pagefaults. */
  59649. + comp_t ac_majflt; /* Major pagefaults. */
  59650. + comp_t ac_swaps; /* Number of swaps. */
  59651. + u_int32_t ac_exitcode; /* Process exitcode. */
  59652. + char ac_comm[ACCT_COMM+1]; /* Command name. */
  59653. + char ac_pad[10]; /* Padding bytes. */
  59654. +};
  59655. +
  59656. +#if 0
  59657. +struct acct_v3
  59658. +{
  59659. + char ac_flag; /* Flags */
  59660. + char ac_version; /* Always set to ACCT_VERSION */
  59661. + u_int16_t ac_tty; /* Control Terminal */
  59662. + u_int32_t ac_exitcode; /* Exitcode */
  59663. + u_int32_t ac_uid; /* Real User ID */
  59664. + u_int32_t ac_gid; /* Real Group ID */
  59665. + u_int32_t ac_pid; /* Process ID */
  59666. + u_int32_t ac_ppid; /* Parent Process ID */
  59667. + u_int32_t ac_btime; /* Process Creation Time */
  59668. + float ac_etime; /* Elapsed Time */
  59669. + comp_t ac_utime; /* User Time */
  59670. + comp_t ac_stime; /* System Time */
  59671. + comp_t ac_mem; /* Average Memory Usage */
  59672. + comp_t ac_io; /* Chars Transferred */
  59673. + comp_t ac_rw; /* Blocks Read or Written */
  59674. + comp_t ac_minflt; /* Minor Pagefaults */
  59675. + comp_t ac_majflt; /* Major Pagefaults */
  59676. + comp_t ac_swaps; /* Number of Swaps */
  59677. + char ac_comm[ACCT_COMM]; /* Command Name */
  59678. +};
  59679. +#endif
  59680. +
  59681. enum
  59682. {
  59683. @@ -66,11 +92,17 @@
  59684. AXSIG = 0x10 /* Killed by a signal. */
  59685. };
  59686. +#if __BYTE_ORDER == __BIG_ENDIAN
  59687. +# define ACCT_BYTEORDER 0x80 /* Accounting file is big endian. */
  59688. +#else
  59689. +# define ACCT_BYTEORDER 0x00 /* Accounting file is little endian. */
  59690. +#endif
  59691. +
  59692. #define AHZ 100
  59693. /* Switch process accounting on and off. */
  59694. -extern int acct (__const char *__filename) __THROW;
  59695. +extern int acct (const char *__filename) __THROW;
  59696. __END_DECLS
  59697. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/epoll.h uClibc-git/libc/sysdeps/linux/common/sys/epoll.h
  59698. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/epoll.h 2012-05-15 09:20:09.000000000 +0200
  59699. +++ uClibc-git/libc/sysdeps/linux/common/sys/epoll.h 2014-02-03 12:32:56.000000000 +0100
  59700. @@ -36,7 +36,6 @@
  59701. # define __EPOLL_PACKED
  59702. #endif
  59703. -
  59704. enum EPOLL_EVENTS
  59705. {
  59706. EPOLLIN = 0x001,
  59707. @@ -97,7 +96,7 @@
  59708. returned by epoll_create() should be closed with close(). */
  59709. extern int epoll_create (int __size) __THROW;
  59710. -/* Same as epoll_create but with an FLAGS parameter. The unused SIZE
  59711. +/* Same as epoll_create but with a FLAGS parameter. The unused SIZE
  59712. parameter has been dropped. */
  59713. extern int epoll_create1 (int __flags) __THROW;
  59714. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/eventfd.h uClibc-git/libc/sysdeps/linux/common/sys/eventfd.h
  59715. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/eventfd.h 2012-05-15 09:20:09.000000000 +0200
  59716. +++ uClibc-git/libc/sysdeps/linux/common/sys/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  59717. @@ -1,4 +1,4 @@
  59718. -/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
  59719. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  59720. This file is part of the GNU C Library.
  59721. The GNU C Library is free software; you can redistribute it and/or
  59722. @@ -12,30 +12,20 @@
  59723. Lesser General Public License for more details.
  59724. You should have received a copy of the GNU Lesser General Public
  59725. - License along with the GNU C Library; if not, write to the Free
  59726. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59727. - 02111-1307 USA. */
  59728. + License along with the GNU C Library; if not, see
  59729. + <http://www.gnu.org/licenses/>. */
  59730. #ifndef _SYS_EVENTFD_H
  59731. #define _SYS_EVENTFD_H 1
  59732. #include <stdint.h>
  59733. +/* Get the platform-dependent flags. */
  59734. +#include <bits/eventfd.h>
  59735. /* Type for event counter. */
  59736. typedef uint64_t eventfd_t;
  59737. -/* Flags for signalfd. */
  59738. -enum
  59739. - {
  59740. - EFD_SEMAPHORE = 1,
  59741. -#define EFD_SEMAPHORE EFD_SEMAPHORE
  59742. - EFD_CLOEXEC = 02000000,
  59743. -#define EFD_CLOEXEC EFD_CLOEXEC
  59744. - EFD_NONBLOCK = 04000
  59745. -#define EFD_NONBLOCK EFD_NONBLOCK
  59746. - };
  59747. -
  59748. __BEGIN_DECLS
  59749. @@ -43,6 +33,16 @@
  59750. value to COUNT. */
  59751. extern int eventfd (int __count, int __flags) __THROW;
  59752. +#if 0 /* not (yet) implemented in uClibc */
  59753. +
  59754. +/* Read event counter and possibly wait for events. */
  59755. +extern int eventfd_read (int __fd, eventfd_t *__value);
  59756. +
  59757. +/* Increment event counter. */
  59758. +extern int eventfd_write (int __fd, eventfd_t __value);
  59759. +
  59760. +#endif
  59761. +
  59762. __END_DECLS
  59763. #endif /* sys/eventfd.h */
  59764. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/prctl.h uClibc-git/libc/sysdeps/linux/common/sys/prctl.h
  59765. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/prctl.h 2012-05-15 09:20:09.000000000 +0200
  59766. +++ uClibc-git/libc/sysdeps/linux/common/sys/prctl.h 2014-02-03 12:32:56.000000000 +0100
  59767. @@ -12,9 +12,8 @@
  59768. Lesser General Public License for more details.
  59769. You should have received a copy of the GNU Lesser General Public
  59770. - License along with the GNU C Library; if not, write to the Free
  59771. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59772. - 02111-1307 USA. */
  59773. + License along with the GNU C Library; if not, see
  59774. + <http://www.gnu.org/licenses/>. */
  59775. #ifndef _SYS_PRCTL_H
  59776. #define _SYS_PRCTL_H 1
  59777. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/ptrace.h uClibc-git/libc/sysdeps/linux/common/sys/ptrace.h
  59778. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  59779. +++ uClibc-git/libc/sysdeps/linux/common/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  59780. @@ -1,5 +1,5 @@
  59781. /* `ptrace' debugger support interface. Linux version.
  59782. - Copyright (C) 1996-1999,2000,2006,2007 Free Software Foundation, Inc.
  59783. + Copyright (C) 1996-2012 Free Software Foundation, Inc.
  59784. This file is part of the GNU C Library.
  59785. The GNU C Library is free software; you can redistribute it and/or
  59786. @@ -13,9 +13,8 @@
  59787. Lesser General Public License for more details.
  59788. You should have received a copy of the GNU Lesser General Public
  59789. - License along with the GNU C Library; if not, write to the Free
  59790. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  59791. - 02111-1307 USA. */
  59792. + License along with the GNU C Library; if not, see
  59793. + <http://www.gnu.org/licenses/>. */
  59794. #ifndef _SYS_PTRACE_H
  59795. #define _SYS_PTRACE_H 1
  59796. @@ -125,13 +124,40 @@
  59797. #define PT_GETSIGINFO PTRACE_GETSIGINFO
  59798. /* Set new siginfo for process. */
  59799. - PTRACE_SETSIGINFO = 0x4203
  59800. + PTRACE_SETSIGINFO = 0x4203,
  59801. #define PT_SETSIGINFO PTRACE_SETSIGINFO
  59802. +
  59803. + /* Get register content. */
  59804. + PTRACE_GETREGSET = 0x4204,
  59805. +#define PTRACE_GETREGSET PTRACE_GETREGSET
  59806. +
  59807. + /* Set register content. */
  59808. + PTRACE_SETREGSET = 0x4205,
  59809. +#define PTRACE_SETREGSET PTRACE_SETREGSET
  59810. +
  59811. + /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect
  59812. + signal or group stop state. */
  59813. + PTRACE_SEIZE = 0x4206,
  59814. +#define PTRACE_SEIZE PTRACE_SEIZE
  59815. +
  59816. + /* Trap seized tracee. */
  59817. + PTRACE_INTERRUPT = 0x4207,
  59818. +#define PTRACE_INTERRUPT PTRACE_INTERRUPT
  59819. +
  59820. + /* Wait for next group event. */
  59821. + PTRACE_LISTEN = 0x4208
  59822. };
  59823. +/* Flag for PTRACE_LISTEN. */
  59824. +enum __ptrace_flags
  59825. +{
  59826. + PTRACE_SEIZE_DEVEL = 0x80000000
  59827. +};
  59828. +
  59829. /* Options set using PTRACE_SETOPTIONS. */
  59830. -enum __ptrace_setoptions {
  59831. +enum __ptrace_setoptions
  59832. +{
  59833. PTRACE_O_TRACESYSGOOD = 0x00000001,
  59834. PTRACE_O_TRACEFORK = 0x00000002,
  59835. PTRACE_O_TRACEVFORK = 0x00000004,
  59836. @@ -139,17 +165,20 @@
  59837. PTRACE_O_TRACEEXEC = 0x00000010,
  59838. PTRACE_O_TRACEVFORKDONE = 0x00000020,
  59839. PTRACE_O_TRACEEXIT = 0x00000040,
  59840. - PTRACE_O_MASK = 0x0000007f
  59841. + PTRACE_O_TRACESECCOMP = 0x00000080,
  59842. + PTRACE_O_MASK = 0x000000ff
  59843. };
  59844. /* Wait extended result codes for the above trace options. */
  59845. -enum __ptrace_eventcodes {
  59846. +enum __ptrace_eventcodes
  59847. +{
  59848. PTRACE_EVENT_FORK = 1,
  59849. PTRACE_EVENT_VFORK = 2,
  59850. PTRACE_EVENT_CLONE = 3,
  59851. PTRACE_EVENT_EXEC = 4,
  59852. PTRACE_EVENT_VFORK_DONE = 5,
  59853. - PTRACE_EVENT_EXIT = 6
  59854. + PTRACE_EVENT_EXIT = 6,
  59855. + PTRAVE_EVENT_SECCOMP = 7
  59856. };
  59857. /* Perform process tracing functions. REQUEST is one of the values
  59858. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl64.c uClibc-git/libc/sysdeps/linux/common/__syscall_fcntl64.c
  59859. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl64.c 2012-05-15 09:20:09.000000000 +0200
  59860. +++ uClibc-git/libc/sysdeps/linux/common/__syscall_fcntl64.c 2014-02-03 12:32:56.000000000 +0100
  59861. @@ -7,14 +7,18 @@
  59862. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  59863. */
  59864. +#include <_lfs_64.h>
  59865. #include <sys/syscall.h>
  59866. -#include <stdarg.h>
  59867. -#include <fcntl.h>
  59868. +#include <bits/wordsize.h>
  59869. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  59870. +#if defined __NR_fcntl64 && __WORDSIZE == 32
  59871. +# include <stdarg.h>
  59872. +# include <cancel.h>
  59873. +# include <fcntl.h>
  59874. +
  59875. +# define __NR___fcntl64_nocancel __NR_fcntl64
  59876. +_syscall3(int, __NC(fcntl64), int, fd, int, cmd, long, arg)
  59877. -#define __NR___syscall_fcntl64 __NR_fcntl64
  59878. -static __inline__ _syscall3(int, __syscall_fcntl64, int, fd, int, cmd, long, arg)
  59879. int fcntl64(int fd, int cmd, ...)
  59880. {
  59881. long arg;
  59882. @@ -24,7 +28,15 @@
  59883. arg = va_arg(list, long);
  59884. va_end(list);
  59885. - return (__syscall_fcntl64(fd, cmd, arg));
  59886. + if (SINGLE_THREAD_P || (cmd != F_SETLKW64))
  59887. + return __NC(fcntl64)(fd, cmd, arg);
  59888. +# ifdef __NEW_THREADS
  59889. + int oldtype = LIBC_CANCEL_ASYNC();
  59890. + int result = __NC(fcntl64)(fd, cmd, arg);
  59891. + LIBC_CANCEL_RESET(oldtype);
  59892. + return result;
  59893. +# endif
  59894. }
  59895. -libc_hidden_def(fcntl64)
  59896. +lt_strong_alias(fcntl64)
  59897. +lt_libc_hidden(fcntl64)
  59898. #endif
  59899. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl.c uClibc-git/libc/sysdeps/linux/common/__syscall_fcntl.c
  59900. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_fcntl.c 2012-05-15 09:20:09.000000000 +0200
  59901. +++ uClibc-git/libc/sysdeps/linux/common/__syscall_fcntl.c 2014-02-03 12:32:56.000000000 +0100
  59902. @@ -10,82 +10,61 @@
  59903. #include <sys/syscall.h>
  59904. #include <stdarg.h>
  59905. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  59906. -#include <sysdep-cancel.h> /* Must come before <fcntl.h>. */
  59907. -#endif
  59908. +#include <cancel.h> /* Must come before <fcntl.h>. */
  59909. #include <fcntl.h>
  59910. #include <bits/wordsize.h>
  59911. -extern __typeof(fcntl) __libc_fcntl;
  59912. -libc_hidden_proto(__libc_fcntl)
  59913. -
  59914. -int __fcntl_nocancel (int fd, int cmd, ...)
  59915. +int __NC(fcntl)(int fd, int cmd, long arg)
  59916. {
  59917. - va_list ap;
  59918. - void *arg;
  59919. -
  59920. - va_start (ap, cmd);
  59921. - arg = va_arg (ap, void *);
  59922. - va_end (ap);
  59923. -
  59924. -# if __WORDSIZE == 32
  59925. +#if __WORDSIZE == 32
  59926. if (cmd == F_GETLK64 || cmd == F_SETLK64 || cmd == F_SETLKW64) {
  59927. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  59928. - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  59929. -# else
  59930. +# if (defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64) || !defined __NR_fcntl
  59931. + return INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);
  59932. +# else
  59933. __set_errno(ENOSYS);
  59934. return -1;
  59935. -# endif
  59936. - }
  59937. # endif
  59938. - return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  59939. + }
  59940. +#endif
  59941. +
  59942. +#if defined __NR_fcntl
  59943. + return INLINE_SYSCALL(fcntl, 3, fd, cmd, arg);
  59944. +#else
  59945. + __set_errno(ENOSYS);
  59946. + return -1;
  59947. +#endif
  59948. }
  59949. -libc_hidden_def(__fcntl_nocancel)
  59950. -int __libc_fcntl (int fd, int cmd, ...)
  59951. +int fcntl(int fd, int cmd, ...)
  59952. {
  59953. va_list ap;
  59954. - void *arg;
  59955. + long arg;
  59956. va_start (ap, cmd);
  59957. - arg = va_arg (ap, void *);
  59958. + arg = va_arg (ap, long);
  59959. va_end (ap);
  59960. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  59961. if (SINGLE_THREAD_P || (cmd != F_SETLKW && cmd != F_SETLKW64))
  59962. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  59963. - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  59964. -# else
  59965. - return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  59966. -# endif
  59967. -
  59968. +#if defined __NR_fcntl
  59969. + return __NC(fcntl)(fd, cmd, arg);
  59970. +#else
  59971. + return INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);
  59972. +#endif
  59973. +#ifdef __NEW_THREADS
  59974. int oldtype = LIBC_CANCEL_ASYNC ();
  59975. -
  59976. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  59977. - int result = INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  59978. -# else
  59979. - int result = INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  59980. -# endif
  59981. -
  59982. +#if defined __NR_fcntl
  59983. + int result = __NC(fcntl)(fd, cmd, arg);
  59984. +#else
  59985. + int result = INLINE_SYSCALL(fcntl64, 3, fd, cmd, arg);
  59986. +#endif
  59987. LIBC_CANCEL_RESET (oldtype);
  59988. -
  59989. return result;
  59990. -#else
  59991. -# if __WORDSIZE == 32
  59992. - if (cmd == F_GETLK64 || cmd == F_SETLK64 || cmd == F_SETLKW64) {
  59993. -# if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
  59994. - return INLINE_SYSCALL (fcntl64, 3, fd, cmd, arg);
  59995. -# else
  59996. - __set_errno(ENOSYS);
  59997. - return -1;
  59998. -# endif
  59999. - }
  60000. -# endif
  60001. - return INLINE_SYSCALL (fcntl, 3, fd, cmd, arg);
  60002. #endif
  60003. }
  60004. -libc_hidden_def(__libc_fcntl)
  60005. -
  60006. -libc_hidden_proto(fcntl)
  60007. -weak_alias(__libc_fcntl,fcntl)
  60008. -libc_hidden_weak(fcntl)
  60009. +lt_strong_alias(fcntl)
  60010. +lt_libc_hidden(fcntl)
  60011. +#if defined __UCLIBC_HAS_LFS__ && !defined __NR_fcntl64 && __WORDSIZE == 32
  60012. +strong_alias_untyped(fcntl,fcntl64)
  60013. +lt_strong_alias(fcntl64)
  60014. +lt_libc_hidden(fcntl64)
  60015. +#endif
  60016. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_rt_sigaction.c uClibc-git/libc/sysdeps/linux/common/__syscall_rt_sigaction.c
  60017. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_rt_sigaction.c 2012-05-15 09:20:09.000000000 +0200
  60018. +++ uClibc-git/libc/sysdeps/linux/common/__syscall_rt_sigaction.c 2014-02-03 12:32:56.000000000 +0100
  60019. @@ -12,11 +12,8 @@
  60020. #ifdef __NR_rt_sigaction
  60021. #include <signal.h>
  60022. -int __syscall_rt_sigaction (int __signum, const struct sigaction *__act,
  60023. - struct sigaction *__oldact, size_t __size);
  60024. -
  60025. #define __NR___syscall_rt_sigaction __NR_rt_sigaction
  60026. _syscall4(int, __syscall_rt_sigaction, int, signum,
  60027. - const struct sigaction *, act, struct sigaction *, oldact,
  60028. - size_t, size)
  60029. + const struct sigaction *, act, struct sigaction *, oldact,
  60030. + size_t, size)
  60031. #endif
  60032. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/syscalls.h uClibc-git/libc/sysdeps/linux/common/syscalls.h
  60033. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  60034. +++ uClibc-git/libc/sysdeps/linux/common/syscalls.h 1970-01-01 01:00:00.000000000 +0100
  60035. @@ -1,24 +0,0 @@
  60036. -/* vi: set sw=4 ts=4: */
  60037. -/*
  60038. - * Common header file for uClibc syscalls
  60039. - *
  60040. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  60041. - *
  60042. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60043. - */
  60044. -
  60045. -#define _LARGEFILE64_SOURCE
  60046. -#include <features.h>
  60047. -#include <errno.h>
  60048. -#include <sys/types.h>
  60049. -#include <sys/syscall.h>
  60050. -#include <endian.h>
  60051. -
  60052. -#undef __OPTIMIZE__
  60053. -/* We absolutely do _NOT_ want interfaces silently
  60054. - * being renamed under us or very bad things will happen... */
  60055. -#ifdef __USE_FILE_OFFSET64
  60056. -# undef __USE_FILE_OFFSET64
  60057. -#endif
  60058. -
  60059. -#include <bits/kernel_types.h>
  60060. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_sigaction.c uClibc-git/libc/sysdeps/linux/common/__syscall_sigaction.c
  60061. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/__syscall_sigaction.c 2012-05-15 09:20:09.000000000 +0200
  60062. +++ uClibc-git/libc/sysdeps/linux/common/__syscall_sigaction.c 2014-02-03 12:32:56.000000000 +0100
  60063. @@ -12,8 +12,7 @@
  60064. #ifndef __NR_rt_sigaction
  60065. #define __NR___syscall_sigaction __NR_sigaction
  60066. #include <signal.h>
  60067. -int __syscall_sigaction (int __signum, const struct sigaction *__act, struct sigaction *__oldact) attribute_hidden;
  60068. _syscall3(int, __syscall_sigaction, int, signum, const struct sigaction *,
  60069. - act, struct sigaction *, oldact)
  60070. + act, struct sigaction *, oldact)
  60071. #endif
  60072. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sysdep.h uClibc-git/libc/sysdeps/linux/common/sysdep.h
  60073. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  60074. +++ uClibc-git/libc/sysdeps/linux/common/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  60075. @@ -13,9 +13,8 @@
  60076. Lesser General Public License for more details.
  60077. You should have received a copy of the GNU Lesser General Public
  60078. - License along with the GNU C Library; if not, write to the Free
  60079. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60080. - 02111-1307 USA. */
  60081. + License along with the GNU C Library; if not, see
  60082. + <http://www.gnu.org/licenses/>. */
  60083. #include <sys/syscall.h>
  60084. @@ -49,6 +48,8 @@
  60085. #define JUMPTARGET(sym) sym
  60086. #endif
  60087. +#define ret_ERRVAL ret
  60088. +
  60089. /* Macros to generate eh_frame unwind information. */
  60090. # ifdef HAVE_ASM_CFI_DIRECTIVES
  60091. # define cfi_sections(sect...) .cfi_sections sect
  60092. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/sysinfo.c uClibc-git/libc/sysdeps/linux/common/sysinfo.c
  60093. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/sysinfo.c 2012-05-15 09:20:09.000000000 +0200
  60094. +++ uClibc-git/libc/sysdeps/linux/common/sysinfo.c 2014-02-03 12:32:56.000000000 +0100
  60095. @@ -8,5 +8,8 @@
  60096. */
  60097. #include <sys/syscall.h>
  60098. -#include <sys/sysinfo.h>
  60099. +
  60100. +#ifdef __NR_sysinfo
  60101. +# include <sys/sysinfo.h>
  60102. _syscall1(int, sysinfo, struct sysinfo *, info)
  60103. +#endif
  60104. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/tee.c uClibc-git/libc/sysdeps/linux/common/tee.c
  60105. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/tee.c 2012-05-15 09:20:09.000000000 +0200
  60106. +++ uClibc-git/libc/sysdeps/linux/common/tee.c 2014-02-03 12:32:56.000000000 +0100
  60107. @@ -8,9 +8,10 @@
  60108. */
  60109. #include <sys/syscall.h>
  60110. -#include <fcntl.h>
  60111. -#ifdef __NR_tee
  60112. +#if defined __NR_tee && defined __USE_GNU
  60113. +# include <fcntl.h>
  60114. +
  60115. _syscall4(ssize_t, tee, int, __fdin, int, __fdout, size_t, __len,
  60116. - unsigned int, __flags)
  60117. + unsigned int, __flags)
  60118. #endif
  60119. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/time.c uClibc-git/libc/sysdeps/linux/common/time.c
  60120. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/time.c 2012-05-15 09:20:09.000000000 +0200
  60121. +++ uClibc-git/libc/sysdeps/linux/common/time.c 2014-02-03 12:32:56.000000000 +0100
  60122. @@ -9,12 +9,11 @@
  60123. #include <sys/syscall.h>
  60124. #include <time.h>
  60125. -#include <sys/time.h>
  60126. -
  60127. #ifdef __NR_time
  60128. _syscall_noerr1(time_t, time, time_t *, t)
  60129. #else
  60130. +# include <sys/time.h>
  60131. time_t time(time_t * t)
  60132. {
  60133. time_t result;
  60134. @@ -25,9 +24,8 @@
  60135. */
  60136. gettimeofday(&tv, NULL);
  60137. result = (time_t) tv.tv_sec;
  60138. - if (t != NULL) {
  60139. + if (t != NULL)
  60140. *t = result;
  60141. - }
  60142. return result;
  60143. }
  60144. #endif
  60145. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/times.c uClibc-git/libc/sysdeps/linux/common/times.c
  60146. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/times.c 2012-05-15 09:20:09.000000000 +0200
  60147. +++ uClibc-git/libc/sysdeps/linux/common/times.c 2014-02-03 12:32:56.000000000 +0100
  60148. @@ -10,6 +10,5 @@
  60149. #include <sys/syscall.h>
  60150. #include <sys/times.h>
  60151. -
  60152. _syscall_noerr1(clock_t, times, struct tms *, buf)
  60153. libc_hidden_def(times)
  60154. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate64.c uClibc-git/libc/sysdeps/linux/common/truncate64.c
  60155. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate64.c 2012-05-15 09:20:09.000000000 +0200
  60156. +++ uClibc-git/libc/sysdeps/linux/common/truncate64.c 2014-02-03 12:32:56.000000000 +0100
  60157. @@ -7,49 +7,35 @@
  60158. * and on 32 bit machines this sends things into the kernel as
  60159. * two 32-bit arguments (high and low 32 bits of length) that
  60160. * are ordered based on endianess. It turns out endian.h has
  60161. - * just the macro we need to order things, __LONG_LONG_PAIR.
  60162. + * just the macro we need to order things, OFF64_HI_LO.
  60163. */
  60164. -#include <features.h>
  60165. -#include <unistd.h>
  60166. -#include <errno.h>
  60167. -#include <endian.h>
  60168. -#include <stdint.h>
  60169. -#include <sys/types.h>
  60170. +#include <_lfs_64.h>
  60171. #include <sys/syscall.h>
  60172. +#include <unistd.h>
  60173. -#if defined __UCLIBC_HAS_LFS__
  60174. -
  60175. -#if defined __NR_truncate64
  60176. -
  60177. -#if __WORDSIZE == 64
  60178. +#ifdef __NR_truncate64
  60179. +# include <bits/wordsize.h>
  60180. -/* For a 64 bit machine, life is simple... */
  60181. +# if __WORDSIZE == 64
  60182. _syscall2(int, truncate64, const char *, path, __off64_t, length)
  60183. -
  60184. -#elif __WORDSIZE == 32
  60185. -
  60186. -/* The exported truncate64 function. */
  60187. +# elif __WORDSIZE == 32
  60188. +# include <endian.h>
  60189. +# include <stdint.h>
  60190. int truncate64(const char * path, __off64_t length)
  60191. {
  60192. - uint32_t low = length & 0xffffffff;
  60193. - uint32_t high = length >> 32;
  60194. -#if defined(__UCLIBC_TRUNCATE64_HAS_4_ARGS__)
  60195. - return INLINE_SYSCALL(truncate64, 4, path, 0,
  60196. - __LONG_LONG_PAIR(high, low));
  60197. -#else
  60198. - return INLINE_SYSCALL(truncate64, 3, path,
  60199. - __LONG_LONG_PAIR(high, low));
  60200. -#endif
  60201. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  60202. + return INLINE_SYSCALL(truncate64, 4, path, 0, OFF64_HI_LO(length));
  60203. +# else
  60204. + return INLINE_SYSCALL(truncate64, 3, path, OFF64_HI_LO(length));
  60205. +# endif
  60206. }
  60207. +# else
  60208. +# error Your machine is not 64 bit nor 32 bit, I am dazed and confused.
  60209. +# endif
  60210. -#else /* __WORDSIZE */
  60211. -#error Your machine is not 64 bit nor 32 bit, I am dazed and confused.
  60212. -#endif /* __WORDSIZE */
  60213. -
  60214. -#else /* __NR_truncate64 */
  60215. -
  60216. -
  60217. +#else
  60218. +# include <errno.h>
  60219. int truncate64(const char * path, __off64_t length)
  60220. {
  60221. __off_t x = (__off_t) length;
  60222. @@ -64,5 +50,4 @@
  60223. }
  60224. #endif /* __NR_truncate64 */
  60225. -
  60226. -#endif /* __UCLIBC_HAS_LFS__ */
  60227. +libc_hidden_def(truncate64)
  60228. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate.c uClibc-git/libc/sysdeps/linux/common/truncate.c
  60229. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/truncate.c 2012-05-15 09:20:09.000000000 +0200
  60230. +++ uClibc-git/libc/sysdeps/linux/common/truncate.c 2014-02-03 12:32:56.000000000 +0100
  60231. @@ -10,6 +10,25 @@
  60232. #include <sys/syscall.h>
  60233. #include <unistd.h>
  60234. +#if defined(__NR_truncate64) && !defined(__NR_truncate)
  60235. +# include <endian.h>
  60236. +# include <stdint.h>
  60237. +int truncate(const char *path, __off_t length)
  60238. +{
  60239. +# if defined __UCLIBC_HAS_LFS
  60240. + return truncate64(path, length);
  60241. +# elif __WORDSIZE == 32
  60242. +# if defined(__UCLIBC_SYSCALL_ALIGN_64BIT__)
  60243. + return INLINE_SYSCALL(truncate64, 4, path, 0, OFF_HI_LO(length));
  60244. +# else
  60245. + return INLINE_SYSCALL(truncate64, 3, path, OFF_HI_LO(length));
  60246. +# endif
  60247. +# endif
  60248. +}
  60249. +libc_hidden_def(truncate);
  60250. +
  60251. +#else
  60252. _syscall2(int, truncate, const char *, path, __off_t, length)
  60253. libc_hidden_def(truncate)
  60254. +#endif
  60255. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/umask.c uClibc-git/libc/sysdeps/linux/common/umask.c
  60256. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/umask.c 2012-05-15 09:20:09.000000000 +0200
  60257. +++ uClibc-git/libc/sysdeps/linux/common/umask.c 2014-02-03 12:32:56.000000000 +0100
  60258. @@ -10,10 +10,4 @@
  60259. #include <sys/syscall.h>
  60260. #include <sys/stat.h>
  60261. -#define __NR___syscall_umask __NR_umask
  60262. -static __inline__ _syscall1(__kernel_mode_t, __syscall_umask, __kernel_mode_t, mode)
  60263. -
  60264. -mode_t umask(mode_t mode)
  60265. -{
  60266. - return __syscall_umask(mode);
  60267. -}
  60268. +_syscall_noerr1(mode_t, umask, mode_t, mode)
  60269. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/umount2.c uClibc-git/libc/sysdeps/linux/common/umount2.c
  60270. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/umount2.c 2012-05-15 09:20:09.000000000 +0200
  60271. +++ uClibc-git/libc/sysdeps/linux/common/umount2.c 2014-02-03 12:32:56.000000000 +0100
  60272. @@ -9,9 +9,8 @@
  60273. #include <sys/syscall.h>
  60274. -#if defined __USE_GNU
  60275. -#include <sys/mount.h>
  60276. -#ifdef __NR_umount2 /* Old kernels don't have umount2 */
  60277. +#if defined __UCLIBC_LINUX_SPECIFIC__ && defined __NR_umount2
  60278. +# include <sys/mount.h>
  60279. _syscall2(int, umount2, const char *, special_file, int, flags)
  60280. -#endif
  60281. +libc_hidden_def(umount2)
  60282. #endif
  60283. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/umount.c uClibc-git/libc/sysdeps/linux/common/umount.c
  60284. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/umount.c 2012-05-15 09:20:09.000000000 +0200
  60285. +++ uClibc-git/libc/sysdeps/linux/common/umount.c 2014-02-03 12:32:56.000000000 +0100
  60286. @@ -9,24 +9,15 @@
  60287. #include <sys/syscall.h>
  60288. -#if defined __USE_GNU
  60289. #include <sys/mount.h>
  60290. -
  60291. -/* arch provides umount() syscall */
  60292. #ifdef __NR_umount
  60293. -
  60294. _syscall1(int, umount, const char *, specialfile)
  60295. -
  60296. -/* arch provides umount2() syscall */
  60297. #elif defined __NR_umount2
  60298. -
  60299. -# define __NR___syscall_umount2 __NR_umount2
  60300. -static __inline__ _syscall2(int, __syscall_umount2, const char *, special_file, int, flags)
  60301. -
  60302. +# ifndef __UCLIBC_LINUX_SPECIFIC__
  60303. +static __always_inline _syscall2(int, umount2, const char *, special_file, int, flags)
  60304. +# endif
  60305. int umount(const char *special_file)
  60306. {
  60307. - return (__syscall_umount2(special_file, 0));
  60308. + return umount2(special_file, 0);
  60309. }
  60310. -
  60311. -#endif
  60312. #endif
  60313. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/uname.c uClibc-git/libc/sysdeps/linux/common/uname.c
  60314. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/uname.c 2012-05-15 09:20:09.000000000 +0200
  60315. +++ uClibc-git/libc/sysdeps/linux/common/uname.c 2014-02-03 12:32:56.000000000 +0100
  60316. @@ -10,6 +10,5 @@
  60317. #include <sys/syscall.h>
  60318. #include <sys/utsname.h>
  60319. -
  60320. _syscall1(int, uname, struct utsname *, buf)
  60321. libc_hidden_def(uname)
  60322. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/unlinkat.c uClibc-git/libc/sysdeps/linux/common/unlinkat.c
  60323. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/unlinkat.c 2012-05-15 09:20:09.000000000 +0200
  60324. +++ uClibc-git/libc/sysdeps/linux/common/unlinkat.c 2014-02-03 12:32:56.000000000 +0100
  60325. @@ -11,6 +11,7 @@
  60326. #ifdef __NR_unlinkat
  60327. _syscall3(int, unlinkat, int, fd, const char *, file, int, flag)
  60328. +libc_hidden_def(unlinkat)
  60329. #else
  60330. /* should add emulation with unlink() and /proc/self/fd/ ... */
  60331. #endif
  60332. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/unlink.c uClibc-git/libc/sysdeps/linux/common/unlink.c
  60333. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/unlink.c 2012-05-15 09:20:09.000000000 +0200
  60334. +++ uClibc-git/libc/sysdeps/linux/common/unlink.c 2014-02-03 12:32:56.000000000 +0100
  60335. @@ -10,6 +10,13 @@
  60336. #include <sys/syscall.h>
  60337. #include <unistd.h>
  60338. -
  60339. +#if defined __NR_unlinkat && !defined __NR_unlink
  60340. +# include <fcntl.h>
  60341. +int unlink(const char *pathname)
  60342. +{
  60343. + return unlinkat(AT_FDCWD, pathname, 0);
  60344. +}
  60345. +#else
  60346. _syscall1(int, unlink, const char *, pathname)
  60347. +#endif
  60348. libc_hidden_def(unlink)
  60349. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/unwind.h uClibc-git/libc/sysdeps/linux/common/unwind.h
  60350. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/unwind.h 2012-05-15 09:20:09.000000000 +0200
  60351. +++ uClibc-git/libc/sysdeps/linux/common/unwind.h 2014-02-03 12:32:56.000000000 +0100
  60352. @@ -14,9 +14,8 @@
  60353. Lesser General Public License for more details.
  60354. You should have received a copy of the GNU Lesser General Public
  60355. - License along with the GNU C Library; if not, write to the Free
  60356. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60357. - 02111-1307 USA. */
  60358. + License along with the GNU C Library; if not, see
  60359. + <http://www.gnu.org/licenses/>. */
  60360. /* This is derived from the C++ ABI for IA-64. Where we diverge
  60361. for cross-architecture compatibility are noted with "@@@". */
  60362. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/ustat.c uClibc-git/libc/sysdeps/linux/common/ustat.c
  60363. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/ustat.c 2012-05-15 09:20:09.000000000 +0200
  60364. +++ uClibc-git/libc/sysdeps/linux/common/ustat.c 2014-02-03 12:32:56.000000000 +0100
  60365. @@ -11,16 +11,18 @@
  60366. #include <sys/ustat.h>
  60367. #include <sys/sysmacros.h>
  60368. -#define __NR___syscall_ustat __NR_ustat
  60369. +#ifdef __NR_ustat
  60370. +# define __NR___syscall_ustat __NR_ustat
  60371. /* Kernel's fs/super.c defines this:
  60372. * long sys_ustat(unsigned dev, struct ustat __user * ubuf),
  60373. * thus we use unsigned, not __kernel_dev_t.
  60374. */
  60375. -static __inline__ _syscall2(int, __syscall_ustat,
  60376. - unsigned, kdev_t,
  60377. - struct ustat *, ubuf)
  60378. +static __always_inline _syscall2(int, __syscall_ustat,
  60379. + unsigned, kdev_t,
  60380. + struct ustat *, ubuf)
  60381. int ustat(dev_t dev, struct ustat *ubuf)
  60382. {
  60383. return __syscall_ustat(dev, ubuf);
  60384. }
  60385. +#endif
  60386. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/utime.c uClibc-git/libc/sysdeps/linux/common/utime.c
  60387. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/utime.c 2012-05-15 09:20:09.000000000 +0200
  60388. +++ uClibc-git/libc/sysdeps/linux/common/utime.c 2014-02-03 12:32:56.000000000 +0100
  60389. @@ -10,13 +10,33 @@
  60390. #include <sys/syscall.h>
  60391. #include <utime.h>
  60392. +#if defined __NR_utimensat && !defined __NR_utime
  60393. +# include <fcntl.h>
  60394. +# include <stddef.h>
  60395. -#ifdef __NR_utime
  60396. -_syscall2(int, utime, const char *, file, const struct utimbuf *, times)
  60397. -#else
  60398. -#include <stdlib.h>
  60399. -#include <sys/time.h>
  60400. +int utime(const char *file, const struct utimbuf *times)
  60401. +{
  60402. + struct timespec tspecs[2], *ts;
  60403. +
  60404. + if (times) {
  60405. + ts = tspecs;
  60406. + ts[0].tv_sec = times->actime;
  60407. + ts[0].tv_nsec = 0;
  60408. + ts[1].tv_sec = times->modtime;
  60409. + ts[1].tv_nsec = 0;
  60410. + } else {
  60411. + ts = NULL;
  60412. + }
  60413. + return utimensat(AT_FDCWD, file, ts, 0);
  60414. +}
  60415. +
  60416. +#elif defined(__NR_utime)
  60417. +_syscall2(int, utime, const char *, file, const struct utimbuf *, times)
  60418. +#elif defined __NR_utimes /* alpha || ia64 */
  60419. +# define __need_NULL
  60420. +# include <stddef.h>
  60421. +# include <sys/time.h>
  60422. int utime(const char *file, const struct utimbuf *times)
  60423. {
  60424. @@ -25,11 +45,15 @@
  60425. if (times != NULL) {
  60426. timevals[0].tv_usec = 0L;
  60427. timevals[1].tv_usec = 0L;
  60428. - timevals[0].tv_sec = (long int) times->actime;
  60429. - timevals[1].tv_sec = (long int) times->modtime;
  60430. + timevals[0].tv_sec = (time_t) times->actime;
  60431. + timevals[1].tv_sec = (time_t) times->modtime;
  60432. }
  60433. return utimes(file, times ? timevals : NULL);
  60434. }
  60435. #endif
  60436. +
  60437. +#if (defined __NR_utimensat && !defined __NR_utime) || \
  60438. + defined __NR_utime || defined __NR_utimes
  60439. link_warning(utime, "the use of OBSOLESCENT `utime' is discouraged, use `utimes'")
  60440. libc_hidden_def(utime)
  60441. +#endif
  60442. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/utimes.c uClibc-git/libc/sysdeps/linux/common/utimes.c
  60443. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/utimes.c 2012-05-15 09:20:09.000000000 +0200
  60444. +++ uClibc-git/libc/sysdeps/linux/common/utimes.c 2014-02-03 12:32:56.000000000 +0100
  60445. @@ -8,15 +8,33 @@
  60446. */
  60447. #include <sys/syscall.h>
  60448. -#include <utime.h>
  60449. #include <sys/time.h>
  60450. +#if defined __NR_utimensat && !defined __NR_utimes
  60451. +# include <fcntl.h>
  60452. +# include <stddef.h>
  60453. +int utimes(const char *file, const struct timeval tvp[2])
  60454. +{
  60455. + struct timespec ts[2], *times;
  60456. + if (tvp) {
  60457. + times = ts;
  60458. + times[0].tv_sec = tvp[0].tv_sec;
  60459. + times[0].tv_nsec = tvp[0].tv_usec * 1000;
  60460. + times[1].tv_sec = tvp[1].tv_sec;
  60461. + times[1].tv_nsec = tvp[1].tv_usec * 1000;
  60462. + } else {
  60463. + times = NULL;
  60464. + }
  60465. -#ifdef __NR_utimes
  60466. -_syscall2(int, utimes, const char *, file, const struct timeval *, tvp)
  60467. -#else
  60468. -#include <stdlib.h>
  60469. + return utimensat(AT_FDCWD, file, times, 0);
  60470. +}
  60471. +#elif defined __NR_utimes
  60472. +_syscall2(int, utimes, const char *, file, const struct timeval *, tvp)
  60473. +#elif defined __NR_utime
  60474. +# define __need_NULL
  60475. +# include <stddef.h>
  60476. +# include <utime.h>
  60477. int utimes(const char *file, const struct timeval tvp[2])
  60478. {
  60479. @@ -32,4 +50,7 @@
  60480. return utime(file, times);
  60481. }
  60482. #endif
  60483. +
  60484. +#if defined __NR_utimensat || defined __NR_utimes || defined __NR_utime
  60485. libc_hidden_def(utimes)
  60486. +#endif
  60487. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/vfork.c uClibc-git/libc/sysdeps/linux/common/vfork.c
  60488. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/vfork.c 2012-05-15 09:20:09.000000000 +0200
  60489. +++ uClibc-git/libc/sysdeps/linux/common/vfork.c 2014-02-03 12:32:56.000000000 +0100
  60490. @@ -4,30 +4,37 @@
  60491. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60492. */
  60493. -#include <unistd.h>
  60494. -#include <sys/types.h>
  60495. #include <sys/syscall.h>
  60496. +#if (defined __NR_vfork || defined __NR_clone || (defined __ARCH_USE_MMU__ && defined __NR_fork)) && (defined __USE_BSD || defined __USE_XOPEN_EXTENDED)
  60497. +# include <unistd.h>
  60498. extern __typeof(vfork) __vfork attribute_hidden;
  60499. -#ifdef __NR_vfork
  60500. +# if defined __NR_clone && !defined __NR_vfork
  60501. +# include <signal.h>
  60502. +# include <sys/types.h>
  60503. -# define __NR___vfork __NR_vfork
  60504. -_syscall0(pid_t, __vfork)
  60505. +pid_t __vfork(void)
  60506. +{
  60507. + pid_t pid = INLINE_SYSCALL(clone, 4, SIGCHLD,
  60508. + NULL, NULL, NULL);
  60509. -weak_alias(__vfork,vfork)
  60510. -libc_hidden_weak(vfork)
  60511. + if (pid < 0)
  60512. + return -1;
  60513. -#elif defined __ARCH_USE_MMU__ && defined __NR_fork
  60514. + return pid;
  60515. +}
  60516. +# elif defined __NR_vfork
  60517. +# define __NR___vfork __NR_vfork
  60518. +_syscall0(pid_t, __vfork)
  60519. +# else
  60520. /* Trivial implementation for arches that lack vfork */
  60521. -
  60522. pid_t __vfork(void)
  60523. {
  60524. return fork();
  60525. }
  60526. -
  60527. -weak_alias(__vfork,vfork)
  60528. +# endif
  60529. +strong_alias(__vfork,vfork)
  60530. libc_hidden_weak(vfork)
  60531. -
  60532. #endif
  60533. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/vmsplice.c uClibc-git/libc/sysdeps/linux/common/vmsplice.c
  60534. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/vmsplice.c 2012-05-15 09:20:09.000000000 +0200
  60535. +++ uClibc-git/libc/sysdeps/linux/common/vmsplice.c 2014-02-03 12:32:56.000000000 +0100
  60536. @@ -8,9 +8,10 @@
  60537. */
  60538. #include <sys/syscall.h>
  60539. -#include <fcntl.h>
  60540. -#ifdef __NR_vmsplice
  60541. +#if defined __NR_vmsplice && defined __USE_GNU
  60542. +# include <fcntl.h>
  60543. +
  60544. _syscall4(ssize_t, vmsplice, int, __fdout, const struct iovec *, __iov,
  60545. - size_t, __count, unsigned int, __flags)
  60546. + size_t, __count, unsigned int, __flags)
  60547. #endif
  60548. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/wait3.c uClibc-git/libc/sysdeps/linux/common/wait3.c
  60549. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/wait3.c 2012-05-15 09:20:09.000000000 +0200
  60550. +++ uClibc-git/libc/sysdeps/linux/common/wait3.c 2014-02-03 12:32:56.000000000 +0100
  60551. @@ -5,20 +5,12 @@
  60552. */
  60553. #include <sys/syscall.h>
  60554. -#include <sys/types.h>
  60555. -#include <sys/wait.h>
  60556. -#include <sys/resource.h>
  60557. -#if defined __USE_BSD
  60558. +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  60559. +# include <sys/wait.h>
  60560. -
  60561. -/* Wait for a child to exit. When one does, put its status in *STAT_LOC and
  60562. - * return its process ID. For errors return (pid_t) -1. If USAGE is not nil,
  60563. - * store information about the child's resource usage (as a `struct rusage')
  60564. - * there. If the WUNTRACED bit is set in OPTIONS, return status for stopped
  60565. - * children; otherwise don't. */
  60566. -pid_t wait3 (__WAIT_STATUS stat_loc, int options, struct rusage * usage)
  60567. +pid_t wait3(__WAIT_STATUS stat_loc, int options, struct rusage *usage)
  60568. {
  60569. - return wait4 (WAIT_ANY, stat_loc, options, usage);
  60570. + return __wait4_nocancel(WAIT_ANY, stat_loc, options, usage);
  60571. }
  60572. #endif
  60573. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/wait4.c uClibc-git/libc/sysdeps/linux/common/wait4.c
  60574. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/wait4.c 2012-05-15 09:20:09.000000000 +0200
  60575. +++ uClibc-git/libc/sysdeps/linux/common/wait4.c 2014-02-03 12:32:56.000000000 +0100
  60576. @@ -8,18 +8,16 @@
  60577. */
  60578. #include <sys/syscall.h>
  60579. -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
  60580. #include <sys/wait.h>
  60581. -#include <sys/resource.h>
  60582. +# define __NR___syscall_wait4 __NR_wait4
  60583. +static __always_inline _syscall4(int, __syscall_wait4, __kernel_pid_t, pid,
  60584. + int *, status, int, opts, struct rusage *, rusage)
  60585. -#define __NR___syscall_wait4 __NR_wait4
  60586. -static __inline__ _syscall4(int, __syscall_wait4, __kernel_pid_t, pid,
  60587. - int *, status, int, opts, struct rusage *, rusage)
  60588. -
  60589. -pid_t wait4(pid_t pid, int *status, int opts, struct rusage *rusage)
  60590. +pid_t __wait4_nocancel(pid_t pid, int *status, int opts, struct rusage *rusage)
  60591. {
  60592. - return (__syscall_wait4(pid, status, opts, rusage));
  60593. + return __syscall_wait4(pid, status, opts, rusage);
  60594. }
  60595. -libc_hidden_def(wait4)
  60596. +#ifdef __USE_BSD
  60597. +strong_alias(__wait4_nocancel,wait4)
  60598. #endif
  60599. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/wait.c uClibc-git/libc/sysdeps/linux/common/wait.c
  60600. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/wait.c 2012-05-15 09:20:09.000000000 +0200
  60601. +++ uClibc-git/libc/sysdeps/linux/common/wait.c 2014-02-03 12:32:56.000000000 +0100
  60602. @@ -4,41 +4,11 @@
  60603. *
  60604. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60605. */
  60606. -#include <stdlib.h>
  60607. -#include <syscall.h>
  60608. -#include <sys/types.h>
  60609. #include <sys/wait.h>
  60610. -#include <sys/resource.h>
  60611. +#include <cancel.h>
  60612. -extern __typeof(wait) __libc_wait;
  60613. -/* Wait for a child to die. When one does, put its status in *STAT_LOC
  60614. - * and return its process ID. For errors, return (pid_t) -1. */
  60615. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60616. -#include <errno.h>
  60617. -#include <sysdep-cancel.h>
  60618. -
  60619. -pid_t attribute_hidden
  60620. -__libc_wait (__WAIT_STATUS_DEFN stat_loc)
  60621. -{
  60622. - if (SINGLE_THREAD_P)
  60623. - return INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
  60624. - (struct rusage *) NULL);
  60625. -
  60626. - int oldtype = LIBC_CANCEL_ASYNC ();
  60627. -
  60628. - pid_t result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0,
  60629. - (struct rusage *) NULL);
  60630. -
  60631. - LIBC_CANCEL_RESET (oldtype);
  60632. -
  60633. - return result;
  60634. -}
  60635. -#else
  60636. -/* Wait for a child to die. When one does, put its status in *STAT_LOC
  60637. - * and return its process ID. For errors, return (pid_t) -1. */
  60638. -__pid_t __libc_wait (__WAIT_STATUS_DEFN stat_loc)
  60639. +static pid_t __NC(wait)(__WAIT_STATUS_DEFN stat_loc)
  60640. {
  60641. - return wait4 (WAIT_ANY, stat_loc, 0, (struct rusage *) NULL);
  60642. + return __wait4_nocancel(WAIT_ANY, stat_loc, 0, (struct rusage *)NULL);
  60643. }
  60644. -#endif
  60645. -weak_alias(__libc_wait,wait)
  60646. +CANCELLABLE_SYSCALL(pid_t, wait, (__WAIT_STATUS_DEFN stat_loc), (stat_loc))
  60647. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/waitid.c uClibc-git/libc/sysdeps/linux/common/waitid.c
  60648. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/waitid.c 2012-05-15 09:20:09.000000000 +0200
  60649. +++ uClibc-git/libc/sysdeps/linux/common/waitid.c 2014-02-03 12:32:56.000000000 +0100
  60650. @@ -8,43 +8,19 @@
  60651. #include <features.h>
  60652. #if defined __USE_SVID || defined __USE_XOPEN
  60653. -# include <string.h>
  60654. -# include <sys/types.h>
  60655. -# include <sys/wait.h>
  60656. -# include <sys/syscall.h>
  60657. -
  60658. -# ifdef __NR_waitid
  60659. -
  60660. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60661. -# include <sysdep-cancel.h>
  60662. -# else
  60663. -# define SINGLE_THREAD_P 1
  60664. -# endif
  60665. -/* The waitid() POSIX interface takes 4 arguments, but the kernel function
  60666. - * actually takes 5. The fifth is a pointer to struct rusage. Make sure
  60667. - * we pass NULL rather than letting whatever was in the register bleed up.
  60668. - */
  60669. -#define __NR_waitid5 __NR_waitid
  60670. -static __always_inline
  60671. -_syscall5(int, waitid5, idtype_t, idtype, id_t, id, siginfo_t*, infop,
  60672. - int, options, struct rusage*, ru)
  60673. -# endif
  60674. +#include <sys/syscall.h>
  60675. +#include <sys/wait.h>
  60676. +#include <cancel.h>
  60677. +#ifndef __NR_waitid
  60678. +# include <string.h>
  60679. +#endif
  60680. -int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
  60681. +static int __NC(waitid)(idtype_t idtype, id_t id, siginfo_t *infop, int options)
  60682. {
  60683. -# ifdef __NR_waitid
  60684. - if (SINGLE_THREAD_P)
  60685. - return waitid5(idtype, id, infop, options, NULL);
  60686. -
  60687. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60688. - int oldtype = LIBC_CANCEL_ASYNC ();
  60689. - int result = waitid5(idtype, id, infop, options, NULL);
  60690. - LIBC_CANCEL_RESET (oldtype);
  60691. - return result;
  60692. -# endif
  60693. -
  60694. -# elif defined __NR_waitpid
  60695. +#ifdef __NR_waitid
  60696. + return INLINE_SYSCALL(waitid, 5, idtype, id, infop, options, NULL);
  60697. +#else
  60698. switch (idtype) {
  60699. case P_PID:
  60700. if (id <= 0)
  60701. @@ -65,17 +41,17 @@
  60702. }
  60703. memset(infop, 0, sizeof *infop);
  60704. - infop->si_pid = waitpid(id, &infop->si_status, options
  60705. -# ifdef WEXITED
  60706. + infop->si_pid = __NC(waitpid)(id, &infop->si_status, options
  60707. +# ifdef WEXITED
  60708. &~ WEXITED
  60709. -# endif
  60710. +# endif
  60711. );
  60712. if (infop->si_pid < 0)
  60713. return infop->si_pid;
  60714. return 0;
  60715. -# else
  60716. - __set_errno(ENOSYS);
  60717. - return -1;
  60718. -# endif
  60719. +#endif
  60720. }
  60721. +CANCELLABLE_SYSCALL(int, waitid, (idtype_t idtype, id_t id, siginfo_t *infop, int options),
  60722. + (idtype, id, infop, options))
  60723. +
  60724. #endif
  60725. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/waitpid.c uClibc-git/libc/sysdeps/linux/common/waitpid.c
  60726. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/waitpid.c 2012-05-15 09:20:09.000000000 +0200
  60727. +++ uClibc-git/libc/sysdeps/linux/common/waitpid.c 2014-02-03 12:32:56.000000000 +0100
  60728. @@ -6,32 +6,16 @@
  60729. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60730. */
  60731. -#include <stdlib.h>
  60732. -#include <sys/types.h>
  60733. #include <sys/wait.h>
  60734. -#include <sys/resource.h>
  60735. +#include <cancel.h>
  60736. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60737. -#include "sysdep-cancel.h"
  60738. -#else
  60739. -#define SINGLE_THREAD_P 1
  60740. -#endif
  60741. -
  60742. -libc_hidden_proto(wait4)
  60743. -
  60744. -extern __typeof(waitpid) __libc_waitpid;
  60745. -__pid_t __libc_waitpid(__pid_t pid, int *wait_stat, int options)
  60746. +pid_t __NC(waitpid)(pid_t pid, int *wait_stat, int options)
  60747. {
  60748. - if (SINGLE_THREAD_P)
  60749. - return wait4(pid, wait_stat, options, NULL);
  60750. -
  60751. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60752. - int oldtype = LIBC_CANCEL_ASYNC ();
  60753. - int result = wait4(pid, wait_stat, options, NULL);
  60754. - LIBC_CANCEL_RESET (oldtype);
  60755. - return result;
  60756. +#if 1 /* kernel/exit.c says to avoid waitpid syscall */
  60757. + return __wait4_nocancel(pid, wait_stat, options, NULL);
  60758. +#else
  60759. + return INLINE_SYSCALL(waitpid, 3, pid, wait_stat, options);
  60760. #endif
  60761. }
  60762. -libc_hidden_proto(waitpid)
  60763. -weak_alias(__libc_waitpid,waitpid)
  60764. -libc_hidden_weak(waitpid)
  60765. +CANCELLABLE_SYSCALL(pid_t, waitpid, (pid_t pid, int *wait_stat, int options), (pid, wait_stat, options))
  60766. +lt_libc_hidden(waitpid)
  60767. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/write.c uClibc-git/libc/sysdeps/linux/common/write.c
  60768. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/write.c 2012-05-15 09:20:09.000000000 +0200
  60769. +++ uClibc-git/libc/sysdeps/linux/common/write.c 2014-02-03 12:32:56.000000000 +0100
  60770. @@ -9,17 +9,11 @@
  60771. #include <sys/syscall.h>
  60772. #include <unistd.h>
  60773. +#include <cancel.h>
  60774. -_syscall3(ssize_t, write, int, fd, const __ptr_t, buf, size_t, count)
  60775. -#ifndef __LINUXTHREADS_OLD__
  60776. -libc_hidden_def(write)
  60777. -#else
  60778. -libc_hidden_weak(write)
  60779. -strong_alias(write,__libc_write)
  60780. -#endif
  60781. +#define __NR___write_nocancel __NR_write
  60782. +_syscall3(ssize_t, __NC(write), int, fd, const void *, buf, size_t, count)
  60783. -#if 0
  60784. -/* Stupid libgcc.a from gcc 2.95.x uses __write in pure.o
  60785. - * which is a blatant GNU libc-ism... */
  60786. -strong_alias(write,__write)
  60787. -#endif
  60788. +CANCELLABLE_SYSCALL(ssize_t, write, (int fd, const void *buf, size_t count),
  60789. + (fd, buf, count))
  60790. +lt_libc_hidden(write)
  60791. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/writev.c uClibc-git/libc/sysdeps/linux/common/writev.c
  60792. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/writev.c 2012-05-15 09:20:09.000000000 +0200
  60793. +++ uClibc-git/libc/sysdeps/linux/common/writev.c 2014-02-03 12:32:56.000000000 +0100
  60794. @@ -9,42 +9,20 @@
  60795. #include <sys/syscall.h>
  60796. #include <sys/uio.h>
  60797. -
  60798. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  60799. -#include <errno.h>
  60800. -#include <sysdep-cancel.h>
  60801. +#include <cancel.h>
  60802. /* We should deal with kernel which have a smaller UIO_FASTIOV as well
  60803. as a very big count. */
  60804. -static ssize_t __writev (int fd, const struct iovec *vector, int count)
  60805. +static ssize_t __NC(writev)(int fd, const struct iovec *vector, int count)
  60806. {
  60807. - ssize_t bytes_written;
  60808. -
  60809. - bytes_written = INLINE_SYSCALL (writev, 3, fd, vector, count);
  60810. -
  60811. - if (bytes_written >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  60812. - return bytes_written;
  60813. -
  60814. - /* glibc tries again, but we do not. */
  60815. - /* return __atomic_writev_replacement (fd, vector, count); */
  60816. -
  60817. - return -1;
  60818. -}
  60819. -
  60820. -ssize_t writev (int fd, const struct iovec *vector, int count)
  60821. -{
  60822. - if (SINGLE_THREAD_P)
  60823. - return __writev (fd, vector, count);
  60824. -
  60825. - int oldtype = LIBC_CANCEL_ASYNC ();
  60826. + ssize_t bytes_written = INLINE_SYSCALL(writev, 3, fd, vector, count);
  60827. - ssize_t result = __writev (fd, vector, count);
  60828. + if (bytes_written >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
  60829. + return bytes_written;
  60830. - LIBC_CANCEL_RESET (oldtype);
  60831. + /* glibc tries again, but we do not. */
  60832. + /* return __atomic_writev_replacement (fd, vector, count); */
  60833. - return result;
  60834. + return -1;
  60835. }
  60836. -#else
  60837. -_syscall3(ssize_t, writev, int, filedes, const struct iovec *, vector,
  60838. - int, count)
  60839. -#endif
  60840. +CANCELLABLE_SYSCALL(ssize_t, writev, (int fd, const struct iovec *vector, int count), (fd, vector, count))
  60841. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.c uClibc-git/libc/sysdeps/linux/common/xstatconv.c
  60842. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.c 2012-05-15 09:20:09.000000000 +0200
  60843. +++ uClibc-git/libc/sysdeps/linux/common/xstatconv.c 2014-02-03 12:32:56.000000000 +0100
  60844. @@ -13,14 +13,12 @@
  60845. Lesser General Public License for more details.
  60846. You should have received a copy of the GNU Lesser General Public
  60847. - License along with the GNU C Library; if not, write to the Free
  60848. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60849. - 02111-1307 USA.
  60850. + License along with the GNU C Library; if not, see
  60851. + <http://www.gnu.org/licenses/>.
  60852. Modified for uClibc by Erik Andersen <andersen@codepoet.org>
  60853. */
  60854. -#include <sys/syscall.h>
  60855. #include <sys/stat.h>
  60856. #include <string.h>
  60857. #include "xstatconv.h"
  60858. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.h uClibc-git/libc/sysdeps/linux/common/xstatconv.h
  60859. --- uClibc-0.9.33.2/libc/sysdeps/linux/common/xstatconv.h 2012-05-15 09:20:09.000000000 +0200
  60860. +++ uClibc-git/libc/sysdeps/linux/common/xstatconv.h 2014-02-03 12:32:56.000000000 +0100
  60861. @@ -13,9 +13,8 @@
  60862. Lesser General Public License for more details.
  60863. You should have received a copy of the GNU Lesser General Public
  60864. - License along with the GNU C Library; if not, write to the Free
  60865. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  60866. - 02111-1307 USA.
  60867. + License along with the GNU C Library; if not, see
  60868. + <http://www.gnu.org/licenses/>.
  60869. Modified for uClibc by Erik Andersen <andersen@codepoet.org>
  60870. */
  60871. @@ -23,11 +22,14 @@
  60872. /* Pull in whatever this particular arch's kernel thinks the kernel version of
  60873. * struct stat should look like. It turns out that each arch has a different
  60874. * opinion on the subject, and different kernel revs use different names... */
  60875. +#include <features.h>
  60876. #include <bits/kernel_stat.h>
  60877. +#ifdef __ARCH_HAS_DEPRECATED_SYSCALLS__
  60878. extern void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf) attribute_hidden;
  60879. extern void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf) attribute_hidden;
  60880. #if defined __UCLIBC_HAS_LFS__
  60881. extern void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf) attribute_hidden;
  60882. #endif
  60883. +#endif
  60884. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/align64bit.h uClibc-git/libc/sysdeps/linux/common-generic/bits/align64bit.h
  60885. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/align64bit.h 1970-01-01 01:00:00.000000000 +0100
  60886. +++ uClibc-git/libc/sysdeps/linux/common-generic/bits/align64bit.h 2014-02-03 12:32:56.000000000 +0100
  60887. @@ -0,0 +1,17 @@
  60888. +/*
  60889. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  60890. + *
  60891. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60892. + */
  60893. +
  60894. +#ifndef _ALIGN_64_BIT_H
  60895. +#define _ALIGN_64_BIT_H
  60896. +
  60897. +/* Simple macro for getting the 64-bit struct arch alignment */
  60898. +
  60899. +struct __longlong_aligned { long long x; };
  60900. +
  60901. +#define __ARCH_64BIT_ALIGNMENT__ \
  60902. + __attribute__((aligned(__alignof__(struct __longlong_aligned))))
  60903. +
  60904. +#endif /* bits/align64bit.h */
  60905. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/dirent.h uClibc-git/libc/sysdeps/linux/common-generic/bits/dirent.h
  60906. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/dirent.h 1970-01-01 01:00:00.000000000 +0100
  60907. +++ uClibc-git/libc/sysdeps/linux/common-generic/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  60908. @@ -0,0 +1,53 @@
  60909. +/*
  60910. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  60911. + *
  60912. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60913. + */
  60914. +
  60915. +#ifndef _DIRENT_H
  60916. +# error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
  60917. +#endif
  60918. +
  60919. +#include <bits/align64bit.h>
  60920. +#include <endian.h>
  60921. +
  60922. +struct dirent
  60923. + {
  60924. +#ifndef __USE_FILE_OFFSET64
  60925. +# if __BYTE_ORDER == __LITTLE_ENDIAN
  60926. + __U32_TYPE d_ino;
  60927. + __U32_TYPE __pad1;
  60928. + __S32_TYPE d_off;
  60929. + __S32_TYPE __pad2;
  60930. +# else
  60931. + __U32_TYPE __pad1;
  60932. + __U32_TYPE d_ino;
  60933. + __S32_TYPE __pad2;
  60934. + __S32_TYPE d_off;
  60935. +# endif /* __LITTLE_ENDIAN */
  60936. +#else
  60937. + __U64_TYPE d_ino;
  60938. + __S64_TYPE d_off;
  60939. +#endif
  60940. + unsigned short int d_reclen;
  60941. + unsigned char d_type;
  60942. + char d_name[256]; /* We must not include limits.h! */
  60943. + } __ARCH_64BIT_ALIGNMENT__;
  60944. +
  60945. +#ifdef __USE_LARGEFILE64
  60946. +struct dirent64
  60947. + {
  60948. + __U64_TYPE d_ino;
  60949. + __S64_TYPE d_off;
  60950. + unsigned short int d_reclen;
  60951. + unsigned char d_type;
  60952. + char d_name[256]; /* We must not include limits.h! */
  60953. + };
  60954. +#endif
  60955. +
  60956. +#define d_fileno d_ino /* Backwards compatibility. */
  60957. +
  60958. +#undef _DIRENT_HAVE_D_NAMLEN
  60959. +#define _DIRENT_HAVE_D_RECLEN
  60960. +#define _DIRENT_HAVE_D_OFF
  60961. +#define _DIRENT_HAVE_D_TYPE
  60962. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/kernel_stat.h uClibc-git/libc/sysdeps/linux/common-generic/bits/kernel_stat.h
  60963. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/kernel_stat.h 1970-01-01 01:00:00.000000000 +0100
  60964. +++ uClibc-git/libc/sysdeps/linux/common-generic/bits/kernel_stat.h 2014-02-03 12:32:56.000000000 +0100
  60965. @@ -0,0 +1,28 @@
  60966. +/*
  60967. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  60968. + *
  60969. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  60970. + */
  60971. +
  60972. +#ifndef _BITS_STAT_STRUCT_H
  60973. +#define _BITS_STAT_STRUCT_H
  60974. +
  60975. +#include <sys/stat.h>
  60976. +
  60977. +/*
  60978. + * The stat structure defined in
  60979. + * libc/sysdeps/linux/common-generic/bits/stat.h
  60980. + * is the same as the kernel one for new architectures
  60981. + *
  60982. + * For the common-generic ABI we really don't need this file at all
  60983. + * However that requires more #ifndef in relevant wrappers,
  60984. + * further uglifying them
  60985. + */
  60986. +#if defined __UCLIBC_HAS_LFS__
  60987. +#define kernel_stat64 stat64
  60988. +#else
  60989. +#define kernel_stat64 stat
  60990. +#endif
  60991. +
  60992. +#endif /* _BITS_STAT_STRUCT_H */
  60993. +
  60994. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/statfs.h uClibc-git/libc/sysdeps/linux/common-generic/bits/statfs.h
  60995. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100
  60996. +++ uClibc-git/libc/sysdeps/linux/common-generic/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  60997. @@ -0,0 +1,78 @@
  60998. +/*
  60999. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61000. + *
  61001. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61002. + */
  61003. +
  61004. +#ifndef _SYS_STATFS_H
  61005. +# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  61006. +#endif
  61007. +
  61008. +#include <endian.h>
  61009. +#include <bits/align64bit.h>
  61010. +#include <bits/types.h>
  61011. +
  61012. +
  61013. +struct statfs
  61014. + {
  61015. + __U32_TYPE f_type;
  61016. + __U32_TYPE f_bsize;
  61017. +#ifndef __USE_FILE_OFFSET64
  61018. +# if __BYTE_ORDER == __LITTLE_ENDIAN
  61019. + __U32_TYPE f_blocks;
  61020. + __U32_TYPE __pad1;
  61021. + __U32_TYPE f_bfree;
  61022. + __U32_TYPE __pad2;
  61023. + __U32_TYPE f_bavail;
  61024. + __U32_TYPE __pad3;
  61025. + __U32_TYPE f_files;
  61026. + __U32_TYPE __pad4;
  61027. + __U32_TYPE f_ffree;
  61028. + __U32_TYPE __pad5;
  61029. +# else
  61030. + __U32_TYPE __pad1;
  61031. + __U32_TYPE f_blocks;
  61032. + __U32_TYPE __pad2;
  61033. + __U32_TYPE f_bfree;
  61034. + __U32_TYPE __pad3;
  61035. + __U32_TYPE f_bavail;
  61036. + __U32_TYPE __pad4;
  61037. + __U32_TYPE f_files;
  61038. + __U32_TYPE __pad5;
  61039. + __U32_TYPE f_ffree;
  61040. +# endif /* __LITTLE_ENDIAN */
  61041. +#else
  61042. + __U64_TYPE f_blocks;
  61043. + __U64_TYPE f_bfree;
  61044. + __U64_TYPE f_bavail;
  61045. + __U64_TYPE f_files;
  61046. + __U64_TYPE f_ffree;
  61047. +#endif /* __USE_FILE_OFFSET64 */
  61048. + __fsid_t f_fsid;
  61049. + __U32_TYPE f_namelen;
  61050. + __U32_TYPE f_frsize;
  61051. + __U32_TYPE f_flags;
  61052. + __U32_TYPE f_spare[4];
  61053. + } __ARCH_64BIT_ALIGNMENT__;
  61054. +
  61055. +#ifdef __USE_LARGEFILE64
  61056. +struct statfs64
  61057. + {
  61058. + __U32_TYPE f_type;
  61059. + __U32_TYPE f_bsize;
  61060. + __U64_TYPE f_blocks;
  61061. + __U64_TYPE f_bfree;
  61062. + __U64_TYPE f_bavail;
  61063. + __U64_TYPE f_files;
  61064. + __U64_TYPE f_ffree;
  61065. + __fsid_t f_fsid;
  61066. + __U32_TYPE f_namelen;
  61067. + __U32_TYPE f_frsize;
  61068. + __U32_TYPE f_flags;
  61069. + __U32_TYPE f_spare[4];
  61070. + };
  61071. +#endif
  61072. +
  61073. +/* Tell code we have these members. */
  61074. +#define _STATFS_F_NAMELEN
  61075. +#define _STATFS_F_FRSIZE
  61076. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/stat.h uClibc-git/libc/sysdeps/linux/common-generic/bits/stat.h
  61077. --- uClibc-0.9.33.2/libc/sysdeps/linux/common-generic/bits/stat.h 1970-01-01 01:00:00.000000000 +0100
  61078. +++ uClibc-git/libc/sysdeps/linux/common-generic/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  61079. @@ -0,0 +1,195 @@
  61080. +/*
  61081. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61082. + *
  61083. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61084. + */
  61085. +
  61086. +#ifndef _SYS_STAT_H
  61087. +# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  61088. +#endif
  61089. +
  61090. +#include <bits/align64bit.h>
  61091. +#include <endian.h>
  61092. +
  61093. +/* Versions of the `struct stat' data structure. */
  61094. +#define _STAT_VER_LINUX_OLD 1
  61095. +#define _STAT_VER_KERNEL 1
  61096. +#define _STAT_VER_SVR4 2
  61097. +#define _STAT_VER_LINUX 3
  61098. +#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */
  61099. +
  61100. +/* Versions of the `xmknod' interface. */
  61101. +#define _MKNOD_VER_LINUX 1
  61102. +#define _MKNOD_VER_SVR4 2
  61103. +#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
  61104. +
  61105. +/*
  61106. + * For 32-bit architectures, this struct is similar to the stat64 but it
  61107. + * uses 32-bit members along with 32-bit padding. For 64-bit architectures
  61108. + * this struct is exactly the same with the stat64 one
  61109. + */
  61110. +struct stat
  61111. + {
  61112. +#ifndef __USE_FILE_OFFSET64
  61113. +# if __BYTE_ORDER == __LITTLE_ENDIAN
  61114. + unsigned long st_dev; /* Device. */
  61115. + unsigned long __pad1;
  61116. + unsigned long st_ino; /* 32bit file serial number. */
  61117. + unsigned long __pad2;
  61118. + unsigned int st_mode; /* File mode. */
  61119. + unsigned int st_nlink; /* Link count. */
  61120. + unsigned int st_uid; /* User ID of the file's owner. */
  61121. + unsigned int st_gid; /* Group ID of the file's group.*/
  61122. + unsigned long st_rdev; /* Device number, if device. */
  61123. + unsigned long __pad3;
  61124. + unsigned long long __pad4;
  61125. + long st_size; /* SIze of file, in bytes. */
  61126. + long __pad5;
  61127. + int st_blksize; /* Optimal block size for I/O. */
  61128. + int __pad6;
  61129. + long st_blocks; /* Number 512-byte blocks allocated */
  61130. + long __pad7;
  61131. +# else
  61132. + unsigned long __pad1;
  61133. + unsigned long st_dev; /* Device. */
  61134. + unsigned long __pad2;
  61135. + unsigned long st_ino; /* 32bit file serial number. */
  61136. + unsigned int st_mode; /* File mode. */
  61137. + unsigned int st_nlink; /* Link count. */
  61138. + unsigned int st_uid; /* User ID of the file's owner. */
  61139. + unsigned int st_gid; /* Group ID of the file's group.*/
  61140. + unsigned long __pad3;
  61141. + unsigned long st_rdev; /* Device number, if device. */
  61142. + unsigned long long __pad4;
  61143. + long __pad5;
  61144. + long st_size; /* Size of file, in bytes. */
  61145. + int st_blksize; /* Optimal block size for I/O. */
  61146. + int __pad6;
  61147. + long __pad7;
  61148. + long st_blocks; /* Number 512-byte blocks allocated */
  61149. +# endif /* __LITTLE_ENDIAN */
  61150. +#else
  61151. + unsigned long long st_dev; /* Device. */
  61152. + unsigned long long st_ino; /* 32bit file serial number. */
  61153. + unsigned int st_mode; /* File mode. */
  61154. + unsigned int st_nlink; /* Link count. */
  61155. + unsigned int st_uid; /* User ID of the file's owner. */
  61156. + unsigned int st_gid; /* Group ID of the file's group.*/
  61157. + unsigned long long st_rdev; /* Device number, if device. */
  61158. + unsigned long long _pad1;
  61159. + long long st_size; /* SIze of file, in bytes. */
  61160. + int st_blksize; /* Optimal block size for I/O. */
  61161. + int __pad2;
  61162. + long long st_blocks; /* Number 512-byte blocks allocated */
  61163. +#endif
  61164. +#ifdef __USE_MISC
  61165. + /* Nanosecond resolution timestamps are stored in a format
  61166. + equivalent to 'struct timespec'. This is the type used
  61167. + whenever possible but the Unix namespace rules do not allow the
  61168. + identifier 'timespec' to appear in the <sys/stat.h> header.
  61169. + Therefore we have to handle the use of this header in strictly
  61170. + standard-compliant sources special. */
  61171. + struct timespec st_atim; /* Time of last access. */
  61172. + struct timespec st_mtim; /* Time of last modification. */
  61173. + struct timespec st_ctim; /* Time of last status change. */
  61174. +# define st_atime st_atim.tv_sec /* Backward compatibility. */
  61175. +# define st_mtime st_mtim.tv_sec
  61176. +# define st_ctime st_ctim.tv_sec
  61177. +#else
  61178. +# ifndef __USE_FILE_OFFSET64
  61179. + long st_atime; /* Time of last access. */
  61180. + unsigned long st_atime_nsec;
  61181. + long st_mtime; /* Time of last modification. */
  61182. + unsigned long st_mtime_nsec;
  61183. + long st_ctime; /* Time of last status change. */
  61184. + unsigned long st_ctime_nsec;
  61185. +# else
  61186. + int st_atime; /* Time of last access. */
  61187. + unsigned int st_atime_nsec;
  61188. + int st_mtime; /* Time of last modification. */
  61189. + unsigned int st_mtime_nsec;
  61190. + int st_ctime; /* Time of last status change. */
  61191. + unsigned int st_ctime_nsec;
  61192. +# endif
  61193. +#endif
  61194. + unsigned int __unused4;
  61195. + unsigned int __unused5;
  61196. + } __ARCH_64BIT_ALIGNMENT__;
  61197. +
  61198. +
  61199. +#ifdef __USE_LARGEFILE64
  61200. +struct stat64
  61201. + {
  61202. + unsigned long long st_dev; /* Device. */
  61203. + unsigned long long st_ino; /* 32bit file serial number. */
  61204. + unsigned int st_mode; /* File mode. */
  61205. + unsigned int st_nlink; /* Link count. */
  61206. + unsigned int st_uid; /* User ID of the file's owner. */
  61207. + unsigned int st_gid; /* Group ID of the file's group.*/
  61208. + unsigned long long st_rdev; /* Device number, if device. */
  61209. + unsigned long long __pad3;
  61210. + long long st_size; /* Size of file, in bytes. */
  61211. + int st_blksize; /* Optimal block size for I/O. */
  61212. + int __pad4;
  61213. + long long st_blocks; /* Number 512-byte blocks allocated */
  61214. +# ifdef __USE_MISC
  61215. + /* Nanosecond resolution timestamps are stored in a format
  61216. + equivalent to 'struct timespec'. This is the type used
  61217. + whenever possible but the Unix namespace rules do not allow the
  61218. + identifier 'timespec' to appear in the <sys/stat.h> header.
  61219. + Therefore we have to handle the use of this header in strictly
  61220. + standard-compliant sources special. */
  61221. + struct timespec st_atim; /* Time of last access. */
  61222. + struct timespec st_mtim; /* Time of last modification. */
  61223. + struct timespec st_ctim; /* Time of last status change. */
  61224. +# else
  61225. + int st_atime; /* Time of last access. */
  61226. + unsigned int st_atime_nsec;
  61227. + int st_mtime; /* Time of last modification. */
  61228. + unsigned int st_mtime_nsec;
  61229. + int st_ctime; /* Time of last status change. */
  61230. + unsigned int st_ctime_nsec;
  61231. +# endif
  61232. + unsigned int __unused4;
  61233. + unsigned int __unused5;
  61234. +};
  61235. +#endif
  61236. +
  61237. +/* Tell code we have these members. */
  61238. +#define _STATBUF_ST_BLKSIZE
  61239. +#define _STATBUF_ST_RDEV
  61240. +/* Nanosecond resolution time values are supported. */
  61241. +#define _STATBUF_ST_NSEC
  61242. +
  61243. +/* Encoding of the file mode. */
  61244. +
  61245. +#define __S_IFMT 0170000 /* These bits determine file type. */
  61246. +
  61247. +/* File types. */
  61248. +#define __S_IFDIR 0040000 /* Directory. */
  61249. +#define __S_IFCHR 0020000 /* Character device. */
  61250. +#define __S_IFBLK 0060000 /* Block device. */
  61251. +#define __S_IFREG 0100000 /* Regular file. */
  61252. +#define __S_IFIFO 0010000 /* FIFO. */
  61253. +#define __S_IFLNK 0120000 /* Symbolic link. */
  61254. +#define __S_IFSOCK 0140000 /* Socket. */
  61255. +
  61256. +/* POSIX.1b objects. Note that these macros always evaluate to zero. But
  61257. + they do it by enforcing the correct use of the macros. */
  61258. +#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
  61259. +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
  61260. +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
  61261. +
  61262. +/* Protection bits. */
  61263. +
  61264. +#define __S_ISUID 04000 /* Set user ID on execution. */
  61265. +#define __S_ISGID 02000 /* Set group ID on execution. */
  61266. +#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
  61267. +#define __S_IREAD 0400 /* Read by owner. */
  61268. +#define __S_IWRITE 0200 /* Write by owner. */
  61269. +#define __S_IEXEC 0100 /* Execute by owner. */
  61270. +
  61271. +#ifdef __USE_ATFILE
  61272. +# define UTIME_NOW ((1l << 30) - 1l)
  61273. +# define UTIME_OMIT ((1l << 30) - 2l)
  61274. +#endif
  61275. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/fcntl.h uClibc-git/libc/sysdeps/linux/cris/bits/fcntl.h
  61276. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  61277. +++ uClibc-git/libc/sysdeps/linux/cris/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  61278. @@ -14,9 +14,8 @@
  61279. Lesser General Public License for more details.
  61280. You should have received a copy of the GNU Lesser General Public
  61281. - License along with the GNU C Library; if not, write to the Free
  61282. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61283. - 02111-1307 USA. */
  61284. + License along with the GNU C Library; if not, see
  61285. + <http://www.gnu.org/licenses/>. */
  61286. #ifndef _FCNTL_H
  61287. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  61288. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/cris/bits/kernel_types.h
  61289. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  61290. +++ uClibc-git/libc/sysdeps/linux/cris/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  61291. @@ -28,6 +28,8 @@
  61292. typedef unsigned short __kernel_old_uid_t;
  61293. typedef unsigned short __kernel_old_gid_t;
  61294. typedef __kernel_dev_t __kernel_old_dev_t;
  61295. +typedef long __kernel_long_t;
  61296. +typedef unsigned long __kernel_ulong_t;
  61297. #ifdef __GNUC__
  61298. typedef long long __kernel_loff_t;
  61299. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/setjmp.h uClibc-git/libc/sysdeps/linux/cris/bits/setjmp.h
  61300. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  61301. +++ uClibc-git/libc/sysdeps/linux/cris/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  61302. @@ -1,4 +1,4 @@
  61303. -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
  61304. +/* Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
  61305. This file is part of the GNU C Library.
  61306. The GNU C Library is free software; you can redistribute it and/or
  61307. @@ -12,11 +12,10 @@
  61308. Lesser General Public License for more details.
  61309. You should have received a copy of the GNU Lesser General Public
  61310. - License along with the GNU C Library; if not, write to the Free
  61311. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61312. - 02111-1307 USA. */
  61313. + License along with the GNU C Library; if not, see
  61314. + <http://www.gnu.org/licenses/>. */
  61315. -/* Define the machine-dependent type `jmp_buf'. CRIS version. */
  61316. +/* Define the machine-dependent type `jmp_buf', CRIS version. */
  61317. #ifndef _BITS_SETJMP_H
  61318. #define _BITS_SETJMP_H 1
  61319. @@ -24,10 +23,8 @@
  61320. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  61321. #endif
  61322. -/*
  61323. - Note that we save and restore CCR to be able to
  61324. - correctly handle DI/EI. Note also that the "move x,ccr" does NOT affect
  61325. - the DMA enable bits (E and D).
  61326. +/* Note that saving and restoring CCR has no meaning in user mode, so we
  61327. + don't actually do it; the slot is now reserved.
  61328. jmp_buf[0] - PC
  61329. jmp_buf[1] - SP (R14)
  61330. @@ -46,21 +43,8 @@
  61331. jmp_buf[14] - R1
  61332. jmp_buf[15] - R0
  61333. jmp_buf[16] - SRP
  61334. - jmp_buf[17] - CCR
  61335. - */
  61336. + jmp_buf[17] - CCR */
  61337. -#define _JBLEN 18
  61338. -#if defined (__USE_MISC) || defined (_ASM)
  61339. -#define JB_SP 1
  61340. -#endif
  61341. -
  61342. -#ifndef _ASM
  61343. -typedef int __jmp_buf[_JBLEN];
  61344. -#endif
  61345. -
  61346. -/* Test if longjmp to JMPBUF would unwind the frame
  61347. - containing a local variable at ADDRESS. */
  61348. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  61349. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  61350. +typedef int __jmp_buf[18];
  61351. #endif /* bits/setjmp.h */
  61352. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/cris/bits/stackinfo.h
  61353. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  61354. +++ uClibc-git/libc/sysdeps/linux/cris/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  61355. @@ -12,9 +12,8 @@
  61356. Lesser General Public License for more details.
  61357. You should have received a copy of the GNU Lesser General Public
  61358. - License along with the GNU C Library; if not, write to the Free
  61359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61360. - 02111-1307 USA. */
  61361. + License along with the GNU C Library; if not, see
  61362. + <http://www.gnu.org/licenses/>. */
  61363. /* This file contains a bit of information about the stack allocation
  61364. of the processor. */
  61365. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/termios.h uClibc-git/libc/sysdeps/linux/cris/bits/termios.h
  61366. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  61367. +++ uClibc-git/libc/sysdeps/linux/cris/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  61368. @@ -14,9 +14,8 @@
  61369. Lesser General Public License for more details.
  61370. You should have received a copy of the GNU Lesser General Public
  61371. - License along with the GNU C Library; if not, write to the Free
  61372. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61373. - 02111-1307 USA. */
  61374. + License along with the GNU C Library; if not, see
  61375. + <http://www.gnu.org/licenses/>. */
  61376. #ifndef _TERMIOS_H
  61377. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  61378. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h
  61379. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  61380. +++ uClibc-git/libc/sysdeps/linux/cris/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  61381. @@ -12,8 +12,8 @@
  61382. /* can your target use syscall6() for mmap ? */
  61383. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  61384. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  61385. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  61386. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  61387. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  61388. /* does your target have a broken create_module() ? */
  61389. #define __UCLIBC_BROKEN_CREATE_MODULE__
  61390. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/cris/bits/uClibc_page.h
  61391. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  61392. +++ uClibc-git/libc/sysdeps/linux/cris/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  61393. @@ -11,8 +11,8 @@
  61394. * Library General Public License for more details.
  61395. *
  61396. * You should have received a copy of the GNU Library General Public
  61397. - * License along with this library; if not, write to the Free
  61398. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  61399. + * License along with this library; if not, see
  61400. + * <http://www.gnu.org/licenses/>.
  61401. */
  61402. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  61403. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/wordsize.h uClibc-git/libc/sysdeps/linux/cris/bits/wordsize.h
  61404. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  61405. +++ uClibc-git/libc/sysdeps/linux/cris/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  61406. @@ -13,7 +13,6 @@
  61407. You should have received a copy of the GNU Library General Public
  61408. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61409. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61410. - Boston, MA 02111-1307, USA. */
  61411. + see <http://www.gnu.org/licenses/>. */
  61412. #define __WORDSIZE 32
  61413. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/clone.S uClibc-git/libc/sysdeps/linux/cris/clone.S
  61414. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/clone.S 2012-05-15 09:20:09.000000000 +0200
  61415. +++ uClibc-git/libc/sysdeps/linux/cris/clone.S 2014-02-03 12:32:56.000000000 +0100
  61416. @@ -13,8 +13,7 @@
  61417. You should have received a copy of the GNU Library General Public
  61418. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61419. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61420. - Boston, MA 02111-1307, USA. */
  61421. + see <http://www.gnu.org/licenses/>. */
  61422. #include <features.h>
  61423. #include <sys/syscall.h>
  61424. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/fork.c uClibc-git/libc/sysdeps/linux/cris/fork.c
  61425. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/fork.c 2012-05-15 09:20:09.000000000 +0200
  61426. +++ uClibc-git/libc/sysdeps/linux/cris/fork.c 1970-01-01 01:00:00.000000000 +0100
  61427. @@ -1,18 +0,0 @@
  61428. -/*
  61429. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61430. - *
  61431. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61432. - */
  61433. -
  61434. -#include "sysdep.h"
  61435. -
  61436. -#define __NR___libc_fork __NR_fork
  61437. -SYSCALL__ (__libc_fork, 0)
  61438. - /* R1 is now 0 for the parent and 1 for the child. Decrement it to
  61439. - make it -1 (all bits set) for the parent, and 0 (no bits set)
  61440. - for the child. Then AND it with R0, so the parent gets
  61441. - R0&-1==R0, and the child gets R0&0==0. */
  61442. - /* i dunno what the blurb above is useful for. we just return. */
  61443. -__asm__("ret\n\tnop");
  61444. -weak_alias(__libc_fork,fork)
  61445. -libc_hidden_weak(fork)
  61446. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/cris/jmpbuf-offsets.h
  61447. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  61448. +++ uClibc-git/libc/sysdeps/linux/cris/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  61449. @@ -0,0 +1,8 @@
  61450. +/* Private macros for accessing __jmp_buf contents. BFIN version. */
  61451. +/*
  61452. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61453. + *
  61454. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61455. + */
  61456. +
  61457. +#define JB_SP 1
  61458. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/cris/jmpbuf-unwind.h
  61459. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  61460. +++ uClibc-git/libc/sysdeps/linux/cris/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  61461. @@ -0,0 +1,12 @@
  61462. +/*
  61463. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61464. + *
  61465. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61466. + */
  61467. +#include <setjmp.h>
  61468. +#include <jmpbuf-offsets.h>
  61469. +
  61470. +/* Test if longjmp to JMPBUF would unwind the frame
  61471. + containing a local variable at ADDRESS. */
  61472. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  61473. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  61474. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/__longjmp.S uClibc-git/libc/sysdeps/linux/cris/__longjmp.S
  61475. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  61476. +++ uClibc-git/libc/sysdeps/linux/cris/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  61477. @@ -14,14 +14,9 @@
  61478. You should have received a copy of the GNU Library General Public
  61479. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61480. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61481. - Boston, MA 02111-1307, USA. */
  61482. + see <http://www.gnu.org/licenses/>. */
  61483. -#include <features.h>
  61484. #include "sysdep.h"
  61485. -#define _SETJMP_H
  61486. -#define _ASM
  61487. -#include <bits/setjmp.h>
  61488. .syntax no_register_prefix
  61489. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/Makefile.arch uClibc-git/libc/sysdeps/linux/cris/Makefile.arch
  61490. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  61491. +++ uClibc-git/libc/sysdeps/linux/cris/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  61492. @@ -5,9 +5,7 @@
  61493. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61494. #
  61495. -CSRC := __init_brk.c brk.c sbrk.c
  61496. +CSRC-y := __init_brk.c brk.c sbrk.c
  61497. -SSRC := setjmp.S __longjmp.S clone.S sysdep.S syscall.S vfork.S
  61498. -ifeq ($(UNIFIED_SYSCALL),y)
  61499. -SSRC += __uClibc_syscall.S
  61500. -endif
  61501. +SSRC-y := setjmp.S __longjmp.S clone.S sysdep.S syscall.S vfork.S
  61502. +SSRC-$(UNIFIED_SYSCALL) += __uClibc_syscall.S
  61503. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/setjmp.S uClibc-git/libc/sysdeps/linux/cris/setjmp.S
  61504. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  61505. +++ uClibc-git/libc/sysdeps/linux/cris/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  61506. @@ -14,13 +14,9 @@
  61507. You should have received a copy of the GNU Library General Public
  61508. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61509. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61510. - Boston, MA 02111-1307, USA. */
  61511. + see <http://www.gnu.org/licenses/>. */
  61512. #include "sysdep.h"
  61513. -#define _SETJMP_H
  61514. -#define _ASM
  61515. -#include <bits/setjmp.h>
  61516. .syntax no_register_prefix
  61517. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/procfs.h uClibc-git/libc/sysdeps/linux/cris/sys/procfs.h
  61518. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  61519. +++ uClibc-git/libc/sysdeps/linux/cris/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  61520. @@ -13,8 +13,7 @@
  61521. You should have received a copy of the GNU Library General Public
  61522. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61523. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61524. - Boston, MA 02111-1307, USA. */
  61525. + see <http://www.gnu.org/licenses/>. */
  61526. #ifndef _SYS_PROCFS_H
  61527. #define _SYS_PROCFS_H 1
  61528. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/ucontext.h uClibc-git/libc/sysdeps/linux/cris/sys/ucontext.h
  61529. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  61530. +++ uClibc-git/libc/sysdeps/linux/cris/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  61531. @@ -12,9 +12,8 @@
  61532. Lesser General Public License for more details.
  61533. You should have received a copy of the GNU Lesser General Public
  61534. - License along with the GNU C Library; if not, write to the Free
  61535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61536. - 02111-1307 USA. */
  61537. + License along with the GNU C Library; if not, see
  61538. + <http://www.gnu.org/licenses/>. */
  61539. /* System V/cris ABI compliant context switching support. */
  61540. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/syscall.S uClibc-git/libc/sysdeps/linux/cris/syscall.S
  61541. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/syscall.S 2012-05-15 09:20:09.000000000 +0200
  61542. +++ uClibc-git/libc/sysdeps/linux/cris/syscall.S 2014-02-03 12:32:56.000000000 +0100
  61543. @@ -13,8 +13,7 @@
  61544. You should have received a copy of the GNU Library General Public
  61545. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61546. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61547. - Boston, MA 02111-1307, USA. */
  61548. + see <http://www.gnu.org/licenses/>. */
  61549. #include "sysdep.h"
  61550. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.h uClibc-git/libc/sysdeps/linux/cris/sysdep.h
  61551. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  61552. +++ uClibc-git/libc/sysdeps/linux/cris/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  61553. @@ -14,13 +14,12 @@
  61554. You should have received a copy of the GNU Library General Public
  61555. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61556. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61557. - Boston, MA 02111-1307, USA. */
  61558. + see <http://www.gnu.org/licenses/>. */
  61559. #ifndef _SYSDEP_H_
  61560. #define _SYSDEP_H_
  61561. -#include <sys/syscall.h>
  61562. +#include <common/sysdep.h>
  61563. #ifndef C_LABEL
  61564. @@ -126,6 +125,14 @@
  61565. ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), function) @ \
  61566. .align ALIGNARG (2) @ \
  61567. C_LABEL(name)
  61568. +
  61569. +#define HIDDEN_ENTRY(name) \
  61570. + .text @ \
  61571. + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (name) @ \
  61572. + .hidden C_SYMBOL_NAME (name) @ \
  61573. + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME (name), function) @ \
  61574. + .align ALIGNARG (2) @ \
  61575. + C_LABEL(name)
  61576. #undef END
  61577. #define END(name) \
  61578. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.S uClibc-git/libc/sysdeps/linux/cris/sysdep.S
  61579. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/sysdep.S 2012-05-15 09:20:09.000000000 +0200
  61580. +++ uClibc-git/libc/sysdeps/linux/cris/sysdep.S 2014-02-03 12:32:56.000000000 +0100
  61581. @@ -13,8 +13,7 @@
  61582. You should have received a copy of the GNU Library General Public
  61583. License along with the GNU C Library; see the file COPYING.LIB. If not,
  61584. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  61585. - Boston, MA 02111-1307, USA. */
  61586. + see <http://www.gnu.org/licenses/>. */
  61587. #include <features.h>
  61588. #include "sysdep.h"
  61589. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/cris/vfork.S uClibc-git/libc/sysdeps/linux/cris/vfork.S
  61590. --- uClibc-0.9.33.2/libc/sysdeps/linux/cris/vfork.S 2012-05-15 09:20:09.000000000 +0200
  61591. +++ uClibc-git/libc/sysdeps/linux/cris/vfork.S 2014-02-03 12:32:56.000000000 +0100
  61592. @@ -16,7 +16,7 @@
  61593. * enclosing function
  61594. */
  61595. -ENTRY(__vfork)
  61596. +HIDDEN_ENTRY(__vfork)
  61597. movu.w __NR_vfork,$r9
  61598. break 13
  61599. cmps.w -4096,$r10
  61600. @@ -27,4 +27,4 @@
  61601. PSEUDO_END(__vfork)
  61602. weak_alias(__vfork,vfork)
  61603. -libc_hidden_weak(vfork)
  61604. +libc_hidden_def(vfork)
  61605. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fcntl.h uClibc-git/libc/sysdeps/linux/e1/bits/fcntl.h
  61606. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  61607. +++ uClibc-git/libc/sysdeps/linux/e1/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  61608. @@ -13,9 +13,8 @@
  61609. Lesser General Public License for more details.
  61610. You should have received a copy of the GNU Lesser General Public
  61611. - License along with the GNU C Library; if not, write to the Free
  61612. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61613. - 02111-1307 USA. */
  61614. + License along with the GNU C Library; if not, see
  61615. + <http://www.gnu.org/licenses/>. */
  61616. #ifndef _FCNTL_H
  61617. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  61618. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenv.h uClibc-git/libc/sysdeps/linux/e1/bits/fenv.h
  61619. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  61620. +++ uClibc-git/libc/sysdeps/linux/e1/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  61621. @@ -15,9 +15,8 @@
  61622. Lesser General Public License for more details.
  61623. You should have received a copy of the GNU Lesser General Public
  61624. - License along with the GNU C Library; if not, write to the Free
  61625. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61626. - 02111-1307 USA. */
  61627. + License along with the GNU C Library; if not, see
  61628. + <http://www.gnu.org/licenses/>. */
  61629. #ifndef _FENV_H
  61630. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  61631. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenvinline.h uClibc-git/libc/sysdeps/linux/e1/bits/fenvinline.h
  61632. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/fenvinline.h 2012-05-15 09:20:09.000000000 +0200
  61633. +++ uClibc-git/libc/sysdeps/linux/e1/bits/fenvinline.h 2014-02-03 12:32:56.000000000 +0100
  61634. @@ -16,9 +16,8 @@
  61635. Lesser General Public License for more details.
  61636. You should have received a copy of the GNU Lesser General Public
  61637. - License along with the GNU C Library; if not, write to the Free
  61638. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61639. - 02111-1307 USA. */
  61640. + License along with the GNU C Library; if not, see
  61641. + <http://www.gnu.org/licenses/>. */
  61642. #if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_MATH_INLINES
  61643. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/e1/bits/kernel_types.h
  61644. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  61645. +++ uClibc-git/libc/sysdeps/linux/e1/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  61646. @@ -31,6 +31,8 @@
  61647. typedef unsigned short __kernel_old_uid_t;
  61648. typedef unsigned short __kernel_old_gid_t;
  61649. typedef __kernel_dev_t __kernel_old_dev_t;
  61650. +typedef long __kernel_long_t;
  61651. +typedef unsigned long __kernel_ulong_t;
  61652. typedef long long __kernel_loff_t;
  61653. /*
  61654. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h
  61655. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  61656. +++ uClibc-git/libc/sysdeps/linux/e1/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  61657. @@ -12,8 +12,8 @@
  61658. /* can your target use syscall6() for mmap ? */
  61659. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  61660. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  61661. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  61662. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  61663. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  61664. /* does your target have a broken create_module() ? */
  61665. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  61666. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/unistd.h uClibc-git/libc/sysdeps/linux/e1/bits/unistd.h
  61667. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/unistd.h 2012-05-15 09:20:09.000000000 +0200
  61668. +++ uClibc-git/libc/sysdeps/linux/e1/bits/unistd.h 2014-02-03 12:32:56.000000000 +0100
  61669. @@ -378,13 +378,6 @@
  61670. return (type)(par1); \
  61671. }
  61672. -#include <sys/types.h>
  61673. -/* Taken from <bits/errno.h> */
  61674. -#ifndef _LIBC
  61675. -/* We don't support pthreads for the moment*/
  61676. -#define __set_errno(val) ((errno) = (val))
  61677. -#endif
  61678. -
  61679. #if 0
  61680. #define _syscall3(type, name,atype, a , btype, b, ctype, c) \
  61681. type name(atype a, btype b, ctype c,) \
  61682. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/wordsize.h uClibc-git/libc/sysdeps/linux/e1/bits/wordsize.h
  61683. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  61684. +++ uClibc-git/libc/sysdeps/linux/e1/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  61685. @@ -15,8 +15,7 @@
  61686. Lesser General Public License for more details.
  61687. You should have received a copy of the GNU Lesser General Public
  61688. - License along with the GNU C Library; if not, write to the Free
  61689. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61690. - 02111-1307 USA. */
  61691. + License along with the GNU C Library; if not, see
  61692. + <http://www.gnu.org/licenses/>. */
  61693. #define __WORDSIZE 32
  61694. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/crt1.c uClibc-git/libc/sysdeps/linux/e1/crt1.c
  61695. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/crt1.c 2012-05-15 09:20:09.000000000 +0200
  61696. +++ uClibc-git/libc/sysdeps/linux/e1/crt1.c 2014-02-03 12:32:56.000000000 +0100
  61697. @@ -18,8 +18,8 @@
  61698. * for more details.
  61699. *
  61700. * You should have received a copy of the GNU Library General Public License
  61701. - * along with this program; if not, write to the Free Software Foundation,
  61702. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  61703. + * along with this program; see the file COPYING.LIB. If not, see
  61704. + * <http://www.gnu.org/licenses/>.
  61705. */
  61706. /* Stick in a dummy reference to main(), so that if an application
  61707. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/Makefile uClibc-git/libc/sysdeps/linux/e1/Makefile
  61708. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/Makefile 2012-05-15 09:20:09.000000000 +0200
  61709. +++ uClibc-git/libc/sysdeps/linux/e1/Makefile 2014-02-03 12:32:56.000000000 +0100
  61710. @@ -17,7 +17,7 @@
  61711. CTOR_TARGETS := $(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o
  61712. # why is crt1.c listed in CSRC ?
  61713. -CSRC := crt1.c syscalls.c longjmp.c setjmp.c vfork.c
  61714. +CSRC := crt1.c syscalls.c longjmp.c setjmp.c
  61715. OBJS := $(patsubst %.c,%.o, $(CSRC))
  61716. OBJ_LIST := ../../../obj.sysdeps.$(TARGET_ARCH)
  61717. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/procfs.h uClibc-git/libc/sysdeps/linux/e1/sys/procfs.h
  61718. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  61719. +++ uClibc-git/libc/sysdeps/linux/e1/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  61720. @@ -12,9 +12,8 @@
  61721. Lesser General Public License for more details.
  61722. You should have received a copy of the GNU Lesser General Public
  61723. - License along with the GNU C Library; if not, write to the Free
  61724. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61725. - 02111-1307 USA. */
  61726. + License along with the GNU C Library; if not, see
  61727. + <http://www.gnu.org/licenses/>. */
  61728. #ifndef _SYS_PROCFS_H
  61729. #define _SYS_PROCFS_H 1
  61730. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/reg.h uClibc-git/libc/sysdeps/linux/e1/sys/reg.h
  61731. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  61732. +++ uClibc-git/libc/sysdeps/linux/e1/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  61733. @@ -12,9 +12,8 @@
  61734. Lesser General Public License for more details.
  61735. You should have received a copy of the GNU Lesser General Public
  61736. - License along with the GNU C Library; if not, write to the Free
  61737. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61738. - 02111-1307 USA. */
  61739. + License along with the GNU C Library; if not, see
  61740. + <http://www.gnu.org/licenses/>. */
  61741. #ifndef _SYS_REG_H
  61742. #define _SYS_REG_H 1
  61743. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/ucontext.h uClibc-git/libc/sysdeps/linux/e1/sys/ucontext.h
  61744. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  61745. +++ uClibc-git/libc/sysdeps/linux/e1/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  61746. @@ -12,9 +12,8 @@
  61747. Lesser General Public License for more details.
  61748. You should have received a copy of the GNU Lesser General Public
  61749. - License along with the GNU C Library; if not, write to the Free
  61750. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61751. - 02111-1307 USA. */
  61752. + License along with the GNU C Library; if not, see
  61753. + <http://www.gnu.org/licenses/>. */
  61754. /* System V/m68k ABI compliant context switching support. */
  61755. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/e1/vfork.c uClibc-git/libc/sysdeps/linux/e1/vfork.c
  61756. --- uClibc-0.9.33.2/libc/sysdeps/linux/e1/vfork.c 2012-05-15 09:20:09.000000000 +0200
  61757. +++ uClibc-git/libc/sysdeps/linux/e1/vfork.c 1970-01-01 01:00:00.000000000 +0100
  61758. @@ -1,14 +0,0 @@
  61759. -/*
  61760. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61761. - *
  61762. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  61763. - */
  61764. -
  61765. -#include <sys/types.h>
  61766. -#include <sys/syscall.h>
  61767. -#include <errno.h>
  61768. -
  61769. -#define __NR___vfork __NR_vfork
  61770. -attribute_hidden _syscall0(pid_t, __vfork)
  61771. -weak_alias(__vfork,vfork)
  61772. -libc_hidden_weak(vfork)
  61773. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/elf-fdpic.h uClibc-git/libc/sysdeps/linux/frv/bits/elf-fdpic.h
  61774. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/elf-fdpic.h 2012-05-15 09:20:09.000000000 +0200
  61775. +++ uClibc-git/libc/sysdeps/linux/frv/bits/elf-fdpic.h 2014-02-03 12:32:56.000000000 +0100
  61776. @@ -22,8 +22,7 @@
  61777. You should have received a copy of the GNU Lesser General Public
  61778. License along with the GNU C Library; see the file COPYING.LIB. If
  61779. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  61780. -Cambridge, MA 02139, USA. */
  61781. +not, see <http://www.gnu.org/licenses/>. */
  61782. #ifndef _BITS_ELF_FDPIC_H
  61783. #define _BITS_ELF_FDPIC_H
  61784. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/fcntl.h uClibc-git/libc/sysdeps/linux/frv/bits/fcntl.h
  61785. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  61786. +++ uClibc-git/libc/sysdeps/linux/frv/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  61787. @@ -13,9 +13,8 @@
  61788. Lesser General Public License for more details.
  61789. You should have received a copy of the GNU Lesser General Public
  61790. - License along with the GNU C Library; if not, write to the Free
  61791. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61792. - 02111-1307 USA. */
  61793. + License along with the GNU C Library; if not, see
  61794. + <http://www.gnu.org/licenses/>. */
  61795. #ifndef _FCNTL_H
  61796. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  61797. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/setjmp.h uClibc-git/libc/sysdeps/linux/frv/bits/setjmp.h
  61798. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  61799. +++ uClibc-git/libc/sysdeps/linux/frv/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  61800. @@ -12,9 +12,8 @@
  61801. Lesser General Public License for more details.
  61802. You should have received a copy of the GNU Lesser General Public
  61803. - License along with the GNU C Library; if not, write to the Free
  61804. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61805. - 02111-1307 USA. */
  61806. + License along with the GNU C Library; if not, see
  61807. + <http://www.gnu.org/licenses/>. */
  61808. /* Define the machine-dependent type `jmp_buf'. FRV version. */
  61809. @@ -35,7 +34,6 @@
  61810. #define __SETJMP_FP (__SETJMP_SP+1)
  61811. -#ifndef _ASM
  61812. typedef struct
  61813. /* Demand 64-bit alignment such that we can use std/ldd in
  61814. setjmp/longjmp. */
  61815. @@ -48,11 +46,5 @@
  61816. unsigned long __sp; /* stack pointer */
  61817. unsigned long __fp; /* frame pointer */
  61818. } __jmp_buf[1];
  61819. -#endif
  61820. -
  61821. -/* Test if longjmp to JMPBUF would unwind the frame
  61822. - containing a local variable at ADDRESS. */
  61823. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  61824. - ((void *) (address) < (void *) (jmpbuf)->__sp)
  61825. #endif /* bits/setjmp.h */
  61826. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/frv/bits/stackinfo.h
  61827. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  61828. +++ uClibc-git/libc/sysdeps/linux/frv/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  61829. @@ -12,9 +12,8 @@
  61830. Lesser General Public License for more details.
  61831. You should have received a copy of the GNU Lesser General Public
  61832. - License along with the GNU C Library; if not, write to the Free
  61833. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61834. - 02111-1307 USA. */
  61835. + License along with the GNU C Library; if not, see
  61836. + <http://www.gnu.org/licenses/>. */
  61837. /* This file contains a bit of information about the stack allocation
  61838. of the processor. */
  61839. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stat.h uClibc-git/libc/sysdeps/linux/frv/bits/stat.h
  61840. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  61841. +++ uClibc-git/libc/sysdeps/linux/frv/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  61842. @@ -12,9 +12,8 @@
  61843. Lesser General Public License for more details.
  61844. You should have received a copy of the GNU Lesser General Public
  61845. - License along with the GNU C Library; if not, write to the Free
  61846. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61847. - 02111-1307 USA. */
  61848. + License along with the GNU C Library; if not, see
  61849. + <http://www.gnu.org/licenses/>. */
  61850. #ifndef _SYS_STAT_H
  61851. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  61852. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/syscalls.h uClibc-git/libc/sysdeps/linux/frv/bits/syscalls.h
  61853. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  61854. +++ uClibc-git/libc/sysdeps/linux/frv/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  61855. @@ -15,8 +15,7 @@
  61856. # define __syscall_return(type, res) \
  61857. do { \
  61858. unsigned long __sr2 = (res); \
  61859. - if (__builtin_expect ((unsigned long)(__sr2) \
  61860. - >= (unsigned long)(-4095), 0)) { \
  61861. + if (unlikely ((unsigned long)(__sr2) >= (unsigned long)(-4095))) { \
  61862. extern int __syscall_error (int); \
  61863. return (type) __syscall_error (__sr2); \
  61864. } \
  61865. @@ -26,8 +25,7 @@
  61866. # define __syscall_return(type, res) \
  61867. do { \
  61868. unsigned long __sr2 = (res); \
  61869. - if (__builtin_expect ((unsigned long)(__sr2) \
  61870. - >= (unsigned long)(-4095), 0)) { \
  61871. + if (unlikely ((unsigned long)(__sr2) >= (unsigned long)(-4095))) { \
  61872. __set_errno (-__sr2); \
  61873. __sr2 = -1; \
  61874. } \
  61875. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h
  61876. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  61877. +++ uClibc-git/libc/sysdeps/linux/frv/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  61878. @@ -12,8 +12,8 @@
  61879. /* can your target use syscall6() for mmap ? */
  61880. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  61881. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  61882. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  61883. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  61884. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  61885. /* does your target have a broken create_module() ? */
  61886. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  61887. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/frv/bits/uClibc_page.h
  61888. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  61889. +++ uClibc-git/libc/sysdeps/linux/frv/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  61890. @@ -11,8 +11,8 @@
  61891. * Library General Public License for more details.
  61892. *
  61893. * You should have received a copy of the GNU Library General Public
  61894. - * License along with this library; if not, write to the Free
  61895. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  61896. + * License along with this library; if not, see
  61897. + * <http://www.gnu.org/licenses/>.
  61898. */
  61899. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  61900. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/wordsize.h uClibc-git/libc/sysdeps/linux/frv/bits/wordsize.h
  61901. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  61902. +++ uClibc-git/libc/sysdeps/linux/frv/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  61903. @@ -12,8 +12,7 @@
  61904. Lesser General Public License for more details.
  61905. You should have received a copy of the GNU Lesser General Public
  61906. - License along with the GNU C Library; if not, write to the Free
  61907. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61908. - 02111-1307 USA. */
  61909. + License along with the GNU C Library; if not, see
  61910. + <http://www.gnu.org/licenses/>. */
  61911. #define __WORDSIZE 32
  61912. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/clone.S uClibc-git/libc/sysdeps/linux/frv/clone.S
  61913. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/clone.S 2012-05-15 09:20:09.000000000 +0200
  61914. +++ uClibc-git/libc/sysdeps/linux/frv/clone.S 2014-02-03 12:32:56.000000000 +0100
  61915. @@ -13,9 +13,8 @@
  61916. Lesser General Public License for more details.
  61917. You should have received a copy of the GNU Lesser General Public
  61918. - License along with the GNU C Library; if not, write to the Free
  61919. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  61920. - 02111-1307 USA. */
  61921. + License along with the GNU C Library; if not, see
  61922. + <http://www.gnu.org/licenses/>. */
  61923. /* clone() is even more special than fork() as it mucks with stacks
  61924. and invokes a function in the right context after its all over. */
  61925. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crt0.S uClibc-git/libc/sysdeps/linux/frv/crt0.S
  61926. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crt0.S 2012-05-15 09:20:09.000000000 +0200
  61927. +++ uClibc-git/libc/sysdeps/linux/frv/crt0.S 2014-02-03 12:32:56.000000000 +0100
  61928. @@ -22,8 +22,7 @@
  61929. You should have received a copy of the GNU Lesser General Public
  61930. License along with the GNU C Library; see the file COPYING.LIB. If
  61931. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  61932. -Cambridge, MA 02139, USA. */
  61933. +not, see <http://www.gnu.org/licenses/>. */
  61934. /* Based on ../i386/crt0.S and newlib's libgloss/frv/crt0.S */
  61935. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crti.S uClibc-git/libc/sysdeps/linux/frv/crti.S
  61936. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crti.S 2012-05-15 09:20:09.000000000 +0200
  61937. +++ uClibc-git/libc/sysdeps/linux/frv/crti.S 2014-02-03 12:32:56.000000000 +0100
  61938. @@ -22,8 +22,7 @@
  61939. You should have received a copy of the GNU Lesser General Public
  61940. License along with the GNU C Library; see the file COPYING.LIB. If
  61941. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  61942. -Cambridge, MA 02139, USA. */
  61943. +not, see <http://www.gnu.org/licenses/>. */
  61944. .section .init,"x"
  61945. .p2align 2
  61946. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtn.S uClibc-git/libc/sysdeps/linux/frv/crtn.S
  61947. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtn.S 2012-05-15 09:20:09.000000000 +0200
  61948. +++ uClibc-git/libc/sysdeps/linux/frv/crtn.S 2014-02-03 12:32:56.000000000 +0100
  61949. @@ -22,8 +22,7 @@
  61950. You should have received a copy of the GNU Lesser General Public
  61951. License along with the GNU C Library; see the file COPYING.LIB. If
  61952. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  61953. -Cambridge, MA 02139, USA. */
  61954. +not, see <http://www.gnu.org/licenses/>. */
  61955. .section .init,"x"
  61956. .globl _init
  61957. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtreloc.c uClibc-git/libc/sysdeps/linux/frv/crtreloc.c
  61958. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/crtreloc.c 2012-05-15 09:20:09.000000000 +0200
  61959. +++ uClibc-git/libc/sysdeps/linux/frv/crtreloc.c 2014-02-03 12:32:56.000000000 +0100
  61960. @@ -23,8 +23,7 @@
  61961. You should have received a copy of the GNU Lesser General Public
  61962. License along with the GNU C Library; see the file COPYING.LIB. If
  61963. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  61964. -Cambridge, MA 02139, USA. */
  61965. +not, see <http://www.gnu.org/licenses/>. */
  61966. #include <sys/types.h>
  61967. #include <link.h>
  61968. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/dl-iterate-phdr.c uClibc-git/libc/sysdeps/linux/frv/dl-iterate-phdr.c
  61969. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/dl-iterate-phdr.c 2012-05-15 09:20:09.000000000 +0200
  61970. +++ uClibc-git/libc/sysdeps/linux/frv/dl-iterate-phdr.c 2014-02-03 12:32:56.000000000 +0100
  61971. @@ -13,8 +13,7 @@
  61972. You should have received a copy of the GNU Lesser General Public
  61973. License along with the GNU C Library; see the file COPYING.LIB. If
  61974. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  61975. -Cambridge, MA 02139, USA. */
  61976. +not, see <http://www.gnu.org/licenses/>. */
  61977. #include <link.h>
  61978. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/fstat64.c uClibc-git/libc/sysdeps/linux/frv/fstat64.c
  61979. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/fstat64.c 2012-05-15 09:20:09.000000000 +0200
  61980. +++ uClibc-git/libc/sysdeps/linux/frv/fstat64.c 2014-02-03 12:32:56.000000000 +0100
  61981. @@ -9,11 +9,9 @@
  61982. * Adapted to FR-V by Alexandre Oliva <aoliva@redhat.com>
  61983. */
  61984. +#include <_lfs_64.h>
  61985. #include <sys/syscall.h>
  61986. -#include <unistd.h>
  61987. #include <sys/stat.h>
  61988. -#ifdef __UCLIBC_HAS_LFS__
  61989. _syscall2(int, fstat64, int, fd, struct stat64 *, buf)
  61990. libc_hidden_def(fstat64)
  61991. -#endif
  61992. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/frv/jmpbuf-unwind.h
  61993. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  61994. +++ uClibc-git/libc/sysdeps/linux/frv/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  61995. @@ -0,0 +1,14 @@
  61996. +/*
  61997. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  61998. + *
  61999. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62000. + */
  62001. +
  62002. +#include <setjmp.h>
  62003. +
  62004. +/* Test if longjmp to JMPBUF would unwind the frame
  62005. + containing a local variable at ADDRESS. */
  62006. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62007. + ((void *) (address) < (void *) (jmpbuf)->__sp)
  62008. +
  62009. +#endif /* bits/setjmp.h */
  62010. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/__longjmp.S uClibc-git/libc/sysdeps/linux/frv/__longjmp.S
  62011. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  62012. +++ uClibc-git/libc/sysdeps/linux/frv/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  62013. @@ -4,10 +4,6 @@
  62014. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62015. */
  62016. -#define _SETJMP_H
  62017. -#define _ASM
  62018. -#include <bits/setjmp.h>
  62019. -
  62020. # setjmp/longjmp for Frv. The jmpbuf looks like this:
  62021. #
  62022. # Register jmpbuf offset
  62023. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/lstat64.c uClibc-git/libc/sysdeps/linux/frv/lstat64.c
  62024. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/lstat64.c 2012-05-15 09:20:09.000000000 +0200
  62025. +++ uClibc-git/libc/sysdeps/linux/frv/lstat64.c 2014-02-03 12:32:56.000000000 +0100
  62026. @@ -9,11 +9,9 @@
  62027. * Adapted to FR-V by Alexandre Oliva <aoliva@redhat.com>
  62028. */
  62029. +#include <_lfs_64.h>
  62030. #include <sys/syscall.h>
  62031. -#include <unistd.h>
  62032. #include <sys/stat.h>
  62033. -#ifdef __UCLIBC_HAS_LFS__
  62034. _syscall2(int, lstat64, const char *, file_name, struct stat64 *, buf)
  62035. libc_hidden_def(lstat64)
  62036. -#endif
  62037. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/Makefile uClibc-git/libc/sysdeps/linux/frv/Makefile
  62038. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/Makefile 2012-05-15 09:20:09.000000000 +0200
  62039. +++ uClibc-git/libc/sysdeps/linux/frv/Makefile 2014-02-03 12:32:56.000000000 +0100
  62040. @@ -17,7 +17,7 @@
  62041. SSRC := __longjmp.S setjmp.S clone.S vfork.S
  62042. SOBJ := $(patsubst %.S,%.o, $(SSRC))
  62043. -CSRC = mmap.c sysdep.c syscall.c brk.c sbrk.c __init_brk.c dl-iterate-phdr.c
  62044. +CSRC = sysdep.c syscall.c brk.c sbrk.c __init_brk.c dl-iterate-phdr.c
  62045. CSRC += xstatconv.c stat.c stat64.c fstat.c fstat64.c lstat.c lstat64.c
  62046. COBJ := $(patsubst %.c,%.o, $(CSRC))
  62047. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/mmap.c uClibc-git/libc/sysdeps/linux/frv/mmap.c
  62048. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/mmap.c 2012-05-15 09:20:09.000000000 +0200
  62049. +++ uClibc-git/libc/sysdeps/linux/frv/mmap.c 1970-01-01 01:00:00.000000000 +0100
  62050. @@ -1,50 +0,0 @@
  62051. -/* Copyright (C) 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
  62052. - This file is part of the GNU C Library.
  62053. - Contributed by Daniel Jacobowitz <dan@debian.org>, 1999.
  62054. -
  62055. - The GNU C Library is free software; you can redistribute it and/or
  62056. - modify it under the terms of the GNU Lesser General Public
  62057. - License as published by the Free Software Foundation; either
  62058. - version 2.1 of the License, or (at your option) any later version.
  62059. -
  62060. - The GNU C Library is distributed in the hope that it will be useful,
  62061. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  62062. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  62063. - Lesser General Public License for more details.
  62064. -
  62065. - You should have received a copy of the GNU Lesser General Public
  62066. - License along with the GNU C Library; if not, write to the Free
  62067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62068. - 02111-1307 USA. */
  62069. -
  62070. -/* Massivly hacked up for uClibc by Erik Andersen */
  62071. -
  62072. -/* Extracted from ../common/mmap64.c by Alexandre Oliva <aoliva@redhat.com>
  62073. -
  62074. - We don't want to use the old mmap interface. */
  62075. -
  62076. -#include <features.h>
  62077. -#include <errno.h>
  62078. -#include <unistd.h>
  62079. -#include <sys/syscall.h>
  62080. -#include <sys/mman.h>
  62081. -
  62082. -
  62083. -#define __NR___syscall_mmap2 __NR_mmap2
  62084. -static __inline__ _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr,
  62085. - size_t, len, int, prot, int, flags, int, fd, off_t, offset)
  62086. -
  62087. -/* This is always 12, even on architectures where PAGE_SHIFT != 12. */
  62088. -# ifndef MMAP2_PAGE_SHIFT
  62089. -# define MMAP2_PAGE_SHIFT 12
  62090. -# endif
  62091. -
  62092. -__ptr_t mmap(__ptr_t addr, size_t len, int prot, int flags, int fd, __off_t offset)
  62093. -{
  62094. - if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1)) {
  62095. - __set_errno (EINVAL);
  62096. - return MAP_FAILED;
  62097. - }
  62098. - return(__syscall_mmap2(addr, len, prot, flags, fd, (off_t) (offset >> MMAP2_PAGE_SHIFT)));
  62099. -}
  62100. -libc_hidden_def(mmap)
  62101. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/stat64.c uClibc-git/libc/sysdeps/linux/frv/stat64.c
  62102. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/stat64.c 2012-05-15 09:20:09.000000000 +0200
  62103. +++ uClibc-git/libc/sysdeps/linux/frv/stat64.c 2014-02-03 12:32:56.000000000 +0100
  62104. @@ -9,11 +9,9 @@
  62105. * Adapted to FR-V by Alexandre Oliva <aoliva@redhat.com>
  62106. */
  62107. +#include <_lfs_64.h>
  62108. #include <sys/syscall.h>
  62109. -#include <unistd.h>
  62110. #include <sys/stat.h>
  62111. -#ifdef __UCLIBC_HAS_LFS__
  62112. _syscall2(int, stat64, const char *, file_name, struct stat64 *, buf)
  62113. libc_hidden_def(stat64)
  62114. -#endif
  62115. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/procfs.h uClibc-git/libc/sysdeps/linux/frv/sys/procfs.h
  62116. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  62117. +++ uClibc-git/libc/sysdeps/linux/frv/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  62118. @@ -12,9 +12,8 @@
  62119. Lesser General Public License for more details.
  62120. You should have received a copy of the GNU Lesser General Public
  62121. - License along with the GNU C Library; if not, write to the Free
  62122. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62123. - 02111-1307 USA. */
  62124. + License along with the GNU C Library; if not, see
  62125. + <http://www.gnu.org/licenses/>. */
  62126. #ifndef _SYS_PROCFS_H
  62127. #define _SYS_PROCFS_H 1
  62128. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ptrace.h uClibc-git/libc/sysdeps/linux/frv/sys/ptrace.h
  62129. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  62130. +++ uClibc-git/libc/sysdeps/linux/frv/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  62131. @@ -14,9 +14,8 @@
  62132. Lesser General Public License for more details.
  62133. You should have received a copy of the GNU Lesser General Public
  62134. - License along with the GNU C Library; if not, write to the Free
  62135. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62136. - 02111-1307 USA. */
  62137. + License along with the GNU C Library; if not, see
  62138. + <http://www.gnu.org/licenses/>. */
  62139. #ifndef _SYS_PTRACE_H
  62140. #define _SYS_PTRACE_H 1
  62141. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ucontext.h uClibc-git/libc/sysdeps/linux/frv/sys/ucontext.h
  62142. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  62143. +++ uClibc-git/libc/sysdeps/linux/frv/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  62144. @@ -13,8 +13,7 @@
  62145. You should have received a copy of the GNU Library General Public
  62146. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62147. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62148. - Boston, MA 02111-1307, USA. */
  62149. + see <http://www.gnu.org/licenses/>. */
  62150. #ifndef _SYS_UCONTEXT_H
  62151. #define _SYS_UCONTEXT_H 1
  62152. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/syscall.c uClibc-git/libc/sysdeps/linux/frv/syscall.c
  62153. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/syscall.c 2012-05-15 09:20:09.000000000 +0200
  62154. +++ uClibc-git/libc/sysdeps/linux/frv/syscall.c 2014-02-03 12:32:56.000000000 +0100
  62155. @@ -13,8 +13,8 @@
  62156. * for more details.
  62157. *
  62158. * You should have received a copy of the GNU Library General Public License
  62159. - * along with this program; if not, write to the Free Software Foundation,
  62160. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  62161. + * along with this program; see the file COPYING.LIB. If not, see
  62162. + * <http://www.gnu.org/licenses/>.
  62163. */
  62164. #include <features.h>
  62165. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/sysdep.c uClibc-git/libc/sysdeps/linux/frv/sysdep.c
  62166. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/sysdep.c 2012-05-15 09:20:09.000000000 +0200
  62167. +++ uClibc-git/libc/sysdeps/linux/frv/sysdep.c 2014-02-03 12:32:56.000000000 +0100
  62168. @@ -12,9 +12,8 @@
  62169. Lesser General Public License for more details.
  62170. You should have received a copy of the GNU Lesser General Public
  62171. - License along with the GNU C Library; if not, write to the Free
  62172. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62173. - 02111-1307 USA. */
  62174. + License along with the GNU C Library; if not, see
  62175. + <http://www.gnu.org/licenses/>. */
  62176. #include <errno.h>
  62177. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/frv/vfork.S uClibc-git/libc/sysdeps/linux/frv/vfork.S
  62178. --- uClibc-0.9.33.2/libc/sysdeps/linux/frv/vfork.S 2012-05-15 09:20:09.000000000 +0200
  62179. +++ uClibc-git/libc/sysdeps/linux/frv/vfork.S 2014-02-03 12:32:56.000000000 +0100
  62180. @@ -13,15 +13,10 @@
  62181. Lesser General Public License for more details.
  62182. You should have received a copy of the GNU Lesser General Public
  62183. - License along with the GNU C Library; if not, write to the Free
  62184. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62185. - 02111-1307 USA. */
  62186. -
  62187. -#include <features.h>
  62188. -
  62189. -#include <asm/unistd.h>
  62190. -#define _ERRNO_H 1
  62191. -#include <bits/errno.h>
  62192. + License along with the GNU C Library; if not, see
  62193. + <http://www.gnu.org/licenses/>. */
  62194. +
  62195. +#include <sys/syscall.h>
  62196. .text
  62197. .globl __vfork
  62198. @@ -44,4 +39,4 @@
  62199. .size __vfork,.-__vfork
  62200. weak_alias(__vfork,vfork)
  62201. -libc_hidden_weak(vfork)
  62202. +libc_hidden_def(vfork)
  62203. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/byteswap.h uClibc-git/libc/sysdeps/linux/h8300/bits/byteswap.h
  62204. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  62205. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  62206. @@ -14,8 +14,7 @@
  62207. You should have received a copy of the GNU Library General Public
  62208. License along with the GNU C Library; see the file COPYING.LIB. If not,
  62209. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  62210. - Boston, MA 02111-1307, USA. */
  62211. + see <http://www.gnu.org/licenses/>. */
  62212. #ifndef _ASM_BITS_BYTESWAP_H
  62213. #define _ASM_BITS_BYTESWAP_H 1
  62214. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/fcntl.h uClibc-git/libc/sysdeps/linux/h8300/bits/fcntl.h
  62215. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  62216. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  62217. @@ -13,9 +13,8 @@
  62218. Lesser General Public License for more details.
  62219. You should have received a copy of the GNU Lesser General Public
  62220. - License along with the GNU C Library; if not, write to the Free
  62221. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62222. - 02111-1307 USA. */
  62223. + License along with the GNU C Library; if not, see
  62224. + <http://www.gnu.org/licenses/>. */
  62225. #ifndef _FCNTL_H
  62226. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  62227. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/h8300/bits/kernel_types.h
  62228. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  62229. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  62230. @@ -32,6 +32,8 @@
  62231. typedef unsigned short __kernel_old_gid_t;
  62232. typedef long long __kernel_loff_t;
  62233. typedef __kernel_dev_t __kernel_old_dev_t;
  62234. +typedef long __kernel_long_t;
  62235. +typedef unsigned long __kernel_ulong_t;
  62236. typedef struct {
  62237. #ifdef __USE_ALL
  62238. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/setjmp.h uClibc-git/libc/sysdeps/linux/h8300/bits/setjmp.h
  62239. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  62240. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  62241. @@ -9,24 +9,10 @@
  62242. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  62243. #endif
  62244. -#ifndef _ASM
  62245. -
  62246. typedef struct
  62247. {
  62248. unsigned long __regs[4]; /* save er4 - er7(sp) */
  62249. unsigned long __pc; /* the return address */
  62250. } __jmp_buf[1];
  62251. -#endif /* _ASM */
  62252. -
  62253. -#define JB_REGS 0
  62254. -#define JB_PC 16
  62255. -#define JB_SIZE 20
  62256. -
  62257. -
  62258. -/* Test if longjmp to JMPBUF would unwind the frame
  62259. - containing a local variable at ADDRESS. */
  62260. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62261. - ((void *) (address) < (void *) (jmpbuf)->__regs[3])
  62262. -
  62263. #endif /* bits/setjmp.h */
  62264. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h
  62265. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  62266. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  62267. @@ -13,9 +13,8 @@
  62268. Lesser General Public License for more details.
  62269. You should have received a copy of the GNU Lesser General Public
  62270. - License along with the GNU C Library; if not, write to the Free
  62271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62272. - 02111-1307 USA. */
  62273. + License along with the GNU C Library; if not, see
  62274. + <http://www.gnu.org/licenses/>. */
  62275. #define SIGCONTEXT int _code, struct sigcontext *
  62276. #define SIGCONTEXT_EXTRA_ARGS _code,
  62277. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/h8300/bits/stackinfo.h
  62278. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  62279. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  62280. @@ -12,9 +12,8 @@
  62281. Lesser General Public License for more details.
  62282. You should have received a copy of the GNU Lesser General Public
  62283. - License along with the GNU C Library; if not, write to the Free
  62284. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62285. - 02111-1307 USA. */
  62286. + License along with the GNU C Library; if not, see
  62287. + <http://www.gnu.org/licenses/>. */
  62288. /* This file contains a bit of information about the stack allocation
  62289. of the processor. */
  62290. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h
  62291. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  62292. +++ uClibc-git/libc/sysdeps/linux/h8300/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  62293. @@ -12,8 +12,8 @@
  62294. /* can your target use syscall6() for mmap ? */
  62295. #define __UCLIBC_MMAP_HAS_6_ARGS__
  62296. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  62297. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  62298. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  62299. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  62300. /* does your target have a broken create_module() ? */
  62301. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  62302. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/h8300/bsd-_setjmp.S
  62303. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62304. +++ uClibc-git/libc/sysdeps/linux/h8300/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62305. @@ -1,8 +1,6 @@
  62306. /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. H8/300 version. */
  62307. -#define _ASM
  62308. -#define _SETJMP_H
  62309. -#include <bits/setjmp.h>
  62310. +#include <jmpbuf-offsets.h>
  62311. #ifdef __H8300S__
  62312. .h8300s
  62313. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/h8300/bsd-setjmp.S
  62314. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62315. +++ uClibc-git/libc/sysdeps/linux/h8300/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62316. @@ -1,8 +1,6 @@
  62317. /* BSD `_setjmp' entry point to `sigsetjmp (..., 1)'. H8/300 version. */
  62318. -#define _ASM
  62319. -#define _SETJMP_H
  62320. -#include <bits/setjmp.h>
  62321. +#include <jmpbuf-offsets.h>
  62322. #ifdef __H8300S__
  62323. .h8300s
  62324. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/crt0.S uClibc-git/libc/sysdeps/linux/h8300/crt0.S
  62325. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/crt0.S 2012-05-15 09:20:09.000000000 +0200
  62326. +++ uClibc-git/libc/sysdeps/linux/h8300/crt0.S 2014-02-03 12:32:56.000000000 +0100
  62327. @@ -14,8 +14,7 @@
  62328. You should have received a copy of the GNU Library General Public
  62329. License along with the GNU C Library; see the file COPYING.LIB. If
  62330. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  62331. -Cambridge, MA 02139, USA. */
  62332. +not, see <http://www.gnu.org/licenses/>. */
  62333. #include <features.h>
  62334. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/h8300/jmpbuf-offsets.h
  62335. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  62336. +++ uClibc-git/libc/sysdeps/linux/h8300/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  62337. @@ -0,0 +1,9 @@
  62338. +/*
  62339. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62340. + *
  62341. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62342. + */
  62343. +
  62344. +#define JB_REGS 0
  62345. +#define JB_PC 16
  62346. +#define JB_SIZE 20
  62347. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/h8300/jmpbuf-unwind.h
  62348. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  62349. +++ uClibc-git/libc/sysdeps/linux/h8300/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  62350. @@ -0,0 +1,12 @@
  62351. +/*
  62352. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62353. + *
  62354. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62355. + */
  62356. +
  62357. +#include <setjmp.h>
  62358. +
  62359. +/* Test if longjmp to JMPBUF would unwind the frame
  62360. + containing a local variable at ADDRESS. */
  62361. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  62362. + ((void *) (address) < (void *) (jmpbuf)->__regs[3])
  62363. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/__longjmp.S uClibc-git/libc/sysdeps/linux/h8300/__longjmp.S
  62364. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  62365. +++ uClibc-git/libc/sysdeps/linux/h8300/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  62366. @@ -20,3 +20,5 @@
  62367. mov.l @er0+,er3 ; return PC
  62368. adds #4,sp ; adjust return stack
  62369. jmp @er3
  62370. +
  62371. +libc_hidden_def(__longjmp)
  62372. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/setjmp.S uClibc-git/libc/sysdeps/linux/h8300/setjmp.S
  62373. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62374. +++ uClibc-git/libc/sysdeps/linux/h8300/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62375. @@ -1,6 +1,4 @@
  62376. -#define _ASM
  62377. -#define _SETJMP_H
  62378. -#include <bits/setjmp.h>
  62379. +#include <jmpbuf-offsets.h>
  62380. #ifdef __H8300S__
  62381. .h8300s
  62382. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/procfs.h uClibc-git/libc/sysdeps/linux/h8300/sys/procfs.h
  62383. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  62384. +++ uClibc-git/libc/sysdeps/linux/h8300/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  62385. @@ -12,9 +12,8 @@
  62386. Lesser General Public License for more details.
  62387. You should have received a copy of the GNU Lesser General Public
  62388. - License along with the GNU C Library; if not, write to the Free
  62389. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62390. - 02111-1307 USA. */
  62391. + License along with the GNU C Library; if not, see
  62392. + <http://www.gnu.org/licenses/>. */
  62393. #ifndef _SYS_PROCFS_H
  62394. #define _SYS_PROCFS_H 1
  62395. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/ucontext.h uClibc-git/libc/sysdeps/linux/h8300/sys/ucontext.h
  62396. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  62397. +++ uClibc-git/libc/sysdeps/linux/h8300/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  62398. @@ -12,9 +12,8 @@
  62399. Lesser General Public License for more details.
  62400. You should have received a copy of the GNU Lesser General Public
  62401. - License along with the GNU C Library; if not, write to the Free
  62402. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62403. - 02111-1307 USA. */
  62404. + License along with the GNU C Library; if not, see
  62405. + <http://www.gnu.org/licenses/>. */
  62406. /* H8/300 compliant context switching support. */
  62407. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/h8300/vfork.S uClibc-git/libc/sysdeps/linux/h8300/vfork.S
  62408. --- uClibc-0.9.33.2/libc/sysdeps/linux/h8300/vfork.S 2012-05-15 09:20:09.000000000 +0200
  62409. +++ uClibc-git/libc/sysdeps/linux/h8300/vfork.S 2014-02-03 12:32:56.000000000 +0100
  62410. @@ -1,5 +1,5 @@
  62411. -#include <asm/unistd.h>
  62412. +#include <sys/syscall.h>
  62413. #ifndef __NR_vfork
  62414. #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
  62415. @@ -12,7 +12,6 @@
  62416. #endif
  62417. .text
  62418. .align 2
  62419. - .globl _errno
  62420. .globl ___vfork
  62421. .hidden ___vfork
  62422. .type ___vfork,@function
  62423. @@ -38,4 +37,4 @@
  62424. jmp @er1 /* don't return, just jmp directly */
  62425. weak_alias(__vfork,vfork)
  62426. -libc_hidden_weak(vfork)
  62427. +libc_hidden_def(vfork)
  62428. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/add_n.s uClibc-git/libc/sysdeps/linux/hppa/add_n.s
  62429. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/add_n.s 2012-05-15 09:20:09.000000000 +0200
  62430. +++ uClibc-git/libc/sysdeps/linux/hppa/add_n.s 2014-02-03 12:32:56.000000000 +0100
  62431. @@ -16,9 +16,8 @@
  62432. ;! License for more details.
  62433. ;! You should have received a copy of the GNU Lesser General Public License
  62434. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  62435. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  62436. -;! MA 02111-1307, USA.
  62437. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  62438. +;! <http://www.gnu.org/licenses/>.
  62439. ;! INPUT PARAMETERS
  62440. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/atomic.h uClibc-git/libc/sysdeps/linux/hppa/bits/atomic.h
  62441. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  62442. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  62443. @@ -13,11 +13,11 @@
  62444. Lesser General Public License for more details.
  62445. You should have received a copy of the GNU Lesser General Public
  62446. - License along with the GNU C Library; if not, write to the Free
  62447. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62448. - 02111-1307 USA. */
  62449. + License along with the GNU C Library; if not, see
  62450. + <http://www.gnu.org/licenses/>. */
  62451. #include <stdint.h>
  62452. +#include <errno.h>
  62453. #include <bits/kernel-features.h>
  62454. #define ABORT_INSTRUCTION __asm__(__UCLIBC_ABORT_INSTRUCTION__)
  62455. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/eventfd.h uClibc-git/libc/sysdeps/linux/hppa/bits/eventfd.h
  62456. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  62457. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  62458. @@ -0,0 +1,32 @@
  62459. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  62460. + This file is part of the GNU C Library.
  62461. +
  62462. + The GNU C Library is free software; you can redistribute it and/or
  62463. + modify it under the terms of the GNU Lesser General Public
  62464. + License as published by the Free Software Foundation; either
  62465. + version 2.1 of the License, or (at your option) any later version.
  62466. +
  62467. + The GNU C Library is distributed in the hope that it will be useful,
  62468. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  62469. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  62470. + Lesser General Public License for more details.
  62471. +
  62472. + You should have received a copy of the GNU Lesser General Public
  62473. + License along with the GNU C Library. If not, see
  62474. + <http://www.gnu.org/licenses/>. */
  62475. +
  62476. +#ifndef _SYS_EVENTFD_H
  62477. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  62478. +#endif
  62479. +
  62480. +/* Flags for signalfd. */
  62481. +enum
  62482. + {
  62483. + EFD_SEMAPHORE = 000000001,
  62484. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  62485. + EFD_CLOEXEC = 010000000,
  62486. +#define EFD_CLOEXEC EFD_CLOEXEC
  62487. +/* the below value looks suspicious, should be 000200004 for consistency */
  62488. + EFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
  62489. +#define EFD_NONBLOCK EFD_NONBLOCK
  62490. + };
  62491. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fcntl.h uClibc-git/libc/sysdeps/linux/hppa/bits/fcntl.h
  62492. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  62493. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  62494. @@ -14,9 +14,8 @@
  62495. Lesser General Public License for more details.
  62496. You should have received a copy of the GNU Lesser General Public
  62497. - License along with the GNU C Library; if not, write to the Free
  62498. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62499. - 02111-1307 USA. */
  62500. + License along with the GNU C Library; if not, see
  62501. + <http://www.gnu.org/licenses/>. */
  62502. #ifndef _FCNTL_H
  62503. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  62504. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fenv.h uClibc-git/libc/sysdeps/linux/hppa/bits/fenv.h
  62505. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  62506. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  62507. @@ -13,9 +13,8 @@
  62508. Lesser General Public License for more details.
  62509. You should have received a copy of the GNU Lesser General Public
  62510. - License along with the GNU C Library; if not, write to the Free
  62511. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62512. - 02111-1307 USA. */
  62513. + License along with the GNU C Library; if not, see
  62514. + <http://www.gnu.org/licenses/>. */
  62515. #ifndef _FENV_H
  62516. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  62517. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/ipc.h uClibc-git/libc/sysdeps/linux/hppa/bits/ipc.h
  62518. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  62519. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  62520. @@ -12,9 +12,8 @@
  62521. Lesser General Public License for more details.
  62522. You should have received a copy of the GNU Lesser General Public
  62523. - License along with the GNU C Library; if not, write to the Free
  62524. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62525. - 02111-1307 USA. */
  62526. + License along with the GNU C Library; if not, see
  62527. + <http://www.gnu.org/licenses/>. */
  62528. #ifndef _SYS_IPC_H
  62529. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  62530. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h uClibc-git/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h
  62531. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  62532. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  62533. @@ -12,12 +12,4 @@
  62534. unsigned long sa_flags;
  62535. };
  62536. -/* In uclibc, userspace struct sigaction is identical to
  62537. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  62538. - * See sigaction.h
  62539. - */
  62540. -
  62541. -extern int __syscall_rt_sigaction (int, const struct sigaction *,
  62542. - struct sigaction *, size_t) attribute_hidden;
  62543. -
  62544. #endif
  62545. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/hppa/bits/kernel_types.h
  62546. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  62547. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  62548. @@ -45,6 +45,8 @@
  62549. typedef unsigned long long __kernel_ino64_t;
  62550. typedef unsigned int __kernel_old_dev_t;
  62551. +typedef long __kernel_long_t;
  62552. +typedef unsigned long __kernel_ulong_t;
  62553. typedef struct {
  62554. #ifdef __USE_ALL
  62555. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/mman.h uClibc-git/libc/sysdeps/linux/hppa/bits/mman.h
  62556. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  62557. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  62558. @@ -13,9 +13,8 @@
  62559. Lesser General Public License for more details.
  62560. You should have received a copy of the GNU Lesser General Public
  62561. - License along with the GNU C Library; if not, write to the Free
  62562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62563. - 02111-1307 USA. */
  62564. + License along with the GNU C Library; if not, see
  62565. + <http://www.gnu.org/licenses/>. */
  62566. #ifndef _SYS_MMAN_H
  62567. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  62568. @@ -45,7 +44,7 @@
  62569. #define MAP_GROWSDOWN 0x8000 /* stack-like segment */
  62570. #define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
  62571. #define MAP_NONBLOCK 0x20000 /* do not block on IO */
  62572. -#define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  62573. +#define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  62574. be uninitialized. */
  62575. #define MS_SYNC 1 /* synchronous memory sync */
  62576. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/setjmp.h uClibc-git/libc/sysdeps/linux/hppa/bits/setjmp.h
  62577. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  62578. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  62579. @@ -1,4 +1,4 @@
  62580. -/* Copyright (C) 2000 Free Software Foundation, Inc.
  62581. +/* Copyright (C) 2000, 2005, 2006 Free Software Foundation, Inc.
  62582. This file is part of the GNU C Library.
  62583. The GNU C Library is free software; you can redistribute it and/or
  62584. @@ -12,9 +12,8 @@
  62585. Lesser General Public License for more details.
  62586. You should have received a copy of the GNU Lesser General Public
  62587. - License along with the GNU C Library; if not, write to the Free
  62588. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62589. - 02111-1307 USA. */
  62590. + License along with the GNU C Library; if not, see
  62591. + <http://www.gnu.org/licenses/>. */
  62592. /* Define the machine-dependent type `jmp_buf'. HPPA version. */
  62593. #ifndef _BITS_SETJMP_H
  62594. @@ -29,17 +28,6 @@
  62595. easier, and to ensure proper alignment. Naturally, user code should
  62596. not depend on either representation. */
  62597. -#if defined __USE_MISC || defined _ASM
  62598. -#define JB_SP (76/4)
  62599. -#endif
  62600. -
  62601. -#ifndef _ASM
  62602. typedef double __jmp_buf[21];
  62603. -#endif
  62604. -
  62605. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  62606. - variable at ADDRESS. */
  62607. -#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  62608. - ((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))
  62609. #endif /* bits/setjmp.h */
  62610. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/sigaction.h uClibc-git/libc/sysdeps/linux/hppa/bits/sigaction.h
  62611. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  62612. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  62613. @@ -13,9 +13,8 @@
  62614. Lesser General Public License for more details.
  62615. You should have received a copy of the GNU Lesser General Public
  62616. - License along with the GNU C Library; if not, write to the Free
  62617. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62618. - 02111-1307 USA. */
  62619. + License along with the GNU C Library; if not, see
  62620. + <http://www.gnu.org/licenses/>. */
  62621. #ifndef _SIGNAL_H
  62622. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  62623. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/signum.h uClibc-git/libc/sysdeps/linux/hppa/bits/signum.h
  62624. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  62625. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  62626. @@ -13,9 +13,8 @@
  62627. Lesser General Public License for more details.
  62628. You should have received a copy of the GNU Lesser General Public
  62629. - License along with the GNU C Library; if not, write to the Free
  62630. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62631. - 02111-1307 USA. */
  62632. + License along with the GNU C Library; if not, see
  62633. + <http://www.gnu.org/licenses/>. */
  62634. #ifdef _SIGNAL_H
  62635. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/socket_type.h uClibc-git/libc/sysdeps/linux/hppa/bits/socket_type.h
  62636. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  62637. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  62638. @@ -0,0 +1,54 @@
  62639. +/* Define enum __socket_type for Linux/HP-PARISC.
  62640. + Copyright (C) 2012 Free Software Foundation, Inc.
  62641. + This file is part of the GNU C Library.
  62642. +
  62643. + The GNU C Library is free software; you can redistribute it and/or
  62644. + modify it under the terms of the GNU Lesser General Public
  62645. + License as published by the Free Software Foundation; either
  62646. + version 2.1 of the License, or (at your option) any later version.
  62647. +
  62648. + The GNU C Library is distributed in the hope that it will be useful,
  62649. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  62650. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  62651. + Lesser General Public License for more details.
  62652. +
  62653. + You should have received a copy of the GNU Lesser General Public
  62654. + License along with the GNU C Library; if not, see
  62655. + <http://www.gnu.org/licenses/>. */
  62656. +
  62657. +#ifndef _SYS_SOCKET_H
  62658. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  62659. +#endif
  62660. +
  62661. +/* Types of sockets. */
  62662. +enum __socket_type
  62663. +{
  62664. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  62665. + byte streams. */
  62666. +#define SOCK_STREAM SOCK_STREAM
  62667. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  62668. + of fixed maximum length. */
  62669. +#define SOCK_DGRAM SOCK_DGRAM
  62670. + SOCK_RAW = 3, /* Raw protocol interface. */
  62671. +#define SOCK_RAW SOCK_RAW
  62672. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  62673. +#define SOCK_RDM SOCK_RDM
  62674. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  62675. + datagrams of fixed maximum length. */
  62676. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  62677. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  62678. +#define SOCK_DCCP SOCK_DCCP
  62679. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  62680. + at the dev level. For writing rarp and
  62681. + other similar things on the user level. */
  62682. +#define SOCK_PACKET SOCK_PACKET
  62683. +
  62684. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  62685. +
  62686. + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the
  62687. + new descriptor(s). */
  62688. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  62689. + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as
  62690. + non-blocking. */
  62691. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  62692. +};
  62693. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/hppa/bits/stackinfo.h
  62694. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  62695. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  62696. @@ -12,9 +12,8 @@
  62697. Lesser General Public License for more details.
  62698. You should have received a copy of the GNU Lesser General Public
  62699. - License along with the GNU C Library; if not, write to the Free
  62700. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62701. - 02111-1307 USA. */
  62702. + License along with the GNU C Library; if not, see
  62703. + <http://www.gnu.org/licenses/>. */
  62704. /* This file contains a bit of information about the stack allocation
  62705. of the processor. */
  62706. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h
  62707. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  62708. +++ uClibc-git/libc/sysdeps/linux/hppa/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  62709. @@ -9,10 +9,10 @@
  62710. #define __UCLIBC_ABORT_INSTRUCTION__ "iitlbp %r0,(%sr0,%r0)"
  62711. /* can your target use syscall6() for mmap ? */
  62712. -#undef __UCLIBC_MMAP_HAS_6_ARGS__
  62713. +#define __UCLIBC_MMAP_HAS_6_ARGS__
  62714. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  62715. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  62716. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  62717. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  62718. /* does your target have a broken create_module() ? */
  62719. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  62720. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/brk.c uClibc-git/libc/sysdeps/linux/hppa/brk.c
  62721. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/brk.c 2012-05-15 09:20:09.000000000 +0200
  62722. +++ uClibc-git/libc/sysdeps/linux/hppa/brk.c 2014-02-03 12:32:56.000000000 +0100
  62723. @@ -13,9 +13,8 @@
  62724. Lesser General Public License for more details.
  62725. You should have received a copy of the GNU Lesser General Public
  62726. - License along with the GNU C Library; if not, write to the Free
  62727. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62728. - 02111-1307 USA. */
  62729. + License along with the GNU C Library; if not, see
  62730. + <http://www.gnu.org/licenses/>. */
  62731. #include <errno.h>
  62732. #include <sys/syscall.h>
  62733. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/hppa/bsd-_setjmp.S
  62734. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62735. +++ uClibc-git/libc/sysdeps/linux/hppa/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62736. @@ -13,9 +13,8 @@
  62737. Lesser General Public License for more details.
  62738. You should have received a copy of the GNU Lesser General Public
  62739. - License along with the GNU C Library; if not, write to the Free
  62740. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62741. - 02111-1307 USA. */
  62742. + License along with the GNU C Library; if not, see
  62743. + <http://www.gnu.org/licenses/>. */
  62744. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  62745. We cannot do it in C because it must be a tail-call, so frame-unwinding
  62746. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/hppa/bsd-setjmp.S
  62747. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62748. +++ uClibc-git/libc/sysdeps/linux/hppa/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62749. @@ -13,9 +13,8 @@
  62750. Lesser General Public License for more details.
  62751. You should have received a copy of the GNU Lesser General Public
  62752. - License along with the GNU C Library; if not, write to the Free
  62753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62754. - 02111-1307 USA. */
  62755. + License along with the GNU C Library; if not, see
  62756. + <http://www.gnu.org/licenses/>. */
  62757. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  62758. We cannot do it in C because it must be a tail-call, so frame-unwinding
  62759. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/clone.S uClibc-git/libc/sysdeps/linux/hppa/clone.S
  62760. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/clone.S 2012-05-15 09:20:09.000000000 +0200
  62761. +++ uClibc-git/libc/sysdeps/linux/hppa/clone.S 2014-02-03 12:32:56.000000000 +0100
  62762. @@ -14,9 +14,8 @@
  62763. Lesser General Public License for more details.
  62764. You should have received a copy of the GNU Lesser General Public
  62765. - License along with the GNU C Library; if not, write to the Free
  62766. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62767. - 02111-1307 USA. */
  62768. + License along with the GNU C Library; if not, see
  62769. + <http://www.gnu.org/licenses/>. */
  62770. /* clone() is even more special than fork() as it mucks with stacks
  62771. and invokes a function in the right context after its all over. */
  62772. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/crt1.S uClibc-git/libc/sysdeps/linux/hppa/crt1.S
  62773. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/crt1.S 2012-05-15 09:20:09.000000000 +0200
  62774. +++ uClibc-git/libc/sysdeps/linux/hppa/crt1.S 2014-02-03 12:32:56.000000000 +0100
  62775. @@ -30,9 +30,8 @@
  62776. Lesser General Public License for more details.
  62777. You should have received a copy of the GNU Lesser General Public
  62778. - License along with the GNU C Library; if not, write to the Free
  62779. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62780. - 02111-1307 USA. */
  62781. + License along with the GNU C Library; if not, see
  62782. + <http://www.gnu.org/licenses/>. */
  62783. .import main, code
  62784. .import $global$, data
  62785. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/hppa/jmpbuf-offsets.h
  62786. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  62787. +++ uClibc-git/libc/sysdeps/linux/hppa/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  62788. @@ -0,0 +1,19 @@
  62789. +/* Private macros for accessing __jmp_buf contents. HPPA version.
  62790. + Copyright (C) 2006 Free Software Foundation, Inc.
  62791. + This file is part of the GNU C Library.
  62792. +
  62793. + The GNU C Library is free software; you can redistribute it and/or
  62794. + modify it under the terms of the GNU Lesser General Public
  62795. + License as published by the Free Software Foundation; either
  62796. + version 2.1 of the License, or (at your option) any later version.
  62797. +
  62798. + The GNU C Library is distributed in the hope that it will be useful,
  62799. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  62800. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  62801. + Lesser General Public License for more details.
  62802. +
  62803. + You should have received a copy of the GNU Lesser General Public
  62804. + License along with the GNU C Library; if not, see
  62805. + <http://www.gnu.org/licenses/>. */
  62806. +
  62807. +#define JB_SP (76/4)
  62808. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/hppa/jmpbuf-unwind.h
  62809. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  62810. +++ uClibc-git/libc/sysdeps/linux/hppa/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  62811. @@ -0,0 +1,12 @@
  62812. +/*
  62813. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62814. + *
  62815. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62816. + */
  62817. +#include <setjmp.h>
  62818. +#include <jmpbuf-offsets.h>
  62819. +
  62820. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  62821. + variable at ADDRESS. */
  62822. +#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  62823. + ((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))
  62824. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/__longjmp.S uClibc-git/libc/sysdeps/linux/hppa/__longjmp.S
  62825. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  62826. +++ uClibc-git/libc/sysdeps/linux/hppa/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  62827. @@ -13,14 +13,8 @@
  62828. Lesser General Public License for more details.
  62829. You should have received a copy of the GNU Lesser General Public
  62830. - License along with the GNU C Library; if not, write to the Free
  62831. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62832. - 02111-1307 USA. */
  62833. -
  62834. -#include <features.h>
  62835. -#define _SETJMP_H
  62836. -#define _ASM
  62837. -#include <bits/setjmp.h>
  62838. + License along with the GNU C Library; if not, see
  62839. + <http://www.gnu.org/licenses/>. */
  62840. /* __longjmp(jmpbuf, val) */
  62841. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/lshift.s uClibc-git/libc/sysdeps/linux/hppa/lshift.s
  62842. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/lshift.s 2012-05-15 09:20:09.000000000 +0200
  62843. +++ uClibc-git/libc/sysdeps/linux/hppa/lshift.s 2014-02-03 12:32:56.000000000 +0100
  62844. @@ -15,9 +15,8 @@
  62845. ;! License for more details.
  62846. ;! You should have received a copy of the GNU Lesser General Public License
  62847. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  62848. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  62849. -;! MA 02111-1307, USA.
  62850. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  62851. +;! <http://www.gnu.org/licenses/>.
  62852. ;! INPUT PARAMETERS
  62853. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/Makefile.arch uClibc-git/libc/sysdeps/linux/hppa/Makefile.arch
  62854. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  62855. +++ uClibc-git/libc/sysdeps/linux/hppa/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  62856. @@ -5,7 +5,7 @@
  62857. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62858. #
  62859. -CSRC := __syscall_error.c brk.c mmap.c syscall.c
  62860. +CSRC-y := __syscall_error.c brk.c syscall.c
  62861. -SSRC := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S \
  62862. +SSRC-y := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S \
  62863. add_n.s lshift.s rshift.s sub_n.s udiv_qrnnd.s
  62864. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/mmap.c uClibc-git/libc/sysdeps/linux/hppa/mmap.c
  62865. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/mmap.c 2012-05-15 09:20:09.000000000 +0200
  62866. +++ uClibc-git/libc/sysdeps/linux/hppa/mmap.c 1970-01-01 01:00:00.000000000 +0100
  62867. @@ -1,19 +0,0 @@
  62868. -/* vi: set sw=4 ts=4: */
  62869. -/*
  62870. - * mmap() for uClibc/x86_64
  62871. - *
  62872. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  62873. - * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org>
  62874. - *
  62875. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  62876. - */
  62877. -
  62878. -#include <errno.h>
  62879. -#include <unistd.h>
  62880. -#include <sys/mman.h>
  62881. -#include <sys/syscall.h>
  62882. -
  62883. -
  62884. -_syscall6(void *, mmap, void *, start, size_t, length, int, prot,
  62885. - int, flags, int, fd, off_t, offset)
  62886. -libc_hidden_def(mmap)
  62887. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/rshift.s uClibc-git/libc/sysdeps/linux/hppa/rshift.s
  62888. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/rshift.s 2012-05-15 09:20:09.000000000 +0200
  62889. +++ uClibc-git/libc/sysdeps/linux/hppa/rshift.s 2014-02-03 12:32:56.000000000 +0100
  62890. @@ -15,9 +15,8 @@
  62891. ;! License for more details.
  62892. ;! You should have received a copy of the GNU Lesser General Public License
  62893. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  62894. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  62895. -;! MA 02111-1307, USA.
  62896. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  62897. +;! <http://www.gnu.org/licenses/>.
  62898. ;! INPUT PARAMETERS
  62899. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/setjmp.S uClibc-git/libc/sysdeps/linux/hppa/setjmp.S
  62900. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  62901. +++ uClibc-git/libc/sysdeps/linux/hppa/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  62902. @@ -13,9 +13,8 @@
  62903. Lesser General Public License for more details.
  62904. You should have received a copy of the GNU Lesser General Public
  62905. - License along with the GNU C Library; if not, write to the Free
  62906. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62907. - 02111-1307 USA. */
  62908. + License along with the GNU C Library; if not, see
  62909. + <http://www.gnu.org/licenses/>. */
  62910. .text
  62911. .align 4
  62912. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sub_n.s uClibc-git/libc/sysdeps/linux/hppa/sub_n.s
  62913. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sub_n.s 2012-05-15 09:20:09.000000000 +0200
  62914. +++ uClibc-git/libc/sysdeps/linux/hppa/sub_n.s 2014-02-03 12:32:56.000000000 +0100
  62915. @@ -16,9 +16,8 @@
  62916. ;! License for more details.
  62917. ;! You should have received a copy of the GNU Lesser General Public License
  62918. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  62919. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  62920. -;! MA 02111-1307, USA.
  62921. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  62922. +;! <http://www.gnu.org/licenses/>.
  62923. ;! INPUT PARAMETERS
  62924. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/procfs.h uClibc-git/libc/sysdeps/linux/hppa/sys/procfs.h
  62925. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  62926. +++ uClibc-git/libc/sysdeps/linux/hppa/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  62927. @@ -12,9 +12,8 @@
  62928. Lesser General Public License for more details.
  62929. You should have received a copy of the GNU Lesser General Public
  62930. - License along with the GNU C Library; if not, write to the Free
  62931. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62932. - 02111-1307 USA. */
  62933. + License along with the GNU C Library; if not, see
  62934. + <http://www.gnu.org/licenses/>. */
  62935. #ifndef _SYS_PROCFS_H
  62936. #define _SYS_PROCFS_H 1
  62937. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/ucontext.h uClibc-git/libc/sysdeps/linux/hppa/sys/ucontext.h
  62938. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  62939. +++ uClibc-git/libc/sysdeps/linux/hppa/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  62940. @@ -12,9 +12,8 @@
  62941. Lesser General Public License for more details.
  62942. You should have received a copy of the GNU Lesser General Public
  62943. - License along with the GNU C Library; if not, write to the Free
  62944. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62945. - 02111-1307 USA. */
  62946. + License along with the GNU C Library; if not, see
  62947. + <http://www.gnu.org/licenses/>. */
  62948. /* Don't rely on this, the interface is currently messed up and may need to
  62949. be broken to be fixed. */
  62950. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/syscall.c uClibc-git/libc/sysdeps/linux/hppa/syscall.c
  62951. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/syscall.c 2012-05-15 09:20:09.000000000 +0200
  62952. +++ uClibc-git/libc/sysdeps/linux/hppa/syscall.c 2014-02-03 12:32:56.000000000 +0100
  62953. @@ -12,9 +12,8 @@
  62954. Lesser General Public License for more details.
  62955. You should have received a copy of the GNU Lesser General Public
  62956. - License along with the GNU C Library; if not, write to the Free
  62957. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62958. - 02111-1307 USA. */
  62959. + License along with the GNU C Library; if not, see
  62960. + <http://www.gnu.org/licenses/>. */
  62961. #include <stdarg.h>
  62962. #include <errno.h>
  62963. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/hppa/udiv_qrnnd.s uClibc-git/libc/sysdeps/linux/hppa/udiv_qrnnd.s
  62964. --- uClibc-0.9.33.2/libc/sysdeps/linux/hppa/udiv_qrnnd.s 2012-05-15 09:20:09.000000000 +0200
  62965. +++ uClibc-git/libc/sysdeps/linux/hppa/udiv_qrnnd.s 2014-02-03 12:32:56.000000000 +0100
  62966. @@ -16,9 +16,8 @@
  62967. ;! License for more details.
  62968. ;! You should have received a copy of the GNU Lesser General Public License
  62969. -;! along with the GNU MP Library; see the file COPYING.LIB. If not, write to
  62970. -;! the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  62971. -;! MA 02111-1307, USA.
  62972. +;! along with the GNU MP Library; see the file COPYING.LIB. If not, see
  62973. +;! <http://www.gnu.org/licenses/>.
  62974. ;! INPUT PARAMETERS
  62975. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/atomic.h uClibc-git/libc/sysdeps/linux/i386/bits/atomic.h
  62976. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  62977. +++ uClibc-git/libc/sysdeps/linux/i386/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  62978. @@ -13,9 +13,8 @@
  62979. Lesser General Public License for more details.
  62980. You should have received a copy of the GNU Lesser General Public
  62981. - License along with the GNU C Library; if not, write to the Free
  62982. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62983. - 02111-1307 USA. */
  62984. + License along with the GNU C Library; if not, see
  62985. + <http://www.gnu.org/licenses/>. */
  62986. #include <stdint.h>
  62987. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/byteswap.h uClibc-git/libc/sysdeps/linux/i386/bits/byteswap.h
  62988. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  62989. +++ uClibc-git/libc/sysdeps/linux/i386/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  62990. @@ -13,9 +13,8 @@
  62991. Lesser General Public License for more details.
  62992. You should have received a copy of the GNU Lesser General Public
  62993. - License along with the GNU C Library; if not, write to the Free
  62994. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  62995. - 02111-1307 USA. */
  62996. + License along with the GNU C Library; if not, see
  62997. + <http://www.gnu.org/licenses/>. */
  62998. #ifndef _ASM_BITS_BYTESWAP_H
  62999. #define _ASM_BITS_BYTESWAP_H 1
  63000. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fcntl.h uClibc-git/libc/sysdeps/linux/i386/bits/fcntl.h
  63001. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  63002. +++ uClibc-git/libc/sysdeps/linux/i386/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  63003. @@ -14,9 +14,8 @@
  63004. Lesser General Public License for more details.
  63005. You should have received a copy of the GNU Lesser General Public
  63006. - License along with the GNU C Library; if not, write to the Free
  63007. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63008. - 02111-1307 USA. */
  63009. + License along with the GNU C Library; if not, see
  63010. + <http://www.gnu.org/licenses/>. */
  63011. #ifndef _FCNTL_H
  63012. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  63013. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fenv.h uClibc-git/libc/sysdeps/linux/i386/bits/fenv.h
  63014. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  63015. +++ uClibc-git/libc/sysdeps/linux/i386/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  63016. @@ -12,9 +12,8 @@
  63017. Lesser General Public License for more details.
  63018. You should have received a copy of the GNU Lesser General Public
  63019. - License along with the GNU C Library; if not, write to the Free
  63020. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63021. - 02111-1307 USA. */
  63022. + License along with the GNU C Library; if not, see
  63023. + <http://www.gnu.org/licenses/>. */
  63024. #ifndef _FENV_H
  63025. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  63026. @@ -82,9 +81,9 @@
  63027. fenv_t;
  63028. /* If the default argument is used we use this value. */
  63029. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  63030. +#define FE_DFL_ENV ((const fenv_t *) -1)
  63031. #ifdef __USE_GNU
  63032. /* Floating-point environment where none of the exception is masked. */
  63033. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  63034. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  63035. #endif
  63036. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/huge_vall.h uClibc-git/libc/sysdeps/linux/i386/bits/huge_vall.h
  63037. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  63038. +++ uClibc-git/libc/sysdeps/linux/i386/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  63039. @@ -0,0 +1,42 @@
  63040. +/* `HUGE_VALL' constant for ix86 (where it is infinity).
  63041. + Used by <stdlib.h> and <math.h> functions for overflow.
  63042. + Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  63043. + Free Software Foundation, Inc.
  63044. + This file is part of the GNU C Library.
  63045. +
  63046. + The GNU C Library is free software; you can redistribute it and/or
  63047. + modify it under the terms of the GNU Lesser General Public
  63048. + License as published by the Free Software Foundation; either
  63049. + version 2.1 of the License, or (at your option) any later version.
  63050. +
  63051. + The GNU C Library is distributed in the hope that it will be useful,
  63052. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63053. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63054. + Lesser General Public License for more details.
  63055. +
  63056. + You should have received a copy of the GNU Lesser General Public
  63057. + License along with the GNU C Library; if not, see
  63058. + <http://www.gnu.org/licenses/>. */
  63059. +
  63060. +#ifndef _MATH_H
  63061. +# error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  63062. +#endif
  63063. +
  63064. +#if __GNUC_PREREQ(3,3)
  63065. +# define HUGE_VALL (__builtin_huge_vall())
  63066. +#elif __GNUC_PREREQ(2,96)
  63067. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  63068. +#else
  63069. +
  63070. +# define __HUGE_VALL_bytes { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 }
  63071. +
  63072. +# define __huge_vall_t union { unsigned char __c[12]; long double __ld; }
  63073. +# ifdef __GNUC__
  63074. +# define HUGE_VALL (__extension__ \
  63075. + ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld)
  63076. +# else /* Not GCC. */
  63077. +static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  63078. +# define HUGE_VALL (__huge_vall.__ld)
  63079. +# endif /* GCC. */
  63080. +
  63081. +#endif /* GCC 2.95 */
  63082. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/i386/bits/kernel_types.h
  63083. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  63084. +++ uClibc-git/libc/sysdeps/linux/i386/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  63085. @@ -40,6 +40,8 @@
  63086. typedef unsigned short __kernel_old_uid_t;
  63087. typedef unsigned short __kernel_old_gid_t;
  63088. typedef __kernel_dev_t __kernel_old_dev_t;
  63089. +typedef long __kernel_long_t;
  63090. +typedef unsigned long __kernel_ulong_t;
  63091. typedef long long __kernel_loff_t;
  63092. typedef struct {
  63093. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathdef.h uClibc-git/libc/sysdeps/linux/i386/bits/mathdef.h
  63094. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  63095. +++ uClibc-git/libc/sysdeps/linux/i386/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  63096. @@ -12,9 +12,8 @@
  63097. Lesser General Public License for more details.
  63098. You should have received a copy of the GNU Lesser General Public
  63099. - License along with the GNU C Library; if not, write to the Free
  63100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63101. - 02111-1307 USA. */
  63102. + License along with the GNU C Library; if not, see
  63103. + <http://www.gnu.org/licenses/>. */
  63104. #if !defined _MATH_H && !defined _COMPLEX_H
  63105. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  63106. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathinline.h uClibc-git/libc/sysdeps/linux/i386/bits/mathinline.h
  63107. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  63108. +++ uClibc-git/libc/sysdeps/linux/i386/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  63109. @@ -15,9 +15,8 @@
  63110. Lesser General Public License for more details.
  63111. You should have received a copy of the GNU Lesser General Public
  63112. - License along with the GNU C Library; if not, write to the Free
  63113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63114. - 02111-1307 USA. */
  63115. + License along with the GNU C Library; if not, see
  63116. + <http://www.gnu.org/licenses/>. */
  63117. #ifndef _MATH_H
  63118. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  63119. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/select.h uClibc-git/libc/sysdeps/linux/i386/bits/select.h
  63120. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/select.h 2012-05-15 09:20:09.000000000 +0200
  63121. +++ uClibc-git/libc/sysdeps/linux/i386/bits/select.h 2014-02-03 12:32:56.000000000 +0100
  63122. @@ -12,9 +12,8 @@
  63123. Lesser General Public License for more details.
  63124. You should have received a copy of the GNU Lesser General Public
  63125. - License along with the GNU C Library; if not, write to the Free
  63126. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63127. - 02111-1307 USA. */
  63128. + License along with the GNU C Library; if not, see
  63129. + <http://www.gnu.org/licenses/>. */
  63130. #ifndef _SYS_SELECT_H
  63131. # error "Never use <bits/select.h> directly; include <sys/select.h> instead."
  63132. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/setjmp.h uClibc-git/libc/sysdeps/linux/i386/bits/setjmp.h
  63133. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  63134. +++ uClibc-git/libc/sysdeps/linux/i386/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  63135. @@ -1,4 +1,5 @@
  63136. -/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
  63137. +/* Copyright (C) 1997,1998,2000,2001,2003,2005,2006
  63138. + Free Software Foundation, Inc.
  63139. This file is part of the GNU C Library.
  63140. The GNU C Library is free software; you can redistribute it and/or
  63141. @@ -12,9 +13,8 @@
  63142. Lesser General Public License for more details.
  63143. You should have received a copy of the GNU Lesser General Public
  63144. - License along with the GNU C Library; if not, write to the Free
  63145. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63146. - 02111-1307 USA. */
  63147. + License along with the GNU C Library; if not, see
  63148. + <http://www.gnu.org/licenses/>. */
  63149. /* Define the machine-dependent type `jmp_buf'. Intel 386 version. */
  63150. #ifndef _BITS_SETJMP_H
  63151. @@ -24,23 +24,6 @@
  63152. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  63153. #endif
  63154. -#if defined __USE_MISC || defined _ASM
  63155. -# define JB_BX 0
  63156. -# define JB_SI 1
  63157. -# define JB_DI 2
  63158. -# define JB_BP 3
  63159. -# define JB_SP 4
  63160. -# define JB_PC 5
  63161. -# define JB_SIZE 24
  63162. -#endif
  63163. -
  63164. -#ifndef _ASM
  63165. typedef int __jmp_buf[6];
  63166. -#endif
  63167. -
  63168. -/* Test if longjmp to JMPBUF would unwind the frame
  63169. - containing a local variable at ADDRESS. */
  63170. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  63171. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  63172. #endif /* bits/setjmp.h */
  63173. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/i386/bits/sigcontextinfo.h
  63174. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  63175. +++ uClibc-git/libc/sysdeps/linux/i386/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  63176. @@ -13,9 +13,8 @@
  63177. Lesser General Public License for more details.
  63178. You should have received a copy of the GNU Lesser General Public
  63179. - License along with the GNU C Library; if not, write to the Free
  63180. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63181. - 02111-1307 USA. */
  63182. + License along with the GNU C Library; if not, see
  63183. + <http://www.gnu.org/licenses/>. */
  63184. #define SIGCONTEXT struct sigcontext
  63185. #define SIGCONTEXT_EXTRA_ARGS
  63186. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/i386/bits/stackinfo.h
  63187. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  63188. +++ uClibc-git/libc/sysdeps/linux/i386/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  63189. @@ -12,9 +12,8 @@
  63190. Lesser General Public License for more details.
  63191. You should have received a copy of the GNU Lesser General Public
  63192. - License along with the GNU C Library; if not, write to the Free
  63193. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63194. - 02111-1307 USA. */
  63195. + License along with the GNU C Library; if not, see
  63196. + <http://www.gnu.org/licenses/>. */
  63197. /* This file contains a bit of information about the stack allocation
  63198. of the processor. */
  63199. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/syscalls.h uClibc-git/libc/sysdeps/linux/i386/bits/syscalls.h
  63200. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  63201. +++ uClibc-git/libc/sysdeps/linux/i386/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  63202. @@ -136,7 +136,7 @@
  63203. #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \
  63204. , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5)
  63205. #define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \
  63206. - , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "m" (arg6)
  63207. + , "a" (arg1), "c" (arg2), "d" (arg3), "S" (arg4), "D" (arg5), "g" (arg6)
  63208. #else /* !PIC */
  63209. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
  63210. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  63211. +++ uClibc-git/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  63212. @@ -11,8 +11,8 @@
  63213. /* can your target use syscall6() for mmap ? */
  63214. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  63215. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  63216. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  63217. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  63218. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  63219. /* does your target have a broken create_module() ? */
  63220. #define __UCLIBC_BROKEN_CREATE_MODULE__
  63221. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wchar.h uClibc-git/libc/sysdeps/linux/i386/bits/wchar.h
  63222. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wchar.h 2012-05-15 09:20:09.000000000 +0200
  63223. +++ uClibc-git/libc/sysdeps/linux/i386/bits/wchar.h 2014-02-03 12:32:56.000000000 +0100
  63224. @@ -13,9 +13,8 @@
  63225. Lesser General Public License for more details.
  63226. You should have received a copy of the GNU Lesser General Public
  63227. - License along with the GNU C Library; if not, write to the Free
  63228. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63229. - 02111-1307 USA. */
  63230. + License along with the GNU C Library; if not, see
  63231. + <http://www.gnu.org/licenses/>. */
  63232. #ifndef _BITS_WCHAR_H
  63233. #define _BITS_WCHAR_H 1
  63234. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wordsize.h uClibc-git/libc/sysdeps/linux/i386/bits/wordsize.h
  63235. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  63236. +++ uClibc-git/libc/sysdeps/linux/i386/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  63237. @@ -12,9 +12,8 @@
  63238. Lesser General Public License for more details.
  63239. You should have received a copy of the GNU Lesser General Public
  63240. - License along with the GNU C Library; if not, write to the Free
  63241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63242. - 02111-1307 USA. */
  63243. + License along with the GNU C Library; if not, see
  63244. + <http://www.gnu.org/licenses/>. */
  63245. #define __WORDSIZE 32
  63246. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/brk.c uClibc-git/libc/sysdeps/linux/i386/brk.c
  63247. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/brk.c 2012-05-15 09:20:09.000000000 +0200
  63248. +++ uClibc-git/libc/sysdeps/linux/i386/brk.c 2014-02-03 12:32:56.000000000 +0100
  63249. @@ -13,9 +13,8 @@
  63250. Lesser General Public License for more details.
  63251. You should have received a copy of the GNU Lesser General Public
  63252. - License along with the GNU C Library; if not, write to the Free
  63253. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63254. - 02111-1307 USA. */
  63255. + License along with the GNU C Library; if not, see
  63256. + <http://www.gnu.org/licenses/>. */
  63257. #include <errno.h>
  63258. #include <unistd.h>
  63259. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/i386/bsd-_setjmp.S
  63260. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63261. +++ uClibc-git/libc/sysdeps/linux/i386/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63262. @@ -13,17 +13,14 @@
  63263. Lesser General Public License for more details.
  63264. You should have received a copy of the GNU Lesser General Public
  63265. - License along with the GNU C Library; if not, write to the Free
  63266. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63267. - 02111-1307 USA. */
  63268. + License along with the GNU C Library; if not, see
  63269. + <http://www.gnu.org/licenses/>. */
  63270. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  63271. We cannot do it in C because it must be a tail-call, so frame-unwinding
  63272. in setjmp doesn't clobber the state restored by longjmp. */
  63273. -#define _ASM
  63274. -#define _SETJMP_H
  63275. -#include <bits/setjmp.h>
  63276. +#include <jmpbuf-offsets.h>
  63277. .global _setjmp
  63278. .type _setjmp,%function
  63279. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/i386/bsd-setjmp.S
  63280. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63281. +++ uClibc-git/libc/sysdeps/linux/i386/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63282. @@ -13,13 +13,8 @@
  63283. Lesser General Public License for more details.
  63284. You should have received a copy of the GNU Lesser General Public
  63285. - License along with the GNU C Library; if not, write to the Free
  63286. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63287. - 02111-1307 USA. */
  63288. -
  63289. -#define _ASM
  63290. -#define _SETJMP_H
  63291. -#include <bits/setjmp.h>
  63292. + License along with the GNU C Library; if not, see
  63293. + <http://www.gnu.org/licenses/>. */
  63294. .global setjmp
  63295. .type setjmp,%function
  63296. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/clone.S uClibc-git/libc/sysdeps/linux/i386/clone.S
  63297. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/clone.S 2012-05-15 09:20:09.000000000 +0200
  63298. +++ uClibc-git/libc/sysdeps/linux/i386/clone.S 2014-02-03 12:32:56.000000000 +0100
  63299. @@ -13,9 +13,8 @@
  63300. Lesser General Public License for more details.
  63301. You should have received a copy of the GNU Lesser General Public
  63302. - License along with the GNU C Library; if not, write to the Free
  63303. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63304. - 02111-1307 USA. */
  63305. + License along with the GNU C Library; if not, see
  63306. + <http://www.gnu.org/licenses/>. */
  63307. /* clone() is even more special than fork() as it mucks with stacks
  63308. and invokes a function in the right context after its all over.
  63309. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/crt1.S uClibc-git/libc/sysdeps/linux/i386/crt1.S
  63310. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/crt1.S 2012-05-15 09:20:09.000000000 +0200
  63311. +++ uClibc-git/libc/sysdeps/linux/i386/crt1.S 2014-02-03 12:32:56.000000000 +0100
  63312. @@ -31,9 +31,8 @@
  63313. Lesser General Public License for more details.
  63314. You should have received a copy of the GNU Lesser General Public
  63315. - License along with the GNU C Library; if not, write to the Free
  63316. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63317. - 02111-1307 USA. */
  63318. + License along with the GNU C Library; if not, see
  63319. + <http://www.gnu.org/licenses/>. */
  63320. /* This is the canonical entry point, usually the first thing in the text
  63321. segment. The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry
  63322. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/fpu_control.h uClibc-git/libc/sysdeps/linux/i386/fpu_control.h
  63323. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  63324. +++ uClibc-git/libc/sysdeps/linux/i386/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  63325. @@ -14,9 +14,8 @@
  63326. Lesser General Public License for more details.
  63327. You should have received a copy of the GNU Lesser General Public
  63328. - License along with the GNU C Library; if not, write to the Free
  63329. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63330. - 02111-1307 USA. */
  63331. + License along with the GNU C Library; if not, see
  63332. + <http://www.gnu.org/licenses/>. */
  63333. #ifndef _FPU_CONTROL_H
  63334. #define _FPU_CONTROL_H 1
  63335. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/getcontext.S uClibc-git/libc/sysdeps/linux/i386/getcontext.S
  63336. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  63337. +++ uClibc-git/libc/sysdeps/linux/i386/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  63338. @@ -0,0 +1,84 @@
  63339. +/* Save current context.
  63340. + Copyright (C) 2001-2012 Free Software Foundation, Inc.
  63341. + This file is part of the GNU C Library.
  63342. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  63343. +
  63344. + The GNU C Library is free software; you can redistribute it and/or
  63345. + modify it under the terms of the GNU Lesser General Public
  63346. + License as published by the Free Software Foundation; either
  63347. + version 2.1 of the License, or (at your option) any later version.
  63348. +
  63349. + The GNU C Library is distributed in the hope that it will be useful,
  63350. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63351. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63352. + Lesser General Public License for more details.
  63353. +
  63354. + You should have received a copy of the GNU Lesser General Public
  63355. + License along with the GNU C Library; if not, see
  63356. + <http://www.gnu.org/licenses/>. */
  63357. +
  63358. +#include <sysdep.h>
  63359. +
  63360. +#include "ucontext_i.h"
  63361. +
  63362. +
  63363. +ENTRY(__getcontext)
  63364. + /* Load address of the context data structure. */
  63365. + movl 4(%esp), %eax
  63366. +
  63367. + /* Return value of getcontext. EAX is the only register whose
  63368. + value is not preserved. */
  63369. + movl $0, oEAX(%eax)
  63370. +
  63371. + /* Save the 32-bit register values and the return address. */
  63372. + movl %ecx, oECX(%eax)
  63373. + movl %edx, oEDX(%eax)
  63374. + movl %edi, oEDI(%eax)
  63375. + movl %esi, oESI(%eax)
  63376. + movl %ebp, oEBP(%eax)
  63377. + movl (%esp), %ecx
  63378. + movl %ecx, oEIP(%eax)
  63379. + leal 4(%esp), %ecx /* Exclude the return address. */
  63380. + movl %ecx, oESP(%eax)
  63381. + movl %ebx, oEBX(%eax)
  63382. +
  63383. + /* Save the FS segment register. We don't touch the GS register
  63384. + since it is used for threads. */
  63385. + xorl %edx, %edx
  63386. + movw %fs, %dx
  63387. + movl %edx, oFS(%eax)
  63388. +
  63389. + /* We have separate floating-point register content memory on the
  63390. + stack. We use the __fpregs_mem block in the context. Set the
  63391. + links up correctly. */
  63392. + leal oFPREGSMEM(%eax), %ecx
  63393. + movl %ecx, oFPREGS(%eax)
  63394. + /* Save the floating-point context. */
  63395. + fnstenv (%ecx)
  63396. + /* And load it right back since the processor changes the mask.
  63397. + Intel thought this opcode to be used in interrupt handlers which
  63398. + would block all exceptions. */
  63399. + fldenv (%ecx)
  63400. +
  63401. + /* Save the current signal mask. */
  63402. + pushl %ebx
  63403. + cfi_adjust_cfa_offset (4)
  63404. + cfi_rel_offset (ebx, 0)
  63405. + leal oSIGMASK(%eax), %edx
  63406. + xorl %ecx, %ecx
  63407. + movl $SIG_BLOCK, %ebx
  63408. + movl $__NR_sigprocmask, %eax
  63409. + ENTER_KERNEL
  63410. + popl %ebx
  63411. + cfi_adjust_cfa_offset (-4)
  63412. + cfi_restore (ebx)
  63413. + cmpl $-4095, %eax /* Check %eax for error. */
  63414. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  63415. +
  63416. + /* All done, return 0 for success. */
  63417. + xorl %eax, %eax
  63418. +L(pseudo_end):
  63419. + ret
  63420. +PSEUDO_END(__getcontext)
  63421. +
  63422. +weak_alias (__getcontext, getcontext)
  63423. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/i386/jmpbuf-offsets.h
  63424. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  63425. +++ uClibc-git/libc/sysdeps/linux/i386/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  63426. @@ -0,0 +1,25 @@
  63427. +/* Private macros for accessing __jmp_buf contents. i386 version.
  63428. + Copyright (C) 2006 Free Software Foundation, Inc.
  63429. + This file is part of the GNU C Library.
  63430. +
  63431. + The GNU C Library is free software; you can redistribute it and/or
  63432. + modify it under the terms of the GNU Lesser General Public
  63433. + License as published by the Free Software Foundation; either
  63434. + version 2.1 of the License, or (at your option) any later version.
  63435. +
  63436. + The GNU C Library is distributed in the hope that it will be useful,
  63437. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63438. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63439. + Lesser General Public License for more details.
  63440. +
  63441. + You should have received a copy of the GNU Lesser General Public
  63442. + License along with the GNU C Library; if not, see
  63443. + <http://www.gnu.org/licenses/>. */
  63444. +
  63445. +#define JB_BX 0
  63446. +#define JB_SI 1
  63447. +#define JB_DI 2
  63448. +#define JB_BP 3
  63449. +#define JB_SP 4
  63450. +#define JB_PC 5
  63451. +#define JB_SIZE 24
  63452. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/i386/jmpbuf-unwind.h
  63453. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  63454. +++ uClibc-git/libc/sysdeps/linux/i386/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  63455. @@ -0,0 +1,23 @@
  63456. +/*
  63457. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  63458. + *
  63459. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63460. + */
  63461. +#include <setjmp.h>
  63462. +#include <jmpbuf-offsets.h>
  63463. +
  63464. +/* Test if longjmp to JMPBUF would unwind the frame
  63465. + containing a local variable at ADDRESS. */
  63466. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  63467. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  63468. +
  63469. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  63470. +#include <stdint.h>
  63471. +#include <unwind.h>
  63472. +
  63473. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  63474. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  63475. +
  63476. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  63477. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  63478. +#endif
  63479. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/__longjmp.S uClibc-git/libc/sysdeps/linux/i386/__longjmp.S
  63480. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  63481. +++ uClibc-git/libc/sysdeps/linux/i386/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  63482. @@ -14,13 +14,9 @@
  63483. You should have received a copy of the GNU Library General Public
  63484. License along with the GNU C Library; see the file COPYING.LIB. If not,
  63485. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  63486. - Boston, MA 02111-1307, USA. */
  63487. + see <http://www.gnu.org/licenses/>. */
  63488. -#include <features.h>
  63489. -#define _ASM
  63490. -#define _SETJMP_H
  63491. -#include <bits/setjmp.h>
  63492. +#include <jmpbuf-offsets.h>
  63493. .global __longjmp
  63494. .type __longjmp,%function
  63495. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/makecontext.S uClibc-git/libc/sysdeps/linux/i386/makecontext.S
  63496. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/makecontext.S 1970-01-01 01:00:00.000000000 +0100
  63497. +++ uClibc-git/libc/sysdeps/linux/i386/makecontext.S 2014-02-03 12:32:56.000000000 +0100
  63498. @@ -0,0 +1,123 @@
  63499. +/* Create new context.
  63500. + Copyright (C) 2001,2002,2005,2007,2008,2009 Free Software Foundation, Inc.
  63501. + This file is part of the GNU C Library.
  63502. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  63503. +
  63504. + The GNU C Library is free software; you can redistribute it and/or
  63505. + modify it under the terms of the GNU Lesser General Public
  63506. + License as published by the Free Software Foundation; either
  63507. + version 2.1 of the License, or (at your option) any later version.
  63508. +
  63509. + The GNU C Library is distributed in the hope that it will be useful,
  63510. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63511. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63512. + Lesser General Public License for more details.
  63513. +
  63514. + You should have received a copy of the GNU Lesser General Public
  63515. + License along with the GNU C Library; if not, see
  63516. + <http://www.gnu.org/licenses/>. */
  63517. +
  63518. +#include <sysdep.h>
  63519. +
  63520. +#include "ucontext_i.h"
  63521. +
  63522. +
  63523. +ENTRY(__makecontext)
  63524. + movl 4(%esp), %eax
  63525. +
  63526. + /* Load the address of the function we are supposed to run. */
  63527. + movl 8(%esp), %ecx
  63528. +
  63529. + /* Compute the address of the stack. The information comes from
  63530. + to us_stack element. */
  63531. + movl oSS_SP(%eax), %edx
  63532. + movl %ecx, oEIP(%eax)
  63533. + addl oSS_SIZE(%eax), %edx
  63534. +
  63535. + /* Remember the number of parameters for the exit handler since
  63536. + it has to remove them. We store the number in the EBX register
  63537. + which the function we will call must preserve. */
  63538. + movl 12(%esp), %ecx
  63539. + movl %ecx, oEBX(%eax)
  63540. +
  63541. + /* Make room on the new stack for the parameters.
  63542. + Room for the arguments, return address (== L(exitcode)) and
  63543. + oLINK pointer is needed. One of the pointer sizes is subtracted
  63544. + after aligning the stack. */
  63545. + negl %ecx
  63546. + leal -4(%edx,%ecx,4), %edx
  63547. + negl %ecx
  63548. +
  63549. + /* Align the stack. */
  63550. + andl $0xfffffff0, %edx
  63551. + subl $4, %edx
  63552. +
  63553. + /* Store the future stack pointer. */
  63554. + movl %edx, oESP(%eax)
  63555. +
  63556. + /* Put the next context on the new stack (from the uc_link
  63557. + element). */
  63558. + movl oLINK(%eax), %eax
  63559. + movl %eax, 4(%edx,%ecx,4)
  63560. +
  63561. + /* Copy all the parameters. */
  63562. + jecxz 2f
  63563. +1: movl 12(%esp,%ecx,4), %eax
  63564. + movl %eax, (%edx,%ecx,4)
  63565. + decl %ecx
  63566. + jnz 1b
  63567. +2:
  63568. +
  63569. + /* If the function we call returns we must continue with the
  63570. + context which is given in the uc_link element. To do this
  63571. + set the return address for the function the user provides
  63572. + to a little bit of helper code which does the magic (see
  63573. + below). */
  63574. +#ifdef __PIC__
  63575. + call 1f
  63576. + cfi_adjust_cfa_offset (4)
  63577. +1: popl %ecx
  63578. + cfi_adjust_cfa_offset (-4)
  63579. + addl $L(exitcode)-1b, %ecx
  63580. + movl %ecx, (%edx)
  63581. +#else
  63582. + movl $L(exitcode), (%edx)
  63583. +#endif
  63584. + /* 'makecontext' returns no value. */
  63585. +L(pseudo_end):
  63586. + ret
  63587. +
  63588. + /* This is the helper code which gets called if a function which
  63589. + is registered with 'makecontext' returns. In this case we
  63590. + have to install the context listed in the uc_link element of
  63591. + the context 'makecontext' manipulated at the time of the
  63592. + 'makecontext' call. If the pointer is NULL the process must
  63593. + terminate. */
  63594. + cfi_endproc
  63595. +L(exitcode):
  63596. + /* This removes the parameters passed to the function given to
  63597. + 'makecontext' from the stack. EBX contains the number of
  63598. + parameters (see above). */
  63599. + leal (%esp,%ebx,4), %esp
  63600. +
  63601. +#ifdef __PIC__
  63602. + call 1f
  63603. +1: popl %ebx
  63604. + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
  63605. +#endif
  63606. + cmpl $0, (%esp) /* Check the next context. */
  63607. + je 2f /* If it is zero exit. */
  63608. +
  63609. + call JUMPTARGET(__setcontext)
  63610. + /* If this returns (which can happen if the syscall fails) we'll
  63611. + exit the program with the return error value (-1). */
  63612. +
  63613. + movl %eax, (%esp)
  63614. +2: call HIDDEN_JUMPTARGET(exit)
  63615. + /* The 'exit' call should never return. In case it does cause
  63616. + the process to terminate. */
  63617. + hlt
  63618. + cfi_startproc
  63619. +END(__makecontext)
  63620. +
  63621. +weak_alias (__makecontext, makecontext)
  63622. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/Makefile.arch uClibc-git/libc/sysdeps/linux/i386/Makefile.arch
  63623. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  63624. +++ uClibc-git/libc/sysdeps/linux/i386/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  63625. @@ -5,13 +5,13 @@
  63626. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  63627. #
  63628. -CSRC := brk.c __syscall_error.c sigaction.c
  63629. +CSRC-y := brk.c __syscall_error.c sigaction.c
  63630. -SSRC := \
  63631. +SSRC-y := \
  63632. __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  63633. - sync_file_range.S syscall.S mmap.S mmap64.S posix_fadvise64.S
  63634. + sync_file_range.S syscall.S mmap.S
  63635. -
  63636. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  63637. -SSRC += vfork.S clone.S
  63638. -endif
  63639. +SSRC-$(UCLIBC_HAS_LFS) += mmap64.S
  63640. +SSRC-$(if $(findstring yy,$(UCLIBC_HAS_ADVANCED_REALTIME)$(UCLIBC_HAS_LFS)),y) += posix_fadvise64.S
  63641. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += vfork.S clone.S
  63642. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.S setcontext.S getcontext.S swapcontext.S
  63643. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap64.S uClibc-git/libc/sysdeps/linux/i386/mmap64.S
  63644. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap64.S 2012-05-15 09:20:09.000000000 +0200
  63645. +++ uClibc-git/libc/sysdeps/linux/i386/mmap64.S 2014-02-03 12:32:56.000000000 +0100
  63646. @@ -12,18 +12,16 @@
  63647. Lesser General Public License for more details.
  63648. You should have received a copy of the GNU Lesser General Public
  63649. - License along with the GNU C Library; if not, write to the Free
  63650. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63651. - 02111-1307 USA. */
  63652. + License along with the GNU C Library; if not, see
  63653. + <http://www.gnu.org/licenses/>. */
  63654. +#include <_lfs_64.h>
  63655. #define _ERRNO_H 1
  63656. -#include <features.h>
  63657. #include <bits/errno.h>
  63658. #include <sys/syscall.h>
  63659. -#if defined __UCLIBC_HAS_LFS__ && defined __NR_mmap2
  63660. -
  63661. +#ifdef __NR_mmap2
  63662. #define LINKAGE 4
  63663. #define PTR_SIZE 4
  63664. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap.S uClibc-git/libc/sysdeps/linux/i386/mmap.S
  63665. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/mmap.S 2012-05-15 09:20:09.000000000 +0200
  63666. +++ uClibc-git/libc/sysdeps/linux/i386/mmap.S 2014-02-03 12:32:56.000000000 +0100
  63667. @@ -12,9 +12,8 @@
  63668. Lesser General Public License for more details.
  63669. You should have received a copy of the GNU Lesser General Public
  63670. - License along with the GNU C Library; if not, write to the Free
  63671. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63672. - 02111-1307 USA. */
  63673. + License along with the GNU C Library; if not, see
  63674. + <http://www.gnu.org/licenses/>. */
  63675. #define _ERRNO_H 1
  63676. #include <features.h>
  63677. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/posix_fadvise64.S uClibc-git/libc/sysdeps/linux/i386/posix_fadvise64.S
  63678. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/posix_fadvise64.S 2012-05-15 09:20:09.000000000 +0200
  63679. +++ uClibc-git/libc/sysdeps/linux/i386/posix_fadvise64.S 2014-02-03 12:32:56.000000000 +0100
  63680. @@ -13,29 +13,18 @@
  63681. Lesser General Public License for more details.
  63682. You should have received a copy of the GNU Lesser General Public
  63683. - License along with the GNU C Library; if not, write to the Free
  63684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63685. - 02111-1307 USA. */
  63686. -
  63687. -#define _ERRNO_H 1
  63688. -#include <features.h>
  63689. -#include <bits/errno.h>
  63690. -#include <sys/syscall.h>
  63691. + License along with the GNU C Library; if not, see
  63692. + <http://www.gnu.org/licenses/>. */
  63693. -#if defined __NR_fadvise64_64 || defined __NR_fadvise64
  63694. +#include <_lfs_64.h>
  63695. +#include <sys/syscall.h>
  63696. -/* Was named __libc_posix_fadvise64 for some inexplicable reason.
  63697. -** google says only uclibc has *__libc*_posix_fadviseXXX,
  63698. -** so it cannot be compat with anything.
  63699. -**
  63700. -** Remove this comment and one at the end after 0.9.31
  63701. -*/
  63702. +#ifdef __NR_fadvise64_64
  63703. .text
  63704. .global posix_fadvise64
  63705. .type posix_fadvise64,%function
  63706. posix_fadvise64:
  63707. -#if defined __NR_fadvise64_64
  63708. /* Save regs */
  63709. pushl %ebp
  63710. pushl %ebx
  63711. @@ -63,47 +52,7 @@
  63712. /* Returns 0 on success, else an error code. */
  63713. negl %eax
  63714. -#elif defined __NR_fadvise64
  63715. - /* Save regs */
  63716. - pushl %ebx
  63717. - pushl %esi
  63718. - pushl %edi
  63719. -#if 0
  63720. - /* does len overflow long? */
  63721. - cmpl $0, 28(%esp)
  63722. - movl $-EOVERFLOW, %eax
  63723. - jne overflow
  63724. -#endif
  63725. - movl $__NR_fadvise64, %eax /* Syscall number in %eax. */
  63726. -
  63727. - movl 16(%esp), %ebx
  63728. - movl 20(%esp), %ecx
  63729. - movl 24(%esp), %edx
  63730. - movl 28(%esp), %esi
  63731. - movl 32(%esp), %edi
  63732. -
  63733. - /* Do the system call trap. */
  63734. - int $0x80
  63735. -overflow:
  63736. - /* Restore regs */
  63737. - popl %edi
  63738. - popl %esi
  63739. - popl %ebx
  63740. -
  63741. - /* Returns 0 on success, else an error code. */
  63742. - negl %eax
  63743. -#endif
  63744. -
  63745. /* Successful; return the syscall's value. */
  63746. ret
  63747. -
  63748. .size posix_fadvise64,.-posix_fadvise64
  63749. -
  63750. -/*
  63751. -** libc_hidden_def(__libc_posix_fadvise64)
  63752. -** #if defined __UCLIBC_HAS_LFS__ && defined __UCLIBC_HAS_ADVANCED_REALTIME__
  63753. -** weak_alias(__libc_posix_fadvise64,posix_fadvise64)
  63754. -** #endif
  63755. -*/
  63756. -
  63757. #endif
  63758. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/setcontext.S uClibc-git/libc/sysdeps/linux/i386/setcontext.S
  63759. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  63760. +++ uClibc-git/libc/sysdeps/linux/i386/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  63761. @@ -0,0 +1,96 @@
  63762. +/* Install given context.
  63763. + Copyright (C) 2001-2012 Free Software Foundation, Inc.
  63764. + This file is part of the GNU C Library.
  63765. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  63766. +
  63767. + The GNU C Library is free software; you can redistribute it and/or
  63768. + modify it under the terms of the GNU Lesser General Public
  63769. + License as published by the Free Software Foundation; either
  63770. + version 2.1 of the License, or (at your option) any later version.
  63771. +
  63772. + The GNU C Library is distributed in the hope that it will be useful,
  63773. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63774. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63775. + Lesser General Public License for more details.
  63776. +
  63777. + You should have received a copy of the GNU Lesser General Public
  63778. + License along with the GNU C Library; if not, see
  63779. + <http://www.gnu.org/licenses/>. */
  63780. +
  63781. +#include <sysdep.h>
  63782. +
  63783. +#include "ucontext_i.h"
  63784. +
  63785. +
  63786. +ENTRY(__setcontext)
  63787. + /* Load address of the context data structure. */
  63788. + movl 4(%esp), %eax
  63789. +
  63790. + /* Get the current signal mask. Note that we preserve EBX in case
  63791. + the system call fails and we return from the function with an
  63792. + error. */
  63793. + pushl %ebx
  63794. + cfi_adjust_cfa_offset (4)
  63795. + xorl %edx, %edx
  63796. + leal oSIGMASK(%eax), %ecx
  63797. + movl $SIG_SETMASK, %ebx
  63798. + cfi_rel_offset (ebx, 0)
  63799. + movl $__NR_sigprocmask, %eax
  63800. + ENTER_KERNEL
  63801. + popl %ebx
  63802. + cfi_adjust_cfa_offset (-4)
  63803. + cfi_restore (ebx)
  63804. + cmpl $-4095, %eax /* Check %eax for error. */
  63805. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  63806. +
  63807. + /* EAX was modified, reload it. */
  63808. + movl 4(%esp), %eax
  63809. +
  63810. + /* Restore the floating-point context. Not the registers, only the
  63811. + rest. */
  63812. + movl oFPREGS(%eax), %ecx
  63813. + fldenv (%ecx)
  63814. +
  63815. + /* Restore the FS segment register. We don't touch the GS register
  63816. + since it is used for threads. */
  63817. + movl oFS(%eax), %ecx
  63818. + movw %cx, %fs
  63819. +
  63820. + /* Fetch the address to return to. */
  63821. + movl oEIP(%eax), %ecx
  63822. +
  63823. + /* Load the new stack pointer. */
  63824. + cfi_def_cfa (eax, 0)
  63825. + cfi_offset (edi, oEDI)
  63826. + cfi_offset (esi, oESI)
  63827. + cfi_offset (ebp, oEBP)
  63828. + cfi_offset (ebx, oEBX)
  63829. + cfi_offset (edx, oEDX)
  63830. + cfi_offset (ecx, oECX)
  63831. + movl oESP(%eax), %esp
  63832. +
  63833. + /* Push the return address on the new stack so we can return there. */
  63834. + pushl %ecx
  63835. +
  63836. + /* Load the values of all the 32-bit registers (except ESP).
  63837. + Since we are loading from EAX, it must be last. */
  63838. + movl oEDI(%eax), %edi
  63839. + movl oESI(%eax), %esi
  63840. + movl oEBP(%eax), %ebp
  63841. + movl oEBX(%eax), %ebx
  63842. + movl oEDX(%eax), %edx
  63843. + movl oECX(%eax), %ecx
  63844. + movl oEAX(%eax), %eax
  63845. +
  63846. + /* End FDE here, we fall into another context. */
  63847. + cfi_endproc
  63848. + cfi_startproc
  63849. +
  63850. + /* The following 'ret' will pop the address of the code and jump
  63851. + to it. */
  63852. +
  63853. +L(pseudo_end):
  63854. + ret
  63855. +PSEUDO_END(__setcontext)
  63856. +
  63857. +weak_alias (__setcontext, setcontext)
  63858. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/setjmp.S uClibc-git/libc/sysdeps/linux/i386/setjmp.S
  63859. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  63860. +++ uClibc-git/libc/sysdeps/linux/i386/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  63861. @@ -13,14 +13,8 @@
  63862. Lesser General Public License for more details.
  63863. You should have received a copy of the GNU Lesser General Public
  63864. - License along with the GNU C Library; if not, write to the Free
  63865. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  63866. - 02111-1307 USA. */
  63867. -
  63868. -#define _ASM
  63869. -#define _SETJMP_H
  63870. -#include <bits/setjmp.h>
  63871. -
  63872. + License along with the GNU C Library; if not, see
  63873. + <http://www.gnu.org/licenses/>. */
  63874. .global __sigsetjmp
  63875. .type __sigsetjmp,%function
  63876. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sigaction.c uClibc-git/libc/sysdeps/linux/i386/sigaction.c
  63877. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  63878. +++ uClibc-git/libc/sysdeps/linux/i386/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  63879. @@ -13,8 +13,7 @@
  63880. You should have received a copy of the GNU Library General Public
  63881. License along with the GNU C Library; see the file COPYING.LIB. If not,
  63882. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  63883. - Boston, MA 02111-1307, USA.
  63884. + see <http://www.gnu.org/licenses/>.
  63885. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  63886. */
  63887. @@ -27,9 +26,6 @@
  63888. #define SA_RESTORER 0x04000000
  63889. -extern __typeof(sigaction) __libc_sigaction;
  63890. -
  63891. -
  63892. #if defined __NR_rt_sigaction
  63893. extern void restore_rt(void) __asm__ ("__restore_rt") attribute_hidden;
  63894. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/swapcontext.S uClibc-git/libc/sysdeps/linux/i386/swapcontext.S
  63895. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  63896. +++ uClibc-git/libc/sysdeps/linux/i386/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  63897. @@ -0,0 +1,110 @@
  63898. +/* Save current context and install the given one.
  63899. + Copyright (C) 2001-2012 Free Software Foundation, Inc.
  63900. + This file is part of the GNU C Library.
  63901. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
  63902. +
  63903. + The GNU C Library is free software; you can redistribute it and/or
  63904. + modify it under the terms of the GNU Lesser General Public
  63905. + License as published by the Free Software Foundation; either
  63906. + version 2.1 of the License, or (at your option) any later version.
  63907. +
  63908. + The GNU C Library is distributed in the hope that it will be useful,
  63909. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  63910. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  63911. + Lesser General Public License for more details.
  63912. +
  63913. + You should have received a copy of the GNU Lesser General Public
  63914. + License along with the GNU C Library; if not, see
  63915. + <http://www.gnu.org/licenses/>. */
  63916. +
  63917. +#include <sysdep.h>
  63918. +
  63919. +#include "ucontext_i.h"
  63920. +
  63921. +
  63922. +ENTRY(__swapcontext)
  63923. + /* Load address of the context data structure we save in. */
  63924. + movl 4(%esp), %eax
  63925. +
  63926. + /* Return value of swapcontext. EAX is the only register whose
  63927. + value is not preserved. */
  63928. + movl $0, oEAX(%eax)
  63929. +
  63930. + /* Save the 32-bit register values and the return address. */
  63931. + movl %ecx, oECX(%eax)
  63932. + movl %edx, oEDX(%eax)
  63933. + movl %edi, oEDI(%eax)
  63934. + movl %esi, oESI(%eax)
  63935. + movl %ebp, oEBP(%eax)
  63936. + movl (%esp), %ecx
  63937. + movl %ecx, oEIP(%eax)
  63938. + leal 4(%esp), %ecx
  63939. + movl %ecx, oESP(%eax)
  63940. + movl %ebx, oEBX(%eax)
  63941. +
  63942. + /* Save the FS segment register. */
  63943. + xorl %edx, %edx
  63944. + movw %fs, %dx
  63945. + movl %edx, oFS(%eax)
  63946. +
  63947. + /* We have separate floating-point register content memory on the
  63948. + stack. We use the __fpregs_mem block in the context. Set the
  63949. + links up correctly. */
  63950. + leal oFPREGSMEM(%eax), %ecx
  63951. + movl %ecx, oFPREGS(%eax)
  63952. + /* Save the floating-point context. */
  63953. + fnstenv (%ecx)
  63954. +
  63955. + /* Load address of the context data structure we have to load. */
  63956. + movl 8(%esp), %ecx
  63957. +
  63958. + /* Save the current signal mask and install the new one. */
  63959. + pushl %ebx
  63960. + leal oSIGMASK(%eax), %edx
  63961. + leal oSIGMASK(%ecx), %ecx
  63962. + movl $SIG_SETMASK, %ebx
  63963. + movl $__NR_sigprocmask, %eax
  63964. + ENTER_KERNEL
  63965. + popl %ebx
  63966. + cmpl $-4095, %eax /* Check %eax for error. */
  63967. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  63968. +
  63969. + /* EAX was modified, reload it. */
  63970. + movl 8(%esp), %eax
  63971. +
  63972. + /* Restore the floating-point context. Not the registers, only the
  63973. + rest. */
  63974. + movl oFPREGS(%eax), %ecx
  63975. + fldenv (%ecx)
  63976. +
  63977. + /* Restore the FS segment register. We don't touch the GS register
  63978. + since it is used for threads. */
  63979. + movl oFS(%eax), %edx
  63980. + movw %dx, %fs
  63981. +
  63982. + /* Fetch the address to return to. */
  63983. + movl oEIP(%eax), %ecx
  63984. +
  63985. + /* Load the new stack pointer. */
  63986. + movl oESP(%eax), %esp
  63987. +
  63988. + /* Push the return address on the new stack so we can return there. */
  63989. + pushl %ecx
  63990. +
  63991. + /* Load the values of all the 32-bit registers (except ESP).
  63992. + Since we are loading from EAX, it must be last. */
  63993. + movl oEDI(%eax), %edi
  63994. + movl oESI(%eax), %esi
  63995. + movl oEBP(%eax), %ebp
  63996. + movl oEBX(%eax), %ebx
  63997. + movl oEDX(%eax), %edx
  63998. + movl oECX(%eax), %ecx
  63999. + movl oEAX(%eax), %eax
  64000. +
  64001. + /* The following 'ret' will pop the address of the code and jump
  64002. + to it. */
  64003. +L(pseudo_end):
  64004. + ret
  64005. +PSEUDO_END(__swapcontext)
  64006. +
  64007. +weak_alias (__swapcontext, swapcontext)
  64008. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sync_file_range.S uClibc-git/libc/sysdeps/linux/i386/sync_file_range.S
  64009. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sync_file_range.S 2012-05-15 09:20:09.000000000 +0200
  64010. +++ uClibc-git/libc/sysdeps/linux/i386/sync_file_range.S 2014-02-03 12:32:56.000000000 +0100
  64011. @@ -12,9 +12,8 @@
  64012. Lesser General Public License for more details.
  64013. You should have received a copy of the GNU Lesser General Public
  64014. - License along with the GNU C Library; if not, write to the Free
  64015. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64016. - 02111-1307 USA. */
  64017. + License along with the GNU C Library; if not, see
  64018. + <http://www.gnu.org/licenses/>. */
  64019. #define _ERRNO_H 1
  64020. #include <features.h>
  64021. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/debugreg.h uClibc-git/libc/sysdeps/linux/i386/sys/debugreg.h
  64022. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/debugreg.h 2012-05-15 09:20:09.000000000 +0200
  64023. +++ uClibc-git/libc/sysdeps/linux/i386/sys/debugreg.h 2014-02-03 12:32:56.000000000 +0100
  64024. @@ -12,9 +12,8 @@
  64025. Lesser General Public License for more details.
  64026. You should have received a copy of the GNU Lesser General Public
  64027. - License along with the GNU C Library; if not, write to the Free
  64028. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64029. - 02111-1307 USA. */
  64030. + License along with the GNU C Library; if not, see
  64031. + <http://www.gnu.org/licenses/>. */
  64032. #ifndef _SYS_DEBUGREG_H
  64033. #define _SYS_DEBUGREG_H 1
  64034. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/elf.h uClibc-git/libc/sysdeps/linux/i386/sys/elf.h
  64035. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/elf.h 2012-05-15 09:20:09.000000000 +0200
  64036. +++ uClibc-git/libc/sysdeps/linux/i386/sys/elf.h 2014-02-03 12:32:56.000000000 +0100
  64037. @@ -12,9 +12,8 @@
  64038. Lesser General Public License for more details.
  64039. You should have received a copy of the GNU Lesser General Public
  64040. - License along with the GNU C Library; if not, write to the Free
  64041. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64042. - 02111-1307 USA. */
  64043. + License along with the GNU C Library; if not, see
  64044. + <http://www.gnu.org/licenses/>. */
  64045. #ifndef _SYS_ELF_H
  64046. #define _SYS_ELF_H 1
  64047. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/io.h uClibc-git/libc/sysdeps/linux/i386/sys/io.h
  64048. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  64049. +++ uClibc-git/libc/sysdeps/linux/i386/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  64050. @@ -12,9 +12,8 @@
  64051. Lesser General Public License for more details.
  64052. You should have received a copy of the GNU Lesser General Public
  64053. - License along with the GNU C Library; if not, write to the Free
  64054. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64055. - 02111-1307 USA. */
  64056. + License along with the GNU C Library; if not, see
  64057. + <http://www.gnu.org/licenses/>. */
  64058. #ifndef _SYS_IO_H
  64059. #define _SYS_IO_H 1
  64060. @@ -33,7 +32,6 @@
  64061. E.g., Linux/Alpha for Alpha PCs supports this. */
  64062. extern int ioperm (unsigned long int __from, unsigned long int __num,
  64063. int __turn_on) __THROW;
  64064. -libc_hidden_proto(ioperm)
  64065. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  64066. access any I/O port is granted. This call requires root
  64067. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/perm.h uClibc-git/libc/sysdeps/linux/i386/sys/perm.h
  64068. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/perm.h 2012-05-15 09:20:09.000000000 +0200
  64069. +++ uClibc-git/libc/sysdeps/linux/i386/sys/perm.h 2014-02-03 12:32:56.000000000 +0100
  64070. @@ -12,9 +12,8 @@
  64071. Lesser General Public License for more details.
  64072. You should have received a copy of the GNU Lesser General Public
  64073. - License along with the GNU C Library; if not, write to the Free
  64074. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64075. - 02111-1307 USA. */
  64076. + License along with the GNU C Library; if not, see
  64077. + <http://www.gnu.org/licenses/>. */
  64078. #ifndef _SYS_PERM_H
  64079. @@ -26,7 +25,6 @@
  64080. /* Set port input/output permissions. */
  64081. extern int ioperm (unsigned long int __from, unsigned long int __num,
  64082. int __turn_on) __THROW;
  64083. -libc_hidden_proto(ioperm)
  64084. /* Change I/O privilege level. */
  64085. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/procfs.h uClibc-git/libc/sysdeps/linux/i386/sys/procfs.h
  64086. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  64087. +++ uClibc-git/libc/sysdeps/linux/i386/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  64088. @@ -12,9 +12,8 @@
  64089. Lesser General Public License for more details.
  64090. You should have received a copy of the GNU Lesser General Public
  64091. - License along with the GNU C Library; if not, write to the Free
  64092. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64093. - 02111-1307 USA. */
  64094. + License along with the GNU C Library; if not, see
  64095. + <http://www.gnu.org/licenses/>. */
  64096. #ifndef _SYS_PROCFS_H
  64097. #define _SYS_PROCFS_H 1
  64098. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/reg.h uClibc-git/libc/sysdeps/linux/i386/sys/reg.h
  64099. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  64100. +++ uClibc-git/libc/sysdeps/linux/i386/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  64101. @@ -12,9 +12,8 @@
  64102. Lesser General Public License for more details.
  64103. You should have received a copy of the GNU Lesser General Public
  64104. - License along with the GNU C Library; if not, write to the Free
  64105. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64106. - 02111-1307 USA. */
  64107. + License along with the GNU C Library; if not, see
  64108. + <http://www.gnu.org/licenses/>. */
  64109. #ifndef _SYS_REG_H
  64110. #define _SYS_REG_H 1
  64111. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/ucontext.h uClibc-git/libc/sysdeps/linux/i386/sys/ucontext.h
  64112. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  64113. +++ uClibc-git/libc/sysdeps/linux/i386/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  64114. @@ -12,9 +12,8 @@
  64115. Lesser General Public License for more details.
  64116. You should have received a copy of the GNU Lesser General Public
  64117. - License along with the GNU C Library; if not, write to the Free
  64118. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64119. - 02111-1307 USA. */
  64120. + License along with the GNU C Library; if not, see
  64121. + <http://www.gnu.org/licenses/>. */
  64122. #ifndef _SYS_UCONTEXT_H
  64123. #define _SYS_UCONTEXT_H 1
  64124. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/user.h uClibc-git/libc/sysdeps/linux/i386/sys/user.h
  64125. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  64126. +++ uClibc-git/libc/sysdeps/linux/i386/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  64127. @@ -12,9 +12,8 @@
  64128. Lesser General Public License for more details.
  64129. You should have received a copy of the GNU Lesser General Public
  64130. - License along with the GNU C Library; if not, write to the Free
  64131. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64132. - 02111-1307 USA. */
  64133. + License along with the GNU C Library; if not, see
  64134. + <http://www.gnu.org/licenses/>. */
  64135. #ifndef _SYS_USER_H
  64136. #define _SYS_USER_H 1
  64137. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/vm86.h uClibc-git/libc/sysdeps/linux/i386/sys/vm86.h
  64138. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sys/vm86.h 2012-05-15 09:20:09.000000000 +0200
  64139. +++ uClibc-git/libc/sysdeps/linux/i386/sys/vm86.h 2014-02-03 12:32:56.000000000 +0100
  64140. @@ -12,9 +12,8 @@
  64141. Lesser General Public License for more details.
  64142. You should have received a copy of the GNU Lesser General Public
  64143. - License along with the GNU C Library; if not, write to the Free
  64144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64145. - 02111-1307 USA. */
  64146. + License along with the GNU C Library; if not, see
  64147. + <http://www.gnu.org/licenses/>. */
  64148. #ifndef _SYS_VM86_H
  64149. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/sysdep.h uClibc-git/libc/sysdeps/linux/i386/sysdep.h
  64150. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  64151. +++ uClibc-git/libc/sysdeps/linux/i386/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  64152. @@ -14,9 +14,8 @@
  64153. Lesser General Public License for more details.
  64154. You should have received a copy of the GNU Lesser General Public
  64155. - License along with the GNU C Library; if not, write to the Free
  64156. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64157. - 02111-1307 USA. */
  64158. + License along with the GNU C Library; if not, see
  64159. + <http://www.gnu.org/licenses/>. */
  64160. #ifndef _LINUX_I386_SYSDEP_H
  64161. #define _LINUX_I386_SYSDEP_H 1
  64162. @@ -44,12 +43,9 @@
  64163. incomplete stabs information. Fake some entries here which specify
  64164. the current source file. */
  64165. #define ENTRY(name) \
  64166. - STABS_CURRENT_FILE1("") \
  64167. - STABS_CURRENT_FILE(name) \
  64168. ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
  64169. ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
  64170. .align ALIGNARG(4); \
  64171. - STABS_FUN(name) \
  64172. C_LABEL(name) \
  64173. cfi_startproc; \
  64174. CALL_MCOUNT
  64175. @@ -58,30 +54,6 @@
  64176. #define END(name) \
  64177. cfi_endproc; \
  64178. ASM_SIZE_DIRECTIVE(name) \
  64179. - STABS_FUN_END(name)
  64180. -
  64181. -#ifdef HAVE_CPP_ASM_DEBUGINFO
  64182. -/* Disable that goop, because we just pass -g through to the assembler
  64183. - and it generates proper line number information directly. */
  64184. -# define STABS_CURRENT_FILE1(name)
  64185. -# define STABS_CURRENT_FILE(name)
  64186. -# define STABS_FUN(name)
  64187. -# define STABS_FUN_END(name)
  64188. -#else
  64189. -/* Remove the following two lines once the gdb bug is fixed. */
  64190. -#define STABS_CURRENT_FILE(name) \
  64191. - STABS_CURRENT_FILE1 (#name)
  64192. -#define STABS_CURRENT_FILE1(name) \
  64193. - 1: .stabs name,100,0,0,1b;
  64194. -/* Emit stabs definition lines. We use F(0,1) and define t(0,1) as `int',
  64195. - the same way gcc does it. */
  64196. -#define STABS_FUN(name) STABS_FUN2(name, name##:F(0,1))
  64197. -#define STABS_FUN2(name, namestr) \
  64198. - .stabs "int:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0; \
  64199. - .stabs #namestr,36,0,0,name;
  64200. -#define STABS_FUN_END(name) \
  64201. - 1: .stabs "",36,0,0,1b-name;
  64202. -#endif
  64203. /* If compiled for profiling, call `mcount' at the start of each function. */
  64204. #ifdef PROF
  64205. @@ -150,10 +122,6 @@
  64206. #undef __i686
  64207. #endif /* __ASSEMBLER__ */
  64208. -#ifndef offsetof
  64209. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  64210. -#endif
  64211. -
  64212. /* For Linux we can use the system call table in the header file
  64213. /usr/include/asm/unistd.h
  64214. of the kernel. But these symbols do not follow the SYS_* syntax
  64215. @@ -227,8 +195,6 @@
  64216. #define PSEUDO_END_ERRVAL(name) \
  64217. END (name)
  64218. -#define ret_ERRVAL ret
  64219. -
  64220. #ifndef __PIC__
  64221. # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
  64222. #else
  64223. @@ -444,6 +410,7 @@
  64224. # define PTR_DEMANGLE(reg) rorl $9, reg; \
  64225. xorl %gs:POINTER_GUARD, reg
  64226. # else
  64227. +# include <stddef.h>
  64228. # define PTR_MANGLE(var) __asm__ ("xorl %%gs:%c2, %0\n" \
  64229. "roll $9, %0" \
  64230. : "=r" (var) \
  64231. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/ucontext_i.sym uClibc-git/libc/sysdeps/linux/i386/ucontext_i.sym
  64232. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  64233. +++ uClibc-git/libc/sysdeps/linux/i386/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  64234. @@ -0,0 +1,30 @@
  64235. +#include <stddef.h>
  64236. +#include <signal.h>
  64237. +#include <sys/ucontext.h>
  64238. +
  64239. +--
  64240. +
  64241. +SIG_BLOCK
  64242. +SIG_SETMASK
  64243. +
  64244. +#define ucontext(member) offsetof (ucontext_t, member)
  64245. +#define mcontext(member) ucontext (uc_mcontext.member)
  64246. +#define mreg(reg) mcontext (gregs[REG_##reg])
  64247. +
  64248. +oLINK ucontext (uc_link)
  64249. +oSS_SP ucontext (uc_stack.ss_sp)
  64250. +oSS_SIZE ucontext (uc_stack.ss_size)
  64251. +oGS mreg (GS)
  64252. +oFS mreg (FS)
  64253. +oEDI mreg (EDI)
  64254. +oESI mreg (ESI)
  64255. +oEBP mreg (EBP)
  64256. +oESP mreg (ESP)
  64257. +oEBX mreg (EBX)
  64258. +oEDX mreg (EDX)
  64259. +oECX mreg (ECX)
  64260. +oEAX mreg (EAX)
  64261. +oEIP mreg (EIP)
  64262. +oFPREGS mcontext (fpregs)
  64263. +oSIGMASK ucontext (uc_sigmask)
  64264. +oFPREGSMEM ucontext (__fpregs_mem)
  64265. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i386/vfork.S uClibc-git/libc/sysdeps/linux/i386/vfork.S
  64266. --- uClibc-0.9.33.2/libc/sysdeps/linux/i386/vfork.S 2012-05-15 09:20:09.000000000 +0200
  64267. +++ uClibc-git/libc/sysdeps/linux/i386/vfork.S 2014-02-03 12:32:56.000000000 +0100
  64268. @@ -38,4 +38,4 @@
  64269. .size __vfork,.-__vfork
  64270. weak_alias(__vfork,vfork)
  64271. -libc_hidden_weak(vfork)
  64272. +libc_hidden_def(vfork)
  64273. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/fcntl.h uClibc-git/libc/sysdeps/linux/i960/bits/fcntl.h
  64274. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  64275. +++ uClibc-git/libc/sysdeps/linux/i960/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  64276. @@ -13,9 +13,8 @@
  64277. Lesser General Public License for more details.
  64278. You should have received a copy of the GNU Lesser General Public
  64279. - License along with the GNU C Library; if not, write to the Free
  64280. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64281. - 02111-1307 USA. */
  64282. + License along with the GNU C Library; if not, see
  64283. + <http://www.gnu.org/licenses/>. */
  64284. #ifndef _FCNTL_H
  64285. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  64286. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h
  64287. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  64288. +++ uClibc-git/libc/sysdeps/linux/i960/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  64289. @@ -12,8 +12,8 @@
  64290. /* can your target use syscall6() for mmap ? */
  64291. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  64292. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  64293. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  64294. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  64295. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  64296. /* does your target have a broken create_module() ? */
  64297. #define __UCLIBC_BROKEN_CREATE_MODULE__
  64298. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/wordsize.h uClibc-git/libc/sysdeps/linux/i960/bits/wordsize.h
  64299. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  64300. +++ uClibc-git/libc/sysdeps/linux/i960/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  64301. @@ -12,8 +12,7 @@
  64302. Lesser General Public License for more details.
  64303. You should have received a copy of the GNU Lesser General Public
  64304. - License along with the GNU C Library; if not, write to the Free
  64305. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64306. - 02111-1307 USA. */
  64307. + License along with the GNU C Library; if not, see
  64308. + <http://www.gnu.org/licenses/>. */
  64309. #define __WORDSIZE 32
  64310. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/clone.S uClibc-git/libc/sysdeps/linux/i960/clone.S
  64311. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/clone.S 2012-05-15 09:20:09.000000000 +0200
  64312. +++ uClibc-git/libc/sysdeps/linux/i960/clone.S 2014-02-03 12:32:56.000000000 +0100
  64313. @@ -14,8 +14,7 @@
  64314. # details.
  64315. #
  64316. # You should have received a copy of the GNU Library General Public License
  64317. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  64318. -# at 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  64319. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  64320. #
  64321. # Derived from an old port of uC-libc to the i960 by Keith Adams (kma@cse.ogi.edu).
  64322. #
  64323. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/crt0.S uClibc-git/libc/sysdeps/linux/i960/crt0.S
  64324. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/crt0.S 2012-05-15 09:20:09.000000000 +0200
  64325. +++ uClibc-git/libc/sysdeps/linux/i960/crt0.S 2014-02-03 12:32:56.000000000 +0100
  64326. @@ -14,8 +14,7 @@
  64327. # details.
  64328. #
  64329. # You should have received a copy of the GNU Library General Public License
  64330. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  64331. -# at 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  64332. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  64333. #
  64334. /*
  64335. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/mmap.S uClibc-git/libc/sysdeps/linux/i960/mmap.S
  64336. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/mmap.S 2012-05-15 09:20:09.000000000 +0200
  64337. +++ uClibc-git/libc/sysdeps/linux/i960/mmap.S 2014-02-03 12:32:56.000000000 +0100
  64338. @@ -14,8 +14,7 @@
  64339. # details.
  64340. #
  64341. # You should have received a copy of the GNU Library General Public License
  64342. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  64343. -# at 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  64344. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  64345. #
  64346. # Derived from an old port of uC-libc to the i960 by Keith Adams (kma@cse.ogi.edu).
  64347. #
  64348. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/setjmp.S uClibc-git/libc/sysdeps/linux/i960/setjmp.S
  64349. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  64350. +++ uClibc-git/libc/sysdeps/linux/i960/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  64351. @@ -122,3 +122,5 @@
  64352. mov 1, g0 /* return 1 by default */
  64353. 0:
  64354. ret /* return to caller of __sigsetjmp */
  64355. +
  64356. +libc_hidden_def(__longjmp)
  64357. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/procfs.h uClibc-git/libc/sysdeps/linux/i960/sys/procfs.h
  64358. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  64359. +++ uClibc-git/libc/sysdeps/linux/i960/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  64360. @@ -12,9 +12,8 @@
  64361. Lesser General Public License for more details.
  64362. You should have received a copy of the GNU Lesser General Public
  64363. - License along with the GNU C Library; if not, write to the Free
  64364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64365. - 02111-1307 USA. */
  64366. + License along with the GNU C Library; if not, see
  64367. + <http://www.gnu.org/licenses/>. */
  64368. #ifndef _SYS_PROCFS_H
  64369. #define _SYS_PROCFS_H 1
  64370. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/ucontext.h uClibc-git/libc/sysdeps/linux/i960/sys/ucontext.h
  64371. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  64372. +++ uClibc-git/libc/sysdeps/linux/i960/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  64373. @@ -12,9 +12,8 @@
  64374. Lesser General Public License for more details.
  64375. You should have received a copy of the GNU Lesser General Public
  64376. - License along with the GNU C Library; if not, write to the Free
  64377. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64378. - 02111-1307 USA. */
  64379. + License along with the GNU C Library; if not, see
  64380. + <http://www.gnu.org/licenses/>. */
  64381. /* Don't rely on this, the interface is currently messed up and may need to
  64382. be broken to be fixed. */
  64383. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/i960/vfork.S uClibc-git/libc/sysdeps/linux/i960/vfork.S
  64384. --- uClibc-0.9.33.2/libc/sysdeps/linux/i960/vfork.S 2012-05-15 09:20:09.000000000 +0200
  64385. +++ uClibc-git/libc/sysdeps/linux/i960/vfork.S 2014-02-03 12:32:56.000000000 +0100
  64386. @@ -18,6 +18,7 @@
  64387. .globl ___vfork
  64388. .hidden ___vfork
  64389. + .type ___vfork,@function
  64390. ___vfork:
  64391. mov g13, r3
  64392. ldconst __NR_vfork, g13
  64393. @@ -30,4 +31,4 @@
  64394. ret
  64395. weak_alias(__vfork,vfork)
  64396. -libc_hidden_weak(vfork)
  64397. +libc_hidden_def(vfork)
  64398. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/atomic.h uClibc-git/libc/sysdeps/linux/ia64/bits/atomic.h
  64399. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  64400. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  64401. @@ -12,9 +12,8 @@
  64402. Lesser General Public License for more details.
  64403. You should have received a copy of the GNU Lesser General Public
  64404. - License along with the GNU C Library; if not, write to the Free
  64405. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64406. - 02111-1307 USA. */
  64407. + License along with the GNU C Library; if not, see
  64408. + <http://www.gnu.org/licenses/>. */
  64409. #include <stdint.h>
  64410. #include <ia64intrin.h>
  64411. @@ -92,12 +91,12 @@
  64412. do \
  64413. { \
  64414. __oldval = __val; \
  64415. - if (__builtin_expect (__val <= 0, 0)) \
  64416. + if (unlikely (__val <= 0)) \
  64417. break; \
  64418. __val = atomic_compare_and_exchange_val_acq (__memp, __oldval - 1, \
  64419. __oldval); \
  64420. } \
  64421. - while (__builtin_expect (__val != __oldval, 0)); \
  64422. + while (unlikely (__val != __oldval)); \
  64423. __oldval; })
  64424. #define atomic_bit_test_set(mem, bit) \
  64425. @@ -113,7 +112,7 @@
  64426. __oldval | __mask, \
  64427. __oldval); \
  64428. } \
  64429. - while (__builtin_expect (__val != __oldval, 0)); \
  64430. + while (unlikely (__val != __oldval)); \
  64431. __oldval & __mask; })
  64432. #define atomic_full_barrier() __sync_synchronize ()
  64433. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/byteswap.h uClibc-git/libc/sysdeps/linux/ia64/bits/byteswap.h
  64434. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  64435. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  64436. @@ -13,9 +13,8 @@
  64437. Lesser General Public License for more details.
  64438. You should have received a copy of the GNU Lesser General Public
  64439. - License along with the GNU C Library; if not, write to the Free
  64440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64441. - 02111-1307 USA. */
  64442. + License along with the GNU C Library; if not, see
  64443. + <http://www.gnu.org/licenses/>. */
  64444. #ifndef _ASM_BITS_BYTESWAP_H
  64445. #define _ASM_BITS_BYTESWAP_H 1
  64446. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fcntl.h uClibc-git/libc/sysdeps/linux/ia64/bits/fcntl.h
  64447. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  64448. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  64449. @@ -13,9 +13,8 @@
  64450. Lesser General Public License for more details.
  64451. You should have received a copy of the GNU Lesser General Public
  64452. - License along with the GNU C Library; if not, write to the Free
  64453. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64454. - 02111-1307 USA. */
  64455. + License along with the GNU C Library; if not, see
  64456. + <http://www.gnu.org/licenses/>. */
  64457. #ifndef _FCNTL_H
  64458. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  64459. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fenv.h uClibc-git/libc/sysdeps/linux/ia64/bits/fenv.h
  64460. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  64461. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  64462. @@ -12,9 +12,8 @@
  64463. Lesser General Public License for more details.
  64464. You should have received a copy of the GNU Lesser General Public
  64465. - License along with the GNU C Library; if not, write to the Free
  64466. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64467. - 02111-1307 USA. */
  64468. + License along with the GNU C Library; if not, see
  64469. + <http://www.gnu.org/licenses/>. */
  64470. #ifndef _FENV_H
  64471. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  64472. @@ -73,15 +72,15 @@
  64473. typedef unsigned long int fenv_t;
  64474. /* If the default argument is used we use this value. */
  64475. -#define FE_DFL_ENV ((__const fenv_t *) 0xc009804c0270033fUL)
  64476. +#define FE_DFL_ENV ((const fenv_t *) 0xc009804c0270033fUL)
  64477. #ifdef __USE_GNU
  64478. /* Floating-point environment where only FE_UNNORMAL is masked since this
  64479. exception is not generally supported by glibc. */
  64480. -# define FE_NOMASK_ENV ((__const fenv_t *) 0xc009804c02700302UL)
  64481. +# define FE_NOMASK_ENV ((const fenv_t *) 0xc009804c02700302UL)
  64482. /* Floating-point environment with (processor-dependent) non-IEEE
  64483. floating point. In this case, turning on flush-to-zero mode for
  64484. s0, s2, and s3. */
  64485. -# define FE_NONIEEE_ENV ((__const fenv_t *) 0xc009a04d0270037fUL)
  64486. +# define FE_NONIEEE_ENV ((const fenv_t *) 0xc009a04d0270037fUL)
  64487. #endif
  64488. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/huge_vall.h uClibc-git/libc/sysdeps/linux/ia64/bits/huge_vall.h
  64489. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  64490. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  64491. @@ -0,0 +1,41 @@
  64492. +/* `HUGE_VALL' constant for ia64 (where it is infinity).
  64493. + Used by <stdlib.h> and <math.h> functions for overflow.
  64494. + Copyright (C) 2000, 2004 Free Software Foundation, Inc.
  64495. + This file is part of the GNU C Library.
  64496. +
  64497. + The GNU C Library is free software; you can redistribute it and/or
  64498. + modify it under the terms of the GNU Lesser General Public
  64499. + License as published by the Free Software Foundation; either
  64500. + version 2.1 of the License, or (at your option) any later version.
  64501. +
  64502. + The GNU C Library is distributed in the hope that it will be useful,
  64503. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64504. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64505. + Lesser General Public License for more details.
  64506. +
  64507. + You should have received a copy of the GNU Lesser General Public
  64508. + License along with the GNU C Library; if not, see
  64509. + <http://www.gnu.org/licenses/>. */
  64510. +
  64511. +#ifndef _MATH_H
  64512. +# error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  64513. +#endif
  64514. +
  64515. +#if __GNUC_PREREQ(3,3)
  64516. +# define HUGE_VALL (__builtin_huge_vall())
  64517. +#elif __GNUC_PREREQ(2,96)
  64518. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  64519. +#else
  64520. +
  64521. +# define __HUGE_VALL_bytes { 0,0,0,0,0,0,0, 0x80, 0xff, 0x7f, 0,0,0,0,0,0}
  64522. +
  64523. +# define __huge_vall_t union { unsigned char __c[16]; long double __ld; }
  64524. +# ifdef __GNUC__
  64525. +# define HUGE_VALL (__extension__ \
  64526. + ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld)
  64527. +# else /* Not GCC. */
  64528. +static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  64529. +# define HUGE_VALL (__huge_vall.__ld)
  64530. +# endif /* GCC. */
  64531. +
  64532. +#endif /* GCC 2.95 */
  64533. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/ipc.h uClibc-git/libc/sysdeps/linux/ia64/bits/ipc.h
  64534. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  64535. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  64536. @@ -13,9 +13,8 @@
  64537. Lesser General Public License for more details.
  64538. You should have received a copy of the GNU Lesser General Public
  64539. - License along with the GNU C Library; if not, write to the Free
  64540. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64541. - 02111-1307 USA. */
  64542. + License along with the GNU C Library; if not, see
  64543. + <http://www.gnu.org/licenses/>. */
  64544. #ifndef _SYS_IPC_H
  64545. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  64546. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/ia64/bits/kernel_types.h
  64547. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  64548. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  64549. @@ -52,5 +52,7 @@
  64550. typedef unsigned int __kernel_dev_t;
  64551. typedef unsigned int __kernel_old_dev_t;
  64552. +typedef long __kernel_long_t;
  64553. +typedef unsigned long __kernel_ulong_t;
  64554. #endif /* _ASM_IA64_POSIX_TYPES_H */
  64555. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/local_lim.h uClibc-git/libc/sysdeps/linux/ia64/bits/local_lim.h
  64556. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  64557. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  64558. @@ -0,0 +1,99 @@
  64559. +/* Minimum guaranteed maximum values for system limits. Linux/IA-64 version.
  64560. + Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc.
  64561. + This file is part of the GNU C Library.
  64562. +
  64563. + The GNU C Library is free software; you can redistribute it and/or
  64564. + modify it under the terms of the GNU Library General Public License as
  64565. + published by the Free Software Foundation; either version 2 of the
  64566. + License, or (at your option) any later version.
  64567. +
  64568. + The GNU C Library is distributed in the hope that it will be useful,
  64569. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  64570. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  64571. + Library General Public License for more details.
  64572. +
  64573. + You should have received a copy of the GNU Library General Public
  64574. + License along with the GNU C Library; see the file COPYING.LIB. If not,
  64575. + see <http://www.gnu.org/licenses/>. */
  64576. +
  64577. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  64578. + and defines LINK_MAX although filesystems have different maxima. A
  64579. + similar thing is true for OPEN_MAX: the limit can be changed at
  64580. + runtime and therefore the macro must not be defined. Remove this
  64581. + after including the header if necessary. */
  64582. +#ifndef NR_OPEN
  64583. +# define __undef_NR_OPEN
  64584. +#endif
  64585. +#ifndef LINK_MAX
  64586. +# define __undef_LINK_MAX
  64587. +#endif
  64588. +#ifndef OPEN_MAX
  64589. +# define __undef_OPEN_MAX
  64590. +#endif
  64591. +#ifndef ARG_MAX
  64592. +# define __undef_ARG_MAX
  64593. +#endif
  64594. +
  64595. +/* The kernel sources contain a file with all the needed information. */
  64596. +#include <linux/limits.h>
  64597. +
  64598. +/* Have to remove NR_OPEN? */
  64599. +#ifdef __undef_NR_OPEN
  64600. +# undef NR_OPEN
  64601. +# undef __undef_NR_OPEN
  64602. +#endif
  64603. +/* Have to remove LINK_MAX? */
  64604. +#ifdef __undef_LINK_MAX
  64605. +# undef LINK_MAX
  64606. +# undef __undef_LINK_MAX
  64607. +#endif
  64608. +/* Have to remove OPEN_MAX? */
  64609. +#ifdef __undef_OPEN_MAX
  64610. +# undef OPEN_MAX
  64611. +# undef __undef_OPEN_MAX
  64612. +#endif
  64613. +/* Have to remove ARG_MAX? */
  64614. +#ifdef __undef_ARG_MAX
  64615. +# undef ARG_MAX
  64616. +# undef __undef_ARG_MAX
  64617. +#endif
  64618. +
  64619. +/* The number of data keys per process. */
  64620. +#define _POSIX_THREAD_KEYS_MAX 128
  64621. +/* This is the value this implementation supports. */
  64622. +#define PTHREAD_KEYS_MAX 1024
  64623. +
  64624. +/* Controlling the iterations of destructors for thread-specific data. */
  64625. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  64626. +/* Number of iterations this implementation does. */
  64627. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  64628. +
  64629. +/* The number of threads per process. */
  64630. +#define _POSIX_THREAD_THREADS_MAX 64
  64631. +/* We have no predefined limit on the number of threads. */
  64632. +#undef PTHREAD_THREADS_MAX
  64633. +
  64634. +/* Maximum amount by which a process can descrease its asynchronous I/O
  64635. + priority level. */
  64636. +#define AIO_PRIO_DELTA_MAX 20
  64637. +
  64638. +/* Minimum size for a thread. We are free to choose a reasonable value. */
  64639. +#define PTHREAD_STACK_MIN 196608
  64640. +
  64641. +/* Maximum number of timer expiration overruns. */
  64642. +#define DELAYTIMER_MAX 2147483647
  64643. +
  64644. +/* Maximum tty name length. */
  64645. +#define TTY_NAME_MAX 32
  64646. +
  64647. +/* Maximum login name length. This is arbitrary. */
  64648. +#define LOGIN_NAME_MAX 256
  64649. +
  64650. +/* Maximum host name length. */
  64651. +#define HOST_NAME_MAX 64
  64652. +
  64653. +/* Maximum message queue priority level. */
  64654. +#define MQ_PRIO_MAX 32768
  64655. +
  64656. +/* Maximum value the semaphore can have. */
  64657. +#define SEM_VALUE_MAX (2147483647)
  64658. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathdef.h uClibc-git/libc/sysdeps/linux/ia64/bits/mathdef.h
  64659. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  64660. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  64661. @@ -12,9 +12,8 @@
  64662. Lesser General Public License for more details.
  64663. You should have received a copy of the GNU Lesser General Public
  64664. - License along with the GNU C Library; if not, write to the Free
  64665. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64666. - 02111-1307 USA. */
  64667. + License along with the GNU C Library; if not, see
  64668. + <http://www.gnu.org/licenses/>. */
  64669. #if !defined _MATH_H && !defined _COMPLEX_H
  64670. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  64671. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathinline.h uClibc-git/libc/sysdeps/linux/ia64/bits/mathinline.h
  64672. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  64673. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  64674. @@ -13,9 +13,8 @@
  64675. Lesser General Public License for more details.
  64676. You should have received a copy of the GNU Lesser General Public
  64677. - License along with the GNU C Library; if not, write to the Free
  64678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64679. - 02111-1307 USA. */
  64680. + License along with the GNU C Library; if not, see
  64681. + <http://www.gnu.org/licenses/>. */
  64682. #ifndef _MATH_H
  64683. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  64684. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/msq.h uClibc-git/libc/sysdeps/linux/ia64/bits/msq.h
  64685. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  64686. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  64687. @@ -13,9 +13,8 @@
  64688. Lesser General Public License for more details.
  64689. You should have received a copy of the GNU Lesser General Public
  64690. - License along with the GNU C Library; if not, write to the Free
  64691. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64692. - 02111-1307 USA. */
  64693. + License along with the GNU C Library; if not, see
  64694. + <http://www.gnu.org/licenses/>. */
  64695. #ifndef _SYS_MSG_H
  64696. #error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  64697. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sem.h uClibc-git/libc/sysdeps/linux/ia64/bits/sem.h
  64698. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  64699. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  64700. @@ -14,9 +14,8 @@
  64701. Lesser General Public License for more details.
  64702. You should have received a copy of the GNU Lesser General Public
  64703. - License along with the GNU C Library; if not, write to the Free
  64704. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64705. - 02111-1307 USA. */
  64706. + License along with the GNU C Library; if not, see
  64707. + <http://www.gnu.org/licenses/>. */
  64708. #ifndef _SYS_SEM_H
  64709. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  64710. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/setjmp.h uClibc-git/libc/sysdeps/linux/ia64/bits/setjmp.h
  64711. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  64712. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  64713. @@ -1,5 +1,5 @@
  64714. /* Define the machine-dependent type `jmp_buf'. Linux/IA-64 version.
  64715. - Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
  64716. + Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
  64717. This file is part of the GNU C Library.
  64718. Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
  64719. @@ -14,9 +14,8 @@
  64720. Lesser General Public License for more details.
  64721. You should have received a copy of the GNU Lesser General Public
  64722. - License along with the GNU C Library; if not, write to the Free
  64723. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64724. - 02111-1307 USA. */
  64725. + License along with the GNU C Library; if not, see
  64726. + <http://www.gnu.org/licenses/>. */
  64727. #ifndef _BITS_SETJMP_H
  64728. #define _BITS_SETJMP_H 1
  64729. @@ -32,9 +31,4 @@
  64730. /* the __jmp_buf element type should be __float80 per ABI... */
  64731. typedef long __jmp_buf[_JBLEN] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */
  64732. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  64733. - variable at ADDRESS. */
  64734. -#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  64735. - ((void *)(_address) < (void *)(((long *)_jmpbuf)[0]))
  64736. -
  64737. #endif /* bits/setjmp.h */
  64738. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/shm.h uClibc-git/libc/sysdeps/linux/ia64/bits/shm.h
  64739. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  64740. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  64741. @@ -12,9 +12,8 @@
  64742. Lesser General Public License for more details.
  64743. You should have received a copy of the GNU Lesser General Public
  64744. - License along with the GNU C Library; if not, write to the Free
  64745. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64746. - 02111-1307 USA. */
  64747. + License along with the GNU C Library; if not, see
  64748. + <http://www.gnu.org/licenses/>. */
  64749. #ifndef _SYS_SHM_H
  64750. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  64751. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigaction.h uClibc-git/libc/sysdeps/linux/ia64/bits/sigaction.h
  64752. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  64753. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  64754. @@ -13,9 +13,8 @@
  64755. Lesser General Public License for more details.
  64756. You should have received a copy of the GNU Lesser General Public
  64757. - License along with the GNU C Library; if not, write to the Free
  64758. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64759. - 02111-1307 USA. */
  64760. + License along with the GNU C Library; if not, see
  64761. + <http://www.gnu.org/licenses/>. */
  64762. #ifndef _SIGNAL_H
  64763. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  64764. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/ia64/bits/sigcontext.h
  64765. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  64766. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  64767. @@ -14,9 +14,8 @@
  64768. Lesser General Public License for more details.
  64769. You should have received a copy of the GNU Lesser General Public
  64770. - License along with the GNU C Library; if not, write to the Free
  64771. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64772. - 02111-1307 USA. */
  64773. + License along with the GNU C Library; if not, see
  64774. + <http://www.gnu.org/licenses/>. */
  64775. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  64776. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  64777. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/siginfo.h uClibc-git/libc/sysdeps/linux/ia64/bits/siginfo.h
  64778. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  64779. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  64780. @@ -14,9 +14,8 @@
  64781. Lesser General Public License for more details.
  64782. You should have received a copy of the GNU Lesser General Public
  64783. - License along with the GNU C Library; if not, write to the Free
  64784. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64785. - 02111-1307 USA. */
  64786. + License along with the GNU C Library; if not, see
  64787. + <http://www.gnu.org/licenses/>. */
  64788. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  64789. && !defined __need_sigevent_t
  64790. @@ -298,7 +297,11 @@
  64791. /* Structure to transport application-defined values with signals. */
  64792. # define __SIGEV_MAX_SIZE 64
  64793. -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  64794. +# if __WORDSIZE == 64
  64795. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  64796. +# else
  64797. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
  64798. +# endif
  64799. typedef struct sigevent
  64800. {
  64801. @@ -310,6 +313,10 @@
  64802. {
  64803. int _pad[__SIGEV_PAD_SIZE];
  64804. + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
  64805. + thread to receive the signal. */
  64806. + __pid_t _tid;
  64807. +
  64808. struct
  64809. {
  64810. void (*_function) (sigval_t); /* Function to start. */
  64811. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigstack.h uClibc-git/libc/sysdeps/linux/ia64/bits/sigstack.h
  64812. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  64813. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  64814. @@ -13,9 +13,8 @@
  64815. Lesser General Public License for more details.
  64816. You should have received a copy of the GNU Lesser General Public
  64817. - License along with the GNU C Library; if not, write to the Free
  64818. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64819. - 02111-1307 USA. */
  64820. + License along with the GNU C Library; if not, see
  64821. + <http://www.gnu.org/licenses/>. */
  64822. #ifndef _SIGNAL_H
  64823. # error "Never include this file directly. Use <signal.h> instead"
  64824. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/ia64/bits/stackinfo.h
  64825. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  64826. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  64827. @@ -12,9 +12,8 @@
  64828. Lesser General Public License for more details.
  64829. You should have received a copy of the GNU Lesser General Public
  64830. - License along with the GNU C Library; if not, write to the Free
  64831. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64832. - 02111-1307 USA. */
  64833. + License along with the GNU C Library; if not, see
  64834. + <http://www.gnu.org/licenses/>. */
  64835. /* This file contains a bit of information about the stack allocation
  64836. of the processor. */
  64837. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stat.h uClibc-git/libc/sysdeps/linux/ia64/bits/stat.h
  64838. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  64839. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  64840. @@ -12,9 +12,8 @@
  64841. Lesser General Public License for more details.
  64842. You should have received a copy of the GNU Lesser General Public
  64843. - License along with the GNU C Library; if not, write to the Free
  64844. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64845. - 02111-1307 USA. */
  64846. + License along with the GNU C Library; if not, see
  64847. + <http://www.gnu.org/licenses/>. */
  64848. #ifndef _SYS_STAT_H
  64849. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  64850. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/syscalls.h uClibc-git/libc/sysdeps/linux/ia64/bits/syscalls.h
  64851. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  64852. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  64853. @@ -15,9 +15,8 @@
  64854. Lesser General Public License for more details.
  64855. You should have received a copy of the GNU Lesser General Public
  64856. - License along with the GNU C Library; if not, write to the Free
  64857. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64858. - 02111-1307 USA. */
  64859. + License along with the GNU C Library; if not, see
  64860. + <http://www.gnu.org/licenses/>. */
  64861. #ifndef _BITS_SYSCALLS_H
  64862. #define _BITS_SYSCALLS_H
  64863. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h
  64864. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  64865. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  64866. @@ -11,8 +11,8 @@
  64867. /* can your target use syscall6() for mmap ? */
  64868. #define __UCLIBC_MMAP_HAS_6_ARGS__
  64869. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  64870. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  64871. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  64872. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  64873. /* does your target have a broken create_module() ? */
  64874. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  64875. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/wordsize.h uClibc-git/libc/sysdeps/linux/ia64/bits/wordsize.h
  64876. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  64877. +++ uClibc-git/libc/sysdeps/linux/ia64/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  64878. @@ -12,8 +12,7 @@
  64879. Lesser General Public License for more details.
  64880. You should have received a copy of the GNU Lesser General Public
  64881. - License along with the GNU C Library; if not, write to the Free
  64882. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64883. - 02111-1307 USA. */
  64884. + License along with the GNU C Library; if not, see
  64885. + <http://www.gnu.org/licenses/>. */
  64886. #define __WORDSIZE 64
  64887. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/brk.S uClibc-git/libc/sysdeps/linux/ia64/brk.S
  64888. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/brk.S 2012-05-15 09:20:09.000000000 +0200
  64889. +++ uClibc-git/libc/sysdeps/linux/ia64/brk.S 2014-02-03 12:32:56.000000000 +0100
  64890. @@ -15,9 +15,8 @@
  64891. Lesser General Public License for more details.
  64892. You should have received a copy of the GNU Lesser General Public
  64893. - License along with the GNU C Library; if not, write to the Free
  64894. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64895. - 02111-1307 USA. */
  64896. + License along with the GNU C Library; if not, see
  64897. + <http://www.gnu.org/licenses/>. */
  64898. #include "sysdep.h"
  64899. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/clone2.S uClibc-git/libc/sysdeps/linux/ia64/clone2.S
  64900. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/clone2.S 2012-05-15 09:20:09.000000000 +0200
  64901. +++ uClibc-git/libc/sysdeps/linux/ia64/clone2.S 2014-02-03 12:32:56.000000000 +0100
  64902. @@ -12,9 +12,8 @@
  64903. Lesser General Public License for more details.
  64904. You should have received a copy of the GNU Lesser General Public
  64905. - License along with the GNU C Library; if not, write to the Free
  64906. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64907. - 02111-1307 USA. */
  64908. + License along with the GNU C Library; if not, see
  64909. + <http://www.gnu.org/licenses/>. */
  64910. #include "sysdep.h"
  64911. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/crt1.S uClibc-git/libc/sysdeps/linux/ia64/crt1.S
  64912. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/crt1.S 2012-05-15 09:20:09.000000000 +0200
  64913. +++ uClibc-git/libc/sysdeps/linux/ia64/crt1.S 2014-02-03 12:32:56.000000000 +0100
  64914. @@ -30,9 +30,8 @@
  64915. Lesser General Public License for more details.
  64916. You should have received a copy of the GNU Lesser General Public
  64917. - License along with the GNU C Library; if not, write to the Free
  64918. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64919. - 02111-1307 USA. */
  64920. + License along with the GNU C Library; if not, see
  64921. + <http://www.gnu.org/licenses/>. */
  64922. #define __ASSEMBLY__
  64923. #include "sysdep.h"
  64924. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/fork.S uClibc-git/libc/sysdeps/linux/ia64/fork.S
  64925. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/fork.S 2012-05-15 09:20:09.000000000 +0200
  64926. +++ uClibc-git/libc/sysdeps/linux/ia64/fork.S 2014-02-03 12:32:56.000000000 +0100
  64927. @@ -12,9 +12,8 @@
  64928. Lesser General Public License for more details.
  64929. You should have received a copy of the GNU Lesser General Public
  64930. - License along with the GNU C Library; if not, write to the Free
  64931. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64932. - 02111-1307 USA. */
  64933. + License along with the GNU C Library; if not, see
  64934. + <http://www.gnu.org/licenses/>. */
  64935. #include "sysdep.h"
  64936. @@ -24,7 +23,10 @@
  64937. /* pid_t fork(void); */
  64938. /* Implemented as a clone system call with parameters SIGCHLD and 0 */
  64939. -ENTRY(__libc_fork)
  64940. +#ifdef __UCLIBC_HAS_THREADS__
  64941. +.weak fork
  64942. +#endif
  64943. +ENTRY(fork)
  64944. alloc r2=ar.pfs,0,0,2,0
  64945. mov out0=SIGCHLD /* Return SIGCHLD when child finishes */
  64946. /* no other clone flags; nothing shared */
  64947. @@ -34,9 +36,8 @@
  64948. cmp.eq p6,p0=-1,r10
  64949. (p6) br.cond.spnt.few __syscall_error
  64950. ret
  64951. -PSEUDO_END(__libc_fork)
  64952. -
  64953. -weak_alias (__libc_fork, __fork)
  64954. -libc_hidden_def (__fork)
  64955. -weak_alias (__libc_fork, fork)
  64956. -libc_hidden_weak (fork)
  64957. +PSEUDO_END(fork)
  64958. +#ifdef __UCLIBC_HAS_THREADS__
  64959. +strong_alias(fork,__libc_fork)
  64960. +#endif
  64961. +libc_hidden_def(fork)
  64962. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/ia64/jmpbuf-unwind.h
  64963. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  64964. +++ uClibc-git/libc/sysdeps/linux/ia64/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  64965. @@ -0,0 +1,11 @@
  64966. +/*
  64967. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  64968. + *
  64969. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  64970. + */
  64971. +#include <setjmp.h>
  64972. +
  64973. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  64974. + variable at ADDRESS. */
  64975. +#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
  64976. + ((void *)(_address) < (void *)(((long *)_jmpbuf)[0]))
  64977. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/__longjmp.S uClibc-git/libc/sysdeps/linux/ia64/__longjmp.S
  64978. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  64979. +++ uClibc-git/libc/sysdeps/linux/ia64/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  64980. @@ -12,9 +12,8 @@
  64981. Lesser General Public License for more details.
  64982. You should have received a copy of the GNU Lesser General Public
  64983. - License along with the GNU C Library; if not, write to the Free
  64984. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  64985. - 02111-1307 USA.
  64986. + License along with the GNU C Library; if not, see
  64987. + <http://www.gnu.org/licenses/>.
  64988. Note that __sigsetjmp() did NOT flush the register stack. Instead,
  64989. we do it here since __longjmp() is usually much less frequently
  64990. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/Makefile.arch uClibc-git/libc/sysdeps/linux/ia64/Makefile.arch
  64991. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  64992. +++ uClibc-git/libc/sysdeps/linux/ia64/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  64993. @@ -5,8 +5,8 @@
  64994. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  64995. #
  64996. -CSRC := __syscall_error.c
  64997. +CSRC-y := __syscall_error.c
  64998. -SSRC := \
  64999. +SSRC-y := \
  65000. __longjmp.S brk.S bsd-setjmp.S bsd-_setjmp.S clone2.S fork.S \
  65001. pipe.S setjmp.S syscall.S vfork.S
  65002. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/pipe.S uClibc-git/libc/sysdeps/linux/ia64/pipe.S
  65003. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/pipe.S 2012-05-15 09:20:09.000000000 +0200
  65004. +++ uClibc-git/libc/sysdeps/linux/ia64/pipe.S 2014-02-03 12:32:56.000000000 +0100
  65005. @@ -13,9 +13,8 @@
  65006. Lesser General Public License for more details.
  65007. You should have received a copy of the GNU Lesser General Public
  65008. - License along with the GNU C Library; if not, write to the Free
  65009. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65010. - 02111-1307 USA. */
  65011. + License along with the GNU C Library; if not, see
  65012. + <http://www.gnu.org/licenses/>. */
  65013. /* __pipe is a special syscall since it returns two values. */
  65014. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/setjmp.S uClibc-git/libc/sysdeps/linux/ia64/setjmp.S
  65015. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  65016. +++ uClibc-git/libc/sysdeps/linux/ia64/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  65017. @@ -13,9 +13,8 @@
  65018. Lesser General Public License for more details.
  65019. You should have received a copy of the GNU Lesser General Public
  65020. - License along with the GNU C Library; if not, write to the Free
  65021. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65022. - 02111-1307 USA.
  65023. + License along with the GNU C Library; if not, see
  65024. + <http://www.gnu.org/licenses/>.
  65025. The layout of the jmp_buf is as follows. This is subject to change
  65026. and user-code should never depend on the particular layout of
  65027. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/io.h uClibc-git/libc/sysdeps/linux/ia64/sys/io.h
  65028. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  65029. +++ uClibc-git/libc/sysdeps/linux/ia64/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  65030. @@ -13,9 +13,8 @@
  65031. Lesser General Public License for more details.
  65032. You should have received a copy of the GNU Lesser General Public
  65033. - License along with the GNU C Library; if not, write to the Free
  65034. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65035. - 02111-1307 USA. */
  65036. + License along with the GNU C Library; if not, see
  65037. + <http://www.gnu.org/licenses/>. */
  65038. #ifndef _SYS_IO_H
  65039. #define _SYS_IO_H 1
  65040. @@ -24,6 +23,7 @@
  65041. __BEGIN_DECLS
  65042. +#if defined __UCLIBC_LINUX_SPECIFIC__
  65043. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  65044. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  65045. permission off for that range. This call requires root privileges.
  65046. @@ -33,12 +33,12 @@
  65047. E.g., Linux/Alpha for Alpha PCs supports this. */
  65048. extern int ioperm (unsigned long int __from, unsigned long int __num,
  65049. int __turn_on);
  65050. -libc_hidden_proto(ioperm)
  65051. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  65052. access any I/O port is granted. This call requires root
  65053. privileges. */
  65054. extern int iopl (int __level);
  65055. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  65056. extern unsigned int _inb (unsigned long int __port);
  65057. extern unsigned int _inb (unsigned long int __port);
  65058. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/procfs.h uClibc-git/libc/sysdeps/linux/ia64/sys/procfs.h
  65059. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  65060. +++ uClibc-git/libc/sysdeps/linux/ia64/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  65061. @@ -12,9 +12,8 @@
  65062. Lesser General Public License for more details.
  65063. You should have received a copy of the GNU Lesser General Public
  65064. - License along with the GNU C Library; if not, write to the Free
  65065. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65066. - 02111-1307 USA. */
  65067. + License along with the GNU C Library; if not, see
  65068. + <http://www.gnu.org/licenses/>. */
  65069. #ifndef _SYS_PROCFS_H
  65070. #define _SYS_PROCFS_H 1
  65071. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ptrace.h uClibc-git/libc/sysdeps/linux/ia64/sys/ptrace.h
  65072. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  65073. +++ uClibc-git/libc/sysdeps/linux/ia64/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  65074. @@ -13,9 +13,8 @@
  65075. Lesser General Public License for more details.
  65076. You should have received a copy of the GNU Lesser General Public
  65077. - License along with the GNU C Library; if not, write to the Free
  65078. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65079. - 02111-1307 USA. */
  65080. + License along with the GNU C Library; if not, see
  65081. + <http://www.gnu.org/licenses/>. */
  65082. #ifndef _SYS_PTRACE_H
  65083. #define _SYS_PTRACE_H 1
  65084. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ucontext.h uClibc-git/libc/sysdeps/linux/ia64/sys/ucontext.h
  65085. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  65086. +++ uClibc-git/libc/sysdeps/linux/ia64/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  65087. @@ -12,9 +12,8 @@
  65088. Lesser General Public License for more details.
  65089. You should have received a copy of the GNU Lesser General Public
  65090. - License along with the GNU C Library; if not, write to the Free
  65091. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65092. - 02111-1307 USA. */
  65093. + License along with the GNU C Library; if not, see
  65094. + <http://www.gnu.org/licenses/>. */
  65095. #ifndef _SYS_UCONTEXT_H
  65096. #define _SYS_UCONTEXT_H 1
  65097. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/user.h uClibc-git/libc/sysdeps/linux/ia64/sys/user.h
  65098. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  65099. +++ uClibc-git/libc/sysdeps/linux/ia64/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  65100. @@ -12,9 +12,8 @@
  65101. Lesser General Public License for more details.
  65102. You should have received a copy of the GNU Lesser General Public
  65103. - License along with the GNU C Library; if not, write to the Free
  65104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65105. - 02111-1307 USA. */
  65106. + License along with the GNU C Library; if not, see
  65107. + <http://www.gnu.org/licenses/>. */
  65108. #ifndef _SYS_USER_H
  65109. #define _SYS_USER_H 1
  65110. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/syscall.S uClibc-git/libc/sysdeps/linux/ia64/syscall.S
  65111. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/syscall.S 2012-05-15 09:20:09.000000000 +0200
  65112. +++ uClibc-git/libc/sysdeps/linux/ia64/syscall.S 2014-02-03 12:32:56.000000000 +0100
  65113. @@ -13,9 +13,8 @@
  65114. Lesser General Public License for more details.
  65115. You should have received a copy of the GNU Lesser General Public
  65116. - License along with the GNU C Library; if not, write to the Free
  65117. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65118. - 02111-1307 USA. */
  65119. + License along with the GNU C Library; if not, see
  65120. + <http://www.gnu.org/licenses/>. */
  65121. #include "sysdep.h"
  65122. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sysdep.h uClibc-git/libc/sysdeps/linux/ia64/sysdep.h
  65123. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  65124. +++ uClibc-git/libc/sysdeps/linux/ia64/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  65125. @@ -14,13 +14,13 @@
  65126. Lesser General Public License for more details.
  65127. You should have received a copy of the GNU Lesser General Public
  65128. - License along with the GNU C Library; if not, write to the Free
  65129. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65130. - 02111-1307 USA. */
  65131. + License along with the GNU C Library; if not, see
  65132. + <http://www.gnu.org/licenses/>. */
  65133. #ifndef _LINUX_IA64_SYSDEP_H
  65134. #define _LINUX_IA64_SYSDEP_H 1
  65135. +#include <common/sysdep.h>
  65136. #include <features.h>
  65137. #include <asm/unistd.h>
  65138. @@ -49,6 +49,15 @@
  65139. C_LABEL(name) \
  65140. CALL_MCOUNT
  65141. +#define HIDDEN_ENTRY(name) \
  65142. + .text; \
  65143. + .align 32; \
  65144. + .proc C_SYMBOL_NAME(name); \
  65145. + .global C_SYMBOL_NAME(name); \
  65146. + .hidden C_SYMBOL_NAME(name); \
  65147. + C_LABEL(name) \
  65148. + CALL_MCOUNT
  65149. +
  65150. #define LEAF(name) \
  65151. .text; \
  65152. .align 32; \
  65153. @@ -161,7 +170,6 @@
  65154. #define ret br.ret.sptk.few b0
  65155. #define ret_NOERRNO ret
  65156. -#define ret_ERRVAL ret
  65157. #endif /* not __ASSEMBLER__ */
  65158. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/ia64/vfork.S uClibc-git/libc/sysdeps/linux/ia64/vfork.S
  65159. --- uClibc-0.9.33.2/libc/sysdeps/linux/ia64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  65160. +++ uClibc-git/libc/sysdeps/linux/ia64/vfork.S 2014-02-03 12:32:56.000000000 +0100
  65161. @@ -12,9 +12,8 @@
  65162. Lesser General Public License for more details.
  65163. You should have received a copy of the GNU Lesser General Public
  65164. - License along with the GNU C Library; if not, write to the Free
  65165. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65166. - 02111-1307 USA. */
  65167. + License along with the GNU C Library; if not, see
  65168. + <http://www.gnu.org/licenses/>. */
  65169. #include "sysdep.h"
  65170. @@ -29,7 +28,7 @@
  65171. /* pid_t vfork(void); */
  65172. /* Implemented as __clone_syscall(CLONE_VFORK | CLONE_VM | SIGCHLD, 0) */
  65173. -ENTRY(__vfork)
  65174. +HIDDEN_ENTRY(__vfork)
  65175. alloc r2=ar.pfs,0,0,2,0
  65176. mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
  65177. mov out1=0 /* Standard sp value. */
  65178. @@ -41,4 +40,4 @@
  65179. PSEUDO_END(__vfork)
  65180. weak_alias(__vfork,vfork)
  65181. -libc_hidden_weak(vfork)
  65182. +libc_hidden_def(vfork)
  65183. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/byteswap.h uClibc-git/libc/sysdeps/linux/m68k/bits/byteswap.h
  65184. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  65185. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  65186. @@ -13,9 +13,8 @@
  65187. Lesser General Public License for more details.
  65188. You should have received a copy of the GNU Lesser General Public
  65189. - License along with the GNU C Library; if not, write to the Free
  65190. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65191. - 02111-1307 USA. */
  65192. + License along with the GNU C Library; if not, see
  65193. + <http://www.gnu.org/licenses/>. */
  65194. #ifndef _ASM_BITS_BYTESWAP_H
  65195. #define _ASM_BITS_BYTESWAP_H 1
  65196. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fcntl.h uClibc-git/libc/sysdeps/linux/m68k/bits/fcntl.h
  65197. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  65198. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  65199. @@ -13,9 +13,8 @@
  65200. Lesser General Public License for more details.
  65201. You should have received a copy of the GNU Lesser General Public
  65202. - License along with the GNU C Library; if not, write to the Free
  65203. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65204. - 02111-1307 USA. */
  65205. + License along with the GNU C Library; if not, see
  65206. + <http://www.gnu.org/licenses/>. */
  65207. #ifndef _FCNTL_H
  65208. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  65209. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fenv.h uClibc-git/libc/sysdeps/linux/m68k/bits/fenv.h
  65210. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  65211. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  65212. @@ -12,9 +12,8 @@
  65213. Lesser General Public License for more details.
  65214. You should have received a copy of the GNU Lesser General Public
  65215. - License along with the GNU C Library; if not, write to the Free
  65216. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65217. - 02111-1307 USA. */
  65218. + License along with the GNU C Library; if not, see
  65219. + <http://www.gnu.org/licenses/>. */
  65220. #ifndef _FENV_H
  65221. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  65222. @@ -71,9 +70,9 @@
  65223. fenv_t;
  65224. /* If the default argument is used we use this value. */
  65225. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  65226. +#define FE_DFL_ENV ((const fenv_t *) -1)
  65227. #ifdef __USE_GNU
  65228. /* Floating-point environment where none of the exceptions are masked. */
  65229. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  65230. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  65231. #endif
  65232. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/huge_vall.h uClibc-git/libc/sysdeps/linux/m68k/bits/huge_vall.h
  65233. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  65234. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  65235. @@ -0,0 +1,42 @@
  65236. +/* `HUGE_VALL' constant for m68k (where it is infinity).
  65237. + Used by <stdlib.h> and <math.h> functions for overflow.
  65238. + Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  65239. + Free Software Foundation, Inc.
  65240. + This file is part of the GNU C Library.
  65241. +
  65242. + The GNU C Library is free software; you can redistribute it and/or
  65243. + modify it under the terms of the GNU Lesser General Public
  65244. + License as published by the Free Software Foundation; either
  65245. + version 2.1 of the License, or (at your option) any later version.
  65246. +
  65247. + The GNU C Library is distributed in the hope that it will be useful,
  65248. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  65249. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  65250. + Lesser General Public License for more details.
  65251. +
  65252. + You should have received a copy of the GNU Lesser General Public
  65253. + License along with the GNU C Library; if not, see
  65254. + <http://www.gnu.org/licenses/>. */
  65255. +
  65256. +#ifndef _MATH_H
  65257. +# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  65258. +#endif
  65259. +
  65260. +#if __GNUC_PREREQ(3,3)
  65261. +# define HUGE_VALL (__builtin_huge_vall ())
  65262. +#elif __GNUC_PREREQ(2,96)
  65263. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  65264. +#elif defined__GNUC__
  65265. +
  65266. +# define HUGE_VALL \
  65267. + (__extension__ \
  65268. + ((union { unsigned long __l[3]; long double __ld; }) \
  65269. + { __l: { 0x7fff0000UL, 0x80000000UL, 0UL } }).__ld)
  65270. +
  65271. +#else /* not GCC */
  65272. +
  65273. +static union { unsigned char __c[12]; long double __ld; } __huge_vall =
  65274. + { { 0x7f, 0xff, 0, 0, 0x80, 0, 0, 0, 0, 0, 0, 0 } };
  65275. +# define HUGE_VALL (__huge_vall.__ld)
  65276. +
  65277. +#endif /* GCC 2.95. */
  65278. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/m68k/bits/kernel_types.h
  65279. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  65280. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  65281. @@ -32,6 +32,8 @@
  65282. typedef unsigned short __kernel_old_gid_t;
  65283. typedef long long __kernel_loff_t;
  65284. typedef __kernel_dev_t __kernel_old_dev_t;
  65285. +typedef long __kernel_long_t;
  65286. +typedef unsigned long __kernel_ulong_t;
  65287. typedef struct {
  65288. #ifdef __USE_ALL
  65289. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathdef.h uClibc-git/libc/sysdeps/linux/m68k/bits/mathdef.h
  65290. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  65291. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  65292. @@ -12,9 +12,8 @@
  65293. Lesser General Public License for more details.
  65294. You should have received a copy of the GNU Lesser General Public
  65295. - License along with the GNU C Library; if not, write to the Free
  65296. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65297. - 02111-1307 USA. */
  65298. + License along with the GNU C Library; if not, see
  65299. + <http://www.gnu.org/licenses/>. */
  65300. #if !defined _MATH_H && !defined _COMPLEX_H
  65301. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  65302. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathinline.h uClibc-git/libc/sysdeps/linux/m68k/bits/mathinline.h
  65303. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  65304. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  65305. @@ -14,9 +14,8 @@
  65306. Lesser General Public License for more details.
  65307. You should have received a copy of the GNU Lesser General Public
  65308. - License along with the GNU C Library; if not, write to the Free
  65309. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65310. - 02111-1307 USA. */
  65311. + License along with the GNU C Library; if not, see
  65312. + <http://www.gnu.org/licenses/>. */
  65313. #ifdef __GNUC__
  65314. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/poll.h uClibc-git/libc/sysdeps/linux/m68k/bits/poll.h
  65315. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  65316. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  65317. @@ -12,9 +12,8 @@
  65318. Lesser General Public License for more details.
  65319. You should have received a copy of the GNU Lesser General Public
  65320. - License along with the GNU C Library; if not, write to the Free
  65321. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65322. - 02111-1307 USA. */
  65323. + License along with the GNU C Library; if not, see
  65324. + <http://www.gnu.org/licenses/>. */
  65325. #ifndef _SYS_POLL_H
  65326. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  65327. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/setjmp.h uClibc-git/libc/sysdeps/linux/m68k/bits/setjmp.h
  65328. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  65329. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  65330. @@ -13,9 +13,8 @@
  65331. Lesser General Public License for more details.
  65332. You should have received a copy of the GNU Lesser General Public
  65333. - License along with the GNU C Library; if not, write to the Free
  65334. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65335. - 02111-1307 USA. */
  65336. + License along with the GNU C Library; if not, see
  65337. + <http://www.gnu.org/licenses/>. */
  65338. /* Define the machine-dependent type `jmp_buf'. m68k version. */
  65339. #ifndef _BITS_SETJMP_H
  65340. @@ -25,7 +24,7 @@
  65341. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  65342. #endif
  65343. -#ifndef _ASM
  65344. +#include <features.h>
  65345. typedef struct
  65346. {
  65347. @@ -37,7 +36,7 @@
  65348. int *__fp;
  65349. int *__sp;
  65350. -#if defined __HAVE_68881__ || defined __HAVE_FPU__
  65351. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  65352. /* There are eight floating point registers which
  65353. are saved in IEEE 96-bit extended format. */
  65354. char __fpregs[8 * (96 / 8)];
  65355. @@ -45,24 +44,4 @@
  65356. } __jmp_buf[1];
  65357. -#endif
  65358. -
  65359. -#define JB_REGS 0
  65360. -#define JB_DREGS 0
  65361. -#define JB_AREGS 24
  65362. -#define JB_PC 48
  65363. -#define JB_FPREGS 52
  65364. -
  65365. -#if defined __HAVE_68881__ || defined __HAVE_FPU__
  65366. -# define JB_SIZE 76
  65367. -#else
  65368. -# define JB_SIZE 52
  65369. -#endif
  65370. -
  65371. -
  65372. -/* Test if longjmp to JMPBUF would unwind the frame
  65373. - containing a local variable at ADDRESS. */
  65374. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  65375. - ((void *) (address) < (void *) (jmpbuf)->__aregs[5])
  65376. -
  65377. #endif /* bits/setjmp.h */
  65378. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h
  65379. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  65380. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  65381. @@ -13,9 +13,8 @@
  65382. Lesser General Public License for more details.
  65383. You should have received a copy of the GNU Lesser General Public
  65384. - License along with the GNU C Library; if not, write to the Free
  65385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65386. - 02111-1307 USA. */
  65387. + License along with the GNU C Library; if not, see
  65388. + <http://www.gnu.org/licenses/>. */
  65389. #define SIGCONTEXT int _code, struct sigcontext *
  65390. #define SIGCONTEXT_EXTRA_ARGS _code,
  65391. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/m68k/bits/stackinfo.h
  65392. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  65393. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  65394. @@ -12,9 +12,8 @@
  65395. Lesser General Public License for more details.
  65396. You should have received a copy of the GNU Lesser General Public
  65397. - License along with the GNU C Library; if not, write to the Free
  65398. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65399. - 02111-1307 USA. */
  65400. + License along with the GNU C Library; if not, see
  65401. + <http://www.gnu.org/licenses/>. */
  65402. /* This file contains a bit of information about the stack allocation
  65403. of the processor. */
  65404. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stat.h uClibc-git/libc/sysdeps/linux/m68k/bits/stat.h
  65405. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  65406. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  65407. @@ -13,9 +13,8 @@
  65408. Lesser General Public License for more details.
  65409. You should have received a copy of the GNU Lesser General Public
  65410. - License along with the GNU C Library; if not, write to the Free
  65411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65412. - 02111-1307 USA. */
  65413. + License along with the GNU C Library; if not, see
  65414. + <http://www.gnu.org/licenses/>. */
  65415. #ifndef _SYS_STAT_H
  65416. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  65417. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h
  65418. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  65419. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  65420. @@ -15,8 +15,8 @@
  65421. /* can your target use syscall6() for mmap ? */
  65422. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  65423. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  65424. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  65425. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  65426. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  65427. /* does your target have a broken create_module() ? */
  65428. #define __UCLIBC_BROKEN_CREATE_MODULE__
  65429. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/m68k/bits/uClibc_page.h
  65430. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  65431. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  65432. @@ -11,8 +11,8 @@
  65433. * Library General Public License for more details.
  65434. *
  65435. * You should have received a copy of the GNU Library General Public
  65436. - * License along with this library; if not, write to the Free
  65437. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  65438. + * License along with this library; if not, see
  65439. + * <http://www.gnu.org/licenses/>.
  65440. */
  65441. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  65442. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/wordsize.h uClibc-git/libc/sysdeps/linux/m68k/bits/wordsize.h
  65443. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  65444. +++ uClibc-git/libc/sysdeps/linux/m68k/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  65445. @@ -12,8 +12,7 @@
  65446. Lesser General Public License for more details.
  65447. You should have received a copy of the GNU Lesser General Public
  65448. - License along with the GNU C Library; if not, write to the Free
  65449. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65450. - 02111-1307 USA. */
  65451. + License along with the GNU C Library; if not, see
  65452. + <http://www.gnu.org/licenses/>. */
  65453. #define __WORDSIZE 32
  65454. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/m68k/bsd-_setjmp.S
  65455. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  65456. +++ uClibc-git/libc/sysdeps/linux/m68k/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  65457. @@ -2,9 +2,8 @@
  65458. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  65459. /* This file is released under the LGPL, any version you like */
  65460. -#define _ASM
  65461. -#define _SETJMP_H
  65462. -#include <bits/setjmp.h>
  65463. +#include <features.h>
  65464. +#include <jmpbuf-offsets.h>
  65465. .globl _setjmp;
  65466. .type _setjmp,@function
  65467. @@ -14,7 +13,7 @@
  65468. moveal %sp@(4), %a0
  65469. movel %sp@(0), %a0@(JB_PC)
  65470. moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
  65471. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  65472. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  65473. fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
  65474. #endif
  65475. clrl %d0
  65476. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/m68k/bsd-setjmp.S
  65477. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  65478. +++ uClibc-git/libc/sysdeps/linux/m68k/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  65479. @@ -2,9 +2,8 @@
  65480. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  65481. /* This file is released under the LGPL, any version you like */
  65482. -#define _ASM
  65483. -#define _SETJMP_H
  65484. -#include <bits/setjmp.h>
  65485. +#include <features.h>
  65486. +#include <jmpbuf-offsets.h>
  65487. #include "m68k_pic.S"
  65488. .globl setjmp;
  65489. @@ -15,7 +14,7 @@
  65490. moveal %sp@(4), %a0
  65491. movel %sp@(0), %a0@(JB_PC)
  65492. moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
  65493. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  65494. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  65495. fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
  65496. #endif
  65497. clrl %d0
  65498. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/crt1.S uClibc-git/libc/sysdeps/linux/m68k/crt1.S
  65499. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/crt1.S 2012-05-15 09:20:09.000000000 +0200
  65500. +++ uClibc-git/libc/sysdeps/linux/m68k/crt1.S 2014-02-03 12:32:56.000000000 +0100
  65501. @@ -30,9 +30,8 @@
  65502. Lesser General Public License for more details.
  65503. You should have received a copy of the GNU Lesser General Public
  65504. - License along with the GNU C Library; if not, write to the Free
  65505. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65506. - 02111-1307 USA. */
  65507. + License along with the GNU C Library; if not, see
  65508. + <http://www.gnu.org/licenses/>. */
  65509. #include <features.h>
  65510. #include "m68k_pic.S"
  65511. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/fpu_control.h uClibc-git/libc/sysdeps/linux/m68k/fpu_control.h
  65512. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  65513. +++ uClibc-git/libc/sysdeps/linux/m68k/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  65514. @@ -13,9 +13,8 @@
  65515. Lesser General Public License for more details.
  65516. You should have received a copy of the GNU Lesser General Public
  65517. - License along with the GNU C Library; if not, write to the Free
  65518. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65519. - 02111-1307 USA. */
  65520. + License along with the GNU C Library; if not, see
  65521. + <http://www.gnu.org/licenses/>. */
  65522. #ifndef _FPU_CONTROL_H
  65523. #define _FPU_CONTROL_H
  65524. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/m68k/jmpbuf-offsets.h
  65525. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  65526. +++ uClibc-git/libc/sysdeps/linux/m68k/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  65527. @@ -0,0 +1,19 @@
  65528. +/*
  65529. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  65530. + *
  65531. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  65532. + */
  65533. +
  65534. +#include <features.h>
  65535. +
  65536. +#define JB_REGS 0
  65537. +#define JB_DREGS 0
  65538. +#define JB_AREGS 24
  65539. +#define JB_PC 48
  65540. +#define JB_FPREGS 52
  65541. +
  65542. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  65543. +# define JB_SIZE 76
  65544. +#else
  65545. +# define JB_SIZE 52
  65546. +#endif
  65547. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/m68k/jmpbuf-unwind.h
  65548. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  65549. +++ uClibc-git/libc/sysdeps/linux/m68k/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  65550. @@ -0,0 +1,11 @@
  65551. +/*
  65552. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  65553. + *
  65554. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  65555. + */
  65556. +#include <setjmp.h>
  65557. +
  65558. +/* Test if longjmp to JMPBUF would unwind the frame
  65559. + containing a local variable at ADDRESS. */
  65560. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  65561. + ((void *) (address) < (void *) (jmpbuf)->__aregs[5])
  65562. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/__longjmp.S uClibc-git/libc/sysdeps/linux/m68k/__longjmp.S
  65563. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  65564. +++ uClibc-git/libc/sysdeps/linux/m68k/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  65565. @@ -2,10 +2,8 @@
  65566. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  65567. /* This file is released under the LGPL, any version you like */
  65568. -#define _ASM
  65569. -#define _SETJMP_H
  65570. #include <features.h>
  65571. -#include <bits/setjmp.h>
  65572. +#include <jmpbuf-offsets.h>
  65573. .globl __longjmp
  65574. .type __longjmp,@function
  65575. @@ -17,7 +15,7 @@
  65576. movel #1, %d0
  65577. 1:
  65578. moveml %a0@(JB_REGS), %d2-%d7/%a2-%a7
  65579. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  65580. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  65581. fmovemx %a0@(JB_FPREGS), %fp2-%fp7
  65582. #endif
  65583. movel %a0@(JB_PC), %sp@
  65584. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/Makefile.arch uClibc-git/libc/sysdeps/linux/m68k/Makefile.arch
  65585. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  65586. +++ uClibc-git/libc/sysdeps/linux/m68k/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  65587. @@ -5,6 +5,6 @@
  65588. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  65589. #
  65590. -CSRC := brk.c __syscall_error.c
  65591. +CSRC-y := brk.c __syscall_error.c
  65592. -SSRC := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S vfork.S
  65593. +SSRC-y := __longjmp.S bsd-_setjmp.S bsd-setjmp.S clone.S setjmp.S vfork.S
  65594. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/setjmp.S uClibc-git/libc/sysdeps/linux/m68k/setjmp.S
  65595. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  65596. +++ uClibc-git/libc/sysdeps/linux/m68k/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  65597. @@ -2,9 +2,8 @@
  65598. /* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
  65599. /* This file is released under the LGPL, any version you like */
  65600. -#define _ASM
  65601. -#define _SETJMP_H
  65602. -#include <bits/setjmp.h>
  65603. +#include <features.h>
  65604. +#include <jmpbuf-offsets.h>
  65605. #include "m68k_pic.S"
  65606. .globl __sigsetjmp;
  65607. @@ -15,7 +14,7 @@
  65608. moveal %sp@(4), %a0
  65609. movel %sp@(0), %a0@(JB_PC)
  65610. moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
  65611. -#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
  65612. +#if defined __HAVE_68881__ || defined __UCLIBC_HAS_FPU__
  65613. fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
  65614. #endif
  65615. clrl %d0
  65616. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/procfs.h uClibc-git/libc/sysdeps/linux/m68k/sys/procfs.h
  65617. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  65618. +++ uClibc-git/libc/sysdeps/linux/m68k/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  65619. @@ -12,9 +12,8 @@
  65620. Lesser General Public License for more details.
  65621. You should have received a copy of the GNU Lesser General Public
  65622. - License along with the GNU C Library; if not, write to the Free
  65623. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65624. - 02111-1307 USA. */
  65625. + License along with the GNU C Library; if not, see
  65626. + <http://www.gnu.org/licenses/>. */
  65627. #ifndef _SYS_PROCFS_H
  65628. #define _SYS_PROCFS_H 1
  65629. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/reg.h uClibc-git/libc/sysdeps/linux/m68k/sys/reg.h
  65630. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  65631. +++ uClibc-git/libc/sysdeps/linux/m68k/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  65632. @@ -12,9 +12,8 @@
  65633. Lesser General Public License for more details.
  65634. You should have received a copy of the GNU Lesser General Public
  65635. - License along with the GNU C Library; if not, write to the Free
  65636. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65637. - 02111-1307 USA. */
  65638. + License along with the GNU C Library; if not, see
  65639. + <http://www.gnu.org/licenses/>. */
  65640. #ifndef _SYS_REG_H
  65641. #define _SYS_REG_H 1
  65642. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/ucontext.h uClibc-git/libc/sysdeps/linux/m68k/sys/ucontext.h
  65643. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  65644. +++ uClibc-git/libc/sysdeps/linux/m68k/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  65645. @@ -12,9 +12,8 @@
  65646. Lesser General Public License for more details.
  65647. You should have received a copy of the GNU Lesser General Public
  65648. - License along with the GNU C Library; if not, write to the Free
  65649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65650. - 02111-1307 USA. */
  65651. + License along with the GNU C Library; if not, see
  65652. + <http://www.gnu.org/licenses/>. */
  65653. /* System V/m68k ABI compliant context switching support. */
  65654. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/m68k/vfork.S uClibc-git/libc/sysdeps/linux/m68k/vfork.S
  65655. --- uClibc-0.9.33.2/libc/sysdeps/linux/m68k/vfork.S 2012-05-15 09:20:09.000000000 +0200
  65656. +++ uClibc-git/libc/sysdeps/linux/m68k/vfork.S 2014-02-03 12:32:56.000000000 +0100
  65657. @@ -4,9 +4,7 @@
  65658. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  65659. */
  65660. -#include <features.h>
  65661. -
  65662. -#include <asm/unistd.h>
  65663. +#include <sys/syscall.h>
  65664. #ifndef __NR_vfork
  65665. #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
  65666. @@ -16,7 +14,6 @@
  65667. .text
  65668. .align 2
  65669. - .globl errno
  65670. .globl __vfork
  65671. .hidden __vfork
  65672. .type __vfork,@function
  65673. @@ -42,4 +39,4 @@
  65674. .size __vfork,.-__vfork
  65675. weak_alias(__vfork,vfork)
  65676. -libc_hidden_weak(vfork)
  65677. +libc_hidden_def(vfork)
  65678. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/Makefile.commonarch uClibc-git/libc/sysdeps/linux/Makefile.commonarch
  65679. --- uClibc-0.9.33.2/libc/sysdeps/linux/Makefile.commonarch 2012-05-15 09:20:09.000000000 +0200
  65680. +++ uClibc-git/libc/sysdeps/linux/Makefile.commonarch 2014-02-03 12:32:56.000000000 +0100
  65681. @@ -8,15 +8,15 @@
  65682. ARCH_DIR := $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
  65683. ARCH_OUT := $(top_builddir)libc/sysdeps/linux/$(TARGET_ARCH)
  65684. -ARCH_CSRC := $(patsubst %.c,$(ARCH_DIR)/%.c,$(CSRC))
  65685. -ARCH_COBJ := $(patsubst %.c,$(ARCH_OUT)/%.o,$(CSRC))
  65686. -ARCH_SSRC = $(patsubst %.s,$(ARCH_DIR)/%.s,$(patsubst %.S,$(ARCH_DIR)/%.S,$(SSRC)))
  65687. -ARCH_SOBJ = $(patsubst %.s,$(ARCH_OUT)/%.o,$(patsubst %.S,$(ARCH_OUT)/%.o,$(SSRC)))
  65688. +ARCH_CSRC := $(addprefix $(ARCH_DIR)/,$(CSRC-y))
  65689. +ARCH_COBJ := $(addprefix $(ARCH_OUT)/,$(CSRC-y:.c=.o))
  65690. +ARCH_SSRC = $(addprefix $(ARCH_DIR)/,$(SSRC-y))
  65691. +ARCH_SOBJ = $(patsubst %.s,%.o,$(patsubst %.S,%.o,$(addprefix $(ARCH_OUT)/,$(SSRC-y))))
  65692. -ARCH_OBJS = $(ARCH_COBJ) $(ARCH_SOBJ)
  65693. +ARCH_OBJS-y = $(ARCH_COBJ) $(ARCH_SOBJ)
  65694. crt-y := FORCE
  65695. -libc-y += $(ARCH_OBJS)
  65696. +libc-y += $(ARCH_OBJS-y)
  65697. libc-nomulti-y += $(ARCH_SOBJ)
  65698. objclean-y += CLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
  65699. @@ -37,5 +37,23 @@
  65700. headers_clean-y += HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
  65701. HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)):
  65702. $(do_rm) $(ARCH_HEADERS_OUT)
  65703. -
  65704. endif
  65705. +
  65706. +CFLAGS-ucontext_i.c = -S
  65707. +
  65708. +$(ARCH_OUT)/ucontext_i.c: $(ARCH_DIR)/ucontext_i.sym
  65709. + $(do_awk) $(top_srcdir)extra/scripts/gen-as-const.awk $< > $@
  65710. +
  65711. +$(ARCH_OUT)/ucontext_i.s: $(ARCH_OUT)/ucontext_i.c
  65712. + $(compile.c)
  65713. +
  65714. +$(ARCH_OUT)/ucontext_i.h: $(ARCH_OUT)/ucontext_i.s
  65715. + $(do_sed) $(PTHREAD_GENERATE_MANGLE) $< > $@
  65716. +
  65717. +pregen-headers-$(UCLIBC_HAS_CONTEXT_FUNCS) += $(ARCH_OUT)/ucontext_i.h
  65718. +
  65719. +headers_clean-$(UCLIBC_HAS_CONTEXT_FUNCS) += \
  65720. + HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i)
  65721. +
  65722. +HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)/ucontext_i):
  65723. + $(do_rm) $(addprefix $(ARCH_OUT)/ucontext_i., c h s)
  65724. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/atomic.h uClibc-git/libc/sysdeps/linux/metag/bits/atomic.h
  65725. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/atomic.h 1970-01-01 01:00:00.000000000 +0100
  65726. +++ uClibc-git/libc/sysdeps/linux/metag/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  65727. @@ -0,0 +1,66 @@
  65728. +/*
  65729. + * Copyrith (C) 2013 Imagination Technologies Ltd.
  65730. + *
  65731. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  65732. + *
  65733. + */
  65734. +
  65735. +#include <stdint.h>
  65736. +#include <sysdep.h>
  65737. +
  65738. +typedef int8_t atomic8_t;
  65739. +typedef uint8_t uatomic8_t;
  65740. +typedef int_fast8_t atomic_fast8_t;
  65741. +typedef uint_fast8_t uatomic_fast8_t;
  65742. +
  65743. +typedef int32_t atomic32_t;
  65744. +typedef uint32_t uatomic32_t;
  65745. +typedef int_fast32_t atomic_fast32_t;
  65746. +typedef uint_fast32_t uatomic_fast32_t;
  65747. +
  65748. +typedef intptr_t atomicptr_t;
  65749. +typedef uintptr_t uatomicptr_t;
  65750. +typedef intmax_t atomic_max_t;
  65751. +typedef uintmax_t uatomic_max_t;
  65752. +
  65753. +void __metag_link_error (void);
  65754. +
  65755. +#define atomic_full_barrier() \
  65756. + __asm__ __volatile__("": : :"memory")
  65757. +
  65758. +/* Atomic compare and exchange. This sequence relies on the kernel to
  65759. + provide a compare and exchange operation which is atomic. */
  65760. +
  65761. +#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
  65762. + ({ __metag_link_error (); oldval; })
  65763. +
  65764. +#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
  65765. + ({ __metag_link_error (); oldval; })
  65766. +
  65767. +/* This code uses the kernel helper to do cmpxchg. It relies on the fact
  65768. + the helper code only clobbers D0Re0. */
  65769. +#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
  65770. + ({ register __typeof (oldval) a_current __asm__ ("D1Ar1"); \
  65771. + register __typeof (oldval) a_newval __asm__ ("D0Ar2") = (newval); \
  65772. + register __typeof (mem) a_ptr __asm__ ("D1Ar3") = (mem); \
  65773. + register __typeof (oldval) a_oldval __asm__ ("D0Ar4") = (oldval); \
  65774. + __asm__ __volatile__ \
  65775. + ("0:\n\t" \
  65776. + "GETD %[cur], [%[ptr]]\n\t" \
  65777. + "CMP %[cur], %[old]\n\t" \
  65778. + "BNE 1f\n\t" \
  65779. + "MOVT D1RtP, #0x6fff\n\t" \
  65780. + "ADD D1RtP, D1RtP, #0xf040\n\t" \
  65781. + "SWAP D1RtP, PC\n\t" \
  65782. + "MOV %[cur], %[old]\n\t" \
  65783. + "CMP D0Re0, #0\n\t" \
  65784. + "BNE 0b\n\t" \
  65785. + "1:" \
  65786. + : [cur] "=&r" (a_current) \
  65787. + : [new] "r" (a_newval), [ptr] "r" (a_ptr), \
  65788. + [old] "r" (a_oldval) \
  65789. + : "D0Re0", "D1RtP", "cc", "memory"); \
  65790. + a_current; })
  65791. +
  65792. +#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
  65793. + ({ __metag_link_error (); oldval; })
  65794. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/endian.h uClibc-git/libc/sysdeps/linux/metag/bits/endian.h
  65795. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/endian.h 1970-01-01 01:00:00.000000000 +0100
  65796. +++ uClibc-git/libc/sysdeps/linux/metag/bits/endian.h 2014-02-03 12:32:56.000000000 +0100
  65797. @@ -0,0 +1,12 @@
  65798. +/* Meta is little endian
  65799. + *
  65800. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  65801. + *
  65802. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  65803. + */
  65804. +
  65805. +#ifndef _ENDIAN_H
  65806. +# error "Never use <bits/endian.h> directly; include <endian.h> instead."
  65807. +#endif
  65808. +
  65809. +#define __BYTE_ORDER __LITTLE_ENDIAN
  65810. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fcntl.h uClibc-git/libc/sysdeps/linux/metag/bits/fcntl.h
  65811. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100
  65812. +++ uClibc-git/libc/sysdeps/linux/metag/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  65813. @@ -0,0 +1,238 @@
  65814. +/* O_*, F_*, FD_* bit values for Linux.
  65815. + Copyright (C) 1995-1998, 2000, 2004, 2006, 2007, 2008
  65816. + Free Software Foundation, Inc.
  65817. + This file is part of the GNU C Library.
  65818. +
  65819. + The GNU C Library is free software; you can redistribute it and/or
  65820. + modify it under the terms of the GNU Lesser General Public
  65821. + License as published by the Free Software Foundation; either
  65822. + version 2.1 of the License, or (at your option) any later version.
  65823. +
  65824. + The GNU C Library is distributed in the hope that it will be useful,
  65825. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  65826. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  65827. + Lesser General Public License for more details.
  65828. +
  65829. + You should have received a copy of the GNU Lesser General Public
  65830. + License along with the GNU C Library; if not, write to the Free
  65831. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  65832. + 02111-1307 USA. */
  65833. +
  65834. +#ifndef _FCNTL_H
  65835. +# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  65836. +#endif
  65837. +
  65838. +#include <sys/types.h>
  65839. +#ifdef __USE_GNU
  65840. +# include <bits/uio.h>
  65841. +#endif
  65842. +
  65843. +
  65844. +/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  65845. + located on an ext2 file system */
  65846. +#define O_ACCMODE 0003
  65847. +#define O_RDONLY 00
  65848. +#define O_WRONLY 01
  65849. +#define O_RDWR 02
  65850. +#define O_CREAT 0100 /* not fcntl */
  65851. +#define O_EXCL 0200 /* not fcntl */
  65852. +#define O_NOCTTY 0400 /* not fcntl */
  65853. +#define O_TRUNC 01000 /* not fcntl */
  65854. +#define O_APPEND 02000
  65855. +#define O_NONBLOCK 04000
  65856. +#define O_NDELAY O_NONBLOCK
  65857. +#define O_SYNC 010000
  65858. +#define O_FSYNC O_SYNC
  65859. +#define O_ASYNC 020000
  65860. +
  65861. +#ifdef __USE_GNU
  65862. +# define O_DIRECT 040000 /* Direct disk access. */
  65863. +# define O_DIRECTORY 0200000 /* Must be a directory. */
  65864. +# define O_NOFOLLOW 0400000 /* Do not follow links. */
  65865. +# define O_NOATIME 01000000 /* Do not set atime. */
  65866. +# define O_CLOEXEC 02000000 /* Set close_on_exec. */
  65867. +#endif
  65868. +
  65869. +/* For now Linux has synchronisity options for data and read operations.
  65870. + We define the symbols here but let them do the same as O_SYNC since
  65871. + this is a superset. */
  65872. +#if defined __USE_POSIX199309 || defined __USE_UNIX98
  65873. +# define O_DSYNC O_SYNC /* Synchronize data. */
  65874. +# define O_RSYNC O_SYNC /* Synchronize read operations. */
  65875. +#endif
  65876. +
  65877. +#ifdef __USE_LARGEFILE64
  65878. +# define O_LARGEFILE 0100000
  65879. +#endif
  65880. +
  65881. +/* Values for the second argument to `fcntl'. */
  65882. +#define F_DUPFD 0 /* Duplicate file descriptor. */
  65883. +#define F_GETFD 1 /* Get file descriptor flags. */
  65884. +#define F_SETFD 2 /* Set file descriptor flags. */
  65885. +#define F_GETFL 3 /* Get file status flags. */
  65886. +#define F_SETFL 4 /* Set file status flags. */
  65887. +#ifndef __USE_FILE_OFFSET64
  65888. +# define F_GETLK 5 /* Get record locking info. */
  65889. +# define F_SETLK 6 /* Set record locking info (non-blocking). */
  65890. +# define F_SETLKW 7 /* Set record locking info (blocking). */
  65891. +#else
  65892. +# define F_GETLK F_GETLK64 /* Get record locking info. */
  65893. +# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/
  65894. +# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */
  65895. +#endif
  65896. +#define F_GETLK64 12 /* Get record locking info. */
  65897. +#define F_SETLK64 13 /* Set record locking info (non-blocking). */
  65898. +#define F_SETLKW64 14 /* Set record locking info (blocking). */
  65899. +
  65900. +#if defined __USE_BSD || defined __USE_UNIX98
  65901. +# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
  65902. +# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
  65903. +#endif
  65904. +
  65905. +#ifdef __USE_GNU
  65906. +# define F_SETSIG 10 /* Set number of signal to be sent. */
  65907. +# define F_GETSIG 11 /* Get number of signal to be sent. */
  65908. +#endif
  65909. +
  65910. +#ifdef __USE_GNU
  65911. +# define F_SETLEASE 1024 /* Set a lease. */
  65912. +# define F_GETLEASE 1025 /* Enquire what lease is active. */
  65913. +# define F_NOTIFY 1026 /* Request notfications on a directory. */
  65914. +# define F_DUPFD_CLOEXEC 1030 /* Duplicate file descriptor with
  65915. + close-on-exit set on new fd. */
  65916. +#endif
  65917. +
  65918. +/* For F_[GET|SET]FD. */
  65919. +#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
  65920. +
  65921. +/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
  65922. +#define F_RDLCK 0 /* Read lock. */
  65923. +#define F_WRLCK 1 /* Write lock. */
  65924. +#define F_UNLCK 2 /* Remove lock. */
  65925. +
  65926. +/* For old implementation of bsd flock(). */
  65927. +#define F_EXLCK 4 /* or 3 */
  65928. +#define F_SHLCK 8 /* or 4 */
  65929. +
  65930. +#ifdef __USE_BSD
  65931. +/* Operations for bsd flock(), also used by the kernel implementation. */
  65932. +# define LOCK_SH 1 /* shared lock */
  65933. +# define LOCK_EX 2 /* exclusive lock */
  65934. +# define LOCK_NB 4 /* or'd with one of the above to prevent
  65935. + blocking */
  65936. +# define LOCK_UN 8 /* remove lock */
  65937. +#endif
  65938. +
  65939. +#ifdef __USE_GNU
  65940. +# define LOCK_MAND 32 /* This is a mandatory flock: */
  65941. +# define LOCK_READ 64 /* ... which allows concurrent read operations. */
  65942. +# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
  65943. +# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
  65944. +#endif
  65945. +
  65946. +#ifdef __USE_GNU
  65947. +/* Types of directory notifications that may be requested with F_NOTIFY. */
  65948. +# define DN_ACCESS 0x00000001 /* File accessed. */
  65949. +# define DN_MODIFY 0x00000002 /* File modified. */
  65950. +# define DN_CREATE 0x00000004 /* File created. */
  65951. +# define DN_DELETE 0x00000008 /* File removed. */
  65952. +# define DN_RENAME 0x00000010 /* File renamed. */
  65953. +# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
  65954. +# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
  65955. +#endif
  65956. +
  65957. +struct flock
  65958. + {
  65959. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  65960. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  65961. +#ifndef __USE_FILE_OFFSET64
  65962. + __off_t l_start; /* Offset where the lock begins. */
  65963. + __off_t l_len; /* Size of the locked area; zero means until EOF. */
  65964. +#else
  65965. + __off64_t l_start; /* Offset where the lock begins. */
  65966. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  65967. +#endif
  65968. + __pid_t l_pid; /* Process holding the lock. */
  65969. + };
  65970. +
  65971. +#ifdef __USE_LARGEFILE64
  65972. +struct flock64
  65973. + {
  65974. + short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
  65975. + short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
  65976. + __off64_t l_start; /* Offset where the lock begins. */
  65977. + __off64_t l_len; /* Size of the locked area; zero means until EOF. */
  65978. + __pid_t l_pid; /* Process holding the lock. */
  65979. + };
  65980. +#endif
  65981. +
  65982. +/* Define some more compatibility macros to be backward compatible with
  65983. + BSD systems which did not managed to hide these kernel macros. */
  65984. +#ifdef __USE_BSD
  65985. +# define FAPPEND O_APPEND
  65986. +# define FFSYNC O_FSYNC
  65987. +# define FASYNC O_ASYNC
  65988. +# define FNONBLOCK O_NONBLOCK
  65989. +# define FNDELAY O_NDELAY
  65990. +#endif /* Use BSD. */
  65991. +
  65992. +/* Advise to `posix_fadvise'. */
  65993. +#ifdef __USE_XOPEN2K
  65994. +# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
  65995. +# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
  65996. +# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
  65997. +# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
  65998. +# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
  65999. +# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
  66000. +#endif
  66001. +
  66002. +
  66003. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  66004. +/* Flags for SYNC_FILE_RANGE. */
  66005. +# define SYNC_FILE_RANGE_WAIT_BEFORE 1 /* Wait upon writeout of all pages
  66006. + in the range before performing the
  66007. + write. */
  66008. +# define SYNC_FILE_RANGE_WRITE 2 /* Initiate writeout of all those
  66009. + dirty pages in the range which are
  66010. + not presently under writeback. */
  66011. +# define SYNC_FILE_RANGE_WAIT_AFTER 4 /* Wait upon writeout of all pages in
  66012. + the range after performing the
  66013. + write. */
  66014. +
  66015. +/* Flags for SPLICE and VMSPLICE. */
  66016. +# define SPLICE_F_MOVE 1 /* Move pages instead of copying. */
  66017. +# define SPLICE_F_NONBLOCK 2 /* Don't block on the pipe splicing
  66018. + (but we may still block on the fd
  66019. + we splice from/to). */
  66020. +# define SPLICE_F_MORE 4 /* Expect more data. */
  66021. +# define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */
  66022. +#endif
  66023. +
  66024. +__BEGIN_DECLS
  66025. +
  66026. +#if defined __USE_GNU && defined __UCLIBC_LINUX_SPECIFIC__
  66027. +
  66028. +/* Provide kernel hint to read ahead. */
  66029. +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
  66030. + __THROW;
  66031. +
  66032. +/* Selective file content synch'ing. */
  66033. +extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
  66034. + unsigned int __flags);
  66035. +
  66036. +/* Splice address range into a pipe. */
  66037. +extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
  66038. + size_t __count, unsigned int __flags);
  66039. +
  66040. +/* Splice two files together. */
  66041. +extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
  66042. + __off64_t *__offout, size_t __len,
  66043. + unsigned int __flags);
  66044. +
  66045. +/* In-kernel implementation of tee for pipe buffers. */
  66046. +extern ssize_t tee (int __fdin, int __fdout, size_t __len,
  66047. + unsigned int __flags);
  66048. +
  66049. +#endif
  66050. +__END_DECLS
  66051. +
  66052. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fenv.h uClibc-git/libc/sysdeps/linux/metag/bits/fenv.h
  66053. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/fenv.h 1970-01-01 01:00:00.000000000 +0100
  66054. +++ uClibc-git/libc/sysdeps/linux/metag/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  66055. @@ -0,0 +1,77 @@
  66056. +/* Copyright (C) 2013 Imagination Technologies Ltd.
  66057. + This file is part of the GNU C Library.
  66058. +
  66059. + The GNU C Library is free software; you can redistribute it and/or
  66060. + modify it under the terms of the GNU Lesser General Public
  66061. + License as published by the Free Software Foundation; either
  66062. + version 2.1 of the License, or (at your option) any later version.
  66063. +
  66064. + The GNU C Library is distributed in the hope that it will be useful,
  66065. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66066. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66067. + Lesser General Public License for more details.
  66068. +
  66069. + You should have received a copy of the GNU Lesser General Public
  66070. + License along with the GNU C Library; if not, write to the Free
  66071. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66072. + 02111-1307 USA. */
  66073. +
  66074. +#ifndef _FENV_H
  66075. +# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  66076. +#endif
  66077. +
  66078. +
  66079. +/* Define bits representing the exception. We use the bit positions
  66080. + of the appropriate bits in TXDEFR. */
  66081. +enum
  66082. + {
  66083. + FE_INEXACT = 0x1,
  66084. +#define FE_INEXACT FE_INEXACT
  66085. + FE_UNDERFLOW = 0x2,
  66086. +#define FE_UNDERFLOW FE_UNDERFLOW
  66087. + FE_OVERFLOW = 0x4,
  66088. +#define FE_OVERFLOW FE_OVERFLOW
  66089. + FE_DIVBYZERO = 0x8,
  66090. +#define FE_DIVBYZERO FE_DIVBYZERO
  66091. + FE_INVALID = 0x10,
  66092. +#define FE_INVALID FE_INVALID
  66093. + };
  66094. +
  66095. +#define FE_ALL_EXCEPT \
  66096. + (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
  66097. +
  66098. +/* The Meta FPU supports all of the four defined rounding modes. We
  66099. + use the values of the rounding mode bits in TXMODE as the values
  66100. + for the appropriate macros. */
  66101. +enum
  66102. + {
  66103. + FE_TONEAREST = 0x0,
  66104. +#define FE_TONEAREST FE_TONEAREST
  66105. + FE_TOWARDZERO = 0x1,
  66106. +#define FE_TOWARDZERO FE_TOWARDZERO
  66107. + FE_UPWARD = 0x2,
  66108. +#define FE_UPWARD FE_UPWARD
  66109. + FE_DOWNWARD = 0x3
  66110. +#define FE_DOWNWARD FE_DOWNWARD
  66111. + };
  66112. +
  66113. +
  66114. +/* Type representing exception flags. */
  66115. +typedef unsigned int fexcept_t;
  66116. +
  66117. +
  66118. +/* Type representing floating-point environment. */
  66119. +typedef struct
  66120. + {
  66121. + unsigned int txdefr;
  66122. + unsigned int txmode;
  66123. + }
  66124. +fenv_t;
  66125. +
  66126. +/* If the default argument is used we use this value. */
  66127. +#define FE_DFL_ENV ((__const fenv_t *) -1)
  66128. +
  66129. +#ifdef __USE_GNU
  66130. +/* Floating-point environment where none of the exception is masked. */
  66131. +# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  66132. +#endif
  66133. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/ipc.h uClibc-git/libc/sysdeps/linux/metag/bits/ipc.h
  66134. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100
  66135. +++ uClibc-git/libc/sysdeps/linux/metag/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  66136. @@ -0,0 +1,55 @@
  66137. +/* Copyright (C) 1995-1999, 2000, 2005, 2007 Free Software Foundation, Inc.
  66138. + This file is part of the GNU C Library.
  66139. +
  66140. + The GNU C Library is free software; you can redistribute it and/or
  66141. + modify it under the terms of the GNU Lesser General Public
  66142. + License as published by the Free Software Foundation; either
  66143. + version 2.1 of the License, or (at your option) any later version.
  66144. +
  66145. + The GNU C Library is distributed in the hope that it will be useful,
  66146. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66147. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66148. + Lesser General Public License for more details.
  66149. +
  66150. + You should have received a copy of the GNU Lesser General Public
  66151. + License along with the GNU C Library; if not, write to the Free
  66152. + Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  66153. + Boston, MA 02110-1301, USA. */
  66154. +
  66155. +#ifndef _SYS_IPC_H
  66156. +# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  66157. +#endif
  66158. +
  66159. +#include <bits/types.h>
  66160. +
  66161. +/* Mode bits for `msgget', `semget', and `shmget'. */
  66162. +#define IPC_CREAT 01000 /* Create key if key does not exist. */
  66163. +#define IPC_EXCL 02000 /* Fail if key exists. */
  66164. +#define IPC_NOWAIT 04000 /* Return error on wait. */
  66165. +
  66166. +/* Control commands for `msgctl', `semctl', and `shmctl'. */
  66167. +#define IPC_RMID 0 /* Remove identifier. */
  66168. +#define IPC_SET 1 /* Set `ipc_perm' options. */
  66169. +#define IPC_STAT 2 /* Get `ipc_perm' options. */
  66170. +#ifdef __USE_GNU
  66171. +# define IPC_INFO 3 /* See ipcs. */
  66172. +#endif
  66173. +
  66174. +/* Special key values. */
  66175. +#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
  66176. +
  66177. +
  66178. +/* Data structure used to pass permission information to IPC operations. */
  66179. +struct ipc_perm
  66180. + {
  66181. + __key_t __key; /* Key. */
  66182. + __uid_t uid; /* Owner's user ID. */
  66183. + __gid_t gid; /* Owner's group ID. */
  66184. + __uid_t cuid; /* Creator's user ID. */
  66185. + __gid_t cgid; /* Creator's group ID. */
  66186. + unsigned int mode; /* Read/write permission. */
  66187. + unsigned short __seq; /* Sequence number. */
  66188. + unsigned short __pad1;
  66189. + unsigned long __unused1;
  66190. + unsigned long __unused2;
  66191. + };
  66192. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/metag/bits/kernel_types.h
  66193. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/kernel_types.h 1970-01-01 01:00:00.000000000 +0100
  66194. +++ uClibc-git/libc/sysdeps/linux/metag/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  66195. @@ -0,0 +1,47 @@
  66196. +/* Note that we use the exact same include guard #define names
  66197. + * as asm/posix_types.h. This will avoid gratuitous conflicts
  66198. + * with the posix_types.h kernel header, and will ensure that
  66199. + * our private content, and not the kernel header, will win.
  66200. + * -Erik
  66201. + *
  66202. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  66203. + *
  66204. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66205. + */
  66206. +
  66207. +#ifndef __ASM_GENERIC_POSIX_TYPES_H
  66208. +#define __ASM_GENERIC_POSIX_TYPES_H
  66209. +
  66210. +typedef unsigned int __kernel_dev_t;
  66211. +typedef unsigned int __kernel_ino_t;
  66212. +typedef unsigned int __kernel_mode_t;
  66213. +typedef unsigned long __kernel_nlink_t;
  66214. +typedef long __kernel_off_t;
  66215. +typedef int __kernel_pid_t;
  66216. +typedef unsigned int __kernel_uid_t;
  66217. +typedef unsigned int __kernel_gid_t;
  66218. +typedef unsigned int __kernel_size_t;
  66219. +typedef int __kernel_ssize_t;
  66220. +typedef long __kernel_ptrdiff_t;
  66221. +typedef long __kernel_time_t;
  66222. +typedef long __kernel_suseconds_t;
  66223. +typedef long __kernel_clock_t;
  66224. +typedef int __kernel_daddr_t;
  66225. +typedef char * __kernel_caddr_t;
  66226. +typedef int __kernel_ipc_pid_t;
  66227. +typedef unsigned short __kernel_uid16_t;
  66228. +typedef unsigned short __kernel_gid16_t;
  66229. +typedef unsigned int __kernel_uid32_t;
  66230. +typedef unsigned int __kernel_gid32_t;
  66231. +typedef unsigned int __kernel_old_uid_t;
  66232. +typedef unsigned int __kernel_old_gid_t;
  66233. +typedef __kernel_dev_t __kernel_old_dev_t;
  66234. +typedef long long __kernel_loff_t;
  66235. +typedef long __kernel_long_t;
  66236. +typedef unsigned long __kernel_ulong_t;
  66237. +
  66238. +typedef struct {
  66239. + int val[2];
  66240. +} __kernel_fsid_t;
  66241. +
  66242. +#endif /* __ASM_GENERIC_POSIX_TYPES_H */
  66243. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/profil-counter.h uClibc-git/libc/sysdeps/linux/metag/bits/profil-counter.h
  66244. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/profil-counter.h 1970-01-01 01:00:00.000000000 +0100
  66245. +++ uClibc-git/libc/sysdeps/linux/metag/bits/profil-counter.h 2014-02-03 12:32:56.000000000 +0100
  66246. @@ -0,0 +1,17 @@
  66247. +/*
  66248. + * Low-level statistical profiling support function. Linux/Meta version.
  66249. + *
  66250. + * Copyright (C) 2013, Imagination Technologies Ltd.
  66251. + *
  66252. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66253. + *
  66254. + * Based on the SH version from the GNU C Library.
  66255. + */
  66256. +
  66257. +#include <signal.h>
  66258. +
  66259. +static void
  66260. +profil_counter (int signo, struct sigcontext sc)
  66261. +{
  66262. + profil_count (sc.cbuf.ctx.CurrPC);
  66263. +}
  66264. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/setjmp.h uClibc-git/libc/sysdeps/linux/metag/bits/setjmp.h
  66265. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100
  66266. +++ uClibc-git/libc/sysdeps/linux/metag/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  66267. @@ -0,0 +1,44 @@
  66268. +/*
  66269. + * Copyright (C) 2013, Imagination Technologies Ltd.
  66270. + *
  66271. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66272. + */
  66273. +
  66274. +/* Define the machine-dependent type `jmp_buf' */
  66275. +#ifndef _BITS_SETJMP_H
  66276. +#define _BITS_SETJMP_H 1
  66277. +
  66278. +#if !defined _SETJMP_H && !defined _PTHREAD_H
  66279. +# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  66280. +#endif
  66281. +
  66282. +/*
  66283. + jmp_buf[0] - A0StP
  66284. + jmp_buf[1] - A1GbP
  66285. + jmp_buf[2] - A0FrP
  66286. + jmp_buf[3] - A1LbP
  66287. + jmp_buf[4] - D0FrT
  66288. + jmp_buf[5] - D1RtP
  66289. + jmp_buf[6] - D0.5
  66290. + jmp_buf[7] - D1.5
  66291. + jmp_buf[8] - D0.6
  66292. + jmp_buf[9] - D1.6
  66293. + jmp_buf[10] - D0.7
  66294. + jmp_buf[11] - D1.7
  66295. + */
  66296. +
  66297. +#define _JBLEN 24
  66298. +#if defined (__USE_MISC) || defined (_ASM)
  66299. +#define JB_SP 0
  66300. +#endif
  66301. +
  66302. +#ifndef _ASM
  66303. +typedef int __jmp_buf[_JBLEN] __attribute__((aligned (8)));
  66304. +#endif
  66305. +
  66306. +/* Test if longjmp to JMPBUF would unwind the frame
  66307. + containing a local variable at ADDRESS. */
  66308. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  66309. + ((void *) (address) > (void *) (jmpbuf)[JB_SP])
  66310. +
  66311. +#endif /* bits/setjmp.h */
  66312. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/metag/bits/sigcontextinfo.h
  66313. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/sigcontextinfo.h 1970-01-01 01:00:00.000000000 +0100
  66314. +++ uClibc-git/libc/sysdeps/linux/metag/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  66315. @@ -0,0 +1,14 @@
  66316. +/*
  66317. + * Copyright (C) 2013, Imagination Technologies Ltd.
  66318. + *
  66319. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66320. + *
  66321. + */
  66322. +
  66323. +#define SIGCONTEXT struct sigcontext
  66324. +#define SIGCONTEXT_EXTRA_ARGS
  66325. +#define GET_PC(ctx) ((void *) ctx.cbuf.ctx.CurrPC)
  66326. +#define GET_FRAME(ctx) ((void *) ctx.cbuf.ctx.AX[1].U0)
  66327. +#define GET_STACK(ctx) ((void *) ctx.cbuf.ctx.AX[0].U0)
  66328. +#define CALL_SIGHANDLER(handler, signo, ctx) \
  66329. + (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
  66330. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/metag/bits/stackinfo.h
  66331. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/stackinfo.h 1970-01-01 01:00:00.000000000 +0100
  66332. +++ uClibc-git/libc/sysdeps/linux/metag/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  66333. @@ -0,0 +1,28 @@
  66334. +/* Copyright (C) 2001 Free Software Foundation, Inc.
  66335. + This file is part of the GNU C Library.
  66336. +
  66337. + The GNU C Library is free software; you can redistribute it and/or
  66338. + modify it under the terms of the GNU Lesser General Public
  66339. + License as published by the Free Software Foundation; either
  66340. + version 2.1 of the License, or (at your option) any later version.
  66341. +
  66342. + The GNU C Library is distributed in the hope that it will be useful,
  66343. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66344. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66345. + Lesser General Public License for more details.
  66346. +
  66347. + You should have received a copy of the GNU Lesser General Public
  66348. + License along with the GNU C Library; if not, write to the Free
  66349. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66350. + 02111-1307 USA. */
  66351. +
  66352. +/* This file contains a bit of information about the stack allocation
  66353. + of the processor. */
  66354. +
  66355. +#ifndef _STACKINFO_H
  66356. +#define _STACKINFO_H 1
  66357. +
  66358. +/* On Meta the stack grows up. */
  66359. +#define _STACK_GROWS_UP 1
  66360. +
  66361. +#endif /* stackinfo.h */
  66362. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/syscalls.h uClibc-git/libc/sysdeps/linux/metag/bits/syscalls.h
  66363. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/syscalls.h 1970-01-01 01:00:00.000000000 +0100
  66364. +++ uClibc-git/libc/sysdeps/linux/metag/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  66365. @@ -0,0 +1,120 @@
  66366. +/*
  66367. + * Copyright (C) 2013 Imagination Technologies Ltd.
  66368. + *
  66369. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66370. + *
  66371. + */
  66372. +
  66373. +#ifndef _BITS_SYSCALLS_H
  66374. +#define _BITS_SYSCALLS_H
  66375. +#ifndef _SYSCALL_H
  66376. +# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> instead."
  66377. +#endif
  66378. +
  66379. +/*
  66380. + Meta version adapted from the ARM version.
  66381. +*/
  66382. +
  66383. +#define SYS_ify(syscall_name) (__NR_##syscall_name)
  66384. +
  66385. +#ifdef __ASSEMBLER__
  66386. +
  66387. +/* Call a given syscall, with arguments loaded. */
  66388. +#undef DO_CALL
  66389. +#define DO_CALL(syscall_name, args) \
  66390. + MOV D1Re0, #SYS_ify (syscall_name); \
  66391. + SWITCH #0x440001
  66392. +
  66393. +#else
  66394. +
  66395. +#include <errno.h>
  66396. +
  66397. +#undef INLINE_SYSCALL_NCS
  66398. +#define INLINE_SYSCALL_NCS(name, nr, args...) \
  66399. +(__extension__ \
  66400. + ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL_NCS (name, , nr, args); \
  66401. + if (unlikely(INTERNAL_SYSCALL_ERROR_P (_inline_sys_result, ))) \
  66402. + { \
  66403. + __set_errno (INTERNAL_SYSCALL_ERRNO (_inline_sys_result, )); \
  66404. + _inline_sys_result = (unsigned int) -1; \
  66405. + } \
  66406. + (int) _inline_sys_result; }) \
  66407. +)
  66408. +
  66409. +#undef INTERNAL_SYSCALL_DECL
  66410. +#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
  66411. +
  66412. +#undef INTERNAL_SYSCALL_NCS
  66413. +#define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \
  66414. +(__extension__ \
  66415. + ({unsigned int __sys_result; \
  66416. + { \
  66417. + PREP_ARGS_##nr (args); \
  66418. + register int _result __asm__ ("D0Re0"), _nr __asm__ ("D1Re0"); \
  66419. + LOAD_ARGS_##nr; \
  66420. + _nr = (name); \
  66421. + __asm__ volatile ("SWITCH #0x440001 ! syscall " #name \
  66422. + : "=r" (_result) \
  66423. + : "d" (_nr) ASM_ARGS_##nr \
  66424. + : "memory"); \
  66425. + __sys_result = _result; \
  66426. + } \
  66427. + (int) __sys_result; }) \
  66428. +)
  66429. +
  66430. +#undef INTERNAL_SYSCALL_ERROR_P
  66431. +#define INTERNAL_SYSCALL_ERROR_P(val, err) \
  66432. + ((unsigned int) (val) >= 0xfffff001u)
  66433. +
  66434. +#undef INTERNAL_SYSCALL_ERRNO
  66435. +#define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
  66436. +
  66437. +#define PREP_ARGS_0()
  66438. +#define PREP_ARGS_1(a1) \
  66439. + int _t1 = (int) (a1); \
  66440. + PREP_ARGS_0 ()
  66441. +#define PREP_ARGS_2(a1, a2) \
  66442. + int _t2 = (int) (a2); \
  66443. + PREP_ARGS_1 (a1)
  66444. +#define PREP_ARGS_3(a1, a2, a3) \
  66445. + int _t3 = (int) (a3); \
  66446. + PREP_ARGS_2 (a1, a2)
  66447. +#define PREP_ARGS_4(a1, a2, a3, a4) \
  66448. + int _t4 = (int) (a4); \
  66449. + PREP_ARGS_3 (a1, a2, a3)
  66450. +#define PREP_ARGS_5(a1, a2, a3, a4, a5) \
  66451. + int _t5 = (int) (a5); \
  66452. + PREP_ARGS_4 (a1, a2, a3, a4)
  66453. +#define PREP_ARGS_6(a1, a2, a3, a4, a5, a6) \
  66454. + int _t6 = (int) (a6); \
  66455. + PREP_ARGS_5 (a1, a2, a3, a4, a5)
  66456. +
  66457. +#define LOAD_ARGS_0
  66458. +#define ASM_ARGS_0
  66459. +#define LOAD_ARGS_1 \
  66460. + register int _a1 __asm__ ("D1Ar1") = (int) (_t1); \
  66461. + LOAD_ARGS_0
  66462. +#define ASM_ARGS_1 ASM_ARGS_0, "d" (_a1)
  66463. +#define LOAD_ARGS_2 \
  66464. + register int _a2 __asm__ ("D0Ar2") = (int) (_t2); \
  66465. + LOAD_ARGS_1
  66466. +#define ASM_ARGS_2 ASM_ARGS_1, "d" (_a2)
  66467. +#define LOAD_ARGS_3 \
  66468. + register int _a3 __asm__ ("D1Ar3") = (int) (_t3); \
  66469. + LOAD_ARGS_2
  66470. +#define ASM_ARGS_3 ASM_ARGS_2, "d" (_a3)
  66471. +#define LOAD_ARGS_4 \
  66472. + register int _a4 __asm__ ("D0Ar4") = (int) (_t4); \
  66473. + LOAD_ARGS_3
  66474. +#define ASM_ARGS_4 ASM_ARGS_3, "d" (_a4)
  66475. +#define LOAD_ARGS_5 \
  66476. + register int _a5 __asm__ ("D1Ar5") = (int) (_t5); \
  66477. + LOAD_ARGS_4
  66478. +#define ASM_ARGS_5 ASM_ARGS_4, "d" (_a5)
  66479. +#define LOAD_ARGS_6 \
  66480. + register int _a6 __asm__ ("D0Ar6") = (int) (_t6); \
  66481. + LOAD_ARGS_5
  66482. +#define ASM_ARGS_6 ASM_ARGS_5, "d" (_a6)
  66483. +
  66484. +#endif /* __ASSEMBLER__ */
  66485. +#endif /* _BITS_SYSCALLS_H */
  66486. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h
  66487. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h 1970-01-01 01:00:00.000000000 +0100
  66488. +++ uClibc-git/libc/sysdeps/linux/metag/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  66489. @@ -0,0 +1,46 @@
  66490. +/*
  66491. + * Track misc arch-specific features that aren't config options
  66492. + *
  66493. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  66494. + *
  66495. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66496. + */
  66497. +
  66498. +#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
  66499. +#define _BITS_UCLIBC_ARCH_FEATURES_H
  66500. +
  66501. +/* instruction used when calling abort() to kill yourself */
  66502. +/*#define __UCLIBC_ABORT_INSTRUCTION__ "asm instruction"*/
  66503. +#undef __UCLIBC_ABORT_INSTRUCTION__
  66504. +
  66505. +/* can your target use syscall6() for mmap ? */
  66506. +#define __UCLIBC_MMAP_HAS_6_ARGS__
  66507. +
  66508. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  66509. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  66510. +
  66511. +/* does your target have a broken create_module() ? */
  66512. +#undef __UCLIBC_BROKEN_CREATE_MODULE__
  66513. +
  66514. +/* does your target have to worry about older [gs]etrlimit() ? */
  66515. +#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
  66516. +
  66517. +/* does your target have an asm .set ? */
  66518. +#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
  66519. +
  66520. +/* define if target doesn't like .global */
  66521. +#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
  66522. +
  66523. +/* define if target supports .weak */
  66524. +#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
  66525. +
  66526. +/* define if target supports .weakext */
  66527. +#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
  66528. +
  66529. +/* needed probably only for ppc64 */
  66530. +#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
  66531. +
  66532. +/* define if target supports IEEE signed zero floats */
  66533. +#define __UCLIBC_HAVE_SIGNED_ZERO__
  66534. +
  66535. +#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
  66536. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/wordsize.h uClibc-git/libc/sysdeps/linux/metag/bits/wordsize.h
  66537. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/bits/wordsize.h 1970-01-01 01:00:00.000000000 +0100
  66538. +++ uClibc-git/libc/sysdeps/linux/metag/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  66539. @@ -0,0 +1,19 @@
  66540. +/* Copyright (C) 1999 Free Software Foundation, Inc.
  66541. + This file is part of the GNU C Library.
  66542. +
  66543. + The GNU C Library is free software; you can redistribute it and/or
  66544. + modify it under the terms of the GNU Lesser General Public
  66545. + License as published by the Free Software Foundation; either
  66546. + version 2.1 of the License, or (at your option) any later version.
  66547. +
  66548. + The GNU C Library is distributed in the hope that it will be useful,
  66549. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66550. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66551. + Lesser General Public License for more details.
  66552. +
  66553. + You should have received a copy of the GNU Lesser General Public
  66554. + License along with the GNU C Library; if not, write to the Free
  66555. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66556. + 02111-1307 USA. */
  66557. +
  66558. +#define __WORDSIZE 32
  66559. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/brk.c uClibc-git/libc/sysdeps/linux/metag/brk.c
  66560. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/brk.c 1970-01-01 01:00:00.000000000 +0100
  66561. +++ uClibc-git/libc/sysdeps/linux/metag/brk.c 2014-02-03 12:32:56.000000000 +0100
  66562. @@ -0,0 +1,38 @@
  66563. +/*
  66564. + * Copyright (C) 2013 Imagination Technologies Ltd.
  66565. + *
  66566. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66567. + */
  66568. +
  66569. +#include <errno.h>
  66570. +#include <unistd.h>
  66571. +#include <sys/syscall.h>
  66572. +
  66573. +libc_hidden_proto(brk)
  66574. +
  66575. +/* This must be initialized data because commons can't have aliases. */
  66576. +void * __curbrk attribute_hidden = 0;
  66577. +
  66578. +int brk (void *addr)
  66579. +{
  66580. + void *newbrk;
  66581. +
  66582. + __asm__ __volatile__ ("MOV D1Re0,%2\n\t"
  66583. + "MOV D1Ar1,%1\n\t"
  66584. + "SWITCH #0x440001\n\t"
  66585. + "MOV %0,D0Re0"
  66586. + : "=r" (newbrk)
  66587. + : "r" (addr), "K" (__NR_brk)
  66588. + : "D0Re0", "D1Re0", "D1Ar1");
  66589. +
  66590. + __curbrk = newbrk;
  66591. +
  66592. + if (newbrk < addr)
  66593. + {
  66594. + __set_errno (ENOMEM);
  66595. + return -1;
  66596. + }
  66597. +
  66598. + return 0;
  66599. +}
  66600. +libc_hidden_def(brk)
  66601. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/clone.S uClibc-git/libc/sysdeps/linux/metag/clone.S
  66602. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/clone.S 1970-01-01 01:00:00.000000000 +0100
  66603. +++ uClibc-git/libc/sysdeps/linux/metag/clone.S 2014-02-03 12:32:56.000000000 +0100
  66604. @@ -0,0 +1,101 @@
  66605. +! Copyright (C) 2013 Imagination Technologies Ltd.
  66606. +
  66607. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66608. +
  66609. +! clone() is even more special than fork() as it mucks with stacks
  66610. +! and invokes a function in the right context after its all over.
  66611. +
  66612. +#include <asm/errno.h>
  66613. +#include <asm/unistd.h>
  66614. +
  66615. +#define CLONE_VM 0x00000100
  66616. +#define CLONE_THREAD 0x00010000
  66617. +
  66618. +#ifdef __PIC__
  66619. +#define __CLONE_METAG_LOAD_TP ___metag_load_tp@PLT
  66620. +#else
  66621. +#define __CLONE_METAG_LOAD_TP ___metag_load_tp
  66622. +#endif
  66623. +
  66624. +/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
  66625. + pid_t *ptid, struct user_desc *tls, pid_t *ctid); */
  66626. +
  66627. + .text
  66628. + .global __clone
  66629. + .type __clone,function
  66630. +__clone:
  66631. + ! sanity check args
  66632. + MOV D0Re0, #-EINVAL
  66633. + CMP D1Ar1, #0
  66634. + BEQ ___error
  66635. + CMP D0Ar2, #0
  66636. + BEQ ___error
  66637. +
  66638. + ! save function pointer
  66639. + MOV D0FrT, D1Ar1
  66640. +
  66641. + ! do the system call
  66642. + MOV D1Ar1, D1Ar3
  66643. + MOV D1Ar3, D1Ar5
  66644. + MOV D1Ar5, D0Ar6
  66645. + MOV D0Ar6, D0Ar4
  66646. + GETD D0Ar4, [A0StP+#-4]
  66647. +
  66648. + ! new sp is already in D0Ar2
  66649. + MOV D1Re0, #__NR_clone
  66650. + SWITCH #0x440001
  66651. + CMP D0Re0,#0
  66652. + ! Error on -1
  66653. + BLT ___error
  66654. + ! If non-zero we are the parent
  66655. + MOVNE PC, D1RtP
  66656. + ! BRKPNT
  66657. +
  66658. + ! We are the child
  66659. +#ifdef RESET_PID
  66660. + SETL [A0StP++], D0FrT, D1RtP
  66661. + MOVT D0FrT, #HI(CLONE_THREAD)
  66662. + ADD D0FrT, D0FrT, #LO(CLONE_THREAD)
  66663. + ANDS D0FrT, D0FrT, D1Ar1
  66664. + BNZ 3f
  66665. + MOVT D0FrT, #HI(CLONE_VM)
  66666. + ADD D0FrT, D0FrT, #LO(CLONE_VM)
  66667. + ANDS D0FrT, D0FrT, D1Ar1
  66668. + BZ 1f
  66669. + MOV D1Ar1, #-1
  66670. + BA 2f
  66671. +1: MOV D1Re0, #__NR_getpid
  66672. + SWITCH #0x440001
  66673. + MOV D1Ar1, D0Re0
  66674. +2: CALLR D1RtP, __CLONE_METAG_LOAD_TP
  66675. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE
  66676. + SETD [D0Re0 + #PID], D1Ar1
  66677. + SETD [D0Re0 + #TID], D1Ar1
  66678. +3: GETL D0FrT, D1RtP, [--A0StP]
  66679. +#endif
  66680. + ! Rearrange the function arg and call address from registers
  66681. + MOV D0Ar2, D0FrT
  66682. + MOV D1Ar1, D0Ar6
  66683. + MOV D1RtP, PC
  66684. + ADD D1RtP, D1RtP, #8
  66685. + MOV PC, D0Ar2
  66686. +
  66687. + ! and we are done, passing the return value D0Re0 through D1Ar1
  66688. + MOV D1Ar1, D0Re0
  66689. +#ifdef __PIC__
  66690. + B _exit@PLT
  66691. +#else
  66692. + B _exit
  66693. +#endif
  66694. +
  66695. +___error:
  66696. + MOV D1Ar1, D0Re0
  66697. +#ifdef __PIC__
  66698. + B ___syscall_error@PLT
  66699. +#else
  66700. + B ___syscall_error
  66701. +#endif
  66702. + .size __clone, .-__clone
  66703. +
  66704. +.weak _clone
  66705. +_clone = __clone
  66706. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/crt1.S uClibc-git/libc/sysdeps/linux/metag/crt1.S
  66707. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/crt1.S 1970-01-01 01:00:00.000000000 +0100
  66708. +++ uClibc-git/libc/sysdeps/linux/metag/crt1.S 2014-02-03 12:32:56.000000000 +0100
  66709. @@ -0,0 +1,75 @@
  66710. +! Copyright (C) 2013 Imagination Technologies Ltd.
  66711. +
  66712. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66713. +
  66714. +
  66715. +#include <asm/unistd.h>
  66716. +
  66717. + .text
  66718. + .global __start
  66719. + .type __start,function
  66720. +__start:
  66721. + MOV D0FrT,A0StP
  66722. + MOV A0FrP,A0StP
  66723. +
  66724. + MOV A0.2,#0
  66725. + MOV A0.3,#0
  66726. +
  66727. + MOV A1.1,#0
  66728. + MOV A1.2,#0
  66729. + MOV A1.3,#0
  66730. +
  66731. + MOV D0.5,#0
  66732. + MOV D0.6,#0
  66733. + MOV D0.7,#0
  66734. +
  66735. + MOV D1.5,#0
  66736. + MOV D1.6,#0
  66737. + MOV D1.7,#0
  66738. +
  66739. + MOV D1Ar3,D0Ar2 ! argv
  66740. + MOV D0Ar2,D1Ar1 ! argc
  66741. + MOV D0Ar6,D0Ar4 ! rtld_fini
  66742. +
  66743. +#ifdef __PIC__
  66744. + ADDT A1LbP,CPC1,#HI(__GLOBAL_OFFSET_TABLE__)
  66745. + ADD A1LbP,A1LbP,#LO(__GLOBAL_OFFSET_TABLE__+4)
  66746. +
  66747. + MOV D1Ar1,A1LbP
  66748. + ADDT D1Ar1,D1Ar1,#HI(_main@GOTOFF)
  66749. + ADD D1Ar1,D1Ar1,#LO(_main@GOTOFF)
  66750. +
  66751. + MOV D0Ar4,A1LbP
  66752. + ADDT D0Ar4,D0Ar4,#HI(__init@GOTOFF)
  66753. + ADD D0Ar4,D0Ar4,#LO(__init@GOTOFF)
  66754. +
  66755. + MOV D1Ar5,A1LbP
  66756. + ADDT D1Ar5,D1Ar5,#HI(__fini@GOTOFF)
  66757. + ADD D1Ar5,D1Ar5,#LO(__fini@GOTOFF)
  66758. +#else
  66759. + MOVT D1Ar1,#HI(_main)
  66760. + ADD D1Ar1,D1Ar1,#LO(_main)
  66761. + MOVT D0Ar4,#HI(__init)
  66762. + ADD D0Ar4,D0Ar4,#LO(__init)
  66763. + MOVT D1Ar5,#HI(__fini)
  66764. + ADD D1Ar5,D1Ar5,#LO(__fini)
  66765. +#endif
  66766. +
  66767. + MOVT D1Re0,#0x80
  66768. +
  66769. + SETL [A0StP++],D0Re0,D1Re0 ! stack_end (8Mb)
  66770. +
  66771. + MOV D1Re0,#0
  66772. + MOV D0Re0,#0
  66773. +
  66774. +#ifdef __PIC__
  66775. + CALLR D1RtP, ___uClibc_main@PLT
  66776. +#else
  66777. + CALLR D1RtP, ___uClibc_main
  66778. +#endif
  66779. +
  66780. + MOV D1Re0,#__NR_exit
  66781. + MOV D1Ar1,#0x1
  66782. + SWITCH #0x440001 ! exit syscall
  66783. +
  66784. + .size __start,.-__start
  66785. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/crti.S uClibc-git/libc/sysdeps/linux/metag/crti.S
  66786. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/crti.S 1970-01-01 01:00:00.000000000 +0100
  66787. +++ uClibc-git/libc/sysdeps/linux/metag/crti.S 2014-02-03 12:32:56.000000000 +0100
  66788. @@ -0,0 +1,19 @@
  66789. +! Copyright (C) 2013 Imagination Technologies Ltd.
  66790. +
  66791. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66792. +
  66793. + .section .init
  66794. + .global __init
  66795. + .type __init,function
  66796. +__init:
  66797. + MOV D0FrT, A0FrP
  66798. + ADD A0FrP, A0StP, #0
  66799. + SETL [A0StP++], D0.4, D1RtP
  66800. +
  66801. + .section .fini
  66802. + .global __fini
  66803. + .type __fini,function
  66804. +__fini:
  66805. + MOV D0FrT, A0FrP
  66806. + ADD A0FrP, A0StP, #0
  66807. + SETL [A0StP++], D0.4, D1RtP
  66808. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/crtn.S uClibc-git/libc/sysdeps/linux/metag/crtn.S
  66809. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/crtn.S 1970-01-01 01:00:00.000000000 +0100
  66810. +++ uClibc-git/libc/sysdeps/linux/metag/crtn.S 2014-02-03 12:32:56.000000000 +0100
  66811. @@ -0,0 +1,19 @@
  66812. +! Copyright (C) 2013 Imagination Technologies Ltd.
  66813. +
  66814. +! Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66815. +
  66816. + .section .init
  66817. + .global __init
  66818. + .type __init,function
  66819. + GETL D0.4, D1RtP, [A0FrP+#8++]
  66820. + SUB A0StP, A0FrP, #8
  66821. + MOV A0FrP, D0.4
  66822. + MOV PC, D1RtP
  66823. +
  66824. + .section .fini
  66825. + .global __fini
  66826. + .type __fini,function
  66827. + GETL D0.4, D1RtP, [A0FrP+#8++]
  66828. + SUB A0StP, A0FrP, #8
  66829. + MOV A0FrP, D0.4
  66830. + MOV PC, D1RtP
  66831. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/libc-metag_load_tp.S uClibc-git/libc/sysdeps/linux/metag/libc-metag_load_tp.S
  66832. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/libc-metag_load_tp.S 1970-01-01 01:00:00.000000000 +0100
  66833. +++ uClibc-git/libc/sysdeps/linux/metag/libc-metag_load_tp.S 2014-02-03 12:32:56.000000000 +0100
  66834. @@ -0,0 +1,7 @@
  66835. +/*
  66836. + * Copyright (C) 2013 Imagination Technologies Ltd.
  66837. + *
  66838. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66839. + */
  66840. +
  66841. +#include <ldso/ldso/metag/metag_load_tp.S>
  66842. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/_longjmp.S uClibc-git/libc/sysdeps/linux/metag/_longjmp.S
  66843. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/_longjmp.S 1970-01-01 01:00:00.000000000 +0100
  66844. +++ uClibc-git/libc/sysdeps/linux/metag/_longjmp.S 2014-02-03 12:32:56.000000000 +0100
  66845. @@ -0,0 +1,25 @@
  66846. +! Copyright (C) 2013 Imagination Technologies Ltd.
  66847. +
  66848. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66849. +
  66850. +
  66851. + .text
  66852. + .global ___longjmp
  66853. + .type ___longjmp,function
  66854. +
  66855. +___longjmp:
  66856. + !! If val is 0, set it to 1
  66857. + CMP D0Ar2,#0
  66858. + ADDZ D0Ar2,D0Ar2,#1
  66859. +
  66860. + !! Restore A0/A1 regs
  66861. + MGETL A0.0,A0.1,[D1Ar1++]
  66862. + !! Restore D0/D1 regs
  66863. + MOV A0.3,D1Ar1
  66864. + MGETL D0FrT,D0.5,D0.6,D0.7,[A0.3++]
  66865. + !! Move 2nd argument to return value
  66866. + MOV D0Re0,D0Ar2
  66867. + MOV PC,D1RtP
  66868. + .size ___longjmp,.-___longjmp
  66869. +
  66870. +libc_hidden_def(__longjmp)
  66871. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile uClibc-git/libc/sysdeps/linux/metag/Makefile
  66872. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile 1970-01-01 01:00:00.000000000 +0100
  66873. +++ uClibc-git/libc/sysdeps/linux/metag/Makefile 2014-02-03 12:32:56.000000000 +0100
  66874. @@ -0,0 +1,13 @@
  66875. +# Makefile for uClibc
  66876. +#
  66877. +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
  66878. +#
  66879. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66880. +#
  66881. +
  66882. +top_srcdir=../../../../
  66883. +top_builddir=../../../../
  66884. +all: objs
  66885. +include $(top_builddir)Rules.mak
  66886. +include Makefile.arch
  66887. +include $(top_srcdir)Makerules
  66888. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile.arch uClibc-git/libc/sysdeps/linux/metag/Makefile.arch
  66889. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  66890. +++ uClibc-git/libc/sysdeps/linux/metag/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  66891. @@ -0,0 +1,12 @@
  66892. +# Makefile for uClibc
  66893. +#
  66894. +# Copyright (C) 2013 Imagination Technologies Ltd.
  66895. +#
  66896. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66897. +#
  66898. +
  66899. +CSRC-y := brk.c syscall.c metag.c __syscall_error.c
  66900. +
  66901. +SSRC-y := _longjmp.S clone.S setjmp.S vfork.S
  66902. +
  66903. +SSRC-$(UCLIBC_HAS_THREADS_NATIVE) += libc-metag_load_tp.S
  66904. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/metag.c uClibc-git/libc/sysdeps/linux/metag/metag.c
  66905. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/metag.c 1970-01-01 01:00:00.000000000 +0100
  66906. +++ uClibc-git/libc/sysdeps/linux/metag/metag.c 2014-02-03 12:32:56.000000000 +0100
  66907. @@ -0,0 +1,11 @@
  66908. +/*
  66909. + * Copyright (C) 2013 Imagination Technologies Ltd.
  66910. + *
  66911. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66912. + */
  66913. +
  66914. +#include <errno.h>
  66915. +#include <sys/syscall.h>
  66916. +
  66917. +_syscall2(int,metag_setglobalbit,char *,addr,int,mask)
  66918. +_syscall1(void,metag_set_fpu_flags,unsigned int,flags)
  66919. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/setjmp.S uClibc-git/libc/sysdeps/linux/metag/setjmp.S
  66920. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/setjmp.S 1970-01-01 01:00:00.000000000 +0100
  66921. +++ uClibc-git/libc/sysdeps/linux/metag/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  66922. @@ -0,0 +1,52 @@
  66923. +/*
  66924. + * Copyright (C) 2013 Imagination Technologies Ltd.
  66925. + *
  66926. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  66927. + */
  66928. +
  66929. +!!! setjmp and variants
  66930. + .text
  66931. +
  66932. +!! int _setjmp (jmp_buf __env)
  66933. +!! Store the calling environment in ENV, not saving the signal mask.
  66934. +!! Return 0. */
  66935. + .global __setjmp
  66936. + .type __setjmp,function
  66937. +__setjmp:
  66938. + MOV D0Ar2,#0
  66939. + B ___sigsetjmp1
  66940. + .size __setjmp,.-__setjmp
  66941. +
  66942. +!! int setjmp (jmp_buf __env)
  66943. +!! Store the calling environment in ENV, also saving the signal mask.
  66944. +!! Return 0. */
  66945. + .global _setjmp
  66946. + .type _setjmp,function
  66947. +_setjmp:
  66948. + MOV D0Ar2,#1
  66949. + !! fall through to __sigsetjmp
  66950. + .size _setjmp,.-_setjmp
  66951. +
  66952. +!! int __sigsetjmp (jmp_buf __env, int __savemask)
  66953. +!! Store the calling environment in ENV, also saving the
  66954. +!! signal mask if SAVEMASK is nonzero. Return 0.
  66955. +!! This is the internal name for `sigsetjmp'.
  66956. + .global ___sigsetjmp
  66957. + .type ___sigsetjmp,function
  66958. +___sigsetjmp:
  66959. +___sigsetjmp1:
  66960. + !! Save A0/A1 regs
  66961. + MSETL [D1Ar1++],A0.0,A0.1
  66962. + !! Use A0.3 as temp
  66963. + MOV A0.3,D1Ar1
  66964. + !! Rewind D1Ar1 that was modified above
  66965. + SUB D1Ar1,D1Ar1,#(2*8)
  66966. + !! Save D0/D1 regs
  66967. + MSETL [A0.3++],D0FrT,D0.5,D0.6,D0.7
  66968. + !! Tail call __sigjmp_save
  66969. +#ifdef __PIC__
  66970. + B ___sigjmp_save@PLT
  66971. +#else
  66972. + B ___sigjmp_save
  66973. +#endif
  66974. + .size ___sigsetjmp,.-___sigsetjmp
  66975. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/io.h uClibc-git/libc/sysdeps/linux/metag/sys/io.h
  66976. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/io.h 1970-01-01 01:00:00.000000000 +0100
  66977. +++ uClibc-git/libc/sysdeps/linux/metag/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  66978. @@ -0,0 +1,48 @@
  66979. +/* Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
  66980. + This file is part of the GNU C Library.
  66981. +
  66982. + The GNU C Library is free software; you can redistribute it and/or
  66983. + modify it under the terms of the GNU Lesser General Public
  66984. + License as published by the Free Software Foundation; either
  66985. + version 2.1 of the License, or (at your option) any later version.
  66986. +
  66987. + The GNU C Library is distributed in the hope that it will be useful,
  66988. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  66989. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  66990. + Lesser General Public License for more details.
  66991. +
  66992. + You should have received a copy of the GNU Lesser General Public
  66993. + License along with the GNU C Library; if not, write to the Free
  66994. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  66995. + 02111-1307 USA. */
  66996. +
  66997. +#ifndef _SYS_IO_H
  66998. +
  66999. +#define _SYS_IO_H 1
  67000. +#include <features.h>
  67001. +
  67002. +__BEGIN_DECLS
  67003. +
  67004. +/* If TURN_ON is TRUE, request for permission to do direct i/o on the
  67005. + port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  67006. + permission off for that range. This call requires root privileges. */
  67007. +extern int ioperm (unsigned long int __from, unsigned long int __num,
  67008. + int __turn_on) __THROW;
  67009. +
  67010. +/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
  67011. + permission to access any I/O port is granted. This call requires
  67012. + root privileges. */
  67013. +extern int iopl (int __level) __THROW;
  67014. +
  67015. +/* The functions that actually perform reads and writes. */
  67016. +extern unsigned char inb (unsigned long int port) __THROW;
  67017. +extern unsigned short int inw (unsigned long int port) __THROW;
  67018. +extern unsigned long int inl (unsigned long int port) __THROW;
  67019. +
  67020. +extern void outb (unsigned char value, unsigned long int port) __THROW;
  67021. +extern void outw (unsigned short value, unsigned long int port) __THROW;
  67022. +extern void outl (unsigned long value, unsigned long int port) __THROW;
  67023. +
  67024. +__END_DECLS
  67025. +
  67026. +#endif /* _SYS_IO_H */
  67027. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/procfs.h uClibc-git/libc/sysdeps/linux/metag/sys/procfs.h
  67028. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/procfs.h 1970-01-01 01:00:00.000000000 +0100
  67029. +++ uClibc-git/libc/sysdeps/linux/metag/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  67030. @@ -0,0 +1,121 @@
  67031. +/* Copyright (C) 1996, 1997, 1999, 2007 Free Software Foundation, Inc.
  67032. + This file is part of the GNU C Library.
  67033. +
  67034. + The GNU C Library is free software; you can redistribute it and/or
  67035. + modify it under the terms of the GNU Lesser General Public
  67036. + License as published by the Free Software Foundation; either
  67037. + version 2.1 of the License, or (at your option) any later version.
  67038. +
  67039. + The GNU C Library is distributed in the hope that it will be useful,
  67040. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67041. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67042. + Lesser General Public License for more details.
  67043. +
  67044. + You should have received a copy of the GNU Lesser General Public
  67045. + License along with the GNU C Library; if not, write to the Free
  67046. + Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  67047. + Boston, MA 02110-1301, USA. */
  67048. +
  67049. +#ifndef _SYS_PROCFS_H
  67050. +#define _SYS_PROCFS_H 1
  67051. +
  67052. +/* This is somewhat modelled after the file of the same name on SVR4
  67053. + systems. It provides a definition of the core file format for ELF
  67054. + used on Linux. It doesn't have anything to do with the /proc file
  67055. + system, even though Linux has one.
  67056. +
  67057. + Anyway, the whole purpose of this file is for GDB and GDB only.
  67058. + Don't read too much into it. Don't use it for anything other than
  67059. + GDB unless you know what you are doing. */
  67060. +
  67061. +#include <features.h>
  67062. +#include <sys/time.h>
  67063. +#include <sys/types.h>
  67064. +#include <sys/user.h>
  67065. +
  67066. +__BEGIN_DECLS
  67067. +
  67068. +/* Type for a general-purpose register. */
  67069. +typedef unsigned long elf_greg_t;
  67070. +
  67071. +#define ELF_NGREG 30
  67072. +typedef elf_greg_t elf_gregset_t[ELF_NGREG];
  67073. +
  67074. +/* Register set for the floating-point registers. */
  67075. +#define ELF_NFPREG 18
  67076. +typedef unsigned long elf_fpreg_t;
  67077. +typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
  67078. +
  67079. +/* Signal info. */
  67080. +struct elf_siginfo
  67081. + {
  67082. + int si_signo; /* Signal number. */
  67083. + int si_code; /* Extra code. */
  67084. + int si_errno; /* Errno. */
  67085. + };
  67086. +
  67087. +/* Definitions to generate Intel SVR4-like core files. These mostly
  67088. + have the same names as the SVR4 types with "elf_" tacked on the
  67089. + front to prevent clashes with Linux definitions, and the typedef
  67090. + forms have been avoided. This is mostly like the SVR4 structure,
  67091. + but more Linuxy, with things that Linux does not support and which
  67092. + GDB doesn't really use excluded. */
  67093. +
  67094. +struct elf_prstatus
  67095. + {
  67096. + struct elf_siginfo pr_info; /* Info associated with signal. */
  67097. + short int pr_cursig; /* Current signal. */
  67098. + unsigned long int pr_sigpend; /* Set of pending signals. */
  67099. + unsigned long int pr_sighold; /* Set of held signals. */
  67100. + __pid_t pr_pid;
  67101. + __pid_t pr_ppid;
  67102. + __pid_t pr_pgrp;
  67103. + __pid_t pr_sid;
  67104. + struct timeval pr_utime; /* User time. */
  67105. + struct timeval pr_stime; /* System time. */
  67106. + struct timeval pr_cutime; /* Cumulative user time. */
  67107. + struct timeval pr_cstime; /* Cumulative system time. */
  67108. + elf_gregset_t pr_reg; /* GP registers. */
  67109. + int pr_fpvalid; /* True if math copro being used. */
  67110. + };
  67111. +
  67112. +
  67113. +#define ELF_PRARGSZ (80) /* Number of chars for args. */
  67114. +
  67115. +struct elf_prpsinfo
  67116. + {
  67117. + char pr_state; /* Numeric process state. */
  67118. + char pr_sname; /* Char for pr_state. */
  67119. + char pr_zomb; /* Zombie. */
  67120. + char pr_nice; /* Nice val. */
  67121. + unsigned long int pr_flag; /* Flags. */
  67122. + unsigned short int pr_uid;
  67123. + unsigned short int pr_gid;
  67124. + int pr_pid, pr_ppid, pr_pgrp, pr_sid;
  67125. + /* Lots missing */
  67126. + char pr_fname[16]; /* Filename of executable. */
  67127. + char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
  67128. + };
  67129. +
  67130. +/* The rest of this file provides the types for emulation of the
  67131. + Solaris <proc_service.h> interfaces that should be implemented by
  67132. + users of libthread_db. */
  67133. +
  67134. +/* Addresses. */
  67135. +typedef void *psaddr_t;
  67136. +
  67137. +/* Register sets. Linux has different names. */
  67138. +typedef elf_gregset_t prgregset_t;
  67139. +typedef elf_fpregset_t prfpregset_t;
  67140. +
  67141. +/* We don't have any differences between processes and threads,
  67142. + therefore have only one PID type. */
  67143. +typedef __pid_t lwpid_t;
  67144. +
  67145. +/* Process status and info. In the end we do provide typedefs for them. */
  67146. +typedef struct elf_prstatus prstatus_t;
  67147. +typedef struct elf_prpsinfo prpsinfo_t;
  67148. +
  67149. +__END_DECLS
  67150. +
  67151. +#endif /* sys/procfs.h */
  67152. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/ucontext.h uClibc-git/libc/sysdeps/linux/metag/sys/ucontext.h
  67153. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/ucontext.h 1970-01-01 01:00:00.000000000 +0100
  67154. +++ uClibc-git/libc/sysdeps/linux/metag/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  67155. @@ -0,0 +1,96 @@
  67156. +/* Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc.
  67157. + This file is part of the GNU C Library.
  67158. +
  67159. + The GNU C Library is free software; you can redistribute it and/or
  67160. + modify it under the terms of the GNU Lesser General Public
  67161. + License as published by the Free Software Foundation; either
  67162. + version 2.1 of the License, or (at your option) any later version.
  67163. +
  67164. + The GNU C Library is distributed in the hope that it will be useful,
  67165. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67166. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67167. + Lesser General Public License for more details.
  67168. +
  67169. + You should have received a copy of the GNU Lesser General Public
  67170. + License along with the GNU C Library; if not, write to the Free
  67171. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67172. + 02111-1307 USA. */
  67173. +
  67174. +/* Meta ABI compliant context switching support. */
  67175. +
  67176. +#ifndef _SYS_UCONTEXT_H
  67177. +#define _SYS_UCONTEXT_H 1
  67178. +
  67179. +#include <features.h>
  67180. +#include <signal.h>
  67181. +#include <sys/procfs.h>
  67182. +
  67183. +/* We need the signal context definitions even if they are not used
  67184. + included in <signal.h>. */
  67185. +#include <bits/sigcontext.h>
  67186. +
  67187. +typedef int greg_t;
  67188. +
  67189. +/* Number of general registers. */
  67190. +#define NGREG 18
  67191. +
  67192. +/* Container for all general registers. */
  67193. +typedef elf_gregset_t gregset_t;
  67194. +
  67195. +/* Number of each register is the `gregset_t' array. */
  67196. +enum
  67197. +{
  67198. + R0 = 0,
  67199. +#define R0 R0
  67200. + R1 = 1,
  67201. +#define R1 R1
  67202. + R2 = 2,
  67203. +#define R2 R2
  67204. + R3 = 3,
  67205. +#define R3 R3
  67206. + R4 = 4,
  67207. +#define R4 R4
  67208. + R5 = 5,
  67209. +#define R5 R5
  67210. + R6 = 6,
  67211. +#define R6 R6
  67212. + R7 = 7,
  67213. +#define R7 R7
  67214. + R8 = 8,
  67215. +#define R8 R8
  67216. + R9 = 9,
  67217. +#define R9 R9
  67218. + R10 = 10,
  67219. +#define R10 R10
  67220. + R11 = 11,
  67221. +#define R11 R11
  67222. + R12 = 12,
  67223. +#define R12 R12
  67224. + R13 = 13,
  67225. +#define R13 R13
  67226. + R14 = 14,
  67227. +#define R14 R14
  67228. + R15 = 15
  67229. +#define R15 R15
  67230. +};
  67231. +
  67232. +/* Structure to describe FPU registers. */
  67233. +typedef elf_fpregset_t fpregset_t;
  67234. +
  67235. +/* Context to describe whole processor state. This only describes
  67236. + the core registers; coprocessor registers get saved elsewhere
  67237. + (e.g. in uc_regspace, or somewhere unspecified on the stack
  67238. + during non-RT signal handlers). */
  67239. +typedef struct sigcontext mcontext_t;
  67240. +
  67241. +/* Userlevel context. */
  67242. +typedef struct ucontext
  67243. + {
  67244. + unsigned long uc_flags;
  67245. + struct ucontext *uc_link;
  67246. + stack_t uc_stack;
  67247. + mcontext_t uc_mcontext;
  67248. + __sigset_t uc_sigmask;
  67249. + } ucontext_t;
  67250. +
  67251. +#endif /* sys/ucontext.h */
  67252. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/user.h uClibc-git/libc/sysdeps/linux/metag/sys/user.h
  67253. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sys/user.h 1970-01-01 01:00:00.000000000 +0100
  67254. +++ uClibc-git/libc/sysdeps/linux/metag/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  67255. @@ -0,0 +1,7 @@
  67256. +/*
  67257. + * This file is not needed, but in practice gdb might try to include it.
  67258. + *
  67259. + * Copyright (C) 2013 Imagination Technologies Ltd.
  67260. + *
  67261. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67262. + */
  67263. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/syscall.c uClibc-git/libc/sysdeps/linux/metag/syscall.c
  67264. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/syscall.c 1970-01-01 01:00:00.000000000 +0100
  67265. +++ uClibc-git/libc/sysdeps/linux/metag/syscall.c 2014-02-03 12:32:56.000000000 +0100
  67266. @@ -0,0 +1,40 @@
  67267. +/* syscall for META/uClibc
  67268. + *
  67269. + * Copyright (C) 2013 Imagination Technologies
  67270. + *
  67271. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67272. + */
  67273. +
  67274. +#include <features.h>
  67275. +#include <errno.h>
  67276. +#include <sys/types.h>
  67277. +#include <sys/syscall.h>
  67278. +
  67279. +long syscall(long sysnum,
  67280. + long arg1, long arg2, long arg3,
  67281. + long arg4, long arg5, long arg6)
  67282. +{
  67283. +
  67284. + register long __call __asm__ ("D1Re0") = sysnum;
  67285. + register long __res __asm__ ("D0Re0");
  67286. + register long __a __asm__ ("D1Ar1") = arg1;
  67287. + register long __b __asm__ ("D0Ar2") = arg2;
  67288. + register long __c __asm__ ("D1Ar3") = arg3;
  67289. + register long __d __asm__ ("D0Ar4") = arg4;
  67290. + register long __e __asm__ ("D1Ar5") = arg5;
  67291. + register long __f __asm__ ("D0Ar6") = arg6;
  67292. +
  67293. +
  67294. + __asm__ __volatile__ ("SWITCH #0x440001"
  67295. + : "=d" (__res)
  67296. + : "d" (__call), "d" (__a), "d" (__b),
  67297. + "d" (__c), "d" (__d), "d" (__e) , "d" (__f)
  67298. + : "memory");
  67299. +
  67300. + if(__res >= (unsigned long) -4095) {
  67301. + long err = __res;
  67302. + (*__errno_location()) = (-err);
  67303. + __res = (unsigned long) -1;
  67304. + }
  67305. + return (long) __res;
  67306. +}
  67307. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/__syscall_error.c uClibc-git/libc/sysdeps/linux/metag/__syscall_error.c
  67308. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/__syscall_error.c 1970-01-01 01:00:00.000000000 +0100
  67309. +++ uClibc-git/libc/sysdeps/linux/metag/__syscall_error.c 2014-02-03 12:32:56.000000000 +0100
  67310. @@ -0,0 +1,18 @@
  67311. +/* Wrapper for setting errno.
  67312. + *
  67313. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  67314. + *
  67315. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67316. + */
  67317. +
  67318. +#include <errno.h>
  67319. +#include <features.h>
  67320. +
  67321. +/* This routine is jumped to by all the syscall handlers, to stash
  67322. + * an error number into errno. */
  67323. +int __syscall_error(int err_no) attribute_hidden;
  67324. +int __syscall_error(int err_no)
  67325. +{
  67326. + __set_errno(-err_no);
  67327. + return -1;
  67328. +}
  67329. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/sysdep.h uClibc-git/libc/sysdeps/linux/metag/sysdep.h
  67330. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  67331. +++ uClibc-git/libc/sysdeps/linux/metag/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  67332. @@ -0,0 +1,59 @@
  67333. +/*
  67334. + * Assembler macros for Meta.
  67335. + *
  67336. + * Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67337. + */
  67338. +
  67339. +#include <common/sysdep.h>
  67340. +
  67341. +#include <features.h>
  67342. +#include <libc-internal.h>
  67343. +
  67344. +#ifdef __ASSEMBLER__
  67345. +
  67346. +#ifdef SHARED
  67347. +#define PLTJMP(_x) _x##@PLT
  67348. +#else
  67349. +#define PLTJMP(_x) _x
  67350. +#endif
  67351. +
  67352. +#undef PSEUDO_END
  67353. +#define PSEUDO_END(name) \
  67354. + SYSCALL_ERROR_HANDLER \
  67355. + END (name)
  67356. +
  67357. +#if defined NOT_IN_libc
  67358. +# define SYSCALL_ERROR __local_syscall_error
  67359. +# ifdef RTLD_PRIVATE_ERRNO
  67360. +# define SYSCALL_ERROR_HANDLER \
  67361. +__local_syscall_error: \
  67362. + NEG D0Re0, D0Re0; \
  67363. + ADDT D1Re0, CPC1, #HI(_rtld_errno); \
  67364. + ADD D1Re0, D1Re0, #LO(_rtld_errno) + 4; \
  67365. + SETD [D1Re0], D0Re0; \
  67366. + NEG D0Re0, #0x1; \
  67367. + MOV PC, D1RtP;
  67368. +# else
  67369. +# define SYSCALL_ERROR_HANDLER \
  67370. +__local_syscall_error: \
  67371. + MOV D1Re0, D1RtP; \
  67372. + SETL [A0StP++], D0Re0, D1Re0; \
  67373. + CALLR D1RtP, PLTJMP(___errno_location); \
  67374. + GETD D1Re0, [A0StP+#-8]; \
  67375. + NEG D1Re0, D1Re0; \
  67376. + SETD [D0Re0], D1Re0; \
  67377. + NEG D0Re0, #0x1; \
  67378. + GETD D1RtP, [A0StP+#-4]; \
  67379. + SUB A0StP, A0StP, #0x8; \
  67380. + MOV PC, D1RtP;
  67381. +# endif
  67382. +#else
  67383. +# define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
  67384. +# define SYSCALL_ERROR ___syscall_error
  67385. +#endif
  67386. +
  67387. +#endif /* __ASSEMBLER __*/
  67388. +
  67389. +/* Pointer mangling is not yet supported for META. */
  67390. +#define PTR_MANGLE(var) (void) (var)
  67391. +#define PTR_DEMANGLE(var) (void) (var)
  67392. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/metag/vfork.S uClibc-git/libc/sysdeps/linux/metag/vfork.S
  67393. --- uClibc-0.9.33.2/libc/sysdeps/linux/metag/vfork.S 1970-01-01 01:00:00.000000000 +0100
  67394. +++ uClibc-git/libc/sysdeps/linux/metag/vfork.S 2014-02-03 12:32:56.000000000 +0100
  67395. @@ -0,0 +1,67 @@
  67396. +! Copyright (C) 2013 Imagination Technologies Ltd.
  67397. +
  67398. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  67399. +
  67400. +#include <asm/unistd.h>
  67401. +
  67402. +#define _ERRNO_H
  67403. +#include <bits/errno.h>
  67404. +#include <sys/syscall.h>
  67405. +
  67406. +#ifndef SAVE_PID
  67407. +#define SAVE_PID
  67408. +#endif
  67409. +
  67410. +#ifndef RESTORE_PID
  67411. +#define RESTORE_PID
  67412. +#endif
  67413. +
  67414. +#ifdef __NR_vfork
  67415. +#define __VFORK_NR __NR_vfork
  67416. +#else
  67417. +#define __VFORK_NR __NR_fork
  67418. +#endif
  67419. +
  67420. +/* Clone the calling process, but without copying the whole address space.
  67421. + The calling process is suspended until the new process exits or is
  67422. + replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
  67423. + and the process ID of the new process to the old process. */
  67424. +
  67425. + .balign 4
  67426. + .global ___vfork
  67427. + .hidden ___vfork
  67428. + .type ___vfork, @function
  67429. +___vfork:
  67430. +
  67431. + SAVE_PID
  67432. +
  67433. + MOV D1Ar1, #0x4111 /* CLONE_VM | CLONE_VFORK | SIGCHLD */
  67434. + MOV D0Ar2, #0
  67435. + MOV D1Ar3, #0
  67436. + MOV D0Ar4, #0
  67437. + MOV D1Ar5, #0
  67438. + MOV D0Ar6, #0
  67439. + MOV D1Re0, #__NR_clone
  67440. + SWITCH #0x440001
  67441. +
  67442. + RESTORE_PID
  67443. +
  67444. + MOVT D1Re0, #HI(-4096)
  67445. + ADD D1Re0, D1Re0, #LO(-4096)
  67446. + CMP D1Re0, D0Re0
  67447. + BCS error
  67448. +
  67449. + /* Syscall worked. Return to child/parent */
  67450. + MOV PC, D1RtP
  67451. +
  67452. +error:
  67453. + MOV D1Ar1, D0Re0
  67454. +#ifdef __PIC__
  67455. + B ___syscall_error@PLT
  67456. +#else
  67457. + B ___syscall_error
  67458. +#endif
  67459. + .size ___vfork,.-___vfork
  67460. +
  67461. +weak_alias(__vfork,vfork)
  67462. +libc_hidden_weak(vfork)
  67463. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/fcntl.h uClibc-git/libc/sysdeps/linux/microblaze/bits/fcntl.h
  67464. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  67465. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  67466. @@ -13,9 +13,8 @@
  67467. Lesser General Public License for more details.
  67468. You should have received a copy of the GNU Lesser General Public
  67469. - License along with the GNU C Library; if not, write to the Free
  67470. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67471. - 02111-1307 USA. */
  67472. + License along with the GNU C Library; if not, see
  67473. + <http://www.gnu.org/licenses/>. */
  67474. #ifndef _FCNTL_H
  67475. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  67476. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/microblaze/bits/kernel_types.h
  67477. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  67478. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  67479. @@ -44,6 +44,8 @@
  67480. typedef unsigned int __kernel_old_uid_t;
  67481. typedef unsigned int __kernel_old_gid_t;
  67482. typedef unsigned int __kernel_old_dev_t;
  67483. +typedef long __kernel_long_t;
  67484. +typedef unsigned long __kernel_ulong_t;
  67485. #ifdef __GNUC__
  67486. typedef long long __kernel_loff_t;
  67487. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/poll.h uClibc-git/libc/sysdeps/linux/microblaze/bits/poll.h
  67488. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  67489. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  67490. @@ -12,9 +12,8 @@
  67491. Lesser General Public License for more details.
  67492. You should have received a copy of the GNU Lesser General Public
  67493. - License along with the GNU C Library; if not, write to the Free
  67494. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67495. - 02111-1307 USA. */
  67496. + License along with the GNU C Library; if not, see
  67497. + <http://www.gnu.org/licenses/>. */
  67498. #ifndef _SYS_POLL_H
  67499. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  67500. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/setjmp.h uClibc-git/libc/sysdeps/linux/microblaze/bits/setjmp.h
  67501. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  67502. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  67503. @@ -19,7 +19,6 @@
  67504. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  67505. #endif
  67506. -#ifndef _ASM
  67507. typedef struct
  67508. {
  67509. /* Stack pointer. */
  67510. @@ -35,13 +34,5 @@
  67511. /* Callee-saved registers r18-r31. */
  67512. int __regs[14];
  67513. } __jmp_buf[1];
  67514. -#endif
  67515. -
  67516. -#define JB_SIZE (4 * 18)
  67517. -
  67518. -/* Test if longjmp to JMPBUF would unwind the frame
  67519. - containing a local variable at ADDRESS. */
  67520. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  67521. - ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  67522. #endif /* bits/setjmp.h */
  67523. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/microblaze/bits/stackinfo.h
  67524. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  67525. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  67526. @@ -12,9 +12,8 @@
  67527. Lesser General Public License for more details.
  67528. You should have received a copy of the GNU Lesser General Public
  67529. - License along with the GNU C Library; if not, write to the Free
  67530. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67531. - 02111-1307 USA. */
  67532. + License along with the GNU C Library; if not, see
  67533. + <http://www.gnu.org/licenses/>. */
  67534. /* This file contains a bit of information about the stack allocation
  67535. of the processor. */
  67536. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h
  67537. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  67538. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  67539. @@ -12,8 +12,8 @@
  67540. /* can your target use syscall6() for mmap ? */
  67541. #define __UCLIBC_MMAP_HAS_6_ARGS__
  67542. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  67543. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  67544. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  67545. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  67546. /* does your target have a broken create_module() ? */
  67547. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  67548. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/microblaze/bits/uClibc_page.h
  67549. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  67550. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  67551. @@ -11,8 +11,8 @@
  67552. * Library General Public License for more details.
  67553. *
  67554. * You should have received a copy of the GNU Library General Public
  67555. - * License along with this library; if not, write to the Free
  67556. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  67557. + * License along with this library; if not, see
  67558. + * <http://www.gnu.org/licenses/>.
  67559. */
  67560. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  67561. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/wordsize.h uClibc-git/libc/sysdeps/linux/microblaze/bits/wordsize.h
  67562. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  67563. +++ uClibc-git/libc/sysdeps/linux/microblaze/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  67564. @@ -12,8 +12,7 @@
  67565. Lesser General Public License for more details.
  67566. You should have received a copy of the GNU Lesser General Public
  67567. - License along with the GNU C Library; if not, write to the Free
  67568. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67569. - 02111-1307 USA. */
  67570. + License along with the GNU C Library; if not, see
  67571. + <http://www.gnu.org/licenses/>. */
  67572. #define __WORDSIZE 32
  67573. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h
  67574. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  67575. +++ uClibc-git/libc/sysdeps/linux/microblaze/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  67576. @@ -0,0 +1,6 @@
  67577. +/*
  67578. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  67579. + *
  67580. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  67581. + */
  67582. +#define JB_SIZE (4 * 18)
  67583. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h
  67584. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  67585. +++ uClibc-git/libc/sysdeps/linux/microblaze/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  67586. @@ -0,0 +1,11 @@
  67587. +/*
  67588. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  67589. + *
  67590. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  67591. + */
  67592. +#include <setjmp.h>
  67593. +
  67594. +/* Test if longjmp to JMPBUF would unwind the frame
  67595. + containing a local variable at ADDRESS. */
  67596. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  67597. + ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  67598. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/__longjmp.S uClibc-git/libc/sysdeps/linux/microblaze/__longjmp.S
  67599. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  67600. +++ uClibc-git/libc/sysdeps/linux/microblaze/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  67601. @@ -12,10 +12,6 @@
  67602. * Written by Miles Bader <miles@gnu.org>
  67603. */
  67604. -#define _SETJMP_H
  67605. -#define _ASM
  67606. -#include <bits/setjmp.h>
  67607. -
  67608. #include <libc-symbols.h>
  67609. .text
  67610. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile uClibc-git/libc/sysdeps/linux/microblaze/Makefile
  67611. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile 2012-05-15 09:20:09.000000000 +0200
  67612. +++ uClibc-git/libc/sysdeps/linux/microblaze/Makefile 2014-02-03 12:32:56.000000000 +0100
  67613. @@ -13,8 +13,7 @@
  67614. # details.
  67615. #
  67616. # You should have received a copy of the GNU Library General Public License
  67617. -# along with this program; if not, write to the Free Software Foundation, Inc.,
  67618. -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  67619. +# along with this program; if not, see <http://www.gnu.org/licenses/>.
  67620. top_srcdir=../../../../
  67621. top_builddir=../../../../
  67622. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile.arch uClibc-git/libc/sysdeps/linux/microblaze/Makefile.arch
  67623. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  67624. +++ uClibc-git/libc/sysdeps/linux/microblaze/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  67625. @@ -5,8 +5,8 @@
  67626. #
  67627. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  67628. -CSRC := mmap.c clone.c fixdfsi.c
  67629. +CSRC-y := clone.c fixdfsi.c
  67630. -SSRC := setjmp.S __longjmp.S vfork.S
  67631. +SSRC-y := setjmp.S __longjmp.S vfork.S
  67632. ARCH_HEADERS := floatlib.h
  67633. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/mmap.c uClibc-git/libc/sysdeps/linux/microblaze/mmap.c
  67634. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/mmap.c 2012-05-15 09:20:09.000000000 +0200
  67635. +++ uClibc-git/libc/sysdeps/linux/microblaze/mmap.c 1970-01-01 01:00:00.000000000 +0100
  67636. @@ -1,16 +0,0 @@
  67637. -/* Use new style mmap for microblaze */
  67638. -/*
  67639. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  67640. - *
  67641. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  67642. - */
  67643. -
  67644. -#include <unistd.h>
  67645. -#include <errno.h>
  67646. -#include <sys/mman.h>
  67647. -#include <sys/syscall.h>
  67648. -
  67649. -
  67650. -_syscall6 (__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot,
  67651. - int, flags, int, fd, __off_t, offset)
  67652. -libc_hidden_def(mmap)
  67653. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/setjmp.S uClibc-git/libc/sysdeps/linux/microblaze/setjmp.S
  67654. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  67655. +++ uClibc-git/libc/sysdeps/linux/microblaze/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  67656. @@ -25,13 +25,8 @@
  67657. Lesser General Public License for more details.
  67658. You should have received a copy of the GNU Lesser General Public
  67659. - License along with the GNU C Library; if not, write to the Free
  67660. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67661. - 02111-1307 USA. */
  67662. -
  67663. -#define _SETJMP_H
  67664. -#define _ASM
  67665. -#include <bits/setjmp.h>
  67666. + License along with the GNU C Library; if not, see
  67667. + <http://www.gnu.org/licenses/>. */
  67668. #include <libc-symbols.h>
  67669. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/procfs.h uClibc-git/libc/sysdeps/linux/microblaze/sys/procfs.h
  67670. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  67671. +++ uClibc-git/libc/sysdeps/linux/microblaze/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  67672. @@ -12,9 +12,8 @@
  67673. Lesser General Public License for more details.
  67674. You should have received a copy of the GNU Lesser General Public
  67675. - License along with the GNU C Library; if not, write to the Free
  67676. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67677. - 02111-1307 USA. */
  67678. + License along with the GNU C Library; if not, see
  67679. + <http://www.gnu.org/licenses/>. */
  67680. #ifndef _SYS_PROCFS_H
  67681. #define _SYS_PROCFS_H 1
  67682. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ptrace.h uClibc-git/libc/sysdeps/linux/microblaze/sys/ptrace.h
  67683. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  67684. +++ uClibc-git/libc/sysdeps/linux/microblaze/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  67685. @@ -13,9 +13,8 @@
  67686. Lesser General Public License for more details.
  67687. You should have received a copy of the GNU Lesser General Public
  67688. - License along with the GNU C Library; if not, write to the Free
  67689. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67690. - 02111-1307 USA. */
  67691. + License along with the GNU C Library; if not, see
  67692. + <http://www.gnu.org/licenses/>. */
  67693. #ifndef _SYS_PTRACE_H
  67694. #define _SYS_PTRACE_H 1
  67695. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ucontext.h uClibc-git/libc/sysdeps/linux/microblaze/sys/ucontext.h
  67696. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  67697. +++ uClibc-git/libc/sysdeps/linux/microblaze/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  67698. @@ -12,9 +12,8 @@
  67699. Lesser General Public License for more details.
  67700. You should have received a copy of the GNU Lesser General Public
  67701. - License along with the GNU C Library; if not, write to the Free
  67702. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67703. - 02111-1307 USA. */
  67704. + License along with the GNU C Library; if not, see
  67705. + <http://www.gnu.org/licenses/>. */
  67706. #ifndef _SYS_UCONTEXT_H
  67707. #define _SYS_UCONTEXT_H 1
  67708. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/user.h uClibc-git/libc/sysdeps/linux/microblaze/sys/user.h
  67709. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  67710. +++ uClibc-git/libc/sysdeps/linux/microblaze/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  67711. @@ -12,9 +12,8 @@
  67712. Lesser General Public License for more details.
  67713. You should have received a copy of the GNU Lesser General Public
  67714. - License along with the GNU C Library; if not, write to the Free
  67715. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67716. - 02111-1307 USA. */
  67717. + License along with the GNU C Library; if not, see
  67718. + <http://www.gnu.org/licenses/>. */
  67719. #ifndef _SYS_USER_H
  67720. #define _SYS_USER_H 1
  67721. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/vfork.S uClibc-git/libc/sysdeps/linux/microblaze/vfork.S
  67722. --- uClibc-0.9.33.2/libc/sysdeps/linux/microblaze/vfork.S 2012-05-15 09:20:09.000000000 +0200
  67723. +++ uClibc-git/libc/sysdeps/linux/microblaze/vfork.S 2014-02-03 12:32:56.000000000 +0100
  67724. @@ -13,21 +13,15 @@
  67725. * Microblaze port by John Williams
  67726. */
  67727. -#define _ERRNO_H 1
  67728. -#include <bits/errno.h>
  67729. -#define _SYSCALL_H
  67730. -#include <bits/sysnum.h>
  67731. -
  67732. -#include <libc-symbols.h>
  67733. +#include <sys/syscall.h>
  67734. /* Clone the calling process, but without copying the whole address space.
  67735. The calling process is suspended until the new process exits or is
  67736. replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
  67737. and the process ID of the new process to the old process. */
  67738. -.global C_SYMBOL_NAME(errno)
  67739. -
  67740. .globl __vfork
  67741. + .hidden __vfork
  67742. .align 4
  67743. __vfork:
  67744. addi r12, r0, SYS_vfork
  67745. @@ -50,4 +44,4 @@
  67746. .size __vfork, .-__vfork
  67747. weak_alias(__vfork,vfork)
  67748. -libc_hidden_weak(vfork)
  67749. +libc_hidden_def(vfork)
  67750. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/atomic.h uClibc-git/libc/sysdeps/linux/mips/bits/atomic.h
  67751. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  67752. +++ uClibc-git/libc/sysdeps/linux/mips/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  67753. @@ -13,9 +13,8 @@
  67754. Lesser General Public License for more details.
  67755. You should have received a copy of the GNU Lesser General Public
  67756. - License along with the GNU C Library; if not, write to the Free
  67757. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67758. - 02111-1307 USA. */
  67759. + License along with the GNU C Library; if not, see
  67760. + <http://www.gnu.org/licenses/>. */
  67761. #ifndef _MIPS_BITS_ATOMIC_H
  67762. #define _MIPS_BITS_ATOMIC_H 1
  67763. @@ -136,22 +135,22 @@
  67764. /* For all "bool" routines, we return FALSE if exchange succesful. */
  67765. #define __arch_compare_and_exchange_bool_8_int(mem, new, old, rel, acq) \
  67766. -({ __typeof (*mem) __prev; int __cmp; \
  67767. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67768. __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \
  67769. !__cmp; })
  67770. #define __arch_compare_and_exchange_bool_16_int(mem, new, old, rel, acq) \
  67771. -({ __typeof (*mem) __prev; int __cmp; \
  67772. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67773. __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \
  67774. !__cmp; })
  67775. #define __arch_compare_and_exchange_bool_32_int(mem, new, old, rel, acq) \
  67776. -({ __typeof (*mem) __prev; int __cmp; \
  67777. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67778. __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \
  67779. !__cmp; })
  67780. #define __arch_compare_and_exchange_bool_64_int(mem, new, old, rel, acq) \
  67781. -({ __typeof (*mem) __prev; int __cmp; \
  67782. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67783. __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \
  67784. !__cmp; })
  67785. @@ -159,22 +158,22 @@
  67786. successful or not. */
  67787. #define __arch_compare_and_exchange_val_8_int(mem, new, old, rel, acq) \
  67788. -({ __typeof (*mem) __prev; int __cmp; \
  67789. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67790. __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \
  67791. (__typeof (*mem))__prev; })
  67792. #define __arch_compare_and_exchange_val_16_int(mem, new, old, rel, acq) \
  67793. -({ __typeof (*mem) __prev; int __cmp; \
  67794. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67795. __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \
  67796. (__typeof (*mem))__prev; })
  67797. #define __arch_compare_and_exchange_val_32_int(mem, new, old, rel, acq) \
  67798. -({ __typeof (*mem) __prev; int __cmp; \
  67799. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67800. __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \
  67801. (__typeof (*mem))__prev; })
  67802. #define __arch_compare_and_exchange_val_64_int(mem, new, old, rel, acq) \
  67803. -({ __typeof (*mem) __prev; int __cmp; \
  67804. +({ __typeof (*mem) __prev attribute_unused; int __cmp; \
  67805. __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \
  67806. (__typeof (*mem))__prev; })
  67807. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dirent.h uClibc-git/libc/sysdeps/linux/mips/bits/dirent.h
  67808. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dirent.h 2012-05-15 09:20:09.000000000 +0200
  67809. +++ uClibc-git/libc/sysdeps/linux/mips/bits/dirent.h 2014-02-03 12:32:56.000000000 +0100
  67810. @@ -12,9 +12,8 @@
  67811. Lesser General Public License for more details.
  67812. You should have received a copy of the GNU Lesser General Public
  67813. - License along with the GNU C Library; if not, write to the Free
  67814. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67815. - 02111-1307 USA. */
  67816. + License along with the GNU C Library; if not, see
  67817. + <http://www.gnu.org/licenses/>. */
  67818. #ifndef _DIRENT_H
  67819. # error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
  67820. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dlfcn.h uClibc-git/libc/sysdeps/linux/mips/bits/dlfcn.h
  67821. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/dlfcn.h 2012-05-15 09:20:09.000000000 +0200
  67822. +++ uClibc-git/libc/sysdeps/linux/mips/bits/dlfcn.h 2014-02-03 12:32:56.000000000 +0100
  67823. @@ -14,9 +14,8 @@
  67824. Lesser General Public License for more details.
  67825. You should have received a copy of the GNU Lesser General Public
  67826. - License along with the GNU C Library; if not, write to the Free
  67827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67828. - 02111-1307 USA. */
  67829. + License along with the GNU C Library; if not, see
  67830. + <http://www.gnu.org/licenses/>. */
  67831. #ifndef _DLFCN_H
  67832. # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
  67833. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/eventfd.h uClibc-git/libc/sysdeps/linux/mips/bits/eventfd.h
  67834. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  67835. +++ uClibc-git/libc/sysdeps/linux/mips/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  67836. @@ -0,0 +1,31 @@
  67837. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  67838. + This file is part of the GNU C Library.
  67839. +
  67840. + The GNU C Library is free software; you can redistribute it and/or
  67841. + modify it under the terms of the GNU Lesser General Public
  67842. + License as published by the Free Software Foundation; either
  67843. + version 2.1 of the License, or (at your option) any later version.
  67844. +
  67845. + The GNU C Library is distributed in the hope that it will be useful,
  67846. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  67847. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  67848. + Lesser General Public License for more details.
  67849. +
  67850. + You should have received a copy of the GNU Lesser General Public
  67851. + License along with the GNU C Library; if not, see
  67852. + <http://www.gnu.org/licenses/>. */
  67853. +
  67854. +#ifndef _SYS_EVENTFD_H
  67855. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  67856. +#endif
  67857. +
  67858. +/* Flags for eventfd. */
  67859. +enum
  67860. + {
  67861. + EFD_SEMAPHORE = 00000001,
  67862. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  67863. + EFD_CLOEXEC = 02000000,
  67864. +#define EFD_CLOEXEC EFD_CLOEXEC
  67865. + EFD_NONBLOCK = 00000200
  67866. +#define EFD_NONBLOCK EFD_NONBLOCK
  67867. + };
  67868. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fcntl.h uClibc-git/libc/sysdeps/linux/mips/bits/fcntl.h
  67869. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  67870. +++ uClibc-git/libc/sysdeps/linux/mips/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  67871. @@ -14,9 +14,8 @@
  67872. Lesser General Public License for more details.
  67873. You should have received a copy of the GNU Lesser General Public
  67874. - License along with the GNU C Library; if not, write to the Free
  67875. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67876. - 02111-1307 USA. */
  67877. + License along with the GNU C Library; if not, see
  67878. + <http://www.gnu.org/licenses/>. */
  67879. #ifndef _FCNTL_H
  67880. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  67881. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fenv.h uClibc-git/libc/sysdeps/linux/mips/bits/fenv.h
  67882. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  67883. +++ uClibc-git/libc/sysdeps/linux/mips/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  67884. @@ -12,9 +12,8 @@
  67885. Lesser General Public License for more details.
  67886. You should have received a copy of the GNU Lesser General Public
  67887. - License along with the GNU C Library; if not, write to the Free
  67888. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67889. - 02111-1307 USA. */
  67890. + License along with the GNU C Library; if not, see
  67891. + <http://www.gnu.org/licenses/>. */
  67892. #ifndef _FENV_H
  67893. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  67894. @@ -69,9 +68,9 @@
  67895. fenv_t;
  67896. /* If the default argument is used we use this value. */
  67897. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  67898. +#define FE_DFL_ENV ((const fenv_t *) -1)
  67899. #ifdef __USE_GNU
  67900. /* Floating-point environment where none of the exception is masked. */
  67901. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  67902. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  67903. #endif
  67904. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ioctl-types.h uClibc-git/libc/sysdeps/linux/mips/bits/ioctl-types.h
  67905. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ioctl-types.h 2012-05-15 09:20:09.000000000 +0200
  67906. +++ uClibc-git/libc/sysdeps/linux/mips/bits/ioctl-types.h 2014-02-03 12:32:56.000000000 +0100
  67907. @@ -13,9 +13,8 @@
  67908. Lesser General Public License for more details.
  67909. You should have received a copy of the GNU Lesser General Public
  67910. - License along with the GNU C Library; if not, write to the Free
  67911. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67912. - 02111-1307 USA. */
  67913. + License along with the GNU C Library; if not, see
  67914. + <http://www.gnu.org/licenses/>. */
  67915. #ifndef _SYS_IOCTL_H
  67916. # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
  67917. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ipc.h uClibc-git/libc/sysdeps/linux/mips/bits/ipc.h
  67918. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  67919. +++ uClibc-git/libc/sysdeps/linux/mips/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  67920. @@ -12,9 +12,8 @@
  67921. Lesser General Public License for more details.
  67922. You should have received a copy of the GNU Lesser General Public
  67923. - License along with the GNU C Library; if not, write to the Free
  67924. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67925. - 02111-1307 USA. */
  67926. + License along with the GNU C Library; if not, see
  67927. + <http://www.gnu.org/licenses/>. */
  67928. #ifndef _SYS_IPC_H
  67929. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  67930. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_sigaction.h uClibc-git/libc/sysdeps/linux/mips/bits/kernel_sigaction.h
  67931. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_sigaction.h 2012-05-15 09:20:09.000000000 +0200
  67932. +++ uClibc-git/libc/sysdeps/linux/mips/bits/kernel_sigaction.h 2014-02-03 12:32:56.000000000 +0100
  67933. @@ -24,12 +24,4 @@
  67934. #endif
  67935. };
  67936. -/* In uclibc, userspace struct sigaction is identical to
  67937. - * "new" struct kernel_sigaction (one from the Linux 2.1.68 kernel).
  67938. - * See sigaction.h
  67939. - */
  67940. -
  67941. -extern int __syscall_rt_sigaction (int, const struct sigaction *,
  67942. - struct sigaction *, size_t) attribute_hidden;
  67943. -
  67944. #endif
  67945. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/mips/bits/kernel_types.h
  67946. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  67947. +++ uClibc-git/libc/sysdeps/linux/mips/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  67948. @@ -32,6 +32,8 @@
  67949. typedef __kernel_uid_t __kernel_old_uid_t;
  67950. typedef __kernel_gid_t __kernel_old_gid_t;
  67951. typedef __kernel_dev_t __kernel_old_dev_t;
  67952. +typedef long __kernel_long_t;
  67953. +typedef unsigned long __kernel_ulong_t;
  67954. typedef long long __kernel_loff_t;
  67955. #else
  67956. typedef unsigned int __kernel_dev_t;
  67957. @@ -68,6 +70,8 @@
  67958. typedef __kernel_uid_t __kernel_old_uid_t;
  67959. typedef __kernel_gid_t __kernel_old_gid_t;
  67960. typedef __kernel_dev_t __kernel_old_dev_t;
  67961. +typedef long __kernel_long_t;
  67962. +typedef unsigned long __kernel_ulong_t;
  67963. typedef long long __kernel_loff_t;
  67964. #endif
  67965. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mathdef.h uClibc-git/libc/sysdeps/linux/mips/bits/mathdef.h
  67966. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  67967. +++ uClibc-git/libc/sysdeps/linux/mips/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  67968. @@ -13,9 +13,8 @@
  67969. Lesser General Public License for more details.
  67970. You should have received a copy of the GNU Lesser General Public
  67971. - License along with the GNU C Library; if not, write to the Free
  67972. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67973. - 02111-1307 USA. */
  67974. + License along with the GNU C Library; if not, see
  67975. + <http://www.gnu.org/licenses/>. */
  67976. #if !defined _MATH_H && !defined _COMPLEX_H
  67977. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  67978. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mman.h uClibc-git/libc/sysdeps/linux/mips/bits/mman.h
  67979. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  67980. +++ uClibc-git/libc/sysdeps/linux/mips/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  67981. @@ -14,9 +14,8 @@
  67982. Lesser General Public License for more details.
  67983. You should have received a copy of the GNU Lesser General Public
  67984. - License along with the GNU C Library; if not, write to the Free
  67985. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  67986. - 02111-1307 USA. */
  67987. + License along with the GNU C Library; if not, see
  67988. + <http://www.gnu.org/licenses/>. */
  67989. #ifndef _SYS_MMAN_H
  67990. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  67991. @@ -66,7 +65,7 @@
  67992. # define MAP_LOCKED 0x8000 /* pages are locked */
  67993. # define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
  67994. # define MAP_NONBLOCK 0x20000 /* do not block on IO */
  67995. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  67996. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  67997. be uninitialized. */
  67998. #endif
  67999. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/msq.h uClibc-git/libc/sysdeps/linux/mips/bits/msq.h
  68000. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  68001. +++ uClibc-git/libc/sysdeps/linux/mips/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  68002. @@ -12,9 +12,8 @@
  68003. Lesser General Public License for more details.
  68004. You should have received a copy of the GNU Lesser General Public
  68005. - License along with the GNU C Library; if not, write to the Free
  68006. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68007. - 02111-1307 USA. */
  68008. + License along with the GNU C Library; if not, see
  68009. + <http://www.gnu.org/licenses/>. */
  68010. #ifndef _SYS_MSG_H
  68011. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  68012. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/poll.h uClibc-git/libc/sysdeps/linux/mips/bits/poll.h
  68013. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  68014. +++ uClibc-git/libc/sysdeps/linux/mips/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  68015. @@ -12,9 +12,8 @@
  68016. Lesser General Public License for more details.
  68017. You should have received a copy of the GNU Lesser General Public
  68018. - License along with the GNU C Library; if not, write to the Free
  68019. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68020. - 02111-1307 USA. */
  68021. + License along with the GNU C Library; if not, see
  68022. + <http://www.gnu.org/licenses/>. */
  68023. #ifndef _SYS_POLL_H
  68024. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  68025. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/resource.h uClibc-git/libc/sysdeps/linux/mips/bits/resource.h
  68026. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  68027. +++ uClibc-git/libc/sysdeps/linux/mips/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  68028. @@ -14,9 +14,8 @@
  68029. Lesser General Public License for more details.
  68030. You should have received a copy of the GNU Lesser General Public
  68031. - License along with the GNU C Library; if not, write to the Free
  68032. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68033. - 02111-1307 USA. */
  68034. + License along with the GNU C Library; if not, see
  68035. + <http://www.gnu.org/licenses/>. */
  68036. #ifndef _SYS_RESOURCE_H
  68037. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  68038. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sem.h uClibc-git/libc/sysdeps/linux/mips/bits/sem.h
  68039. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  68040. +++ uClibc-git/libc/sysdeps/linux/mips/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  68041. @@ -12,9 +12,8 @@
  68042. Lesser General Public License for more details.
  68043. You should have received a copy of the GNU Lesser General Public
  68044. - License along with the GNU C Library; if not, write to the Free
  68045. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68046. - 02111-1307 USA. */
  68047. + License along with the GNU C Library; if not, see
  68048. + <http://www.gnu.org/licenses/>. */
  68049. #ifndef _SYS_SEM_H
  68050. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  68051. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/setjmp.h uClibc-git/libc/sysdeps/linux/mips/bits/setjmp.h
  68052. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  68053. +++ uClibc-git/libc/sysdeps/linux/mips/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  68054. @@ -13,9 +13,8 @@
  68055. Lesser General Public License for more details.
  68056. You should have received a copy of the GNU Lesser General Public
  68057. - License along with the GNU C Library; if not, write to the Free
  68058. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68059. - 02111-1307 USA. */
  68060. + License along with the GNU C Library; if not, see
  68061. + <http://www.gnu.org/licenses/>. */
  68062. #ifndef _BITS_SETJMP_H
  68063. #define _BITS_SETJMP_H 1
  68064. @@ -26,13 +25,19 @@
  68065. #include <sgidefs.h>
  68066. +#if _MIPS_SIM == _MIPS_SIM_ABI32
  68067. +#define ptrsize void *
  68068. +#else
  68069. +#define ptrsize long long
  68070. +#endif
  68071. +
  68072. typedef struct
  68073. {
  68074. /* Program counter. */
  68075. - void * __pc;
  68076. + ptrsize __pc;
  68077. /* Stack pointer. */
  68078. - void * __sp;
  68079. + ptrsize __sp;
  68080. /* Callee-saved registers s0 through s7. */
  68081. #if _MIPS_SIM == _MIPS_SIM_ABI32
  68082. @@ -42,10 +47,10 @@
  68083. #endif
  68084. /* The frame pointer. */
  68085. - void * __fp;
  68086. + ptrsize __fp;
  68087. /* The global pointer. */
  68088. - void * __gp;
  68089. + ptrsize __gp;
  68090. /* Floating point status register. */
  68091. int __fpc_csr;
  68092. @@ -58,15 +63,4 @@
  68093. #endif /* N32 || O32 */
  68094. } __jmp_buf[1];
  68095. -#ifdef __USE_MISC
  68096. -/* Offset to the program counter in `jmp_buf'. */
  68097. -# define JB_PC 0
  68098. -#endif
  68099. -
  68100. -
  68101. -/* Test if longjmp to JMPBUF would unwind the frame
  68102. - containing a local variable at ADDRESS. */
  68103. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  68104. - ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  68105. -
  68106. #endif /* bits/setjmp.h */
  68107. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/shm.h uClibc-git/libc/sysdeps/linux/mips/bits/shm.h
  68108. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  68109. +++ uClibc-git/libc/sysdeps/linux/mips/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  68110. @@ -12,9 +12,8 @@
  68111. Lesser General Public License for more details.
  68112. You should have received a copy of the GNU Lesser General Public
  68113. - License along with the GNU C Library; if not, write to the Free
  68114. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68115. - 02111-1307 USA. */
  68116. + License along with the GNU C Library; if not, see
  68117. + <http://www.gnu.org/licenses/>. */
  68118. #ifndef _SYS_SHM_H
  68119. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  68120. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigaction.h uClibc-git/libc/sysdeps/linux/mips/bits/sigaction.h
  68121. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  68122. +++ uClibc-git/libc/sysdeps/linux/mips/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  68123. @@ -14,9 +14,8 @@
  68124. Lesser General Public License for more details.
  68125. You should have received a copy of the GNU Lesser General Public
  68126. - License along with the GNU C Library; if not, write to the Free
  68127. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68128. - 02111-1307 USA. */
  68129. + License along with the GNU C Library; if not, see
  68130. + <http://www.gnu.org/licenses/>. */
  68131. #ifndef _SIGNAL_H
  68132. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  68133. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/mips/bits/sigcontext.h
  68134. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  68135. +++ uClibc-git/libc/sysdeps/linux/mips/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  68136. @@ -12,9 +12,8 @@
  68137. Lesser General Public License for more details.
  68138. You should have received a copy of the GNU Lesser General Public
  68139. - License along with the GNU C Library; if not, write to the Free
  68140. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68141. - 02111-1307 USA. */
  68142. + License along with the GNU C Library; if not, see
  68143. + <http://www.gnu.org/licenses/>. */
  68144. #ifndef _BITS_SIGCONTEXT_H
  68145. #define _BITS_SIGCONTEXT_H 1
  68146. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/mips/bits/sigcontextinfo.h
  68147. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  68148. +++ uClibc-git/libc/sysdeps/linux/mips/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  68149. @@ -13,9 +13,8 @@
  68150. Lesser General Public License for more details.
  68151. You should have received a copy of the GNU Lesser General Public
  68152. - License along with the GNU C Library; if not, write to the Free
  68153. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68154. - 02111-1307 USA. */
  68155. + License along with the GNU C Library; if not, see
  68156. + <http://www.gnu.org/licenses/>. */
  68157. #include <sgidefs.h>
  68158. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/siginfo.h uClibc-git/libc/sysdeps/linux/mips/bits/siginfo.h
  68159. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  68160. +++ uClibc-git/libc/sysdeps/linux/mips/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  68161. @@ -14,9 +14,8 @@
  68162. Lesser General Public License for more details.
  68163. You should have received a copy of the GNU Lesser General Public
  68164. - License along with the GNU C Library; if not, write to the Free
  68165. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68166. - 02111-1307 USA. */
  68167. + License along with the GNU C Library; if not, see
  68168. + <http://www.gnu.org/licenses/>. */
  68169. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  68170. && !defined __need_sigevent_t
  68171. @@ -265,8 +264,11 @@
  68172. /* Structure to transport application-defined values with signals. */
  68173. # define __SIGEV_MAX_SIZE 64
  68174. -# define __SIGEV_HEAD_SIZE (sizeof(long) + 2*sizeof(int))
  68175. -# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE - __SIGEV_HEAD_SIZE) / sizeof (int))
  68176. +# if __WORDSIZE == 64
  68177. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
  68178. +# else
  68179. +# define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
  68180. +# endif
  68181. /* Forward declaration of the `pthread_attr_t' type. */
  68182. struct __pthread_attr_s;
  68183. @@ -282,6 +284,10 @@
  68184. {
  68185. int _pad[__SIGEV_PAD_SIZE];
  68186. + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
  68187. + thread to receive the signal. */
  68188. + __pid_t _tid;
  68189. +
  68190. struct
  68191. {
  68192. void (*_function) (sigval_t); /* Function to start. */
  68193. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/signum.h uClibc-git/libc/sysdeps/linux/mips/bits/signum.h
  68194. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  68195. +++ uClibc-git/libc/sysdeps/linux/mips/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  68196. @@ -13,9 +13,8 @@
  68197. Lesser General Public License for more details.
  68198. You should have received a copy of the GNU Lesser General Public
  68199. - License along with the GNU C Library; if not, write to the Free
  68200. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68201. - 02111-1307 USA. */
  68202. + License along with the GNU C Library; if not, see
  68203. + <http://www.gnu.org/licenses/>. */
  68204. #ifdef _SIGNAL_H
  68205. @@ -54,7 +53,20 @@
  68206. #define SIGXCPU 30 /* CPU limit exceeded (4.2 BSD). */
  68207. #define SIGXFSZ 31 /* File size limit exceeded (4.2 BSD). */
  68208. -/* Biggest signal number + 1 (including real-time signals). */
  68209. -#define _NSIG 129
  68210. +/* MIPS is special by having 128 signals.
  68211. + * All (?) other architectures have at most 64 signals.
  68212. + * Having 128 signals is problematic because signal nos are 1-based
  68213. + * and last signal number is then 128.
  68214. + * This plays havoc with WIFSIGNALED and WCOREDUMP in waitpid status word,
  68215. + * when process dies from signal 128.
  68216. + * Linux kernel 3.9 accepts signal 128, with awful results :/
  68217. + * It is being fixed.
  68218. + *
  68219. + * glibc (accidentally?) papers over this issue by declaring _NSIG to be 128,
  68220. + * not 129 (despite claiming that _NSIG is "biggest signal number + 1"
  68221. + * in the comment above that definition). We follow suit.
  68222. + * Note that this results in __SIGRTMAX == 127. It is intended.
  68223. + */
  68224. +#define _NSIG 128
  68225. #endif /* <signal.h> included. */
  68226. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigstack.h uClibc-git/libc/sysdeps/linux/mips/bits/sigstack.h
  68227. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  68228. +++ uClibc-git/libc/sysdeps/linux/mips/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  68229. @@ -13,9 +13,8 @@
  68230. Lesser General Public License for more details.
  68231. You should have received a copy of the GNU Lesser General Public
  68232. - License along with the GNU C Library; if not, write to the Free
  68233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68234. - 02111-1307 USA. */
  68235. + License along with the GNU C Library; if not, see
  68236. + <http://www.gnu.org/licenses/>. */
  68237. #ifndef _SIGNAL_H
  68238. # error "Never include this file directly. Use <signal.h> instead"
  68239. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket.h uClibc-git/libc/sysdeps/linux/mips/bits/socket.h
  68240. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket.h 2012-05-15 09:20:09.000000000 +0200
  68241. +++ uClibc-git/libc/sysdeps/linux/mips/bits/socket.h 1970-01-01 01:00:00.000000000 +0100
  68242. @@ -1,369 +0,0 @@
  68243. -/* System-specific socket constants and types. Linux/MIPS version.
  68244. - Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006
  68245. - Free Software Foundation, Inc.
  68246. - This file is part of the GNU C Library.
  68247. -
  68248. - The GNU C Library is free software; you can redistribute it and/or
  68249. - modify it under the terms of the GNU Lesser General Public
  68250. - License as published by the Free Software Foundation; either
  68251. - version 2.1 of the License, or (at your option) any later version.
  68252. -
  68253. - The GNU C Library is distributed in the hope that it will be useful,
  68254. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  68255. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  68256. - Lesser General Public License for more details.
  68257. -
  68258. - You should have received a copy of the GNU Lesser General Public
  68259. - License along with the GNU C Library; if not, write to the Free
  68260. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68261. - 02111-1307 USA. */
  68262. -
  68263. -#ifndef __BITS_SOCKET_H
  68264. -#define __BITS_SOCKET_H
  68265. -
  68266. -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
  68267. -# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
  68268. -#endif
  68269. -
  68270. -#define __need_size_t
  68271. -#define __need_NULL
  68272. -#include <stddef.h>
  68273. -
  68274. -#include <limits.h>
  68275. -#include <sys/types.h>
  68276. -
  68277. -/* Type for length arguments in socket calls. */
  68278. -#ifndef __socklen_t_defined
  68279. -typedef __socklen_t socklen_t;
  68280. -# define __socklen_t_defined
  68281. -#endif
  68282. -
  68283. -/* Types of sockets. */
  68284. -enum __socket_type
  68285. -{
  68286. - SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams
  68287. - of fixed maximum length. */
  68288. -#define SOCK_DGRAM SOCK_DGRAM
  68289. - SOCK_STREAM = 2, /* Sequenced, reliable, connection-based
  68290. - byte streams. */
  68291. -#define SOCK_STREAM SOCK_STREAM
  68292. - SOCK_RAW = 3, /* Raw protocol interface. */
  68293. -#define SOCK_RAW SOCK_RAW
  68294. - SOCK_RDM = 4, /* Reliably-delivered messages. */
  68295. -#define SOCK_RDM SOCK_RDM
  68296. - SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  68297. - datagrams of fixed maximum length. */
  68298. -#define SOCK_SEQPACKET SOCK_SEQPACKET
  68299. - SOCK_DCCP = 6,
  68300. -#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */
  68301. - SOCK_PACKET = 10, /* Linux specific way of getting packets
  68302. - at the dev level. For writing rarp and
  68303. - other similar things on the user level. */
  68304. -#define SOCK_PACKET SOCK_PACKET
  68305. - /* Flags to be ORed into the type parameter of socket and socketpair and
  68306. - used for the flags parameter of paccept. */
  68307. -
  68308. - SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  68309. - new descriptor(s). */
  68310. -#define SOCK_CLOEXEC SOCK_CLOEXEC
  68311. - SOCK_NONBLOCK = 0200 /* Atomically mark descriptor(s) as
  68312. - non-blocking. */
  68313. -#define SOCK_NONBLOCK SOCK_NONBLOCK
  68314. -};
  68315. -
  68316. -/* Protocol families. */
  68317. -#define PF_UNSPEC 0 /* Unspecified. */
  68318. -#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
  68319. -#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
  68320. -#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
  68321. -#define PF_INET 2 /* IP protocol family. */
  68322. -#define PF_AX25 3 /* Amateur Radio AX.25. */
  68323. -#define PF_IPX 4 /* Novell Internet Protocol. */
  68324. -#define PF_APPLETALK 5 /* Appletalk DDP. */
  68325. -#define PF_NETROM 6 /* Amateur radio NetROM. */
  68326. -#define PF_BRIDGE 7 /* Multiprotocol bridge. */
  68327. -#define PF_ATMPVC 8 /* ATM PVCs. */
  68328. -#define PF_X25 9 /* Reserved for X.25 project. */
  68329. -#define PF_INET6 10 /* IP version 6. */
  68330. -#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
  68331. -#define PF_DECnet 12 /* Reserved for DECnet project. */
  68332. -#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
  68333. -#define PF_SECURITY 14 /* Security callback pseudo AF. */
  68334. -#define PF_KEY 15 /* PF_KEY key management API. */
  68335. -#define PF_NETLINK 16
  68336. -#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
  68337. -#define PF_PACKET 17 /* Packet family. */
  68338. -#define PF_ASH 18 /* Ash. */
  68339. -#define PF_ECONET 19 /* Acorn Econet. */
  68340. -#define PF_ATMSVC 20 /* ATM SVCs. */
  68341. -#define PF_SNA 22 /* Linux SNA Project */
  68342. -#define PF_IRDA 23 /* IRDA sockets. */
  68343. -#define PF_PPPOX 24 /* PPPoX sockets. */
  68344. -#define PF_WANPIPE 25 /* Wanpipe API sockets. */
  68345. -#define PF_LLC 26 /* Linux LLC. */
  68346. -#define PF_CAN 29 /* Controller Area Network. */
  68347. -#define PF_TIPC 30 /* TIPC sockets. */
  68348. -#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
  68349. -#define PF_IUCV 32 /* IUCV sockets. */
  68350. -#define PF_RXRPC 33 /* RxRPC sockets. */
  68351. -#define PF_ISDN 34 /* mISDN sockets. */
  68352. -#define PF_PHONET 35 /* Phonet sockets. */
  68353. -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  68354. -#define PF_CAIF 37 /* CAIF sockets. */
  68355. -#define PF_ALG 38 /* Algorithm sockets. */
  68356. -#define PF_MAX 39 /* For now.. */
  68357. -
  68358. -/* Address families. */
  68359. -#define AF_UNSPEC PF_UNSPEC
  68360. -#define AF_LOCAL PF_LOCAL
  68361. -#define AF_UNIX PF_UNIX
  68362. -#define AF_FILE PF_FILE
  68363. -#define AF_INET PF_INET
  68364. -#define AF_AX25 PF_AX25
  68365. -#define AF_IPX PF_IPX
  68366. -#define AF_APPLETALK PF_APPLETALK
  68367. -#define AF_NETROM PF_NETROM
  68368. -#define AF_BRIDGE PF_BRIDGE
  68369. -#define AF_ATMPVC PF_ATMPVC
  68370. -#define AF_X25 PF_X25
  68371. -#define AF_INET6 PF_INET6
  68372. -#define AF_ROSE PF_ROSE
  68373. -#define AF_DECnet PF_DECnet
  68374. -#define AF_NETBEUI PF_NETBEUI
  68375. -#define AF_SECURITY PF_SECURITY
  68376. -#define AF_KEY PF_KEY
  68377. -#define AF_NETLINK PF_NETLINK
  68378. -#define AF_ROUTE PF_ROUTE
  68379. -#define AF_PACKET PF_PACKET
  68380. -#define AF_ASH PF_ASH
  68381. -#define AF_ECONET PF_ECONET
  68382. -#define AF_ATMSVC PF_ATMSVC
  68383. -#define AF_SNA PF_SNA
  68384. -#define AF_IRDA PF_IRDA
  68385. -#define AF_PPPOX PF_PPPOX
  68386. -#define AF_WANPIPE PF_WANPIPE
  68387. -#define AF_LLC PF_LLC
  68388. -#define AF_CAN PF_CAN
  68389. -#define AF_TIPC PF_TIPC
  68390. -#define AF_BLUETOOTH PF_BLUETOOTH
  68391. -#define AF_IUCV PF_IUCV
  68392. -#define AF_RXRPC PF_RXRPC
  68393. -#define AF_ISDN PF_ISDN
  68394. -#define AF_PHONET PF_PHONET
  68395. -#define AF_IEEE802154 PF_IEEE802154
  68396. -#define AF_CAIF PF_CAIF
  68397. -#define AF_ALG PF_ALG
  68398. -#define AF_MAX PF_MAX
  68399. -
  68400. -/* Socket level values. Others are defined in the appropriate headers.
  68401. -
  68402. - XXX These definitions also should go into the appropriate headers as
  68403. - far as they are available. */
  68404. -#define SOL_RAW 255
  68405. -#define SOL_DECNET 261
  68406. -#define SOL_X25 262
  68407. -#define SOL_PACKET 263
  68408. -#define SOL_ATM 264 /* ATM layer (cell level). */
  68409. -#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */
  68410. -#define SOL_IRDA 266
  68411. -
  68412. -/* Maximum queue length specifiable by listen. */
  68413. -#define SOMAXCONN 128
  68414. -
  68415. -/* Get the definition of the macro to define the common sockaddr members. */
  68416. -#include <bits/sockaddr.h>
  68417. -
  68418. -/* Structure describing a generic socket address. */
  68419. -struct sockaddr
  68420. - {
  68421. - __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
  68422. - char sa_data[14]; /* Address data. */
  68423. - };
  68424. -
  68425. -
  68426. -/* Structure large enough to hold any socket address (with the historical
  68427. - exception of AF_UNIX). We reserve 128 bytes. */
  68428. -#define __ss_aligntype unsigned long int
  68429. -#define _SS_SIZE 128
  68430. -#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
  68431. -
  68432. -struct sockaddr_storage
  68433. - {
  68434. - __SOCKADDR_COMMON (ss_); /* Address family, etc. */
  68435. - __ss_aligntype __ss_align; /* Force desired alignment. */
  68436. - char __ss_padding[_SS_PADSIZE];
  68437. - };
  68438. -
  68439. -
  68440. -/* Bits in the FLAGS argument to `send', `recv', et al. */
  68441. -enum
  68442. - {
  68443. - MSG_OOB = 0x01, /* Process out-of-band data. */
  68444. -#define MSG_OOB MSG_OOB
  68445. - MSG_PEEK = 0x02, /* Peek at incoming messages. */
  68446. -#define MSG_PEEK MSG_PEEK
  68447. - MSG_DONTROUTE = 0x04, /* Don't use local routing. */
  68448. -#define MSG_DONTROUTE MSG_DONTROUTE
  68449. -#ifdef __USE_GNU
  68450. - /* DECnet uses a different name. */
  68451. - MSG_TRYHARD = MSG_DONTROUTE,
  68452. -# define MSG_TRYHARD MSG_DONTROUTE
  68453. -#endif
  68454. - MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
  68455. -#define MSG_CTRUNC MSG_CTRUNC
  68456. - MSG_PROXY = 0x10, /* Supply or ask second address. */
  68457. -#define MSG_PROXY MSG_PROXY
  68458. - MSG_TRUNC = 0x20,
  68459. -#define MSG_TRUNC MSG_TRUNC
  68460. - MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
  68461. -#define MSG_DONTWAIT MSG_DONTWAIT
  68462. - MSG_EOR = 0x80, /* End of record. */
  68463. -#define MSG_EOR MSG_EOR
  68464. - MSG_WAITALL = 0x100, /* Wait for a full request. */
  68465. -#define MSG_WAITALL MSG_WAITALL
  68466. - MSG_FIN = 0x200,
  68467. -#define MSG_FIN MSG_FIN
  68468. - MSG_SYN = 0x400,
  68469. -#define MSG_SYN MSG_SYN
  68470. - MSG_CONFIRM = 0x800, /* Confirm path validity. */
  68471. -#define MSG_CONFIRM MSG_CONFIRM
  68472. - MSG_RST = 0x1000,
  68473. -#define MSG_RST MSG_RST
  68474. - MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
  68475. -#define MSG_ERRQUEUE MSG_ERRQUEUE
  68476. - MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
  68477. -#define MSG_NOSIGNAL MSG_NOSIGNAL
  68478. - MSG_MORE = 0x8000, /* Sender will send more. */
  68479. -#define MSG_MORE MSG_MORE
  68480. - MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/
  68481. -#define MSG_WAITFORONE MSG_WAITFORONE
  68482. -
  68483. - MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
  68484. - descriptor received through
  68485. - SCM_RIGHTS. */
  68486. -#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
  68487. - };
  68488. -
  68489. -
  68490. -/* Structure describing messages sent by
  68491. - `sendmsg' and received by `recvmsg'. */
  68492. -/* Note: do not change these members to match glibc; these match the
  68493. - SuSv3 spec already (e.g. msg_iovlen/msg_controllen).
  68494. - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */
  68495. -/* Note: linux kernel uses __kernel_size_t (which is 8bytes on 64bit
  68496. - platforms, and 4bytes on 32bit platforms) for msg_iovlen/msg_controllen */
  68497. -struct msghdr
  68498. - {
  68499. - void *msg_name; /* Address to send to/receive from. */
  68500. - socklen_t msg_namelen; /* Length of address data. */
  68501. -
  68502. - struct iovec *msg_iov; /* Vector of data to send/receive into. */
  68503. -#if __WORDSIZE == 32
  68504. - int msg_iovlen; /* Number of elements in the vector. */
  68505. -#else
  68506. - size_t msg_iovlen; /* Number of elements in the vector. */
  68507. -#endif
  68508. -
  68509. - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
  68510. -#if __WORDSIZE == 32
  68511. - socklen_t msg_controllen; /* Ancillary data buffer length. */
  68512. -#else
  68513. - size_t msg_controllen; /* Ancillary data buffer length. */
  68514. -#endif
  68515. -
  68516. - int msg_flags; /* Flags on received message. */
  68517. - };
  68518. -
  68519. -/* Structure used for storage of ancillary data object information. */
  68520. -struct cmsghdr
  68521. - {
  68522. - size_t cmsg_len; /* Length of data in cmsg_data plus length
  68523. - of cmsghdr structure. */
  68524. - int cmsg_level; /* Originating protocol. */
  68525. - int cmsg_type; /* Protocol specific type. */
  68526. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  68527. - __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
  68528. -#endif
  68529. - };
  68530. -
  68531. -/* Ancillary data object manipulation macros. */
  68532. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  68533. -# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
  68534. -#else
  68535. -# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
  68536. -#endif
  68537. -#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
  68538. -#define CMSG_FIRSTHDR(mhdr) \
  68539. - ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
  68540. - ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
  68541. -#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
  68542. - & (size_t) ~(sizeof (size_t) - 1))
  68543. -#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
  68544. - + CMSG_ALIGN (sizeof (struct cmsghdr)))
  68545. -#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
  68546. -
  68547. -extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
  68548. - struct cmsghdr *__cmsg) __THROW;
  68549. -libc_hidden_proto(__cmsg_nxthdr)
  68550. -#ifdef __USE_EXTERN_INLINES
  68551. -# ifndef _EXTERN_INLINE
  68552. -# define _EXTERN_INLINE extern __inline
  68553. -# endif
  68554. -_EXTERN_INLINE struct cmsghdr *
  68555. -__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
  68556. -{
  68557. - if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
  68558. - /* The kernel header does this so there may be a reason. */
  68559. - return 0;
  68560. -
  68561. - __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
  68562. - + CMSG_ALIGN (__cmsg->cmsg_len));
  68563. - if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
  68564. - + __mhdr->msg_controllen)
  68565. - || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
  68566. - > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
  68567. - /* No more entries. */
  68568. - return 0;
  68569. - return __cmsg;
  68570. -}
  68571. -#endif /* Use `extern inline'. */
  68572. -
  68573. -/* Socket level message types. This must match the definitions in
  68574. - <linux/socket.h>. */
  68575. -enum
  68576. - {
  68577. - SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
  68578. -#define SCM_RIGHTS SCM_RIGHTS
  68579. -#ifdef __USE_BSD
  68580. - , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
  68581. -# define SCM_CREDENTIALS SCM_CREDENTIALS
  68582. -#endif
  68583. - };
  68584. -
  68585. -/* User visible structure for SCM_CREDENTIALS message */
  68586. -
  68587. -struct ucred
  68588. -{
  68589. - pid_t pid; /* PID of sending process. */
  68590. - uid_t uid; /* UID of sending process. */
  68591. - gid_t gid; /* GID of sending process. */
  68592. -};
  68593. -
  68594. -/* Get socket manipulation related informations from kernel headers. */
  68595. -#ifndef __GLIBC__
  68596. -#define __GLIBC__ 2
  68597. -#include <asm/socket.h>
  68598. -#undef __GLIBC__
  68599. -#else
  68600. -#include <asm/socket.h>
  68601. -#endif
  68602. -
  68603. -
  68604. -/* Structure used to manipulate the SO_LINGER option. */
  68605. -struct linger
  68606. - {
  68607. - int l_onoff; /* Nonzero to linger on close. */
  68608. - int l_linger; /* Time to linger. */
  68609. - };
  68610. -
  68611. -#endif /* bits/socket.h */
  68612. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket_type.h uClibc-git/libc/sysdeps/linux/mips/bits/socket_type.h
  68613. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  68614. +++ uClibc-git/libc/sysdeps/linux/mips/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  68615. @@ -0,0 +1,55 @@
  68616. +/* System-specific socket constants and types. Linux/MIPS version.
  68617. + Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006
  68618. + Free Software Foundation, Inc.
  68619. + This file is part of the GNU C Library.
  68620. +
  68621. + The GNU C Library is free software; you can redistribute it and/or
  68622. + modify it under the terms of the GNU Lesser General Public
  68623. + License as published by the Free Software Foundation; either
  68624. + version 2.1 of the License, or (at your option) any later version.
  68625. +
  68626. + The GNU C Library is distributed in the hope that it will be useful,
  68627. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  68628. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  68629. + Lesser General Public License for more details.
  68630. +
  68631. + You should have received a copy of the GNU Lesser General Public
  68632. + License along with the GNU C Library; if not, see
  68633. + <http://www.gnu.org/licenses/>. */
  68634. +
  68635. +#ifndef _SYS_SOCKET_H
  68636. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  68637. +#endif
  68638. +
  68639. +/* Types of sockets. */
  68640. +enum __socket_type
  68641. +{
  68642. + SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams
  68643. + of fixed maximum length. */
  68644. +#define SOCK_DGRAM SOCK_DGRAM
  68645. + SOCK_STREAM = 2, /* Sequenced, reliable, connection-based
  68646. + byte streams. */
  68647. +#define SOCK_STREAM SOCK_STREAM
  68648. + SOCK_RAW = 3, /* Raw protocol interface. */
  68649. +#define SOCK_RAW SOCK_RAW
  68650. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  68651. +#define SOCK_RDM SOCK_RDM
  68652. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  68653. + datagrams of fixed maximum length. */
  68654. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  68655. + SOCK_DCCP = 6,
  68656. +#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */
  68657. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  68658. + at the dev level. For writing rarp and
  68659. + other similar things on the user level. */
  68660. +#define SOCK_PACKET SOCK_PACKET
  68661. +
  68662. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  68663. +
  68664. + SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
  68665. + new descriptor(s). */
  68666. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  68667. + SOCK_NONBLOCK = 00000200 /* Atomically mark descriptor(s) as
  68668. + non-blocking. */
  68669. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  68670. +};
  68671. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/mips/bits/stackinfo.h
  68672. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  68673. +++ uClibc-git/libc/sysdeps/linux/mips/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  68674. @@ -12,9 +12,8 @@
  68675. Lesser General Public License for more details.
  68676. You should have received a copy of the GNU Lesser General Public
  68677. - License along with the GNU C Library; if not, write to the Free
  68678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68679. - 02111-1307 USA. */
  68680. + License along with the GNU C Library; if not, see
  68681. + <http://www.gnu.org/licenses/>. */
  68682. /* This file contains a bit of information about the stack allocation
  68683. of the processor. */
  68684. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/statfs.h uClibc-git/libc/sysdeps/linux/mips/bits/statfs.h
  68685. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  68686. +++ uClibc-git/libc/sysdeps/linux/mips/bits/statfs.h 2014-02-03 12:32:56.000000000 +0100
  68687. @@ -12,9 +12,8 @@
  68688. Lesser General Public License for more details.
  68689. You should have received a copy of the GNU Lesser General Public
  68690. - License along with the GNU C Library; if not, write to the Free
  68691. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68692. - 02111-1307 USA. */
  68693. + License along with the GNU C Library; if not, see
  68694. + <http://www.gnu.org/licenses/>. */
  68695. #ifndef _SYS_STATFS_H
  68696. # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  68697. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stat.h uClibc-git/libc/sysdeps/linux/mips/bits/stat.h
  68698. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  68699. +++ uClibc-git/libc/sysdeps/linux/mips/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  68700. @@ -13,9 +13,8 @@
  68701. Lesser General Public License for more details.
  68702. You should have received a copy of the GNU Lesser General Public
  68703. - License along with the GNU C Library; if not, write to the Free
  68704. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68705. - 02111-1307 USA. */
  68706. + License along with the GNU C Library; if not, see
  68707. + <http://www.gnu.org/licenses/>. */
  68708. #ifndef _SYS_STAT_H
  68709. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  68710. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/syscalls.h uClibc-git/libc/sysdeps/linux/mips/bits/syscalls.h
  68711. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  68712. +++ uClibc-git/libc/sysdeps/linux/mips/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  68713. @@ -29,7 +29,7 @@
  68714. } \
  68715. result_var; })
  68716. -#define INTERNAL_SYSCALL_DECL(err) long err
  68717. +#define INTERNAL_SYSCALL_DECL(err) long err attribute_unused
  68718. #define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
  68719. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/termios.h uClibc-git/libc/sysdeps/linux/mips/bits/termios.h
  68720. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  68721. +++ uClibc-git/libc/sysdeps/linux/mips/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  68722. @@ -13,9 +13,8 @@
  68723. Lesser General Public License for more details.
  68724. You should have received a copy of the GNU Lesser General Public
  68725. - License along with the GNU C Library; if not, write to the Free
  68726. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68727. - 02111-1307 USA. */
  68728. + License along with the GNU C Library; if not, see
  68729. + <http://www.gnu.org/licenses/>. */
  68730. #ifndef _TERMIOS_H
  68731. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  68732. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h
  68733. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  68734. +++ uClibc-git/libc/sysdeps/linux/mips/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  68735. @@ -4,6 +4,7 @@
  68736. #ifndef _BITS_UCLIBC_ARCH_FEATURES_H
  68737. #define _BITS_UCLIBC_ARCH_FEATURES_H
  68738. +#include <sgidefs.h>
  68739. /* instruction used when calling abort() to kill yourself */
  68740. #define __UCLIBC_ABORT_INSTRUCTION__ "break 255"
  68741. @@ -11,8 +12,12 @@
  68742. /* can your target use syscall6() for mmap ? */
  68743. #define __UCLIBC_MMAP_HAS_6_ARGS__
  68744. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  68745. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  68746. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  68747. +#if _MIPS_SIM == _ABIO32
  68748. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  68749. +#else
  68750. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  68751. +#endif
  68752. /* does your target have a broken create_module() ? */
  68753. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  68754. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/mips/bits/uClibc_page.h
  68755. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  68756. +++ uClibc-git/libc/sysdeps/linux/mips/bits/uClibc_page.h 2014-02-03 12:32:56.000000000 +0100
  68757. @@ -11,8 +11,8 @@
  68758. * Library General Public License for more details.
  68759. *
  68760. * You should have received a copy of the GNU Library General Public
  68761. - * License along with this library; if not, write to the Free
  68762. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  68763. + * License along with this library; if not, see
  68764. + * <http://www.gnu.org/licenses/>.
  68765. */
  68766. /* Supply an architecture specific value for PAGE_SIZE and friends. */
  68767. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/wordsize.h uClibc-git/libc/sysdeps/linux/mips/bits/wordsize.h
  68768. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  68769. +++ uClibc-git/libc/sysdeps/linux/mips/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  68770. @@ -12,8 +12,7 @@
  68771. Lesser General Public License for more details.
  68772. You should have received a copy of the GNU Lesser General Public
  68773. - License along with the GNU C Library; if not, write to the Free
  68774. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68775. - 02111-1307 USA. */
  68776. + License along with the GNU C Library; if not, see
  68777. + <http://www.gnu.org/licenses/>. */
  68778. #define __WORDSIZE _MIPS_SZPTR
  68779. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/brk.c uClibc-git/libc/sysdeps/linux/mips/brk.c
  68780. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/brk.c 2012-05-15 09:20:09.000000000 +0200
  68781. +++ uClibc-git/libc/sysdeps/linux/mips/brk.c 2014-02-03 12:32:56.000000000 +0100
  68782. @@ -13,9 +13,8 @@
  68783. Lesser General Public License for more details.
  68784. You should have received a copy of the GNU Lesser General Public
  68785. - License along with the GNU C Library; if not, write to the Free
  68786. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68787. - 02111-1307 USA. */
  68788. + License along with the GNU C Library; if not, see
  68789. + <http://www.gnu.org/licenses/>. */
  68790. #include <errno.h>
  68791. #include <unistd.h>
  68792. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/mips/bsd-_setjmp.S
  68793. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  68794. +++ uClibc-git/libc/sysdeps/linux/mips/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  68795. @@ -13,9 +13,8 @@
  68796. Lesser General Public License for more details.
  68797. You should have received a copy of the GNU Lesser General Public
  68798. - License along with the GNU C Library; if not, write to the Free
  68799. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68800. - 02111-1307 USA. */
  68801. + License along with the GNU C Library; if not, see
  68802. + <http://www.gnu.org/licenses/>. */
  68803. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  68804. We cannot do it in C because it must be a tail-call, so frame-unwinding
  68805. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/mips/bsd-setjmp.S
  68806. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  68807. +++ uClibc-git/libc/sysdeps/linux/mips/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  68808. @@ -13,9 +13,8 @@
  68809. Lesser General Public License for more details.
  68810. You should have received a copy of the GNU Lesser General Public
  68811. - License along with the GNU C Library; if not, write to the Free
  68812. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68813. - 02111-1307 USA. */
  68814. + License along with the GNU C Library; if not, see
  68815. + <http://www.gnu.org/licenses/>. */
  68816. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  68817. We cannot do it in C because it must be a tail-call, so frame-unwinding
  68818. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/cacheflush.c uClibc-git/libc/sysdeps/linux/mips/cacheflush.c
  68819. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/cacheflush.c 2012-05-15 09:20:09.000000000 +0200
  68820. +++ uClibc-git/libc/sysdeps/linux/mips/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  68821. @@ -12,19 +12,18 @@
  68822. Lesser General Public License for more details.
  68823. You should have received a copy of the GNU Lesser General Public
  68824. - License along with the uClibc Library; if not, write to the Free
  68825. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68826. - 02111-1307 USA. */
  68827. + License along with the uClibc Library; if not, see
  68828. + <http://www.gnu.org/licenses/>. */
  68829. -#include <errno.h>
  68830. -#include <unistd.h>
  68831. #include <sys/syscall.h>
  68832. #ifdef __NR_cacheflush
  68833. +# include <sys/cachectl.h>
  68834. _syscall3(int, cacheflush, void *, addr, const int, nbytes, const int, op)
  68835. -strong_alias(cacheflush, _flush_cache)
  68836. +strong_alias_untyped(cacheflush, _flush_cache)
  68837. #endif
  68838. #ifdef __NR_cachectl
  68839. +# include <sys/cachectl.h>
  68840. _syscall3(int, cachectl, void *, addr, const int, nbytes, const int, op)
  68841. #endif
  68842. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/clone.S uClibc-git/libc/sysdeps/linux/mips/clone.S
  68843. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/clone.S 2012-05-15 09:20:09.000000000 +0200
  68844. +++ uClibc-git/libc/sysdeps/linux/mips/clone.S 2014-02-03 12:32:56.000000000 +0100
  68845. @@ -13,9 +13,8 @@
  68846. Lesser General Public License for more details.
  68847. You should have received a copy of the GNU Lesser General Public
  68848. - License along with the GNU C Library; if not, write to the Free
  68849. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68850. - 02111-1307 USA. */
  68851. + License along with the GNU C Library; if not, see
  68852. + <http://www.gnu.org/licenses/>. */
  68853. /* clone() is even more special than fork() as it mucks with stacks
  68854. and invokes a function in the right context after its all over. */
  68855. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/crt1.S uClibc-git/libc/sysdeps/linux/mips/crt1.S
  68856. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/crt1.S 2012-05-15 09:20:09.000000000 +0200
  68857. +++ uClibc-git/libc/sysdeps/linux/mips/crt1.S 2014-02-03 12:32:56.000000000 +0100
  68858. @@ -31,9 +31,8 @@
  68859. Lesser General Public License for more details.
  68860. You should have received a copy of the GNU Lesser General Public
  68861. - License along with the GNU C Library; if not, write to the Free
  68862. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68863. - 02111-1307 USA. */
  68864. + License along with the GNU C Library; if not, see
  68865. + <http://www.gnu.org/licenses/>. */
  68866. #include <sys/regdef.h>
  68867. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/fpu_control.h uClibc-git/libc/sysdeps/linux/mips/fpu_control.h
  68868. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  68869. +++ uClibc-git/libc/sysdeps/linux/mips/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  68870. @@ -14,9 +14,8 @@
  68871. Lesser General Public License for more details.
  68872. You should have received a copy of the GNU Lesser General Public
  68873. - License along with the GNU C Library; if not, write to the Free
  68874. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  68875. - 02111-1307 USA. */
  68876. + License along with the GNU C Library; if not, see
  68877. + <http://www.gnu.org/licenses/>. */
  68878. #ifndef _FPU_CONTROL_H
  68879. #define _FPU_CONTROL_H
  68880. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/getcontext.S uClibc-git/libc/sysdeps/linux/mips/getcontext.S
  68881. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  68882. +++ uClibc-git/libc/sysdeps/linux/mips/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  68883. @@ -0,0 +1,148 @@
  68884. +/* Save current context.
  68885. + Copyright (C) 2009 Free Software Foundation, Inc.
  68886. + This file is part of the GNU C Library.
  68887. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  68888. +
  68889. + The GNU C Library is free software; you can redistribute it and/or
  68890. + modify it under the terms of the GNU Lesser General Public
  68891. + License as published by the Free Software Foundation; either
  68892. + version 2.1 of the License, or (at your option) any later version.
  68893. +
  68894. + The GNU C Library is distributed in the hope that it will be useful,
  68895. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  68896. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  68897. + Lesser General Public License for more details.
  68898. +
  68899. + You should have received a copy of the GNU Lesser General Public
  68900. + License along with the GNU C Library. If not, see
  68901. + <http://www.gnu.org/licenses/>. */
  68902. +
  68903. +#include <sysdep.h>
  68904. +#include <sys/asm.h>
  68905. +#include <sys/fpregdef.h>
  68906. +#include <sys/regdef.h>
  68907. +
  68908. +#include "ucontext_i.h"
  68909. +
  68910. +/* int getcontext (ucontext_t *ucp) */
  68911. +
  68912. + .text
  68913. +LOCALSZ = 0
  68914. +MASK = 0x00000000
  68915. +#ifdef __PIC__
  68916. +LOCALSZ = 1 /* save gp */
  68917. +# if _MIPS_SIM != _ABIO32
  68918. +MASK = 0x10000000
  68919. +# endif
  68920. +#endif
  68921. +FRAMESZ = ((LOCALSZ * SZREG) + ALSZ) & ALMASK
  68922. +GPOFF = FRAMESZ - (1 * SZREG)
  68923. +
  68924. +NESTED (__getcontext, FRAMESZ, ra)
  68925. + .mask MASK, 0
  68926. + .fmask 0x00000000, 0
  68927. +
  68928. +#ifdef __PIC__
  68929. + SETUP_GP
  68930. +
  68931. + move a2, sp
  68932. +# define _SP a2
  68933. +
  68934. +# if _MIPS_SIM != _ABIO32
  68935. + move a3, gp
  68936. +# define _GP a3
  68937. +# endif
  68938. +
  68939. + PTR_ADDIU sp, -FRAMESZ
  68940. + SETUP_GP64 (GPOFF, __getcontext)
  68941. + SAVE_GP (GPOFF)
  68942. +
  68943. +#else /* ! __PIC__ */
  68944. +# define _SP sp
  68945. +# define _GP gp
  68946. +
  68947. +#endif /* ! __PIC__ */
  68948. +
  68949. +#ifdef PROF
  68950. + .set noat
  68951. + move AT, ra
  68952. + jal _mcount
  68953. + .set at
  68954. +#endif
  68955. +
  68956. + /* Store a magic flag. */
  68957. + li v1, 1
  68958. + REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  68959. +
  68960. + REG_S s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
  68961. + REG_S s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
  68962. + REG_S s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
  68963. + REG_S s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
  68964. + REG_S s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
  68965. + REG_S s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
  68966. + REG_S s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
  68967. + REG_S s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
  68968. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  68969. + REG_S _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
  68970. +#endif
  68971. + REG_S _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
  68972. + REG_S fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
  68973. + REG_S ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
  68974. + REG_S ra, MCONTEXT_PC(a0)
  68975. +
  68976. +#ifdef __mips_hard_float
  68977. +# if _MIPS_SIM == _ABI64
  68978. + s.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  68979. + s.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
  68980. + s.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  68981. + s.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
  68982. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  68983. + s.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
  68984. + s.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  68985. + s.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
  68986. +
  68987. +# else /* _MIPS_SIM != _ABI64 */
  68988. + s.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
  68989. + s.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
  68990. + s.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  68991. + s.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  68992. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  68993. + s.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  68994. +
  68995. +# endif /* _MIPS_SIM != _ABI64 */
  68996. +
  68997. + cfc1 v1, fcr31
  68998. + sw v1, MCONTEXT_FPC_CSR(a0)
  68999. +#endif /* __mips_hard_float */
  69000. +
  69001. +/* rt_sigprocmask (SIG_BLOCK, NULL, &ucp->uc_sigmask, _NSIG8) */
  69002. + li a3, _NSIG8
  69003. + PTR_ADDU a2, a0, UCONTEXT_SIGMASK
  69004. + move a1, zero
  69005. + li a0, SIG_BLOCK
  69006. +
  69007. + li v0, SYS_ify (rt_sigprocmask)
  69008. + syscall
  69009. + bnez a3, 99f
  69010. +
  69011. +#ifdef __PIC__
  69012. + RESTORE_GP64
  69013. + PTR_ADDIU sp, FRAMESZ
  69014. +#endif
  69015. + move v0, zero
  69016. + jr ra
  69017. +
  69018. +99:
  69019. +#ifdef __PIC__
  69020. + PTR_LA t9, JUMPTARGET (__syscall_error)
  69021. + RESTORE_GP64
  69022. + PTR_ADDIU sp, FRAMESZ
  69023. + jr t9
  69024. +
  69025. +#else /* ! __PIC__ */
  69026. +
  69027. + j JUMPTARGET (__syscall_error)
  69028. +#endif /* ! __PIC__ */
  69029. +PSEUDO_END (__getcontext)
  69030. +
  69031. +weak_alias (__getcontext, getcontext)
  69032. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/mips/jmpbuf-unwind.h
  69033. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  69034. +++ uClibc-git/libc/sysdeps/linux/mips/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  69035. @@ -0,0 +1,22 @@
  69036. +/*
  69037. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  69038. + *
  69039. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69040. + */
  69041. +#include <setjmp.h>
  69042. +
  69043. +/* Test if longjmp to JMPBUF would unwind the frame
  69044. + containing a local variable at ADDRESS. */
  69045. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  69046. + ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  69047. +
  69048. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  69049. +#include <stdint.h>
  69050. +#include <unwind.h>
  69051. +
  69052. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  69053. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  69054. +
  69055. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  69056. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].__sp - (_adj))
  69057. +#endif
  69058. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/kernel_rt_sigframe.h uClibc-git/libc/sysdeps/linux/mips/kernel_rt_sigframe.h
  69059. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/kernel_rt_sigframe.h 1970-01-01 01:00:00.000000000 +0100
  69060. +++ uClibc-git/libc/sysdeps/linux/mips/kernel_rt_sigframe.h 2014-02-03 12:32:56.000000000 +0100
  69061. @@ -0,0 +1,10 @@
  69062. +/* Linux kernel RT signal frame. */
  69063. +typedef struct kernel_rt_sigframe
  69064. + {
  69065. + uint32_t rs_ass[4];
  69066. + uint32_t rs_code[2];
  69067. + siginfo_t rs_info;
  69068. + struct ucontext rs_uc;
  69069. + uint32_t rs_altcode[8] __attribute__ ((__aligned__ (1 << 7)));
  69070. + }
  69071. +kernel_rt_sigframe_t;
  69072. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/__longjmp.c uClibc-git/libc/sysdeps/linux/mips/__longjmp.c
  69073. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/__longjmp.c 2012-05-15 09:20:09.000000000 +0200
  69074. +++ uClibc-git/libc/sysdeps/linux/mips/__longjmp.c 2014-02-03 12:32:56.000000000 +0100
  69075. @@ -13,9 +13,8 @@
  69076. Lesser General Public License for more details.
  69077. You should have received a copy of the GNU Lesser General Public
  69078. - License along with the GNU C Library; if not, write to the Free
  69079. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69080. - 02111-1307 USA. */
  69081. + License along with the GNU C Library; if not, see
  69082. + <http://www.gnu.org/licenses/>. */
  69083. #include <features.h>
  69084. #include <setjmp.h>
  69085. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/makecontext.S uClibc-git/libc/sysdeps/linux/mips/makecontext.S
  69086. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/makecontext.S 1970-01-01 01:00:00.000000000 +0100
  69087. +++ uClibc-git/libc/sysdeps/linux/mips/makecontext.S 2014-02-03 12:32:56.000000000 +0100
  69088. @@ -0,0 +1,188 @@
  69089. +/* Modify saved context.
  69090. + Copyright (C) 2009 Free Software Foundation, Inc.
  69091. + This file is part of the GNU C Library.
  69092. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  69093. +
  69094. + The GNU C Library is free software; you can redistribute it and/or
  69095. + modify it under the terms of the GNU Lesser General Public
  69096. + License as published by the Free Software Foundation; either
  69097. + version 2.1 of the License, or (at your option) any later version.
  69098. +
  69099. + The GNU C Library is distributed in the hope that it will be useful,
  69100. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  69101. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69102. + Lesser General Public License for more details.
  69103. +
  69104. + You should have received a copy of the GNU Lesser General Public
  69105. + License along with the GNU C Library. If not, see
  69106. + <http://www.gnu.org/licenses/>. */
  69107. +
  69108. +#include <sysdep.h>
  69109. +#include <sys/asm.h>
  69110. +#include <sys/fpregdef.h>
  69111. +#include <sys/regdef.h>
  69112. +
  69113. +#include "ucontext_i.h"
  69114. +
  69115. +/* int makecontext (ucontext_t *ucp, (void *func) (), int argc, ...) */
  69116. +
  69117. + .text
  69118. +LOCALSZ = 0
  69119. +ARGSZ = 0
  69120. +MASK = 0x00000000
  69121. +#ifdef __PIC__
  69122. +LOCALSZ = 1 /* save gp */
  69123. +#endif
  69124. +#if _MIPS_SIM != _ABIO32
  69125. +ARGSZ = 5 /* save a3-a7 */
  69126. +# ifdef __PIC__
  69127. +MASK = 0x10000000
  69128. +# endif
  69129. +#endif
  69130. +FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
  69131. +GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
  69132. +#if _MIPS_SIM != _ABIO32
  69133. +A3OFF = FRAMESZ - (5 * SZREG) /* callee-allocated */
  69134. +A4OFF = FRAMESZ - (4 * SZREG)
  69135. +A5OFF = FRAMESZ - (3 * SZREG)
  69136. +A6OFF = FRAMESZ - (2 * SZREG)
  69137. +A7OFF = FRAMESZ - (1 * SZREG)
  69138. +NARGREGS = 8
  69139. +#else
  69140. +A3OFF = FRAMESZ + (3 * SZREG) /* caller-allocated */
  69141. +NARGREGS = 4
  69142. +#endif
  69143. +
  69144. +NESTED (__makecontext, FRAMESZ, ra)
  69145. + .mask MASK, -(ARGSZ * SZREG)
  69146. + .fmask 0x00000000, 0
  69147. +
  69148. +98:
  69149. +#ifdef __PIC__
  69150. + SETUP_GP
  69151. +#endif
  69152. +
  69153. + PTR_ADDIU sp, -FRAMESZ
  69154. +
  69155. +#ifdef __PIC__
  69156. + SETUP_GP64 (GPOFF, __makecontext)
  69157. + SAVE_GP (GPOFF)
  69158. +#endif
  69159. +
  69160. +#ifdef PROF
  69161. + .set noat
  69162. + move AT, ra
  69163. + jal _mcount
  69164. + .set at
  69165. +#endif
  69166. +
  69167. + /* Store args to be passed. */
  69168. + REG_S a3, A3OFF(sp)
  69169. +#if _MIPS_SIM != _ABIO32
  69170. + REG_S a4, A4OFF(sp)
  69171. + REG_S a5, A5OFF(sp)
  69172. + REG_S a6, A6OFF(sp)
  69173. + REG_S a7, A7OFF(sp)
  69174. +#endif
  69175. +
  69176. + /* Store a magic flag. */
  69177. + li v1, 1
  69178. + REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  69179. +
  69180. + /* Set up the stack. */
  69181. + PTR_L t0, STACK_SP(a0)
  69182. + PTR_L t2, STACK_SIZE(a0)
  69183. + PTR_ADDIU t1, sp, A3OFF
  69184. + PTR_ADDU t0, t2
  69185. + and t0, ALMASK
  69186. + blez a2, 2f /* no arguments */
  69187. +
  69188. + /* Store register arguments. */
  69189. + PTR_ADDIU t2, a0, MCONTEXT_GREGS + 4 * SZREG
  69190. + move t3, zero
  69191. +0:
  69192. + addiu t3, 1
  69193. + REG_L v1, (t1)
  69194. + PTR_ADDIU t1, SZREG
  69195. + REG_S v1, (t2)
  69196. + PTR_ADDIU t2, SZREG
  69197. + bgeu t3, a2, 2f /* all done */
  69198. + bltu t3, NARGREGS, 0b /* next */
  69199. +
  69200. + /* Make room for stack arguments. */
  69201. + PTR_SUBU t2, a2, t3
  69202. + PTR_SLL t2, 3
  69203. + PTR_SUBU t0, t2
  69204. + and t0, ALMASK
  69205. +
  69206. + /* Store stack arguments. */
  69207. + move t2, t0
  69208. +1:
  69209. + addiu t3, 1
  69210. + REG_L v1, (t1)
  69211. + PTR_ADDIU t1, SZREG
  69212. + REG_S v1, (t2)
  69213. + PTR_ADDIU t2, SZREG
  69214. + bltu t3, a2, 1b /* next */
  69215. +
  69216. +2:
  69217. +#if _MIPS_SIM == _ABIO32
  69218. + /* Make room for a0-a3 storage. */
  69219. + PTR_ADDIU t0, -(NARGSAVE * SZREG)
  69220. +#endif
  69221. + PTR_L v1, UCONTEXT_LINK(a0)
  69222. +#ifdef __PIC__
  69223. + PTR_ADDIU t9, 99f - 98b
  69224. +#else
  69225. + PTR_LA t9, 99f
  69226. +#endif
  69227. + REG_S t0, (29 * SZREG + MCONTEXT_GREGS)(a0) /* sp */
  69228. + REG_S v1, (16 * SZREG + MCONTEXT_GREGS)(a0) /* s0 */
  69229. +#ifdef __PIC__
  69230. + REG_S gp, (17 * SZREG + MCONTEXT_GREGS)(a0) /* s1 */
  69231. +#endif
  69232. + REG_S t9, (31 * SZREG + MCONTEXT_GREGS)(a0) /* ra */
  69233. + REG_S a1, MCONTEXT_PC(a0)
  69234. +
  69235. +#ifdef __PIC__
  69236. + RESTORE_GP64
  69237. + PTR_ADDIU sp, FRAMESZ
  69238. +#endif
  69239. + jr ra
  69240. +
  69241. +99:
  69242. +#ifdef __PIC__
  69243. + move gp, s1
  69244. +#endif
  69245. + move a0, zero
  69246. + beqz s0, 0f
  69247. +
  69248. + /* setcontext (ucp) */
  69249. + move a0, s0
  69250. +#ifdef __PIC__
  69251. + PTR_LA t9, JUMPTARGET (__setcontext)
  69252. + jalr t9
  69253. +# if _MIPS_SIM == _ABIO32
  69254. + move gp, s1
  69255. +# endif
  69256. +#else
  69257. + jal JUMPTARGET (__setcontext)
  69258. +#endif
  69259. + move a0, v0
  69260. +
  69261. +0:
  69262. + /* exit (a0) */
  69263. +#ifdef __PIC__
  69264. + PTR_LA t9, HIDDEN_JUMPTARGET (exit)
  69265. + jalr t9
  69266. +#else
  69267. + jal HIDDEN_JUMPTARGET (exit)
  69268. +#endif
  69269. +
  69270. + /* You don't exist, you won't feel anything. */
  69271. +1:
  69272. + lb zero, (zero)
  69273. + b 1b
  69274. +PSEUDO_END (__makecontext)
  69275. +
  69276. +weak_alias (__makecontext, makecontext)
  69277. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/Makefile.arch uClibc-git/libc/sysdeps/linux/mips/Makefile.arch
  69278. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  69279. +++ uClibc-git/libc/sysdeps/linux/mips/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  69280. @@ -5,20 +5,18 @@
  69281. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69282. #
  69283. -CSRC := \
  69284. - __longjmp.c brk.c setjmp_aux.c mmap.c \
  69285. - cacheflush.c pread_write.c sigaction.c sysmips.c _test_and_set.c \
  69286. - readahead.c
  69287. -
  69288. -SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
  69289. -
  69290. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  69291. -CSRC += posix_fadvise.c posix_fadvise64.c
  69292. -endif
  69293. -
  69294. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  69295. -SSRC += vfork.S clone.S
  69296. -endif
  69297. +CSRC-y := \
  69298. + __longjmp.c brk.c setjmp_aux.c \
  69299. + pread_write.c sigaction.c _test_and_set.c
  69300. +
  69301. +SSRC-y := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
  69302. +
  69303. +CSRC-$(UCLIBC_LINUX_SPECIFIC) += cacheflush.c sysmips.c
  69304. +CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise.c
  69305. +CSRC-$(if $(findstring yy,$(UCLIBC_HAS_LFS)$(UCLIBC_HAS_ADVANCED_REALTIME)),y) += posix_fadvise64.c
  69306. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += vfork.S clone.S
  69307. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.S setcontext.S getcontext.S \
  69308. + swapcontext.S
  69309. ASFLAGS-syscall_error.S += -D_LIBC_REENTRANT
  69310. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/mmap.c uClibc-git/libc/sysdeps/linux/mips/mmap.c
  69311. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/mmap.c 2012-05-15 09:20:09.000000000 +0200
  69312. +++ uClibc-git/libc/sysdeps/linux/mips/mmap.c 1970-01-01 01:00:00.000000000 +0100
  69313. @@ -1,26 +0,0 @@
  69314. -/* Use new style mmap for mips */
  69315. -/*
  69316. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  69317. - *
  69318. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69319. - */
  69320. -
  69321. -#include <unistd.h>
  69322. -#include <errno.h>
  69323. -#include <sys/mman.h>
  69324. -#include <sys/syscall.h>
  69325. -
  69326. -
  69327. -#if 0
  69328. -/* For now, leave mmap using mmap1 since mmap2 seems
  69329. - * to have issues (i.e. it doesn't work 100% properly).
  69330. - */
  69331. -#ifdef __NR_mmap2
  69332. -# undef __NR_mmap
  69333. -# define __NR_mmap __NR_mmap2
  69334. -#endif
  69335. -#endif
  69336. -
  69337. -_syscall6 (__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot,
  69338. - int, flags, int, fd, __off_t, offset)
  69339. -libc_hidden_def(mmap)
  69340. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise64.c uClibc-git/libc/sysdeps/linux/mips/posix_fadvise64.c
  69341. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  69342. +++ uClibc-git/libc/sysdeps/linux/mips/posix_fadvise64.c 2014-02-03 12:32:56.000000000 +0100
  69343. @@ -8,36 +8,28 @@
  69344. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69345. */
  69346. -#include <features.h>
  69347. -#include <unistd.h>
  69348. -#include <errno.h>
  69349. -#include <endian.h>
  69350. -#include <stdint.h>
  69351. -#include <sys/types.h>
  69352. +#include <_lfs_64.h>
  69353. #include <sys/syscall.h>
  69354. -#include <fcntl.h>
  69355. +#include <bits/wordsize.h>
  69356. -#ifdef __UCLIBC_HAS_LFS__
  69357. +/* MIPS kernel only has NR_fadvise64 which acts as NR_fadvise64_64 */
  69358. +#if defined __NR_fadvise64 && __WORDSIZE == 32
  69359. +# include <fcntl.h>
  69360. +# include <endian.h>
  69361. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
  69362. +int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice)
  69363. {
  69364. -/* MIPS kernel only has NR_fadvise64 which acts as NR_fadvise64_64 */
  69365. -#ifdef __NR_fadvise64
  69366. INTERNAL_SYSCALL_DECL(err);
  69367. -# if _MIPS_SIM == _MIPS_SIM_ABI32
  69368. +# if _MIPS_SIM == _ABIO32
  69369. int ret = INTERNAL_SYSCALL(fadvise64, err, 7, fd, 0,
  69370. - __LONG_LONG_PAIR ((long) (offset >> 32), (long) offset),
  69371. - __LONG_LONG_PAIR ((long) (len >> 32), (long) len),
  69372. - advice);
  69373. + __LONG_LONG_PAIR ((long) (offset >> 32), (long) offset),
  69374. + __LONG_LONG_PAIR ((long) (len >> 32), (long) len),
  69375. + advice);
  69376. # else /* N32 || N64 */
  69377. int ret = INTERNAL_SYSCALL(fadvise64, err, 4, fd, offset, len, advice);
  69378. # endif
  69379. if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  69380. return INTERNAL_SYSCALL_ERRNO (ret, err);
  69381. return 0;
  69382. -#else
  69383. - return ENOSYS;
  69384. -#endif
  69385. }
  69386. -
  69387. -#endif /* __UCLIBC_HAS_LFS__ */
  69388. +#endif
  69389. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise.c uClibc-git/libc/sysdeps/linux/mips/posix_fadvise.c
  69390. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  69391. +++ uClibc-git/libc/sysdeps/linux/mips/posix_fadvise.c 2014-02-03 12:32:56.000000000 +0100
  69392. @@ -8,19 +8,16 @@
  69393. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69394. */
  69395. -#include <features.h>
  69396. -#include <unistd.h>
  69397. -#include <errno.h>
  69398. -#include <endian.h>
  69399. -#include <stdint.h>
  69400. -#include <sys/types.h>
  69401. #include <sys/syscall.h>
  69402. -#include <fcntl.h>
  69403. -int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  69404. -{
  69405. /* MIPS kernel only has NR_fadvise64 which acts as NR_fadvise64_64 */
  69406. #ifdef __NR_fadvise64
  69407. +# include <fcntl.h>
  69408. +# include <endian.h>
  69409. +# include <bits/wordsize.h>
  69410. +
  69411. +int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  69412. +{
  69413. INTERNAL_SYSCALL_DECL(err);
  69414. # if _MIPS_SIM == _ABIO32
  69415. int ret = INTERNAL_SYSCALL(fadvise64, err, 7, fd, 0,
  69416. @@ -33,7 +30,9 @@
  69417. if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  69418. return INTERNAL_SYSCALL_ERRNO (ret, err);
  69419. return 0;
  69420. -#else
  69421. - return ENOSYS;
  69422. -#endif
  69423. }
  69424. +# if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 64
  69425. +strong_alias(posix_fadvise,posix_fadvise64)
  69426. +# endif
  69427. +
  69428. +#endif
  69429. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/pread_write.c uClibc-git/libc/sysdeps/linux/mips/pread_write.c
  69430. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  69431. +++ uClibc-git/libc/sysdeps/linux/mips/pread_write.c 2014-03-13 09:07:55.000000000 +0100
  69432. @@ -4,112 +4,28 @@
  69433. *
  69434. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  69435. */
  69436. -/*
  69437. - * Based in part on the files
  69438. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  69439. - * ./sysdeps/unix/sysv/linux/pread.c,
  69440. - * sysdeps/posix/pread.c
  69441. - * sysdeps/posix/pwrite.c
  69442. - * from GNU libc 2.2.5, but reworked considerably...
  69443. - */
  69444. #include <sys/syscall.h>
  69445. #include <unistd.h>
  69446. -#include <stdint.h>
  69447. #include <endian.h>
  69448. #include <sgidefs.h>
  69449. -#ifdef __NR_pread64 /* Newer kernels renamed but it's the same. */
  69450. -# ifdef __NR_pread
  69451. -# error "__NR_pread and __NR_pread64 both defined???"
  69452. -# endif
  69453. -# define __NR_pread __NR_pread64
  69454. -#endif
  69455. -
  69456. -extern __typeof(pread) __libc_pread;
  69457. -extern __typeof(pwrite) __libc_pwrite;
  69458. -#ifdef __UCLIBC_HAS_LFS__
  69459. -extern __typeof(pread64) __libc_pread64;
  69460. -extern __typeof(pwrite64) __libc_pwrite64;
  69461. -#endif
  69462. -
  69463. -#include <bits/kernel_types.h>
  69464. -
  69465. -
  69466. -#ifdef __NR_pread
  69467. -
  69468. -# if _MIPS_SIM == _MIPS_SIM_ABI64
  69469. -# define __NR___libc_pread __NR_pread
  69470. -_syscall4(ssize_t, __libc_pread, int, fd, void *, buf, size_t, count, off_t, offset)
  69471. -weak_alias (__libc_pread, pread)
  69472. -# ifdef __UCLIBC_HAS_LFS__
  69473. -# define __NR___libc_pread64 __NR_pread
  69474. -_syscall4(ssize_t, __libc_pread64, int, fd, void *, buf, size_t, count, off64_t, offset)
  69475. -weak_alias (__libc_pread64, pread64)
  69476. -# endif /* __UCLIBC_HAS_LFS__ */
  69477. -# else /* O32 || N32 */
  69478. -# define __NR___syscall_pread __NR_pread
  69479. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  69480. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  69481. -
  69482. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  69483. -{
  69484. - return(__syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR(offset>>31,offset)));
  69485. -}
  69486. -weak_alias(__libc_pread,pread)
  69487. -
  69488. -# ifdef __UCLIBC_HAS_LFS__
  69489. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  69490. -{
  69491. - uint32_t low = offset & 0xffffffff;
  69492. - uint32_t high = offset >> 32;
  69493. - return(__syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR (high, low)));
  69494. -}
  69495. -weak_alias(__libc_pread64,pread64)
  69496. -# endif /* __UCLIBC_HAS_LFS__ */
  69497. -# endif /* O32 || N32 */
  69498. -
  69499. -#endif /* __NR_pread */
  69500. -
  69501. -/**********************************************************************/
  69502. -
  69503. -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */
  69504. -# ifdef __NR_pwrite
  69505. -# error "__NR_pwrite and __NR_pwrite64 both defined???"
  69506. -# endif
  69507. -# define __NR_pwrite __NR_pwrite64
  69508. +/* We should generalize this for 32bit userlands w/64bit regs. This applies
  69509. + * to the x86_64 x32 and the mips n32 ABIs. */
  69510. +#if _MIPS_SIM == _MIPS_SIM_NABI32
  69511. +# define __NR___syscall_pread __NR_pread64
  69512. +static _syscall4(ssize_t, __syscall_pread, int, fd, void *, buf, size_t, count, off_t, offset)
  69513. +# define MY_PREAD(fd, buf, count, offset) \
  69514. + __syscall_pread(fd, buf, count, offset)
  69515. +# define MY_PREAD64(fd, buf, count, offset) \
  69516. + __syscall_pread(fd, buf, count, offset)
  69517. +
  69518. +# define __NR___syscall_pwrite __NR_pwrite64
  69519. +static _syscall4(ssize_t, __syscall_pwrite, int, fd, const void *, buf, size_t, count, off_t, offset)
  69520. +# define MY_PWRITE(fd, buf, count, offset) \
  69521. + __syscall_pwrite(fd, buf, count, offset)
  69522. +# define MY_PWRITE64(fd, buf, count, offset) \
  69523. + __syscall_pwrite(fd, buf, count, offset)
  69524. #endif
  69525. -#ifdef __NR_pwrite
  69526. -
  69527. -# if _MIPS_SIM == _MIPS_SIM_ABI64
  69528. -# define __NR___libc_pwrite __NR_pwrite
  69529. -_syscall4(ssize_t, __libc_pwrite, int, fd, const void *, buf, size_t, count, off_t, offset)
  69530. -weak_alias (__libc_pwrite, pwrite)
  69531. -# ifdef __UCLIBC_HAS_LFS__
  69532. -# define __NR___libc_pwrite64 __NR_pwrite
  69533. -_syscall4(ssize_t, __libc_pwrite64, int, fd, const void *, buf, size_t, count, off64_t, offset)
  69534. -weak_alias (__libc_pwrite64, pwrite64)
  69535. -# endif /* __UCLIBC_HAS_LFS__ */
  69536. -# else /* O32 || N32 */
  69537. -# define __NR___syscall_pwrite __NR_pwrite
  69538. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  69539. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  69540. -
  69541. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  69542. -{
  69543. - return(__syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR(offset>>31,offset)));
  69544. -}
  69545. -weak_alias(__libc_pwrite,pwrite)
  69546. -
  69547. -# ifdef __UCLIBC_HAS_LFS__
  69548. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  69549. -{
  69550. - uint32_t low = offset & 0xffffffff;
  69551. - uint32_t high = offset >> 32;
  69552. - return(__syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR (high, low)));
  69553. -}
  69554. -weak_alias(__libc_pwrite64,pwrite64)
  69555. -# endif /* __UCLIBC_HAS_LFS__ */
  69556. -# endif /* O32 || N32 */
  69557. -#endif /* __NR_pwrite */
  69558. +#include "../common/pread_write.c"
  69559. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/readahead.c uClibc-git/libc/sysdeps/linux/mips/readahead.c
  69560. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/readahead.c 2012-05-15 09:20:09.000000000 +0200
  69561. +++ uClibc-git/libc/sysdeps/linux/mips/readahead.c 1970-01-01 01:00:00.000000000 +0100
  69562. @@ -1,41 +0,0 @@
  69563. -/* Provide kernel hint to read ahead.
  69564. - Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
  69565. - This file is part of the GNU C Library.
  69566. -
  69567. - The GNU C Library is free software; you can redistribute it and/or
  69568. - modify it under the terms of the GNU Lesser General Public
  69569. - License as published by the Free Software Foundation; either
  69570. - version 2.1 of the License, or (at your option) any later version.
  69571. -
  69572. - The GNU C Library is distributed in the hope that it will be useful,
  69573. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  69574. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69575. - Lesser General Public License for more details.
  69576. -
  69577. - You should have received a copy of the GNU Lesser General Public
  69578. - License along with the GNU C Library; if not, write to the Free
  69579. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69580. - 02111-1307 USA. */
  69581. -
  69582. -#include <errno.h>
  69583. -#include <fcntl.h>
  69584. -#include <sys/types.h>
  69585. -#include <sys/syscall.h>
  69586. -
  69587. -#ifdef __UCLIBC_HAS_LFS__
  69588. -#include <_lfs_64.h>
  69589. -# ifdef __NR_readahead
  69590. -
  69591. -ssize_t readahead(int fd, off64_t offset, size_t count)
  69592. -{
  69593. -# if _MIPS_SIM == _ABIO32
  69594. - return INLINE_SYSCALL (readahead, 5, fd, 0,
  69595. - __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) offset),
  69596. - count);
  69597. -# else /* N32 || N64 */
  69598. - return INLINE_SYSCALL (readahead, 3, fd, offset, count);
  69599. -# endif
  69600. -}
  69601. -
  69602. -# endif
  69603. -#endif
  69604. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/setcontext.S uClibc-git/libc/sysdeps/linux/mips/setcontext.S
  69605. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  69606. +++ uClibc-git/libc/sysdeps/linux/mips/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  69607. @@ -0,0 +1,191 @@
  69608. +/* Set current context.
  69609. + Copyright (C) 2009 Free Software Foundation, Inc.
  69610. + This file is part of the GNU C Library.
  69611. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  69612. +
  69613. + The GNU C Library is free software; you can redistribute it and/or
  69614. + modify it under the terms of the GNU Lesser General Public
  69615. + License as published by the Free Software Foundation; either
  69616. + version 2.1 of the License, or (at your option) any later version.
  69617. +
  69618. + The GNU C Library is distributed in the hope that it will be useful,
  69619. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  69620. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69621. + Lesser General Public License for more details.
  69622. +
  69623. + You should have received a copy of the GNU Lesser General Public
  69624. + License along with the GNU C Library. If not, see
  69625. + <http://www.gnu.org/licenses/>. */
  69626. +
  69627. +#include <sysdep.h>
  69628. +#include <sys/asm.h>
  69629. +#include <sys/fpregdef.h>
  69630. +#include <sys/regdef.h>
  69631. +
  69632. +#include "ucontext_i.h"
  69633. +
  69634. +/* int setcontext (const ucontext_t *ucp) */
  69635. +
  69636. + .text
  69637. +LOCALSZ = 0
  69638. +ARGSZ = 0
  69639. +MASK = 0x00000000
  69640. +#ifdef __PIC__
  69641. +LOCALSZ = 1 /* save gp */
  69642. +#endif
  69643. +#if _MIPS_SIM != _ABIO32
  69644. +ARGSZ = 1 /* save a0 */
  69645. +# ifdef __PIC__
  69646. +MASK = 0x10000000
  69647. +# endif
  69648. +#endif
  69649. +FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
  69650. +GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
  69651. +#if _MIPS_SIM != _ABIO32
  69652. +A0OFF = FRAMESZ - (1 * SZREG) /* callee-allocated */
  69653. +#else
  69654. +A0OFF = FRAMESZ + (0 * SZREG) /* caller-allocated */
  69655. +#endif
  69656. +
  69657. +NESTED (__setcontext, FRAMESZ, ra)
  69658. + .mask MASK, -(ARGSZ * SZREG)
  69659. + .fmask 0x00000000, 0
  69660. +
  69661. +#ifdef __PIC__
  69662. + SETUP_GP
  69663. +#endif
  69664. +
  69665. + PTR_ADDIU sp, -FRAMESZ
  69666. +
  69667. +#ifdef __PIC__
  69668. + SETUP_GP64 (GPOFF, __setcontext)
  69669. + SAVE_GP (GPOFF)
  69670. +#endif
  69671. +
  69672. +#ifdef PROF
  69673. + .set noat
  69674. + move AT, ra
  69675. + jal _mcount
  69676. + .set at
  69677. +#endif
  69678. +
  69679. + /* Check for the magic flag. */
  69680. + li v0, 1
  69681. + REG_L v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  69682. + bne v0, v1, 98f
  69683. +
  69684. + REG_S a0, A0OFF(sp)
  69685. +
  69686. +/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG8) */
  69687. + li a3, _NSIG8
  69688. + move a2, zero
  69689. + PTR_ADDU a1, a0, UCONTEXT_SIGMASK
  69690. + li a0, SIG_SETMASK
  69691. +
  69692. + li v0, SYS_ify (rt_sigprocmask)
  69693. + syscall
  69694. + bnez a3, 99f
  69695. +
  69696. + REG_L v0, A0OFF(sp)
  69697. +
  69698. +#ifdef __mips_hard_float
  69699. +# if _MIPS_SIM == _ABI64
  69700. + l.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  69701. + l.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
  69702. + l.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  69703. + l.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
  69704. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  69705. + l.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
  69706. + l.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  69707. + l.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
  69708. +
  69709. +# else /* _MIPS_SIM != _ABI64 */
  69710. + l.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
  69711. + l.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
  69712. + l.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  69713. + l.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  69714. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  69715. + l.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  69716. +
  69717. +# endif /* _MIPS_SIM != _ABI64 */
  69718. +
  69719. + lw v1, MCONTEXT_FPC_CSR(v0)
  69720. + ctc1 v1, fcr31
  69721. +#endif /* __mips_hard_float */
  69722. +
  69723. + /* Note the contents of argument registers will be random
  69724. + unless makecontext() has been called. */
  69725. + REG_L a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
  69726. + REG_L a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
  69727. + REG_L a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
  69728. + REG_L a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
  69729. +#if _MIPS_SIM != _ABIO32
  69730. + REG_L a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
  69731. + REG_L a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
  69732. + REG_L a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
  69733. + REG_L a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
  69734. +#endif
  69735. +
  69736. + REG_L s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
  69737. + REG_L s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
  69738. + REG_L s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
  69739. + REG_L s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
  69740. + REG_L s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
  69741. + REG_L s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
  69742. + REG_L s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
  69743. + REG_L s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
  69744. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  69745. + REG_L gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
  69746. +#endif
  69747. + REG_L sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
  69748. + REG_L fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
  69749. + REG_L ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
  69750. + REG_L t9, MCONTEXT_PC(v0)
  69751. +
  69752. + move v0, zero
  69753. + jr t9
  69754. +
  69755. +98:
  69756. + /* This is a context obtained from a signal handler.
  69757. + Perform a full restore by pushing the context
  69758. + passed onto a simulated signal frame on the stack
  69759. + and call the signal return syscall as if a signal
  69760. + handler exited normally. */
  69761. + PTR_ADDIU sp, -((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
  69762. +
  69763. + /* Only ucontext is referred to from rt_sigreturn,
  69764. + copy it. */
  69765. + PTR_ADDIU t1, sp, RT_SIGFRAME_UCONTEXT
  69766. + li t3, ((UCONTEXT_SIZE + SZREG - 1) / SZREG) - 1
  69767. +0:
  69768. + REG_L t2, (a0)
  69769. + PTR_ADDIU a0, SZREG
  69770. + REG_S t2, (t1)
  69771. + PTR_ADDIU t1, SZREG
  69772. + .set noreorder
  69773. + bgtz t3, 0b
  69774. + addiu t3, -1
  69775. + .set reorder
  69776. +
  69777. +/* rt_sigreturn () -- no arguments, sp points to struct rt_sigframe. */
  69778. + li v0, SYS_ify (rt_sigreturn)
  69779. + syscall
  69780. +
  69781. + /* Restore the stack and fall through to the error
  69782. + path. Successful rt_sigreturn never returns to
  69783. + its calling place. */
  69784. + PTR_ADDIU sp, ((RT_SIGFRAME_SIZE + ALSZ) & ALMASK)
  69785. +99:
  69786. +#ifdef __PIC__
  69787. + PTR_LA t9, JUMPTARGET (__syscall_error)
  69788. + RESTORE_GP64
  69789. + PTR_ADDIU sp, FRAMESZ
  69790. + jr t9
  69791. +
  69792. +#else /* ! __PIC__ */
  69793. +
  69794. + j JUMPTARGET (__syscall_error)
  69795. +#endif /* ! __PIC__ */
  69796. +PSEUDO_END (__setcontext)
  69797. +
  69798. +weak_alias (__setcontext, setcontext)
  69799. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp_aux.c uClibc-git/libc/sysdeps/linux/mips/setjmp_aux.c
  69800. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp_aux.c 2012-05-15 09:20:09.000000000 +0200
  69801. +++ uClibc-git/libc/sysdeps/linux/mips/setjmp_aux.c 2014-02-03 12:32:56.000000000 +0100
  69802. @@ -13,9 +13,8 @@
  69803. Lesser General Public License for more details.
  69804. You should have received a copy of the GNU Lesser General Public
  69805. - License along with the GNU C Library; if not, write to the Free
  69806. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69807. - 02111-1307 USA. */
  69808. + License along with the GNU C Library; if not, see
  69809. + <http://www.gnu.org/licenses/>. */
  69810. #include <features.h>
  69811. #include <setjmp.h>
  69812. @@ -27,11 +26,9 @@
  69813. pointer. We do things this way because it's difficult to reliably
  69814. access them in C. */
  69815. -extern int __sigjmp_save (sigjmp_buf, int);
  69816. -
  69817. int
  69818. #if _MIPS_SIM == _MIPS_SIM_ABI64
  69819. -__sigsetjmp_aux (jmp_buf env, int savemask, long sp, long fp)
  69820. +__sigsetjmp_aux (jmp_buf env, int savemask, long long sp, long long fp, long long gp)
  69821. #else /* O32 || N32 */
  69822. __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp)
  69823. #endif /* O32 || N32 */
  69824. @@ -65,14 +62,14 @@
  69825. #endif
  69826. /* .. and the stack pointer; */
  69827. - env[0].__jmpbuf[0].__sp = (void *) sp;
  69828. + env[0].__jmpbuf[0].__sp = (ptrsize) sp;
  69829. /* .. and the FP; it'll be in s8. */
  69830. - env[0].__jmpbuf[0].__fp = (void *) fp;
  69831. + env[0].__jmpbuf[0].__fp = (ptrsize) fp;
  69832. /* .. and the GP; */
  69833. #if _MIPS_SIM == _MIPS_SIM_ABI64
  69834. - __asm__ __volatile__ ("sd $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
  69835. + env[0].__jmpbuf[0].__gp = (ptrsize) gp;
  69836. #else
  69837. __asm__ __volatile__ ("sw $gp, %0" : : "m" (env[0].__jmpbuf[0].__gp));
  69838. #endif
  69839. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp.S uClibc-git/libc/sysdeps/linux/mips/setjmp.S
  69840. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  69841. +++ uClibc-git/libc/sysdeps/linux/mips/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  69842. @@ -12,9 +12,8 @@
  69843. Lesser General Public License for more details.
  69844. You should have received a copy of the GNU Lesser General Public
  69845. - License along with the GNU C Library; if not, write to the Free
  69846. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69847. - 02111-1307 USA. */
  69848. + License along with the GNU C Library; if not, see
  69849. + <http://www.gnu.org/licenses/>. */
  69850. #include <sys/regdef.h>
  69851. #include <sys/asm.h>
  69852. @@ -53,6 +52,7 @@
  69853. PTR_LA t9, __sigsetjmp_aux
  69854. #if _MIPS_SIM != _MIPS_SIM_ABI32
  69855. .cpreturn
  69856. + move a4, gp
  69857. #endif
  69858. jr t9
  69859. #else
  69860. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sgidefs.h uClibc-git/libc/sysdeps/linux/mips/sgidefs.h
  69861. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sgidefs.h 2012-05-15 09:20:09.000000000 +0200
  69862. +++ uClibc-git/libc/sysdeps/linux/mips/sgidefs.h 2014-02-03 12:32:56.000000000 +0100
  69863. @@ -13,9 +13,8 @@
  69864. Lesser General Public License for more details.
  69865. You should have received a copy of the GNU Lesser General Public
  69866. - License along with the GNU C Library; if not, write to the Free
  69867. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  69868. - 02111-1307 USA. */
  69869. + License along with the GNU C Library; if not, see
  69870. + <http://www.gnu.org/licenses/>. */
  69871. #ifndef _SGIDEFS_H
  69872. #define _SGIDEFS_H 1
  69873. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sigaction.c uClibc-git/libc/sysdeps/linux/mips/sigaction.c
  69874. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  69875. +++ uClibc-git/libc/sysdeps/linux/mips/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  69876. @@ -13,8 +13,7 @@
  69877. You should have received a copy of the GNU Library General Public
  69878. License along with the GNU C Library; see the file COPYING.LIB. If not,
  69879. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  69880. - Boston, MA 02111-1307, USA.
  69881. + see <http://www.gnu.org/licenses/>.
  69882. Totally hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
  69883. */
  69884. @@ -27,9 +26,6 @@
  69885. #define SA_RESTORER 0x04000000
  69886. -extern __typeof(sigaction) __libc_sigaction;
  69887. -
  69888. -
  69889. #ifdef __NR_rt_sigaction
  69890. # if _MIPS_SIM != _ABIO32
  69891. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/swapcontext.S uClibc-git/libc/sysdeps/linux/mips/swapcontext.S
  69892. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  69893. +++ uClibc-git/libc/sysdeps/linux/mips/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  69894. @@ -0,0 +1,211 @@
  69895. +/* Save and set current context.
  69896. + Copyright (C) 2009 Free Software Foundation, Inc.
  69897. + This file is part of the GNU C Library.
  69898. + Contributed by Maciej W. Rozycki <macro@codesourcery.com>.
  69899. +
  69900. + The GNU C Library is free software; you can redistribute it and/or
  69901. + modify it under the terms of the GNU Lesser General Public
  69902. + License as published by the Free Software Foundation; either
  69903. + version 2.1 of the License, or (at your option) any later version.
  69904. +
  69905. + The GNU C Library is distributed in the hope that it will be useful,
  69906. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  69907. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  69908. + Lesser General Public License for more details.
  69909. +
  69910. + You should have received a copy of the GNU Lesser General Public
  69911. + License along with the GNU C Library. If not, see
  69912. + <http://www.gnu.org/licenses/>. */
  69913. +
  69914. +#include <sysdep.h>
  69915. +#include <sys/asm.h>
  69916. +#include <sys/fpregdef.h>
  69917. +#include <sys/regdef.h>
  69918. +
  69919. +#include "ucontext_i.h"
  69920. +
  69921. +/* int swapcontext (ucontext_t *oucp, const ucontext_t *ucp) */
  69922. +
  69923. + .text
  69924. +LOCALSZ = 0
  69925. +ARGSZ = 0
  69926. +MASK = 0x00000000
  69927. +#ifdef __PIC__
  69928. +LOCALSZ = 1 /* save gp */
  69929. +#endif
  69930. +#if _MIPS_SIM != _ABIO32
  69931. +ARGSZ = 1 /* save a1 */
  69932. +# ifdef __PIC__
  69933. +MASK = 0x10000000
  69934. +# endif
  69935. +#endif
  69936. +FRAMESZ = (((ARGSZ + LOCALSZ) * SZREG) + ALSZ) & ALMASK
  69937. +GPOFF = FRAMESZ - ((ARGSZ + 1) * SZREG)
  69938. +#if _MIPS_SIM != _ABIO32
  69939. +A1OFF = FRAMESZ - (1 * SZREG) /* callee-allocated */
  69940. +#else
  69941. +A1OFF = FRAMESZ + (1 * SZREG) /* caller-allocated */
  69942. +#endif
  69943. +
  69944. +NESTED (__swapcontext, FRAMESZ, ra)
  69945. + .mask MASK, -(ARGSZ * SZREG)
  69946. + .fmask 0x00000000, 0
  69947. +
  69948. +#ifdef __PIC__
  69949. + SETUP_GP
  69950. +
  69951. + move a2, sp
  69952. +# define _SP a2
  69953. +
  69954. +# if _MIPS_SIM != _ABIO32
  69955. + move a3, gp
  69956. +# define _GP a3
  69957. +# endif
  69958. +
  69959. + PTR_ADDIU sp, -FRAMESZ
  69960. + SETUP_GP64 (GPOFF, __swapcontext)
  69961. + SAVE_GP (GPOFF)
  69962. +
  69963. +#else /* ! __PIC__ */
  69964. +# define _SP sp
  69965. +# define _GP gp
  69966. +
  69967. +#endif /* ! __PIC__ */
  69968. +
  69969. +#ifdef PROF
  69970. + .set noat
  69971. + move AT, ra
  69972. + jal _mcount
  69973. + .set at
  69974. +#endif
  69975. +
  69976. + /* Store a magic flag. */
  69977. + li v1, 1
  69978. + REG_S v1, (0 * SZREG + MCONTEXT_GREGS)(a0) /* zero */
  69979. +
  69980. + REG_S s0, (16 * SZREG + MCONTEXT_GREGS)(a0)
  69981. + REG_S s1, (17 * SZREG + MCONTEXT_GREGS)(a0)
  69982. + REG_S s2, (18 * SZREG + MCONTEXT_GREGS)(a0)
  69983. + REG_S s3, (19 * SZREG + MCONTEXT_GREGS)(a0)
  69984. + REG_S s4, (20 * SZREG + MCONTEXT_GREGS)(a0)
  69985. + REG_S s5, (21 * SZREG + MCONTEXT_GREGS)(a0)
  69986. + REG_S s6, (22 * SZREG + MCONTEXT_GREGS)(a0)
  69987. + REG_S s7, (23 * SZREG + MCONTEXT_GREGS)(a0)
  69988. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  69989. + REG_S _GP, (28 * SZREG + MCONTEXT_GREGS)(a0)
  69990. +#endif
  69991. + REG_S _SP, (29 * SZREG + MCONTEXT_GREGS)(a0)
  69992. + REG_S fp, (30 * SZREG + MCONTEXT_GREGS)(a0)
  69993. + REG_S ra, (31 * SZREG + MCONTEXT_GREGS)(a0)
  69994. + REG_S ra, MCONTEXT_PC(a0)
  69995. +
  69996. +#ifdef __mips_hard_float
  69997. +# if _MIPS_SIM == _ABI64
  69998. + s.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  69999. + s.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(a0)
  70000. + s.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  70001. + s.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(a0)
  70002. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  70003. + s.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(a0)
  70004. + s.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  70005. + s.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(a0)
  70006. +
  70007. +# else /* _MIPS_SIM != _ABI64 */
  70008. + s.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(a0)
  70009. + s.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(a0)
  70010. + s.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(a0)
  70011. + s.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(a0)
  70012. + s.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(a0)
  70013. + s.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(a0)
  70014. +
  70015. +# endif /* _MIPS_SIM != _ABI64 */
  70016. +
  70017. + cfc1 v1, fcr31
  70018. + sw v1, MCONTEXT_FPC_CSR(a0)
  70019. +#endif /* __mips_hard_float */
  70020. +
  70021. + REG_S a1, A1OFF(sp)
  70022. +
  70023. +/* rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, &oucp->uc_sigmask, _NSIG8) */
  70024. + li a3, _NSIG8
  70025. + PTR_ADDU a2, a0, UCONTEXT_SIGMASK
  70026. + PTR_ADDU a1, a1, UCONTEXT_SIGMASK
  70027. + li a0, SIG_SETMASK
  70028. +
  70029. + li v0, SYS_ify (rt_sigprocmask)
  70030. + syscall
  70031. + bnez a3, 99f
  70032. +
  70033. + REG_L v0, A1OFF(sp)
  70034. +
  70035. +#ifdef __mips_hard_float
  70036. +# if _MIPS_SIM == _ABI64
  70037. + l.d fs0, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  70038. + l.d fs1, (25 * SZREG + MCONTEXT_FPREGS)(v0)
  70039. + l.d fs2, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  70040. + l.d fs3, (27 * SZREG + MCONTEXT_FPREGS)(v0)
  70041. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  70042. + l.d fs5, (29 * SZREG + MCONTEXT_FPREGS)(v0)
  70043. + l.d fs6, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  70044. + l.d fs7, (31 * SZREG + MCONTEXT_FPREGS)(v0)
  70045. +
  70046. +# else /* _MIPS_SIM != _ABI64 */
  70047. + l.d fs0, (20 * SZREG + MCONTEXT_FPREGS)(v0)
  70048. + l.d fs1, (22 * SZREG + MCONTEXT_FPREGS)(v0)
  70049. + l.d fs2, (24 * SZREG + MCONTEXT_FPREGS)(v0)
  70050. + l.d fs3, (26 * SZREG + MCONTEXT_FPREGS)(v0)
  70051. + l.d fs4, (28 * SZREG + MCONTEXT_FPREGS)(v0)
  70052. + l.d fs5, (30 * SZREG + MCONTEXT_FPREGS)(v0)
  70053. +
  70054. +# endif /* _MIPS_SIM != _ABI64 */
  70055. +
  70056. + lw v1, MCONTEXT_FPC_CSR(v0)
  70057. + ctc1 v1, fcr31
  70058. +#endif /* __mips_hard_float */
  70059. +
  70060. + /* Note the contents of argument registers will be random
  70061. + unless makecontext() has been called. */
  70062. + REG_L a0, (4 * SZREG + MCONTEXT_GREGS)(v0)
  70063. + REG_L a1, (5 * SZREG + MCONTEXT_GREGS)(v0)
  70064. + REG_L a2, (6 * SZREG + MCONTEXT_GREGS)(v0)
  70065. + REG_L a3, (7 * SZREG + MCONTEXT_GREGS)(v0)
  70066. +#if _MIPS_SIM != _ABIO32
  70067. + REG_L a4, (8 * SZREG + MCONTEXT_GREGS)(v0)
  70068. + REG_L a5, (9 * SZREG + MCONTEXT_GREGS)(v0)
  70069. + REG_L a6, (10 * SZREG + MCONTEXT_GREGS)(v0)
  70070. + REG_L a7, (11 * SZREG + MCONTEXT_GREGS)(v0)
  70071. +#endif
  70072. +
  70073. + REG_L s0, (16 * SZREG + MCONTEXT_GREGS)(v0)
  70074. + REG_L s1, (17 * SZREG + MCONTEXT_GREGS)(v0)
  70075. + REG_L s2, (18 * SZREG + MCONTEXT_GREGS)(v0)
  70076. + REG_L s3, (19 * SZREG + MCONTEXT_GREGS)(v0)
  70077. + REG_L s4, (20 * SZREG + MCONTEXT_GREGS)(v0)
  70078. + REG_L s5, (21 * SZREG + MCONTEXT_GREGS)(v0)
  70079. + REG_L s6, (22 * SZREG + MCONTEXT_GREGS)(v0)
  70080. + REG_L s7, (23 * SZREG + MCONTEXT_GREGS)(v0)
  70081. +#if ! defined (__PIC__) || _MIPS_SIM != _ABIO32
  70082. + REG_L gp, (28 * SZREG + MCONTEXT_GREGS)(v0)
  70083. +#endif
  70084. + REG_L sp, (29 * SZREG + MCONTEXT_GREGS)(v0)
  70085. + REG_L fp, (30 * SZREG + MCONTEXT_GREGS)(v0)
  70086. + REG_L ra, (31 * SZREG + MCONTEXT_GREGS)(v0)
  70087. + REG_L t9, MCONTEXT_PC(v0)
  70088. +
  70089. + move v0, zero
  70090. + jr t9
  70091. +
  70092. +99:
  70093. +#ifdef __PIC__
  70094. + PTR_LA t9, JUMPTARGET (__syscall_error)
  70095. + RESTORE_GP64
  70096. + PTR_ADDIU sp, FRAMESZ
  70097. + jr t9
  70098. +
  70099. +#else /* ! __PIC__ */
  70100. +
  70101. + j JUMPTARGET (__syscall_error)
  70102. +#endif /* ! __PIC__ */
  70103. +PSEUDO_END (__swapcontext)
  70104. +
  70105. +weak_alias (__swapcontext, swapcontext)
  70106. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/asm.h uClibc-git/libc/sysdeps/linux/mips/sys/asm.h
  70107. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/asm.h 2012-05-15 09:20:09.000000000 +0200
  70108. +++ uClibc-git/libc/sysdeps/linux/mips/sys/asm.h 2014-02-03 12:32:56.000000000 +0100
  70109. @@ -13,9 +13,8 @@
  70110. Lesser General Public License for more details.
  70111. You should have received a copy of the GNU Lesser General Public
  70112. - License along with the GNU C Library; if not, write to the Free
  70113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70114. - 02111-1307 USA. */
  70115. + License along with the GNU C Library; if not, see
  70116. + <http://www.gnu.org/licenses/>. */
  70117. #ifndef _SYS_ASM_H
  70118. #define _SYS_ASM_H
  70119. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/cachectl.h uClibc-git/libc/sysdeps/linux/mips/sys/cachectl.h
  70120. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/cachectl.h 2012-05-15 09:20:09.000000000 +0200
  70121. +++ uClibc-git/libc/sysdeps/linux/mips/sys/cachectl.h 2014-02-03 12:32:56.000000000 +0100
  70122. @@ -12,9 +12,8 @@
  70123. Lesser General Public License for more details.
  70124. You should have received a copy of the GNU Lesser General Public
  70125. - License along with the GNU C Library; if not, write to the Free
  70126. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70127. - 02111-1307 USA. */
  70128. + License along with the GNU C Library; if not, see
  70129. + <http://www.gnu.org/licenses/>. */
  70130. #ifndef _SYS_CACHECTL_H
  70131. #define _SYS_CACHECTL_H 1
  70132. @@ -29,13 +28,15 @@
  70133. __BEGIN_DECLS
  70134. #ifdef __USE_MISC
  70135. -extern int cachectl (void *addr, __const int nbytes, __const int op) __THROW;
  70136. +extern int cachectl (void *addr, const int nbytes, const int op) __THROW;
  70137. +#endif
  70138. +#if 0
  70139. +extern int __cachectl (void *addr, const int nbytes, const int op) __THROW;
  70140. #endif
  70141. -extern int __cachectl (void *addr, __const int nbytes, __const int op) __THROW;
  70142. #ifdef __USE_MISC
  70143. -extern int cacheflush (void *addr, __const int nbytes, __const int op) __THROW;
  70144. +extern int cacheflush (void *addr, const int nbytes, const int op) __THROW;
  70145. #endif
  70146. -extern int _flush_cache (char *addr, __const int nbytes, __const int op) __THROW;
  70147. +extern int _flush_cache (char *addr, const int nbytes, const int op) __THROW;
  70148. __END_DECLS
  70149. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/fpregdef.h uClibc-git/libc/sysdeps/linux/mips/sys/fpregdef.h
  70150. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/fpregdef.h 2012-05-15 09:20:09.000000000 +0200
  70151. +++ uClibc-git/libc/sysdeps/linux/mips/sys/fpregdef.h 2014-02-03 12:32:56.000000000 +0100
  70152. @@ -12,9 +12,8 @@
  70153. Lesser General Public License for more details.
  70154. You should have received a copy of the GNU Lesser General Public
  70155. - License along with the GNU C Library; if not, write to the Free
  70156. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70157. - 02111-1307 USA. */
  70158. + License along with the GNU C Library; if not, see
  70159. + <http://www.gnu.org/licenses/>. */
  70160. #ifndef _SYS_FPREGDEF_H
  70161. #define _SYS_FPREGDEF_H
  70162. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/procfs.h uClibc-git/libc/sysdeps/linux/mips/sys/procfs.h
  70163. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  70164. +++ uClibc-git/libc/sysdeps/linux/mips/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  70165. @@ -12,9 +12,8 @@
  70166. Lesser General Public License for more details.
  70167. You should have received a copy of the GNU Lesser General Public
  70168. - License along with the GNU C Library; if not, write to the Free
  70169. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70170. - 02111-1307 USA. */
  70171. + License along with the GNU C Library; if not, see
  70172. + <http://www.gnu.org/licenses/>. */
  70173. #ifndef _SYS_PROCFS_H
  70174. #define _SYS_PROCFS_H 1
  70175. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/regdef.h uClibc-git/libc/sysdeps/linux/mips/sys/regdef.h
  70176. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/regdef.h 2012-05-15 09:20:09.000000000 +0200
  70177. +++ uClibc-git/libc/sysdeps/linux/mips/sys/regdef.h 2014-02-03 12:32:56.000000000 +0100
  70178. @@ -13,9 +13,8 @@
  70179. Lesser General Public License for more details.
  70180. You should have received a copy of the GNU Lesser General Public
  70181. - License along with the GNU C Library; if not, write to the Free
  70182. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70183. - 02111-1307 USA. */
  70184. + License along with the GNU C Library; if not, see
  70185. + <http://www.gnu.org/licenses/>. */
  70186. #ifndef _SYS_REGDEF_H
  70187. #define _SYS_REGDEF_H
  70188. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/sysmips.h uClibc-git/libc/sysdeps/linux/mips/sys/sysmips.h
  70189. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/sysmips.h 2012-05-15 09:20:09.000000000 +0200
  70190. +++ uClibc-git/libc/sysdeps/linux/mips/sys/sysmips.h 2014-02-03 12:32:56.000000000 +0100
  70191. @@ -12,9 +12,8 @@
  70192. Lesser General Public License for more details.
  70193. You should have received a copy of the GNU Lesser General Public
  70194. - License along with the GNU C Library; if not, write to the Free
  70195. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70196. - 02111-1307 USA. */
  70197. + License along with the GNU C Library; if not, see
  70198. + <http://www.gnu.org/licenses/>. */
  70199. #ifndef _SYS_SYSMIPS_H
  70200. #define _SYS_SYSMIPS_H 1
  70201. @@ -36,8 +35,8 @@
  70202. __BEGIN_DECLS
  70203. -extern int sysmips (__const int cmd, __const long arg1,
  70204. - __const int arg2, __const int arg3) __THROW;
  70205. +extern int sysmips (const int cmd, const long arg1,
  70206. + const int arg2, const int arg3) __THROW;
  70207. __END_DECLS
  70208. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/tas.h uClibc-git/libc/sysdeps/linux/mips/sys/tas.h
  70209. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/tas.h 2012-05-15 09:20:09.000000000 +0200
  70210. +++ uClibc-git/libc/sysdeps/linux/mips/sys/tas.h 2014-02-03 12:32:56.000000000 +0100
  70211. @@ -13,9 +13,8 @@
  70212. Lesser General Public License for more details.
  70213. You should have received a copy of the GNU Lesser General Public
  70214. - License along with the GNU C Library; if not, write to the Free
  70215. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70216. - 02111-1307 USA. */
  70217. + License along with the GNU C Library; if not, see
  70218. + <http://www.gnu.org/licenses/>. */
  70219. #ifndef _SYS_TAS_H
  70220. #define _SYS_TAS_H 1
  70221. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/ucontext.h uClibc-git/libc/sysdeps/linux/mips/sys/ucontext.h
  70222. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  70223. +++ uClibc-git/libc/sysdeps/linux/mips/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  70224. @@ -12,9 +12,8 @@
  70225. Lesser General Public License for more details.
  70226. You should have received a copy of the GNU Lesser General Public
  70227. - License along with the GNU C Library; if not, write to the Free
  70228. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70229. - 02111-1307 USA. */
  70230. + License along with the GNU C Library; if not, see
  70231. + <http://www.gnu.org/licenses/>. */
  70232. /* Don't rely on this, the interface is currently messed up and may need to
  70233. be broken to be fixed. */
  70234. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/user.h uClibc-git/libc/sysdeps/linux/mips/sys/user.h
  70235. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  70236. +++ uClibc-git/libc/sysdeps/linux/mips/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  70237. @@ -12,9 +12,8 @@
  70238. Lesser General Public License for more details.
  70239. You should have received a copy of the GNU Lesser General Public
  70240. - License along with the GNU C Library; if not, write to the Free
  70241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70242. - 02111-1307 USA. */
  70243. + License along with the GNU C Library; if not, see
  70244. + <http://www.gnu.org/licenses/>. */
  70245. #ifndef _SYS_USER_H
  70246. #define _SYS_USER_H 1
  70247. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall_error.S uClibc-git/libc/sysdeps/linux/mips/syscall_error.S
  70248. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall_error.S 2012-05-15 09:20:09.000000000 +0200
  70249. +++ uClibc-git/libc/sysdeps/linux/mips/syscall_error.S 2014-02-03 12:32:56.000000000 +0100
  70250. @@ -14,9 +14,8 @@
  70251. Lesser General Public License for more details.
  70252. You should have received a copy of the GNU Lesser General Public
  70253. - License along with the GNU C Library; if not, write to the Free
  70254. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70255. - 02111-1307 USA. */
  70256. + License along with the GNU C Library; if not, see
  70257. + <http://www.gnu.org/licenses/>. */
  70258. #include <sys/asm.h>
  70259. #include <sysdep.h>
  70260. @@ -43,7 +42,7 @@
  70261. #ifdef __PIC__
  70262. SAVE_GP(GPOFF)
  70263. #endif
  70264. - REG_S v0, V0OFF(sp)
  70265. + REG_S a0, V0OFF(sp)
  70266. REG_S ra, RAOFF(sp)
  70267. /* Find our per-thread errno address */
  70268. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall.S uClibc-git/libc/sysdeps/linux/mips/syscall.S
  70269. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/syscall.S 2012-05-15 09:20:09.000000000 +0200
  70270. +++ uClibc-git/libc/sysdeps/linux/mips/syscall.S 2014-02-03 12:32:56.000000000 +0100
  70271. @@ -12,9 +12,8 @@
  70272. Lesser General Public License for more details.
  70273. You should have received a copy of the GNU Lesser General Public
  70274. - License along with the GNU C Library; if not, write to the Free
  70275. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70276. - 02111-1307 USA. */
  70277. + License along with the GNU C Library; if not, see
  70278. + <http://www.gnu.org/licenses/>. */
  70279. #include <features.h>
  70280. #include <sys/asm.h>
  70281. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/sysdep.h uClibc-git/libc/sysdeps/linux/mips/sysdep.h
  70282. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  70283. +++ uClibc-git/libc/sysdeps/linux/mips/sysdep.h 2014-02-15 14:18:15.000000000 +0100
  70284. @@ -14,9 +14,8 @@
  70285. Lesser General Public License for more details.
  70286. You should have received a copy of the GNU Lesser General Public
  70287. - License along with the GNU C Library; if not, write to the Free
  70288. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70289. - 02111-1307 USA. */
  70290. + License along with the GNU C Library; if not, see
  70291. + <http://www.gnu.org/licenses/>. */
  70292. #ifndef _LINUX_MIPS_SYSDEP_H
  70293. #define _LINUX_MIPS_SYSDEP_H 1
  70294. @@ -78,8 +77,6 @@
  70295. #undef PSEUDO_END_ERRVAL
  70296. #define PSEUDO_END_ERRVAL(sym) .end sym; .size sym,.-sym
  70297. -#define ret_ERRVAL ret
  70298. -
  70299. #define r0 v0
  70300. #define r1 v1
  70301. /* The mips move insn is d,s. */
  70302. @@ -133,258 +130,6 @@
  70303. #else /* ! __ASSEMBLER__ */
  70304. -/* Define a macro which expands into the inline wrapper code for a system
  70305. - call. */
  70306. -#undef INLINE_SYSCALL
  70307. -#define INLINE_SYSCALL(name, nr, args...) \
  70308. - ({ INTERNAL_SYSCALL_DECL(err); \
  70309. - long result_var = INTERNAL_SYSCALL (name, err, nr, args); \
  70310. - if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) ) \
  70311. - { \
  70312. - __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err)); \
  70313. - result_var = -1L; \
  70314. - } \
  70315. - result_var; })
  70316. -
  70317. -#undef INTERNAL_SYSCALL_DECL
  70318. -#define INTERNAL_SYSCALL_DECL(err) long err
  70319. -
  70320. -#undef INTERNAL_SYSCALL_ERROR_P
  70321. -#define INTERNAL_SYSCALL_ERROR_P(val, err) ((long) (err))
  70322. -
  70323. -#undef INTERNAL_SYSCALL_ERRNO
  70324. -#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
  70325. -
  70326. -#undef INTERNAL_SYSCALL
  70327. -#define INTERNAL_SYSCALL(name, err, nr, args...) \
  70328. - internal_syscall##nr (, "li\t$2, %2\t\t\t# " #name "\n\t", \
  70329. - "i" (SYS_ify (name)), err, args)
  70330. -
  70331. -#undef INTERNAL_SYSCALL_NCS
  70332. -#define INTERNAL_SYSCALL_NCS(number, err, nr, args...) \
  70333. - internal_syscall##nr (= number, , "r" (__v0), err, args)
  70334. -#undef internal_syscall0
  70335. -#define internal_syscall0(ncs_init, cs_init, input, err, dummy...) \
  70336. -({ \
  70337. - long _sys_result; \
  70338. - \
  70339. - { \
  70340. - register long __v0 __asm__("$2") ncs_init; \
  70341. - register long __a3 __asm__("$7"); \
  70342. - __asm__ __volatile__ ( \
  70343. - ".set\tnoreorder\n\t" \
  70344. - cs_init \
  70345. - "syscall\n\t" \
  70346. - ".set reorder" \
  70347. - : "=r" (__v0), "=r" (__a3) \
  70348. - : input \
  70349. - : __SYSCALL_CLOBBERS); \
  70350. - err = __a3; \
  70351. - _sys_result = __v0; \
  70352. - } \
  70353. - _sys_result; \
  70354. -})
  70355. -
  70356. -#undef internal_syscall1
  70357. -#define internal_syscall1(ncs_init, cs_init, input, err, arg1) \
  70358. -({ \
  70359. - long _sys_result; \
  70360. - \
  70361. - { \
  70362. - register long __v0 __asm__("$2") ncs_init; \
  70363. - register long __a0 __asm__("$4") = (long) arg1; \
  70364. - register long __a3 __asm__("$7"); \
  70365. - __asm__ __volatile__ ( \
  70366. - ".set\tnoreorder\n\t" \
  70367. - cs_init \
  70368. - "syscall\n\t" \
  70369. - ".set reorder" \
  70370. - : "=r" (__v0), "=r" (__a3) \
  70371. - : input, "r" (__a0) \
  70372. - : __SYSCALL_CLOBBERS); \
  70373. - err = __a3; \
  70374. - _sys_result = __v0; \
  70375. - } \
  70376. - _sys_result; \
  70377. -})
  70378. -
  70379. -#undef internal_syscall2
  70380. -#define internal_syscall2(ncs_init, cs_init, input, err, arg1, arg2) \
  70381. -({ \
  70382. - long _sys_result; \
  70383. - \
  70384. - { \
  70385. - register long __v0 __asm__("$2") ncs_init; \
  70386. - register long __a0 __asm__("$4") = (long) arg1; \
  70387. - register long __a1 __asm__("$5") = (long) arg2; \
  70388. - register long __a3 __asm__("$7"); \
  70389. - __asm__ __volatile__ ( \
  70390. - ".set\tnoreorder\n\t" \
  70391. - cs_init \
  70392. - "syscall\n\t" \
  70393. - ".set\treorder" \
  70394. - : "=r" (__v0), "=r" (__a3) \
  70395. - : input, "r" (__a0), "r" (__a1) \
  70396. - : __SYSCALL_CLOBBERS); \
  70397. - err = __a3; \
  70398. - _sys_result = __v0; \
  70399. - } \
  70400. - _sys_result; \
  70401. -})
  70402. -
  70403. -#undef internal_syscall3
  70404. -#define internal_syscall3(ncs_init, cs_init, input, err, arg1, arg2, arg3)\
  70405. -({ \
  70406. - long _sys_result; \
  70407. - \
  70408. - { \
  70409. - register long __v0 __asm__("$2") ncs_init; \
  70410. - register long __a0 __asm__("$4") = (long) arg1; \
  70411. - register long __a1 __asm__("$5") = (long) arg2; \
  70412. - register long __a2 __asm__("$6") = (long) arg3; \
  70413. - register long __a3 __asm__("$7"); \
  70414. - __asm__ __volatile__ ( \
  70415. - ".set\tnoreorder\n\t" \
  70416. - cs_init \
  70417. - "syscall\n\t" \
  70418. - ".set\treorder" \
  70419. - : "=r" (__v0), "=r" (__a3) \
  70420. - : input, "r" (__a0), "r" (__a1), "r" (__a2) \
  70421. - : __SYSCALL_CLOBBERS); \
  70422. - err = __a3; \
  70423. - _sys_result = __v0; \
  70424. - } \
  70425. - _sys_result; \
  70426. -})
  70427. -
  70428. -#undef internal_syscall4
  70429. -#define internal_syscall4(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4)\
  70430. -({ \
  70431. - long _sys_result; \
  70432. - \
  70433. - { \
  70434. - register long __v0 __asm__("$2") ncs_init; \
  70435. - register long __a0 __asm__("$4") = (long) arg1; \
  70436. - register long __a1 __asm__("$5") = (long) arg2; \
  70437. - register long __a2 __asm__("$6") = (long) arg3; \
  70438. - register long __a3 __asm__("$7") = (long) arg4; \
  70439. - __asm__ __volatile__ ( \
  70440. - ".set\tnoreorder\n\t" \
  70441. - cs_init \
  70442. - "syscall\n\t" \
  70443. - ".set\treorder" \
  70444. - : "=r" (__v0), "+r" (__a3) \
  70445. - : input, "r" (__a0), "r" (__a1), "r" (__a2) \
  70446. - : __SYSCALL_CLOBBERS); \
  70447. - err = __a3; \
  70448. - _sys_result = __v0; \
  70449. - } \
  70450. - _sys_result; \
  70451. -})
  70452. -
  70453. -/* We need to use a frame pointer for the functions in which we
  70454. - adjust $sp around the syscall, or debug information and unwind
  70455. - information will be $sp relative and thus wrong during the syscall. As
  70456. - of GCC 3.4.3, this is sufficient. */
  70457. -#define FORCE_FRAME_POINTER alloca (4)
  70458. -
  70459. -#undef internal_syscall5
  70460. -#define internal_syscall5(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5)\
  70461. -({ \
  70462. - long _sys_result; \
  70463. - \
  70464. - FORCE_FRAME_POINTER; \
  70465. - { \
  70466. - register long __v0 __asm__("$2") ncs_init; \
  70467. - register long __a0 __asm__("$4") = (long) arg1; \
  70468. - register long __a1 __asm__("$5") = (long) arg2; \
  70469. - register long __a2 __asm__("$6") = (long) arg3; \
  70470. - register long __a3 __asm__("$7") = (long) arg4; \
  70471. - __asm__ __volatile__ ( \
  70472. - ".set\tnoreorder\n\t" \
  70473. - "subu\t$29, 32\n\t" \
  70474. - "sw\t%6, 16($29)\n\t" \
  70475. - cs_init \
  70476. - "syscall\n\t" \
  70477. - "addiu\t$29, 32\n\t" \
  70478. - ".set\treorder" \
  70479. - : "=r" (__v0), "+r" (__a3) \
  70480. - : input, "r" (__a0), "r" (__a1), "r" (__a2), \
  70481. - "r" ((long)arg5) \
  70482. - : __SYSCALL_CLOBBERS); \
  70483. - err = __a3; \
  70484. - _sys_result = __v0; \
  70485. - } \
  70486. - _sys_result; \
  70487. -})
  70488. -
  70489. -#undef internal_syscall6
  70490. -#define internal_syscall6(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5, arg6)\
  70491. -({ \
  70492. - long _sys_result; \
  70493. - \
  70494. - FORCE_FRAME_POINTER; \
  70495. - { \
  70496. - register long __v0 __asm__("$2") ncs_init; \
  70497. - register long __a0 __asm__("$4") = (long) arg1; \
  70498. - register long __a1 __asm__("$5") = (long) arg2; \
  70499. - register long __a2 __asm__("$6") = (long) arg3; \
  70500. - register long __a3 __asm__("$7") = (long) arg4; \
  70501. - __asm__ __volatile__ ( \
  70502. - ".set\tnoreorder\n\t" \
  70503. - "subu\t$29, 32\n\t" \
  70504. - "sw\t%6, 16($29)\n\t" \
  70505. - "sw\t%7, 20($29)\n\t" \
  70506. - cs_init \
  70507. - "syscall\n\t" \
  70508. - "addiu\t$29, 32\n\t" \
  70509. - ".set\treorder" \
  70510. - : "=r" (__v0), "+r" (__a3) \
  70511. - : input, "r" (__a0), "r" (__a1), "r" (__a2), \
  70512. - "r" ((long)arg5), "r" ((long)arg6) \
  70513. - : __SYSCALL_CLOBBERS); \
  70514. - err = __a3; \
  70515. - _sys_result = __v0; \
  70516. - } \
  70517. - _sys_result; \
  70518. -})
  70519. -
  70520. -#undef internal_syscall7
  70521. -#define internal_syscall7(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
  70522. -({ \
  70523. - long _sys_result; \
  70524. - \
  70525. - FORCE_FRAME_POINTER; \
  70526. - { \
  70527. - register long __v0 __asm__("$2") ncs_init; \
  70528. - register long __a0 __asm__("$4") = (long) arg1; \
  70529. - register long __a1 __asm__("$5") = (long) arg2; \
  70530. - register long __a2 __asm__("$6") = (long) arg3; \
  70531. - register long __a3 __asm__("$7") = (long) arg4; \
  70532. - __asm__ __volatile__ ( \
  70533. - ".set\tnoreorder\n\t" \
  70534. - "subu\t$29, 32\n\t" \
  70535. - "sw\t%6, 16($29)\n\t" \
  70536. - "sw\t%7, 20($29)\n\t" \
  70537. - "sw\t%8, 24($29)\n\t" \
  70538. - cs_init \
  70539. - "syscall\n\t" \
  70540. - "addiu\t$29, 32\n\t" \
  70541. - ".set\treorder" \
  70542. - : "=r" (__v0), "+r" (__a3) \
  70543. - : input, "r" (__a0), "r" (__a1), "r" (__a2), \
  70544. - "r" ((long)arg5), "r" ((long)arg6), "r" ((long)arg7) \
  70545. - : __SYSCALL_CLOBBERS); \
  70546. - err = __a3; \
  70547. - _sys_result = __v0; \
  70548. - } \
  70549. - _sys_result; \
  70550. -})
  70551. -
  70552. -#undef __SYSCALL_CLOBBERS
  70553. -#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
  70554. - "$14", "$15", "$24", "$25", "memory"
  70555. -
  70556. /* Pointer mangling is not yet supported for MIPS. */
  70557. #define PTR_MANGLE(var) (void) (var)
  70558. #define PTR_DEMANGLE(var) (void) (var)
  70559. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/_test_and_set.c uClibc-git/libc/sysdeps/linux/mips/_test_and_set.c
  70560. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/_test_and_set.c 2012-05-15 09:20:09.000000000 +0200
  70561. +++ uClibc-git/libc/sysdeps/linux/mips/_test_and_set.c 2014-02-03 12:32:56.000000000 +0100
  70562. @@ -13,9 +13,8 @@
  70563. Lesser General Public License for more details.
  70564. You should have received a copy of the GNU Lesser General Public
  70565. - License along with the GNU C Library; if not, write to the Free
  70566. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70567. - 02111-1307 USA. */
  70568. + License along with the GNU C Library; if not, see
  70569. + <http://www.gnu.org/licenses/>. */
  70570. /* Define the real-function versions of all inline functions
  70571. defined in sys/tas.h */
  70572. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/ucontext_i.sym uClibc-git/libc/sysdeps/linux/mips/ucontext_i.sym
  70573. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  70574. +++ uClibc-git/libc/sysdeps/linux/mips/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  70575. @@ -0,0 +1,52 @@
  70576. +#include <inttypes.h>
  70577. +#include <signal.h>
  70578. +#include <stddef.h>
  70579. +#include <sys/ucontext.h>
  70580. +
  70581. +#include <kernel_rt_sigframe.h>
  70582. +
  70583. +-- Constants used by the rt_sigprocmask call.
  70584. +
  70585. +SIG_BLOCK
  70586. +SIG_SETMASK
  70587. +
  70588. +_NSIG8 (_NSIG / 8)
  70589. +
  70590. +-- Offsets of the fields in the kernel rt_sigframe_t structure.
  70591. +#define rt_sigframe(member) offsetof (kernel_rt_sigframe_t, member)
  70592. +
  70593. +RT_SIGFRAME_UCONTEXT rt_sigframe (rs_uc)
  70594. +
  70595. +RT_SIGFRAME_SIZE sizeof (kernel_rt_sigframe_t)
  70596. +
  70597. +-- Offsets of the fields in the ucontext_t structure.
  70598. +#define ucontext(member) offsetof (ucontext_t, member)
  70599. +#define stack(member) ucontext (uc_stack.member)
  70600. +#define mcontext(member) ucontext (uc_mcontext.member)
  70601. +
  70602. +UCONTEXT_FLAGS ucontext (uc_flags)
  70603. +UCONTEXT_LINK ucontext (uc_link)
  70604. +UCONTEXT_STACK ucontext (uc_stack)
  70605. +UCONTEXT_MCONTEXT ucontext (uc_mcontext)
  70606. +UCONTEXT_SIGMASK ucontext (uc_sigmask)
  70607. +
  70608. +STACK_SP stack (ss_sp)
  70609. +STACK_SIZE stack (ss_size)
  70610. +STACK_FLAGS stack (ss_flags)
  70611. +
  70612. +MCONTEXT_GREGS mcontext (gregs)
  70613. +MCONTEXT_FPREGS mcontext (fpregs)
  70614. +MCONTEXT_MDHI mcontext (mdhi)
  70615. +MCONTEXT_HI1 mcontext (hi1)
  70616. +MCONTEXT_HI2 mcontext (hi2)
  70617. +MCONTEXT_HI3 mcontext (hi3)
  70618. +MCONTEXT_MDLO mcontext (mdlo)
  70619. +MCONTEXT_LO1 mcontext (lo1)
  70620. +MCONTEXT_LO2 mcontext (lo2)
  70621. +MCONTEXT_LO3 mcontext (lo3)
  70622. +MCONTEXT_PC mcontext (pc)
  70623. +MCONTEXT_FPC_CSR mcontext (fpc_csr)
  70624. +MCONTEXT_USED_MATH mcontext (used_math)
  70625. +MCONTEXT_DSP mcontext (dsp)
  70626. +
  70627. +UCONTEXT_SIZE sizeof (ucontext_t)
  70628. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/mips/vfork.S uClibc-git/libc/sysdeps/linux/mips/vfork.S
  70629. --- uClibc-0.9.33.2/libc/sysdeps/linux/mips/vfork.S 2012-05-15 09:20:09.000000000 +0200
  70630. +++ uClibc-git/libc/sysdeps/linux/mips/vfork.S 2014-02-03 12:32:56.000000000 +0100
  70631. @@ -12,12 +12,12 @@
  70632. Lesser General Public License for more details.
  70633. You should have received a copy of the GNU Lesser General Public
  70634. - License along with the GNU C Library; if not, write to the Free
  70635. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70636. - 02111-1307 USA. */
  70637. + License along with the GNU C Library; if not, see
  70638. + <http://www.gnu.org/licenses/>. */
  70639. /* vfork() is just a special case of clone(). */
  70640. +#include <sys/syscall.h>
  70641. #include <sys/asm.h>
  70642. #include <sysdep.h>
  70643. @@ -34,6 +34,7 @@
  70644. /* int vfork() */
  70645. .text
  70646. + .hidden __vfork
  70647. LOCALSZ= 1
  70648. FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
  70649. GPOFF= FRAMESZ-(1*SZREG)
  70650. @@ -84,6 +85,7 @@
  70651. /* Something bad happened -- no child created. */
  70652. L(error):
  70653. + move a0, v0
  70654. #ifdef __PIC__
  70655. PTR_LA t9, __syscall_error
  70656. RESTORE_GP64
  70657. @@ -95,6 +97,6 @@
  70658. END(__vfork)
  70659. weak_alias(__vfork,vfork)
  70660. -libc_hidden_weak(vfork)
  70661. +libc_hidden_def(vfork)
  70662. #endif
  70663. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/fcntl.h uClibc-git/libc/sysdeps/linux/nios/bits/fcntl.h
  70664. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  70665. +++ uClibc-git/libc/sysdeps/linux/nios/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  70666. @@ -14,8 +14,7 @@
  70667. You should have received a copy of the GNU Library General Public
  70668. License along with the GNU C Library; see the file COPYING.LIB. If not,
  70669. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  70670. - Boston, MA 02111-1307, USA. */
  70671. + see <http://www.gnu.org/licenses/>. */
  70672. #ifndef _FCNTL_H
  70673. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  70674. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/mathdef.h uClibc-git/libc/sysdeps/linux/nios/bits/mathdef.h
  70675. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  70676. +++ uClibc-git/libc/sysdeps/linux/nios/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  70677. @@ -12,9 +12,8 @@
  70678. Lesser General Public License for more details.
  70679. You should have received a copy of the GNU Lesser General Public
  70680. - License along with the GNU C Library; if not, write to the Free
  70681. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70682. - 02111-1307 USA. */
  70683. + License along with the GNU C Library; if not, see
  70684. + <http://www.gnu.org/licenses/>. */
  70685. #if !defined _MATH_H && !defined _COMPLEX_H
  70686. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  70687. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/setjmp.h uClibc-git/libc/sysdeps/linux/nios/bits/setjmp.h
  70688. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  70689. +++ uClibc-git/libc/sysdeps/linux/nios/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  70690. @@ -12,9 +12,8 @@
  70691. Lesser General Public License for more details.
  70692. You should have received a copy of the GNU Lesser General Public
  70693. - License along with the GNU C Library; if not, write to the Free
  70694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70695. - 02111-1307 USA. */
  70696. + License along with the GNU C Library; if not, see
  70697. + <http://www.gnu.org/licenses/>. */
  70698. /* Define the machine-dependent type `jmp_buf'. Nios version. */
  70699. #ifndef _BITS_SETJMP_H
  70700. @@ -24,8 +23,6 @@
  70701. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  70702. #endif
  70703. -#ifndef _ASM
  70704. -
  70705. #include <signal.h>
  70706. typedef struct
  70707. @@ -44,33 +41,4 @@
  70708. } __jmp_buf[1];
  70709. -/* Test if longjmp to JMPBUF would unwind the frame
  70710. - containing a local variable at ADDRESS. */
  70711. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  70712. - ((void *) (address) < (void *) (jmpbuf)->__sp)
  70713. -
  70714. -#else /* _ASM */
  70715. -
  70716. -#define jmpbuf_l0 0x00
  70717. -#define jmpbuf_l1 0x01
  70718. -#define jmpbuf_l2 0x02
  70719. -#define jmpbuf_l3 0x03
  70720. -#define jmpbuf_l4 0x04
  70721. -#define jmpbuf_l5 0x05
  70722. -#define jmpbuf_l6 0x06
  70723. -#define jmpbuf_l7 0x07
  70724. -
  70725. -#define jmpbuf_i0 0x08
  70726. -#define jmpbuf_i1 0x09
  70727. -#define jmpbuf_i2 0x0a
  70728. -#define jmpbuf_i3 0x0b
  70729. -#define jmpbuf_i4 0x0c
  70730. -#define jmpbuf_i5 0x0d
  70731. -
  70732. -#define jmpbuf_sp 0x0e
  70733. -#define jmpbuf_jmpret 0x0f
  70734. -#define jmpbuf_callersret 0x10
  70735. -
  70736. -#endif /* _ASM */
  70737. -
  70738. #endif /* bits/setjmp.h */
  70739. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/nios/bits/sigcontextinfo.h
  70740. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  70741. +++ uClibc-git/libc/sysdeps/linux/nios/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  70742. @@ -13,9 +13,8 @@
  70743. Lesser General Public License for more details.
  70744. You should have received a copy of the GNU Lesser General Public
  70745. - License along with the GNU C Library; if not, write to the Free
  70746. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70747. - 02111-1307 USA. */
  70748. + License along with the GNU C Library; if not, see
  70749. + <http://www.gnu.org/licenses/>. */
  70750. #define SIGCONTEXT struct sigcontext *
  70751. #define SIGCONTEXT_EXTRA_ARGS
  70752. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/nios/bits/stackinfo.h
  70753. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  70754. +++ uClibc-git/libc/sysdeps/linux/nios/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  70755. @@ -12,9 +12,8 @@
  70756. Lesser General Public License for more details.
  70757. You should have received a copy of the GNU Lesser General Public
  70758. - License along with the GNU C Library; if not, write to the Free
  70759. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70760. - 02111-1307 USA. */
  70761. + License along with the GNU C Library; if not, see
  70762. + <http://www.gnu.org/licenses/>. */
  70763. /* This file contains a bit of information about the stack allocation
  70764. of the processor. */
  70765. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stat.h uClibc-git/libc/sysdeps/linux/nios/bits/stat.h
  70766. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  70767. +++ uClibc-git/libc/sysdeps/linux/nios/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  70768. @@ -12,9 +12,8 @@
  70769. Lesser General Public License for more details.
  70770. You should have received a copy of the GNU Lesser General Public
  70771. - License along with the GNU C Library; if not, write to the Free
  70772. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70773. - 02111-1307 USA. */
  70774. + License along with the GNU C Library; if not, see
  70775. + <http://www.gnu.org/licenses/>. */
  70776. #ifndef _SYS_STAT_H
  70777. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  70778. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h
  70779. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  70780. +++ uClibc-git/libc/sysdeps/linux/nios/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  70781. @@ -12,8 +12,8 @@
  70782. /* can your target use syscall6() for mmap ? */
  70783. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  70784. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  70785. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  70786. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  70787. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  70788. /* does your target have a broken create_module() ? */
  70789. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  70790. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/wordsize.h uClibc-git/libc/sysdeps/linux/nios/bits/wordsize.h
  70791. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  70792. +++ uClibc-git/libc/sysdeps/linux/nios/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  70793. @@ -12,8 +12,7 @@
  70794. Lesser General Public License for more details.
  70795. You should have received a copy of the GNU Lesser General Public
  70796. - License along with the GNU C Library; if not, write to the Free
  70797. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70798. - 02111-1307 USA. */
  70799. + License along with the GNU C Library; if not, see
  70800. + <http://www.gnu.org/licenses/>. */
  70801. #define __WORDSIZE 32
  70802. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/brk.c uClibc-git/libc/sysdeps/linux/nios/brk.c
  70803. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/brk.c 2012-05-15 09:20:09.000000000 +0200
  70804. +++ uClibc-git/libc/sysdeps/linux/nios/brk.c 2014-02-03 12:32:56.000000000 +0100
  70805. @@ -13,9 +13,8 @@
  70806. Lesser General Public License for more details.
  70807. You should have received a copy of the GNU Lesser General Public
  70808. - License along with the GNU C Library; if not, write to the Free
  70809. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70810. - 02111-1307 USA. */
  70811. + License along with the GNU C Library; if not, see
  70812. + <http://www.gnu.org/licenses/>. */
  70813. #include <unistd.h>
  70814. #include <sys/syscall.h>
  70815. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/clone.S uClibc-git/libc/sysdeps/linux/nios/clone.S
  70816. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/clone.S 2012-05-15 09:20:09.000000000 +0200
  70817. +++ uClibc-git/libc/sysdeps/linux/nios/clone.S 2014-02-03 12:32:56.000000000 +0100
  70818. @@ -13,9 +13,8 @@
  70819. Lesser General Public License for more details.
  70820. You should have received a copy of the GNU Lesser General Public
  70821. - License along with the GNU C Library; if not, write to the Free
  70822. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70823. - 02111-1307 USA. */
  70824. + License along with the GNU C Library; if not, see
  70825. + <http://www.gnu.org/licenses/>. */
  70826. /* clone() is even more special than fork() as it mucks with stacks
  70827. and invokes a function in the right context after its all over. */
  70828. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/crt1.S uClibc-git/libc/sysdeps/linux/nios/crt1.S
  70829. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/crt1.S 2012-05-15 09:20:09.000000000 +0200
  70830. +++ uClibc-git/libc/sysdeps/linux/nios/crt1.S 2014-02-03 12:32:56.000000000 +0100
  70831. @@ -14,8 +14,7 @@
  70832. You should have received a copy of the GNU Library General Public
  70833. License along with the GNU C Library; see the file COPYING.LIB. If
  70834. -not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  70835. -Cambridge, MA 02139, USA. */
  70836. +not, see <http://www.gnu.org/licenses/>. */
  70837. #include <features.h>
  70838. #include <asm/unistd.h>
  70839. @@ -29,9 +28,6 @@
  70840. .weak _fini
  70841. .type main,@function
  70842. .type __uClibc_main,@function
  70843. - .type __h_errno_location, @function
  70844. - .type _stdio_init, @function
  70845. - .type _stdio_term, @function
  70846. .text
  70847. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/fpu_control.h uClibc-git/libc/sysdeps/linux/nios/fpu_control.h
  70848. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  70849. +++ uClibc-git/libc/sysdeps/linux/nios/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  70850. @@ -13,9 +13,8 @@
  70851. Lesser General Public License for more details.
  70852. You should have received a copy of the GNU Lesser General Public
  70853. - License along with the GNU C Library; if not, write to the Free
  70854. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70855. - 02111-1307 USA. */
  70856. + License along with the GNU C Library; if not, see
  70857. + <http://www.gnu.org/licenses/>. */
  70858. #ifndef _FPU_CONTROL_H
  70859. #define _FPU_CONTROL_H
  70860. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/nios/jmpbuf-offsets.h
  70861. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  70862. +++ uClibc-git/libc/sysdeps/linux/nios/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  70863. @@ -0,0 +1,25 @@
  70864. +/*
  70865. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  70866. + *
  70867. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70868. + */
  70869. +
  70870. +#define jmpbuf_l0 0x00
  70871. +#define jmpbuf_l1 0x01
  70872. +#define jmpbuf_l2 0x02
  70873. +#define jmpbuf_l3 0x03
  70874. +#define jmpbuf_l4 0x04
  70875. +#define jmpbuf_l5 0x05
  70876. +#define jmpbuf_l6 0x06
  70877. +#define jmpbuf_l7 0x07
  70878. +
  70879. +#define jmpbuf_i0 0x08
  70880. +#define jmpbuf_i1 0x09
  70881. +#define jmpbuf_i2 0x0a
  70882. +#define jmpbuf_i3 0x0b
  70883. +#define jmpbuf_i4 0x0c
  70884. +#define jmpbuf_i5 0x0d
  70885. +
  70886. +#define jmpbuf_sp 0x0e
  70887. +#define jmpbuf_jmpret 0x0f
  70888. +#define jmpbuf_callersret 0x10
  70889. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/nios/jmpbuf-unwind.h
  70890. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  70891. +++ uClibc-git/libc/sysdeps/linux/nios/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  70892. @@ -0,0 +1,11 @@
  70893. +/*
  70894. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  70895. + *
  70896. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70897. + */
  70898. +#include <setjmp.h>
  70899. +
  70900. +/* Test if longjmp to JMPBUF would unwind the frame
  70901. + containing a local variable at ADDRESS. */
  70902. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  70903. + ((void *) (address) < (void *) (jmpbuf)->__sp)
  70904. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/__longjmp.S uClibc-git/libc/sysdeps/linux/nios/__longjmp.S
  70905. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  70906. +++ uClibc-git/libc/sysdeps/linux/nios/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  70907. @@ -13,14 +13,9 @@
  70908. You should have received a copy of the GNU Library General Public
  70909. License along with the GNU C Library; see the file COPYING.LIB. If not,
  70910. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  70911. - Boston, MA 02111-1307, USA. */
  70912. -
  70913. -#include <features.h>
  70914. -#define _ASM
  70915. -#define _SETJMP_H
  70916. -#include <bits/setjmp.h>
  70917. + see <http://www.gnu.org/licenses/>. */
  70918. +#include <jmpbuf-offsets.h>
  70919. ;----------------------------------------
  70920. ; Name: __longjmp
  70921. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/Makefile.arch uClibc-git/libc/sysdeps/linux/nios/Makefile.arch
  70922. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  70923. +++ uClibc-git/libc/sysdeps/linux/nios/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  70924. @@ -5,8 +5,8 @@
  70925. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  70926. #
  70927. -CSRC := brk.c crtbegin.c crtend.c
  70928. +CSRC-y := brk.c crtbegin.c crtend.c
  70929. -SSRC := \
  70930. +SSRC-y := \
  70931. __longjmp.S bsd-_setjmp.S bsd-setjmp.S setjmp.S \
  70932. clone.S vfork.S
  70933. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/setjmp.S uClibc-git/libc/sysdeps/linux/nios/setjmp.S
  70934. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  70935. +++ uClibc-git/libc/sysdeps/linux/nios/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  70936. @@ -13,13 +13,9 @@
  70937. You should have received a copy of the GNU Library General Public
  70938. License along with the GNU C Library; see the file COPYING.LIB. If not,
  70939. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  70940. - Boston, MA 02111-1307, USA. */
  70941. + see <http://www.gnu.org/licenses/>. */
  70942. -#include <features.h>
  70943. -#define _ASM
  70944. -#define _SETJMP_H
  70945. -#include <bits/setjmp.h>
  70946. +#include <jmpbuf-offsets.h>
  70947. #include "NM_Macros.S"
  70948. ;----------------------------------------
  70949. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/procfs.h uClibc-git/libc/sysdeps/linux/nios/sys/procfs.h
  70950. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  70951. +++ uClibc-git/libc/sysdeps/linux/nios/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  70952. @@ -12,9 +12,8 @@
  70953. Lesser General Public License for more details.
  70954. You should have received a copy of the GNU Lesser General Public
  70955. - License along with the GNU C Library; if not, write to the Free
  70956. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70957. - 02111-1307 USA. */
  70958. + License along with the GNU C Library; if not, see
  70959. + <http://www.gnu.org/licenses/>. */
  70960. #ifndef _SYS_PROCFS_H
  70961. #define _SYS_PROCFS_H 1
  70962. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/ucontext.h uClibc-git/libc/sysdeps/linux/nios/sys/ucontext.h
  70963. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  70964. +++ uClibc-git/libc/sysdeps/linux/nios/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  70965. @@ -12,9 +12,8 @@
  70966. Lesser General Public License for more details.
  70967. You should have received a copy of the GNU Lesser General Public
  70968. - License along with the GNU C Library; if not, write to the Free
  70969. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70970. - 02111-1307 USA. */
  70971. + License along with the GNU C Library; if not, see
  70972. + <http://www.gnu.org/licenses/>. */
  70973. #ifndef _SYS_UCONTEXT_H
  70974. #define _SYS_UCONTEXT_H 1
  70975. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios/vfork.S uClibc-git/libc/sysdeps/linux/nios/vfork.S
  70976. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios/vfork.S 2012-05-15 09:20:09.000000000 +0200
  70977. +++ uClibc-git/libc/sysdeps/linux/nios/vfork.S 2014-02-03 12:32:56.000000000 +0100
  70978. @@ -10,9 +10,6 @@
  70979. * Written by Wentao Xu <wentao@microtronix.com>
  70980. */
  70981. -#include <features.h>
  70982. -
  70983. -#include <bits/errno.h>
  70984. #include <sys/syscall.h>
  70985. #include "NM_Macros.S"
  70986. @@ -51,4 +48,4 @@
  70987. .size __vfork,.-__vfork
  70988. weak_alias(__vfork,vfork)
  70989. -libc_hidden_weak(vfork)
  70990. +libc_hidden_def(vfork)
  70991. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/fcntl.h uClibc-git/libc/sysdeps/linux/nios2/bits/fcntl.h
  70992. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  70993. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  70994. @@ -13,9 +13,8 @@
  70995. Lesser General Public License for more details.
  70996. You should have received a copy of the GNU Lesser General Public
  70997. - License along with the GNU C Library; if not, write to the Free
  70998. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  70999. - 02111-1307 USA. */
  71000. + License along with the GNU C Library; if not, see
  71001. + <http://www.gnu.org/licenses/>. */
  71002. #ifndef _FCNTL_H
  71003. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  71004. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/nios2/bits/kernel_types.h
  71005. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  71006. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  71007. @@ -31,6 +31,8 @@
  71008. typedef unsigned short __kernel_old_uid_t;
  71009. typedef unsigned short __kernel_old_gid_t;
  71010. typedef unsigned short __kernel_old_dev_t;
  71011. +typedef long __kernel_long_t;
  71012. +typedef unsigned long __kernel_ulong_t;
  71013. typedef long long __kernel_loff_t;
  71014. typedef struct {
  71015. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/mathdef.h uClibc-git/libc/sysdeps/linux/nios2/bits/mathdef.h
  71016. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  71017. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  71018. @@ -12,9 +12,8 @@
  71019. Lesser General Public License for more details.
  71020. You should have received a copy of the GNU Lesser General Public
  71021. - License along with the GNU C Library; if not, write to the Free
  71022. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71023. - 02111-1307 USA. */
  71024. + License along with the GNU C Library; if not, see
  71025. + <http://www.gnu.org/licenses/>. */
  71026. #if !defined _MATH_H && !defined _COMPLEX_H
  71027. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  71028. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/setjmp.h uClibc-git/libc/sysdeps/linux/nios2/bits/setjmp.h
  71029. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  71030. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  71031. @@ -13,9 +13,8 @@
  71032. Lesser General Public License for more details.
  71033. You should have received a copy of the GNU Lesser General Public
  71034. - License along with the GNU C Library; if not, write to the Free
  71035. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71036. - 02111-1307 USA. */
  71037. + License along with the GNU C Library; if not, see
  71038. + <http://www.gnu.org/licenses/>. */
  71039. #ifndef _BITS_SETJMP_H
  71040. #define _BITS_SETJMP_H 1
  71041. @@ -24,7 +23,6 @@
  71042. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  71043. #endif
  71044. -#ifndef _ASM
  71045. typedef struct
  71046. {
  71047. /* Callee-saved registers r16 through r23. */
  71048. @@ -43,30 +41,9 @@
  71049. unsigned long __gp;
  71050. /* floating point regs, if any */
  71051. -#if defined __HAVE_FPU__
  71052. +#ifdef __UCLIBC_HAS_FPU__
  71053. unsigned long __fpregs[64];
  71054. #endif
  71055. } __jmp_buf[1];
  71056. -#endif
  71057. -
  71058. -#define JB_REGS 0
  71059. -#define JB_PC 32
  71060. -#define JB_SP 36
  71061. -#define JB_FP 40
  71062. -#define JB_GP 44
  71063. -#define JB_FPREGS 48
  71064. -
  71065. -#if defined __HAVE_FPU__
  71066. -# define JB_SIZE 304
  71067. -#else
  71068. -# define JB_SIZE 48
  71069. -#endif
  71070. -
  71071. -
  71072. -/* Test if longjmp to JMPBUF would unwind the frame
  71073. - containing a local variable at ADDRESS. */
  71074. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  71075. - ((void *) (address) < (void*)(jmpbuf)->__sp)
  71076. -
  71077. #endif /* bits/setjmp.h */
  71078. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h
  71079. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  71080. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  71081. @@ -13,9 +13,8 @@
  71082. Lesser General Public License for more details.
  71083. You should have received a copy of the GNU Lesser General Public
  71084. - License along with the GNU C Library; if not, write to the Free
  71085. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71086. - 02111-1307 USA. */
  71087. + License along with the GNU C Library; if not, see
  71088. + <http://www.gnu.org/licenses/>. */
  71089. #define SIGCONTEXT struct sigcontext *
  71090. #define SIGCONTEXT_EXTRA_ARGS
  71091. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/nios2/bits/stackinfo.h
  71092. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  71093. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  71094. @@ -12,9 +12,8 @@
  71095. Lesser General Public License for more details.
  71096. You should have received a copy of the GNU Lesser General Public
  71097. - License along with the GNU C Library; if not, write to the Free
  71098. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71099. - 02111-1307 USA. */
  71100. + License along with the GNU C Library; if not, see
  71101. + <http://www.gnu.org/licenses/>. */
  71102. /* This file contains a bit of information about the stack allocation
  71103. of the processor. */
  71104. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stat.h uClibc-git/libc/sysdeps/linux/nios2/bits/stat.h
  71105. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  71106. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  71107. @@ -12,9 +12,8 @@
  71108. Lesser General Public License for more details.
  71109. You should have received a copy of the GNU Lesser General Public
  71110. - License along with the GNU C Library; if not, write to the Free
  71111. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71112. - 02111-1307 USA. */
  71113. + License along with the GNU C Library; if not, see
  71114. + <http://www.gnu.org/licenses/>. */
  71115. #ifndef _SYS_STAT_H
  71116. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  71117. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h
  71118. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  71119. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  71120. @@ -12,8 +12,8 @@
  71121. /* can your target use syscall6() for mmap ? */
  71122. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  71123. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  71124. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  71125. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  71126. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  71127. /* does your target have a broken create_module() ? */
  71128. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  71129. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/nios2/bits/uClibc_page.h
  71130. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  71131. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/uClibc_page.h 1970-01-01 01:00:00.000000000 +0100
  71132. @@ -1,29 +0,0 @@
  71133. -/* Copyright (C) 2004 Erik Andersen
  71134. - *
  71135. - * This library is free software; you can redistribute it and/or
  71136. - * modify it under the terms of the GNU Lesser General Public
  71137. - * License as published by the Free Software Foundation; either
  71138. - * version 2.1 of the License, or (at your option) any later version.
  71139. - *
  71140. - * The GNU C Library is distributed in the hope that it will be useful,
  71141. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  71142. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  71143. - * Lesser General Public License for more details.
  71144. - *
  71145. - * You should have received a copy of the GNU Lesser General Public
  71146. - * License along with the GNU C Library; if not, write to the Free
  71147. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71148. - * 02111-1307 USA.
  71149. - */
  71150. -
  71151. -/* Supply an architecture specific value for PAGE_SIZE and friends. */
  71152. -
  71153. -#ifndef _UCLIBC_PAGE_H
  71154. -#define _UCLIBC_PAGE_H
  71155. -
  71156. -/* PAGE_SHIFT determines the page size -- in this case 4096 */
  71157. -#define PAGE_SHIFT (12)
  71158. -#define PAGE_SIZE (1UL << PAGE_SHIFT)
  71159. -#define PAGE_MASK (~(PAGE_SIZE-1))
  71160. -
  71161. -#endif /* _UCLIBC_PAGE_H */
  71162. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/wordsize.h uClibc-git/libc/sysdeps/linux/nios2/bits/wordsize.h
  71163. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  71164. +++ uClibc-git/libc/sysdeps/linux/nios2/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  71165. @@ -12,8 +12,7 @@
  71166. Lesser General Public License for more details.
  71167. You should have received a copy of the GNU Lesser General Public
  71168. - License along with the GNU C Library; if not, write to the Free
  71169. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71170. - 02111-1307 USA. */
  71171. + License along with the GNU C Library; if not, see
  71172. + <http://www.gnu.org/licenses/>. */
  71173. #define __WORDSIZE 32
  71174. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/brk.c uClibc-git/libc/sysdeps/linux/nios2/brk.c
  71175. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/brk.c 2012-05-15 09:20:09.000000000 +0200
  71176. +++ uClibc-git/libc/sysdeps/linux/nios2/brk.c 2014-02-03 12:32:56.000000000 +0100
  71177. @@ -13,9 +13,8 @@
  71178. Lesser General Public License for more details.
  71179. You should have received a copy of the GNU Lesser General Public
  71180. - License along with the GNU C Library; if not, write to the Free
  71181. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71182. - 02111-1307 USA. */
  71183. + License along with the GNU C Library; if not, see
  71184. + <http://www.gnu.org/licenses/>. */
  71185. #include <unistd.h>
  71186. #include <sys/syscall.h>
  71187. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/nios2/bsd-_setjmp.S
  71188. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71189. +++ uClibc-git/libc/sysdeps/linux/nios2/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71190. @@ -11,9 +11,8 @@
  71191. *
  71192. */
  71193. -#define _ASM
  71194. -#define _SETJMP_H
  71195. -#include <bits/setjmp.h>
  71196. +#include <features.h>
  71197. +#include <jmpbuf-offsets.h>
  71198. .globl _setjmp
  71199. .type _setjmp,@function
  71200. @@ -34,7 +33,7 @@
  71201. stw fp, JB_FP(r4)
  71202. stw gp, JB_GP(r4)
  71203. -#if defined(__HAVE_FPU__)
  71204. +#ifdef __UCLIBC_HAS_FPU__
  71205. SAVE_FPU r4 JB_FPREGS
  71206. #endif
  71207. stw r0, JB_SIZE(r4) /* signal mask is not saved */
  71208. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/nios2/bsd-setjmp.S
  71209. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71210. +++ uClibc-git/libc/sysdeps/linux/nios2/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71211. @@ -12,9 +12,8 @@
  71212. */
  71213. -#define _ASM
  71214. -#define _SETJMP_H
  71215. -#include <bits/setjmp.h>
  71216. +#include <features.h>
  71217. +#include <jmpbuf-offsets.h>
  71218. .globl setjmp
  71219. .type setjmp,@function
  71220. @@ -35,7 +34,7 @@
  71221. stw fp, JB_FP(r4)
  71222. stw gp, JB_GP(r4)
  71223. -#if defined(__HAVE_FPU__)
  71224. +#ifdef __UCLIBC_HAS_FPU__
  71225. SAVE_FPU r4 JB_FPREGS
  71226. #endif
  71227. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/crt1.S uClibc-git/libc/sysdeps/linux/nios2/crt1.S
  71228. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/crt1.S 2012-05-15 09:20:09.000000000 +0200
  71229. +++ uClibc-git/libc/sysdeps/linux/nios2/crt1.S 2014-02-03 12:32:56.000000000 +0100
  71230. @@ -25,9 +25,6 @@
  71231. #endif
  71232. .type main,@function
  71233. .type __uClibc_main,@function
  71234. - .type __h_errno_location, @function
  71235. - .type _stdio_init, @function
  71236. - .type _stdio_term, @function
  71237. .text
  71238. .balign 4
  71239. _start:
  71240. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/fpu_control.h uClibc-git/libc/sysdeps/linux/nios2/fpu_control.h
  71241. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  71242. +++ uClibc-git/libc/sysdeps/linux/nios2/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  71243. @@ -13,9 +13,8 @@
  71244. Lesser General Public License for more details.
  71245. You should have received a copy of the GNU Lesser General Public
  71246. - License along with the GNU C Library; if not, write to the Free
  71247. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71248. - 02111-1307 USA. */
  71249. + License along with the GNU C Library; if not, see
  71250. + <http://www.gnu.org/licenses/>. */
  71251. #ifndef _FPU_CONTROL_H
  71252. #define _FPU_CONTROL_H
  71253. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/nios2/jmpbuf-offsets.h
  71254. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  71255. +++ uClibc-git/libc/sysdeps/linux/nios2/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  71256. @@ -0,0 +1,20 @@
  71257. +/*
  71258. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  71259. + *
  71260. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71261. + */
  71262. +
  71263. +#include <features.h>
  71264. +
  71265. +#define JB_REGS 0
  71266. +#define JB_PC 32
  71267. +#define JB_SP 36
  71268. +#define JB_FP 40
  71269. +#define JB_GP 44
  71270. +#define JB_FPREGS 48
  71271. +
  71272. +#ifdef __UCLIBC_HAS_FPU__
  71273. +# define JB_SIZE 304
  71274. +#else
  71275. +# define JB_SIZE 48
  71276. +#endif
  71277. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/nios2/jmpbuf-unwind.h
  71278. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  71279. +++ uClibc-git/libc/sysdeps/linux/nios2/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  71280. @@ -0,0 +1,11 @@
  71281. +/*
  71282. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  71283. + *
  71284. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71285. + */
  71286. +#include <setjmp.h>
  71287. +
  71288. +/* Test if longjmp to JMPBUF would unwind the frame
  71289. + containing a local variable at ADDRESS. */
  71290. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  71291. + ((void *) (address) < (void *) (jmpbuf)->__sp)
  71292. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/__longjmp.S uClibc-git/libc/sysdeps/linux/nios2/__longjmp.S
  71293. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  71294. +++ uClibc-git/libc/sysdeps/linux/nios2/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  71295. @@ -12,9 +12,7 @@
  71296. */
  71297. #include <features.h>
  71298. -#define _ASM
  71299. -#define _SETJMP_H
  71300. -#include <bits/setjmp.h>
  71301. +#include <jmpbuf-offsets.h>
  71302. .globl __longjmp
  71303. .type __longjmp,@function
  71304. @@ -39,7 +37,7 @@
  71305. ldw gp, JB_GP(r4)
  71306. ldw sp, JB_SP(r4)
  71307. -#if defined(__HAVE_FPU__)
  71308. +#ifdef __UCLIBC_HAS_FPU__
  71309. RESTORE_FPU r4 JB_FPREGS
  71310. #endif
  71311. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/Makefile.arch uClibc-git/libc/sysdeps/linux/nios2/Makefile.arch
  71312. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  71313. +++ uClibc-git/libc/sysdeps/linux/nios2/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  71314. @@ -5,8 +5,8 @@
  71315. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  71316. #
  71317. -CSRC := brk.c syscall.c
  71318. +CSRC-y := brk.c syscall.c
  71319. -SSRC := \
  71320. +SSRC-y := \
  71321. __longjmp.S bsd-_setjmp.S bsd-setjmp.S setjmp.S \
  71322. vfork.S clone.S
  71323. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/setjmp.S uClibc-git/libc/sysdeps/linux/nios2/setjmp.S
  71324. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71325. +++ uClibc-git/libc/sysdeps/linux/nios2/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71326. @@ -12,9 +12,7 @@
  71327. */
  71328. #include <features.h>
  71329. -#define _ASM
  71330. -#define _SETJMP_H
  71331. -#include <bits/setjmp.h>
  71332. +#include <jmpbuf-offsets.h>
  71333. .globl __sigsetjmp
  71334. .type __sigsetjmp,@function
  71335. @@ -35,7 +33,7 @@
  71336. stw fp, JB_FP(r4)
  71337. stw gp, JB_GP(r4)
  71338. -#if defined(__HAVE_FPU__)
  71339. +#ifdef __UCLIBC_HAS_FPU__
  71340. SAVE_FPU r4 JB_FPREGS
  71341. #endif
  71342. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/procfs.h uClibc-git/libc/sysdeps/linux/nios2/sys/procfs.h
  71343. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  71344. +++ uClibc-git/libc/sysdeps/linux/nios2/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  71345. @@ -12,9 +12,8 @@
  71346. Lesser General Public License for more details.
  71347. You should have received a copy of the GNU Lesser General Public
  71348. - License along with the GNU C Library; if not, write to the Free
  71349. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71350. - 02111-1307 USA. */
  71351. + License along with the GNU C Library; if not, see
  71352. + <http://www.gnu.org/licenses/>. */
  71353. #ifndef _SYS_PROCFS_H
  71354. #define _SYS_PROCFS_H 1
  71355. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/ucontext.h uClibc-git/libc/sysdeps/linux/nios2/sys/ucontext.h
  71356. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  71357. +++ uClibc-git/libc/sysdeps/linux/nios2/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  71358. @@ -12,9 +12,8 @@
  71359. Lesser General Public License for more details.
  71360. You should have received a copy of the GNU Lesser General Public
  71361. - License along with the GNU C Library; if not, write to the Free
  71362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71363. - 02111-1307 USA. */
  71364. + License along with the GNU C Library; if not, see
  71365. + <http://www.gnu.org/licenses/>. */
  71366. #ifndef _SYS_UCONTEXT_H
  71367. #define _SYS_UCONTEXT_H 1
  71368. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/syscall.c uClibc-git/libc/sysdeps/linux/nios2/syscall.c
  71369. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/syscall.c 2012-05-15 09:20:09.000000000 +0200
  71370. +++ uClibc-git/libc/sysdeps/linux/nios2/syscall.c 2014-02-03 12:32:56.000000000 +0100
  71371. @@ -14,8 +14,8 @@
  71372. * for more details.
  71373. *
  71374. * You should have received a copy of the GNU Library General Public License
  71375. - * along with this program; if not, write to the Free Software Foundation,
  71376. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  71377. + * along with this program; see the file COPYING.LIB. If not, see
  71378. + * <http://www.gnu.org/licenses/>.
  71379. */
  71380. #include <features.h>
  71381. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/nios2/vfork.S uClibc-git/libc/sysdeps/linux/nios2/vfork.S
  71382. --- uClibc-0.9.33.2/libc/sysdeps/linux/nios2/vfork.S 2012-05-15 09:20:09.000000000 +0200
  71383. +++ uClibc-git/libc/sysdeps/linux/nios2/vfork.S 2014-02-03 12:32:56.000000000 +0100
  71384. @@ -10,11 +10,7 @@
  71385. * Written by Wentao Xu <wentao@microtronix.com>
  71386. */
  71387. -#include <features.h>
  71388. -
  71389. -#define _ERRNO_H
  71390. -#include <bits/errno.h>
  71391. -#include <asm/unistd.h>
  71392. +#include <sys/syscall.h>
  71393. #ifndef __NR_vfork
  71394. #define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
  71395. @@ -53,4 +49,4 @@
  71396. .size __vfork,.-__vfork
  71397. weak_alias(__vfork,vfork)
  71398. -libc_hidden_weak(vfork)
  71399. +libc_hidden_def(vfork)
  71400. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/atomic.h uClibc-git/libc/sysdeps/linux/powerpc/bits/atomic.h
  71401. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  71402. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  71403. @@ -14,9 +14,8 @@
  71404. Lesser General Public License for more details.
  71405. You should have received a copy of the GNU Lesser General Public
  71406. - License along with the GNU C Library; if not, write to the Free
  71407. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71408. - 02111-1307 USA. */
  71409. + License along with the GNU C Library; if not, see
  71410. + <http://www.gnu.org/licenses/>. */
  71411. #include <bits/wordsize.h>
  71412. @@ -37,9 +36,8 @@
  71413. Lesser General Public License for more details.
  71414. You should have received a copy of the GNU Lesser General Public
  71415. - License along with the GNU C Library; if not, write to the Free
  71416. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71417. - 02111-1307 USA. */
  71418. + License along with the GNU C Library; if not, see
  71419. + <http://www.gnu.org/licenses/>. */
  71420. /* The 32-bit exchange_bool is different on powerpc64 because the subf
  71421. does signed 64-bit arthmatic while the lwarx is 32-bit unsigned
  71422. @@ -260,9 +258,8 @@
  71423. Lesser General Public License for more details.
  71424. You should have received a copy of the GNU Lesser General Public
  71425. - License along with the GNU C Library; if not, write to the Free
  71426. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71427. - 02111-1307 USA. */
  71428. + License along with the GNU C Library; if not, see
  71429. + <http://www.gnu.org/licenses/>. */
  71430. /*
  71431. * The 32-bit exchange_bool is different on powerpc64 because the subf
  71432. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/endian.h uClibc-git/libc/sysdeps/linux/powerpc/bits/endian.h
  71433. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/endian.h 2012-05-15 09:20:09.000000000 +0200
  71434. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/endian.h 2014-02-03 12:32:56.000000000 +0100
  71435. @@ -12,9 +12,8 @@
  71436. Lesser General Public License for more details.
  71437. You should have received a copy of the GNU Lesser General Public
  71438. - License along with the GNU C Library; if not, write to the Free
  71439. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71440. - 02111-1307 USA. */
  71441. + License along with the GNU C Library; if not, see
  71442. + <http://www.gnu.org/licenses/>. */
  71443. /* PowerPC can be little or big endian. Hopefully gcc will know... */
  71444. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fcntl.h uClibc-git/libc/sysdeps/linux/powerpc/bits/fcntl.h
  71445. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  71446. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  71447. @@ -14,9 +14,8 @@
  71448. Lesser General Public License for more details.
  71449. You should have received a copy of the GNU Lesser General Public
  71450. - License along with the GNU C Library; if not, write to the Free
  71451. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71452. - 02111-1307 USA. */
  71453. + License along with the GNU C Library; if not, see
  71454. + <http://www.gnu.org/licenses/>. */
  71455. #ifndef _FCNTL_H
  71456. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  71457. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenv.h uClibc-git/libc/sysdeps/linux/powerpc/bits/fenv.h
  71458. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  71459. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  71460. @@ -12,9 +12,8 @@
  71461. Lesser General Public License for more details.
  71462. You should have received a copy of the GNU Lesser General Public
  71463. - License along with the GNU C Library; if not, write to the Free
  71464. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71465. - 02111-1307 USA. */
  71466. + License along with the GNU C Library; if not, see
  71467. + <http://www.gnu.org/licenses/>. */
  71468. #ifndef _FENV_H
  71469. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  71470. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenvinline.h uClibc-git/libc/sysdeps/linux/powerpc/bits/fenvinline.h
  71471. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/fenvinline.h 2012-05-15 09:20:09.000000000 +0200
  71472. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/fenvinline.h 2014-02-03 12:32:56.000000000 +0100
  71473. @@ -14,9 +14,8 @@
  71474. Lesser General Public License for more details.
  71475. You should have received a copy of the GNU Lesser General Public
  71476. - License along with the GNU C Library; if not, write to the Free
  71477. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71478. - 02111-1307 USA. */
  71479. + License along with the GNU C Library; if not, see
  71480. + <http://www.gnu.org/licenses/>. */
  71481. #include <features.h>
  71482. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/ipc.h uClibc-git/libc/sysdeps/linux/powerpc/bits/ipc.h
  71483. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  71484. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  71485. @@ -12,9 +12,8 @@
  71486. Lesser General Public License for more details.
  71487. You should have received a copy of the GNU Lesser General Public
  71488. - License along with the GNU C Library; if not, write to the Free
  71489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71490. - 02111-1307 USA. */
  71491. + License along with the GNU C Library; if not, see
  71492. + <http://www.gnu.org/licenses/>. */
  71493. #ifndef _SYS_IPC_H
  71494. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  71495. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/powerpc/bits/kernel_types.h
  71496. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  71497. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  71498. @@ -36,6 +36,8 @@
  71499. typedef unsigned int __kernel_old_uid_t;
  71500. typedef unsigned int __kernel_old_gid_t;
  71501. typedef __kernel_dev_t __kernel_old_dev_t;
  71502. +typedef long __kernel_long_t;
  71503. +typedef unsigned long __kernel_ulong_t;
  71504. #else
  71505. typedef unsigned int __kernel_dev_t;
  71506. typedef unsigned int __kernel_ino_t;
  71507. @@ -61,6 +63,8 @@
  71508. typedef unsigned int __kernel_old_uid_t;
  71509. typedef unsigned int __kernel_old_gid_t;
  71510. typedef __kernel_dev_t __kernel_old_dev_t;
  71511. +typedef long __kernel_long_t;
  71512. +typedef unsigned long __kernel_ulong_t;
  71513. typedef long long __kernel_loff_t;
  71514. #endif
  71515. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/local_lim.h uClibc-git/libc/sysdeps/linux/powerpc/bits/local_lim.h
  71516. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  71517. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  71518. @@ -0,0 +1,101 @@
  71519. +/* Minimum guaranteed maximum values for system limits. Linux/PPC version.
  71520. + Copyright (C) 1993-1998,2000,2002-2004,2006,2008
  71521. + Free Software Foundation, Inc.
  71522. + This file is part of the GNU C Library.
  71523. +
  71524. + The GNU C Library is free software; you can redistribute it and/or
  71525. + modify it under the terms of the GNU Lesser General Public License as
  71526. + published by the Free Software Foundation; either version 2.1 of the
  71527. + License, or (at your option) any later version.
  71528. +
  71529. + The GNU C Library is distributed in the hope that it will be useful,
  71530. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  71531. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  71532. + Lesser General Public License for more details.
  71533. +
  71534. + You should have received a copy of the GNU Lesser General Public
  71535. + License along with the GNU C Library; see the file COPYING.LIB. If
  71536. + not, see <http://www.gnu.org/licenses/>. */
  71537. +
  71538. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  71539. + and defines LINK_MAX although filesystems have different maxima. A
  71540. + similar thing is true for OPEN_MAX: the limit can be changed at
  71541. + runtime and therefore the macro must not be defined. Remove this
  71542. + after including the header if necessary. */
  71543. +#ifndef NR_OPEN
  71544. +# define __undef_NR_OPEN
  71545. +#endif
  71546. +#ifndef LINK_MAX
  71547. +# define __undef_LINK_MAX
  71548. +#endif
  71549. +#ifndef OPEN_MAX
  71550. +# define __undef_OPEN_MAX
  71551. +#endif
  71552. +#ifndef ARG_MAX
  71553. +# define __undef_ARG_MAX
  71554. +#endif
  71555. +
  71556. +/* The kernel sources contain a file with all the needed information. */
  71557. +#include <linux/limits.h>
  71558. +
  71559. +/* Have to remove NR_OPEN? */
  71560. +#ifdef __undef_NR_OPEN
  71561. +# undef NR_OPEN
  71562. +# undef __undef_NR_OPEN
  71563. +#endif
  71564. +/* Have to remove LINK_MAX? */
  71565. +#ifdef __undef_LINK_MAX
  71566. +# undef LINK_MAX
  71567. +# undef __undef_LINK_MAX
  71568. +#endif
  71569. +/* Have to remove OPEN_MAX? */
  71570. +#ifdef __undef_OPEN_MAX
  71571. +# undef OPEN_MAX
  71572. +# undef __undef_OPEN_MAX
  71573. +#endif
  71574. +/* Have to remove ARG_MAX? */
  71575. +#ifdef __undef_ARG_MAX
  71576. +# undef ARG_MAX
  71577. +# undef __undef_ARG_MAX
  71578. +#endif
  71579. +
  71580. +/* The number of data keys per process. */
  71581. +#define _POSIX_THREAD_KEYS_MAX 128
  71582. +/* This is the value this implementation supports. */
  71583. +#define PTHREAD_KEYS_MAX 1024
  71584. +
  71585. +/* Controlling the iterations of destructors for thread-specific data. */
  71586. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  71587. +/* Number of iterations this implementation does. */
  71588. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  71589. +
  71590. +/* The number of threads per process. */
  71591. +#define _POSIX_THREAD_THREADS_MAX 64
  71592. +/* We have no predefined limit on the number of threads. */
  71593. +#undef PTHREAD_THREADS_MAX
  71594. +
  71595. +/* Maximum amount by which a process can descrease its asynchronous I/O
  71596. + priority level. */
  71597. +#define AIO_PRIO_DELTA_MAX 20
  71598. +
  71599. +/* Minimum size for a thread. At least two pages for systems with 64k
  71600. + pages. */
  71601. +#define PTHREAD_STACK_MIN 131072
  71602. +
  71603. +/* Maximum number of timer expiration overruns. */
  71604. +#define DELAYTIMER_MAX 2147483647
  71605. +
  71606. +/* Maximum tty name length. */
  71607. +#define TTY_NAME_MAX 32
  71608. +
  71609. +/* Maximum login name length. This is arbitrary. */
  71610. +#define LOGIN_NAME_MAX 256
  71611. +
  71612. +/* Maximum host name length. */
  71613. +#define HOST_NAME_MAX 64
  71614. +
  71615. +/* Maximum message queue priority level. */
  71616. +#define MQ_PRIO_MAX 32768
  71617. +
  71618. +/* Maximum value the semaphore can have. */
  71619. +#define SEM_VALUE_MAX (2147483647)
  71620. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathdef.h uClibc-git/libc/sysdeps/linux/powerpc/bits/mathdef.h
  71621. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  71622. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  71623. @@ -13,9 +13,8 @@
  71624. Lesser General Public License for more details.
  71625. You should have received a copy of the GNU Lesser General Public
  71626. - License along with the GNU C Library; if not, write to the Free
  71627. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71628. - 02111-1307 USA. */
  71629. + License along with the GNU C Library; if not, see
  71630. + <http://www.gnu.org/licenses/>. */
  71631. #include <features.h>
  71632. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathinline.h uClibc-git/libc/sysdeps/linux/powerpc/bits/mathinline.h
  71633. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  71634. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  71635. @@ -14,9 +14,8 @@
  71636. Lesser General Public License for more details.
  71637. You should have received a copy of the GNU Lesser General Public
  71638. - License along with the GNU C Library; if not, write to the Free
  71639. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71640. - 02111-1307 USA. */
  71641. + License along with the GNU C Library; if not, see
  71642. + <http://www.gnu.org/licenses/>. */
  71643. #include <features.h>
  71644. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mman.h uClibc-git/libc/sysdeps/linux/powerpc/bits/mman.h
  71645. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  71646. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  71647. @@ -13,9 +13,8 @@
  71648. Lesser General Public License for more details.
  71649. You should have received a copy of the GNU Lesser General Public
  71650. - License along with the GNU C Library; if not, write to the Free
  71651. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71652. - 02111-1307 USA. */
  71653. + License along with the GNU C Library; if not, see
  71654. + <http://www.gnu.org/licenses/>. */
  71655. #ifndef _SYS_MMAN_H
  71656. # error "Never use <bits/mman.h> directly; iclude <sys/mman.h> instead."
  71657. @@ -63,7 +62,7 @@
  71658. # define MAP_NORESERVE 0x00040 /* Don't check for reservations. */
  71659. # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */
  71660. # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
  71661. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  71662. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  71663. be uninitialized. */
  71664. #endif
  71665. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/msq.h uClibc-git/libc/sysdeps/linux/powerpc/bits/msq.h
  71666. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  71667. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  71668. @@ -12,9 +12,8 @@
  71669. Lesser General Public License for more details.
  71670. You should have received a copy of the GNU Lesser General Public
  71671. - License along with the GNU C Library; if not, write to the Free
  71672. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71673. - 02111-1307 USA. */
  71674. + License along with the GNU C Library; if not, see
  71675. + <http://www.gnu.org/licenses/>. */
  71676. #ifndef _SYS_MSG_H
  71677. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  71678. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sem.h uClibc-git/libc/sysdeps/linux/powerpc/bits/sem.h
  71679. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  71680. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  71681. @@ -13,9 +13,8 @@
  71682. Lesser General Public License for more details.
  71683. You should have received a copy of the GNU Lesser General Public
  71684. - License along with the GNU C Library; if not, write to the Free
  71685. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71686. - 02111-1307 USA. */
  71687. + License along with the GNU C Library; if not, see
  71688. + <http://www.gnu.org/licenses/>. */
  71689. #ifndef _SYS_SEM_H
  71690. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  71691. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/setjmp.h uClibc-git/libc/sysdeps/linux/powerpc/bits/setjmp.h
  71692. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  71693. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  71694. @@ -1,4 +1,5 @@
  71695. -/* Copyright (C) 1997, 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
  71696. +/* Copyright (C) 1997,1998,2000,2003,2004,2005,2006
  71697. + Free Software Foundation, Inc.
  71698. This file is part of the GNU C Library.
  71699. The GNU C Library is free software; you can redistribute it and/or
  71700. @@ -12,9 +13,8 @@
  71701. Lesser General Public License for more details.
  71702. You should have received a copy of the GNU Lesser General Public
  71703. - License along with the GNU C Library; if not, write to the Free
  71704. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71705. - 02111-1307 USA. */
  71706. + License along with the GNU C Library; if not, see
  71707. + <http://www.gnu.org/licenses/>. */
  71708. /* Define the machine-dependent type `jmp_buf'. PowerPC version. */
  71709. #ifndef _BITS_SETJMP_H
  71710. @@ -31,30 +31,6 @@
  71711. #include <bits/wordsize.h>
  71712. -#if defined __USE_MISC || defined _ASM
  71713. -# define JB_GPR1 0 /* Also known as the stack pointer */
  71714. -# define JB_GPR2 1
  71715. -# define JB_LR 2 /* The address we will return to */
  71716. -# if __WORDSIZE == 64
  71717. -# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
  71718. -# define JB_CR 21 /* Condition code registers with the VRSAVE at */
  71719. - /* offset 172 (low half of the double word. */
  71720. -# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  71721. -# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
  71722. -# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
  71723. - /* 168 (high half of the double word). */
  71724. -# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
  71725. -# else
  71726. -# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
  71727. -# define JB_CR 21 /* Condition code registers. */
  71728. -# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  71729. -# define JB_SIZE ((64 + (12 * 4)) * 4)
  71730. -# define JB_VRSAVE 62
  71731. -# define JB_VRS 64
  71732. -# endif
  71733. -#endif
  71734. -
  71735. -
  71736. /* The current powerpc 32-bit Altivec ABI specifies for SVR4 ABI and EABI
  71737. the vrsave must be at byte 248 & v20 at byte 256. So we must pad this
  71738. correctly on 32 bit. It also insists that vecregs are only gauranteed
  71739. @@ -62,19 +38,12 @@
  71740. We have to version the code because members like int __mask_was_saved
  71741. in the jmp_buf will move as jmp_buf is now larger than 248 bytes. We
  71742. cannot keep the altivec jmp_buf backward compatible with the jmp_buf. */
  71743. -#ifndef _ASM
  71744. -# if __WORDSIZE == 64
  71745. +#if __WORDSIZE == 64
  71746. typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
  71747. -# else
  71748. +#else
  71749. /* The alignment is not essential, i.e.the buffer can be copied to a 4 byte
  71750. aligned buffer as per the ABI it is just added for performance reasons. */
  71751. typedef long int __jmp_buf[64 + (12 * 4)] __attribute__ ((__aligned__ (16)));
  71752. -# endif
  71753. #endif
  71754. -/* Test if longjmp to JMPBUF would unwind the frame
  71755. - containing a local variable at ADDRESS. */
  71756. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  71757. - ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
  71758. -
  71759. -#endif /* bits/setjmp.h */
  71760. +#endif /* bits/setjmp.h */
  71761. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/shm.h uClibc-git/libc/sysdeps/linux/powerpc/bits/shm.h
  71762. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  71763. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  71764. @@ -13,9 +13,8 @@
  71765. Lesser General Public License for more details.
  71766. You should have received a copy of the GNU Lesser General Public
  71767. - License along with the GNU C Library; if not, write to the Free
  71768. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71769. - 02111-1307 USA. */
  71770. + License along with the GNU C Library; if not, see
  71771. + <http://www.gnu.org/licenses/>. */
  71772. #ifndef _SYS_SHM_H
  71773. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  71774. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h
  71775. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  71776. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  71777. @@ -12,9 +12,8 @@
  71778. Lesser General Public License for more details.
  71779. You should have received a copy of the GNU Lesser General Public
  71780. - License along with the GNU C Library; if not, write to the Free
  71781. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71782. - 02111-1307 USA. */
  71783. + License along with the GNU C Library; if not, see
  71784. + <http://www.gnu.org/licenses/>. */
  71785. #include <signal.h>
  71786. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/powerpc/bits/stackinfo.h
  71787. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  71788. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  71789. @@ -12,9 +12,8 @@
  71790. Lesser General Public License for more details.
  71791. You should have received a copy of the GNU Lesser General Public
  71792. - License along with the GNU C Library; if not, write to the Free
  71793. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71794. - 02111-1307 USA. */
  71795. + License along with the GNU C Library; if not, see
  71796. + <http://www.gnu.org/licenses/>. */
  71797. /* This file contains a bit of information about the stack allocation
  71798. of the processor. */
  71799. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stat.h uClibc-git/libc/sysdeps/linux/powerpc/bits/stat.h
  71800. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  71801. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  71802. @@ -13,9 +13,8 @@
  71803. Lesser General Public License for more details.
  71804. You should have received a copy of the GNU Lesser General Public
  71805. - License along with the GNU C Library; if not, write to the Free
  71806. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71807. - 02111-1307 USA. */
  71808. + License along with the GNU C Library; if not, see
  71809. + <http://www.gnu.org/licenses/>. */
  71810. #ifndef _SYS_STAT_H
  71811. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  71812. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/syscalls.h uClibc-git/libc/sysdeps/linux/powerpc/bits/syscalls.h
  71813. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/syscalls.h 2012-05-15 09:20:09.000000000 +0200
  71814. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/syscalls.h 2014-02-03 12:32:56.000000000 +0100
  71815. @@ -12,9 +12,8 @@
  71816. Lesser General Public License for more details.
  71817. You should have received a copy of the GNU Lesser General Public
  71818. - License along with the GNU C Library; if not, write to the Free
  71819. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71820. - 02111-1307 USA. */
  71821. + License along with the GNU C Library; if not, see
  71822. + <http://www.gnu.org/licenses/>. */
  71823. #ifndef _BITS_SYSCALLS_H
  71824. #define _BITS_SYSCALLS_H
  71825. @@ -168,7 +167,7 @@
  71826. }) \
  71827. )
  71828. # define INTERNAL_SYSCALL_ERROR_P(val, err) \
  71829. - ((void) (val), __builtin_expect ((err) & (1 << 28), 0))
  71830. + ((void) (val), unlikely ((err) & (1 << 28)))
  71831. # define INTERNAL_SYSCALL_ERRNO(val, err) (val)
  71832. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/termios.h uClibc-git/libc/sysdeps/linux/powerpc/bits/termios.h
  71833. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  71834. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  71835. @@ -12,9 +12,8 @@
  71836. Lesser General Public License for more details.
  71837. You should have received a copy of the GNU Lesser General Public
  71838. - License along with the GNU C Library; if not, write to the Free
  71839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71840. - 02111-1307 USA. */
  71841. + License along with the GNU C Library; if not, see
  71842. + <http://www.gnu.org/licenses/>. */
  71843. #ifndef _TERMIOS_H
  71844. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  71845. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h
  71846. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  71847. +++ uClibc-git/libc/sysdeps/linux/powerpc/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  71848. @@ -11,8 +11,8 @@
  71849. /* can your target use syscall6() for mmap ? */
  71850. #define __UCLIBC_MMAP_HAS_6_ARGS__
  71851. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  71852. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  71853. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  71854. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  71855. /* does your target have a broken create_module() ? */
  71856. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  71857. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/brk.S uClibc-git/libc/sysdeps/linux/powerpc/brk.S
  71858. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/brk.S 2012-05-15 09:20:09.000000000 +0200
  71859. +++ uClibc-git/libc/sysdeps/linux/powerpc/brk.S 2014-02-03 12:32:56.000000000 +0100
  71860. @@ -13,9 +13,8 @@
  71861. Lesser General Public License for more details.
  71862. You should have received a copy of the GNU Lesser General Public
  71863. - License along with the GNU C Library; if not, write to the Free
  71864. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71865. - 02111-1307 USA. */
  71866. + License along with the GNU C Library; if not, see
  71867. + <http://www.gnu.org/licenses/>. */
  71868. #include <features.h>
  71869. #include "ppc_asm.h"
  71870. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/powerpc/bsd-_setjmp.S
  71871. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71872. +++ uClibc-git/libc/sysdeps/linux/powerpc/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71873. @@ -13,9 +13,8 @@
  71874. Lesser General Public License for more details.
  71875. You should have received a copy of the GNU Lesser General Public
  71876. - License along with the GNU C Library; if not, write to the Free
  71877. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71878. - 02111-1307 USA. */
  71879. + License along with the GNU C Library; if not, see
  71880. + <http://www.gnu.org/licenses/>. */
  71881. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  71882. We cannot do it in C because it must be a tail-call, so frame-unwinding
  71883. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/powerpc/bsd-setjmp.S
  71884. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  71885. +++ uClibc-git/libc/sysdeps/linux/powerpc/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  71886. @@ -13,9 +13,8 @@
  71887. Lesser General Public License for more details.
  71888. You should have received a copy of the GNU Lesser General Public
  71889. - License along with the GNU C Library; if not, write to the Free
  71890. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71891. - 02111-1307 USA. */
  71892. + License along with the GNU C Library; if not, see
  71893. + <http://www.gnu.org/licenses/>. */
  71894. /* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
  71895. We cannot do it in C because it must be a tail-call, so frame-unwinding
  71896. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/clone.S uClibc-git/libc/sysdeps/linux/powerpc/clone.S
  71897. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/clone.S 2012-05-15 09:20:09.000000000 +0200
  71898. +++ uClibc-git/libc/sysdeps/linux/powerpc/clone.S 2014-02-03 12:32:56.000000000 +0100
  71899. @@ -13,9 +13,8 @@
  71900. Lesser General Public License for more details.
  71901. You should have received a copy of the GNU Lesser General Public
  71902. - License along with the GNU C Library; if not, write to the Free
  71903. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71904. - 02111-1307 USA. */
  71905. + License along with the GNU C Library; if not, see
  71906. + <http://www.gnu.org/licenses/>. */
  71907. #include <features.h>
  71908. #define _ERRNO_H 1
  71909. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/crt1.S uClibc-git/libc/sysdeps/linux/powerpc/crt1.S
  71910. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/crt1.S 2012-05-15 09:20:09.000000000 +0200
  71911. +++ uClibc-git/libc/sysdeps/linux/powerpc/crt1.S 2014-02-03 12:32:56.000000000 +0100
  71912. @@ -12,8 +12,8 @@
  71913. * for more details.
  71914. *
  71915. * You should have received a copy of the GNU Library General Public License
  71916. - * along with this program; if not, write to the Free Software Foundation,
  71917. - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  71918. + * along with this program; see the file COPYING.LIB. If not, see
  71919. + * <http://www.gnu.org/licenses/>.
  71920. */
  71921. #include <features.h>
  71922. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fenv.h uClibc-git/libc/sysdeps/linux/powerpc/fenv.h
  71923. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fenv.h 2012-05-15 09:20:09.000000000 +0200
  71924. +++ uClibc-git/libc/sysdeps/linux/powerpc/fenv.h 2014-02-03 12:32:56.000000000 +0100
  71925. @@ -12,9 +12,8 @@
  71926. Lesser General Public License for more details.
  71927. You should have received a copy of the GNU Lesser General Public
  71928. - License along with the GNU C Library; if not, write to the Free
  71929. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71930. - 02111-1307 USA. */
  71931. + License along with the GNU C Library; if not, see
  71932. + <http://www.gnu.org/licenses/>. */
  71933. /*
  71934. * ISO C99 7.6: Floating-point environment <fenv.h>
  71935. @@ -73,7 +72,7 @@
  71936. /* Set complete status for exceptions indicated by EXCEPTS according to
  71937. the representation in the object pointed to by FLAGP. */
  71938. -extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
  71939. +extern int fesetexceptflag (const fexcept_t *__flagp, int __excepts) __THROW;
  71940. /* Determine which of subset of the exceptions specified by EXCEPTS are
  71941. currently set. */
  71942. @@ -102,12 +101,12 @@
  71943. /* Establish the floating-point environment represented by the object
  71944. pointed to by ENVP. */
  71945. -extern int fesetenv (__const fenv_t *__envp) __THROW;
  71946. +extern int fesetenv (const fenv_t *__envp) __THROW;
  71947. /* Save current exceptions in temporary storage, install environment
  71948. represented by object pointed to by ENVP and raise exceptions
  71949. according to saved exceptions. */
  71950. -extern int feupdateenv (__const fenv_t *__envp) __THROW;
  71951. +extern int feupdateenv (const fenv_t *__envp) __THROW;
  71952. /* Include optimization. */
  71953. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fpu_control.h uClibc-git/libc/sysdeps/linux/powerpc/fpu_control.h
  71954. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  71955. +++ uClibc-git/libc/sysdeps/linux/powerpc/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  71956. @@ -14,9 +14,8 @@
  71957. Lesser General Public License for more details.
  71958. You should have received a copy of the GNU Lesser General Public
  71959. - License along with the GNU C Library; if not, write to the Free
  71960. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71961. - 02111-1307 USA. */
  71962. + License along with the GNU C Library; if not, see
  71963. + <http://www.gnu.org/licenses/>. */
  71964. #ifndef _FPU_CONTROL_H
  71965. #define _FPU_CONTROL_H
  71966. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ioctl.c uClibc-git/libc/sysdeps/linux/powerpc/ioctl.c
  71967. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ioctl.c 2012-05-15 09:20:09.000000000 +0200
  71968. +++ uClibc-git/libc/sysdeps/linux/powerpc/ioctl.c 2014-02-03 12:32:56.000000000 +0100
  71969. @@ -12,9 +12,8 @@
  71970. Lesser General Public License for more details.
  71971. You should have received a copy of the GNU Lesser General Public
  71972. - License along with the GNU C Library; if not, write to the Free
  71973. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  71974. - 02111-1307 USA. */
  71975. + License along with the GNU C Library; if not, see
  71976. + <http://www.gnu.org/licenses/>. */
  71977. #include <stdarg.h>
  71978. #include <termios.h>
  71979. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h
  71980. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  71981. +++ uClibc-git/libc/sysdeps/linux/powerpc/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  71982. @@ -0,0 +1,40 @@
  71983. +/* Private macros for accessing __jmp_buf contents. PowerPC version.
  71984. + Copyright (C) 2006 Free Software Foundation, Inc.
  71985. + This file is part of the GNU C Library.
  71986. +
  71987. + The GNU C Library is free software; you can redistribute it and/or
  71988. + modify it under the terms of the GNU Lesser General Public
  71989. + License as published by the Free Software Foundation; either
  71990. + version 2.1 of the License, or (at your option) any later version.
  71991. +
  71992. + The GNU C Library is distributed in the hope that it will be useful,
  71993. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  71994. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  71995. + Lesser General Public License for more details.
  71996. +
  71997. + You should have received a copy of the GNU Lesser General Public
  71998. + License along with the GNU C Library; if not, see
  71999. + <http://www.gnu.org/licenses/>. */
  72000. +
  72001. +#include <bits/wordsize.h>
  72002. +
  72003. +#define JB_GPR1 0 /* Also known as the stack pointer */
  72004. +#define JB_GPR2 1
  72005. +#define JB_LR 2 /* The address we will return to */
  72006. +#if __WORDSIZE == 64
  72007. +# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18*2 words total. */
  72008. +# define JB_CR 21 /* Condition code registers with the VRSAVE at */
  72009. + /* offset 172 (low half of the double word. */
  72010. +# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  72011. +# define JB_SIZE (64 * 8) /* As per PPC64-VMX ABI. */
  72012. +# define JB_VRSAVE 21 /* VRSAVE shares a double word with the CR at offset */
  72013. + /* 168 (high half of the double word). */
  72014. +# define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */
  72015. +#else
  72016. +# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */
  72017. +# define JB_CR 21 /* Condition code registers. */
  72018. +# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total. */
  72019. +# define JB_SIZE ((64 + (12 * 4)) * 4)
  72020. +# define JB_VRSAVE 62
  72021. +# define JB_VRS 64
  72022. +#endif
  72023. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h
  72024. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  72025. +++ uClibc-git/libc/sysdeps/linux/powerpc/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  72026. @@ -0,0 +1,23 @@
  72027. +/*
  72028. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72029. + *
  72030. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72031. + */
  72032. +#include <setjmp.h>
  72033. +#include <jmpbuf-offsets.h>
  72034. +
  72035. +/* Test if longjmp to JMPBUF would unwind the frame
  72036. + containing a local variable at ADDRESS. */
  72037. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  72038. + ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
  72039. +
  72040. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  72041. +#include <stdint.h>
  72042. +#include <unwind.h>
  72043. +
  72044. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  72045. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  72046. +
  72047. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  72048. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_GPR1] - (_adj))
  72049. +#endif
  72050. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/__longjmp.S uClibc-git/libc/sysdeps/linux/powerpc/__longjmp.S
  72051. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  72052. +++ uClibc-git/libc/sysdeps/linux/powerpc/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  72053. @@ -15,15 +15,12 @@
  72054. Lesser General Public License for more details.
  72055. You should have received a copy of the GNU Lesser General Public
  72056. - License along with the GNU C Library; if not, write to the Free
  72057. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72058. - 02111-1307 USA. */
  72059. + License along with the GNU C Library; if not, see
  72060. + <http://www.gnu.org/licenses/>. */
  72061. #include <features.h>
  72062. #include "ppc_asm.h"
  72063. -#define _ASM
  72064. -#define _SETJMP_H
  72065. -#include <bits/setjmp.h>
  72066. +#include <jmpbuf-offsets.h>
  72067. #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  72068. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/Makefile.arch uClibc-git/libc/sysdeps/linux/powerpc/Makefile.arch
  72069. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  72070. +++ uClibc-git/libc/sysdeps/linux/powerpc/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  72071. @@ -5,18 +5,13 @@
  72072. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72073. #
  72074. -CSRC := __syscall_error.c pread_write.c ioctl.c
  72075. +CSRC-y := __syscall_error.c ioctl.c
  72076. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  72077. -CSRC += posix_fadvise.c posix_fadvise64.c
  72078. -endif
  72079. -
  72080. -SSRC := \
  72081. +SSRC-y := \
  72082. __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \
  72083. __uClibc_syscall.S syscall.S
  72084. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  72085. -SSRC += clone.S vfork.S
  72086. -endif
  72087. +
  72088. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += clone.S vfork.S
  72089. ifeq ($(CONFIG_E500),y)
  72090. ARCH_HEADERS := fenv.h
  72091. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise64.c uClibc-git/libc/sysdeps/linux/powerpc/posix_fadvise64.c
  72092. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  72093. +++ uClibc-git/libc/sysdeps/linux/powerpc/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100
  72094. @@ -1,69 +0,0 @@
  72095. -/* vi: set sw=4 ts=4: */
  72096. -/*
  72097. - * posix_fadvise64() for uClibc
  72098. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  72099. - *
  72100. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72101. - *
  72102. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72103. - */
  72104. -
  72105. -#include <features.h>
  72106. -#include <unistd.h>
  72107. -#include <errno.h>
  72108. -#include <endian.h>
  72109. -#include <stdint.h>
  72110. -#include <sys/types.h>
  72111. -#include <sys/syscall.h>
  72112. -#include <fcntl.h>
  72113. -
  72114. -#ifdef __UCLIBC_HAS_LFS__
  72115. -#ifdef __NR_fadvise64_64
  72116. -
  72117. -/* 64 bit implementation is cake ... or more like pie ... */
  72118. -#if __WORDSIZE == 64
  72119. -
  72120. -#define __NR_posix_fadvise64 __NR_fadvise64_64
  72121. -
  72122. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  72123. -{
  72124. - if (len != (off_t) len)
  72125. - return EOVERFLOW;
  72126. - INTERNAL_SYSCALL_DECL (err);
  72127. - int ret = INTERNAL_SYSCALL (posix_fadvise64, err, 6, fd, 0,
  72128. - __LONG_LONG_PAIR ((long) (offset >> 32), (long) offset),
  72129. - (off_t) len, advise);
  72130. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  72131. - return 0;
  72132. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  72133. -}
  72134. -
  72135. -/* 32 bit implementation is kind of a pita */
  72136. -#elif __WORDSIZE == 32
  72137. -
  72138. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  72139. -{
  72140. - INTERNAL_SYSCALL_DECL (err);
  72141. - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advise,
  72142. - __LONG_LONG_PAIR((long) (offset >> 32), (long) offset ),
  72143. - __LONG_LONG_PAIR((long) (len >> 32), (long) len));
  72144. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  72145. - return 0;
  72146. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  72147. -}
  72148. -
  72149. -#else
  72150. -#error your machine is neither 32 bit or 64 bit ... it must be magical
  72151. -#endif
  72152. -
  72153. -#elif !defined __NR_fadvise64
  72154. -/* This is declared as a strong alias in posix_fadvise.c if __NR_fadvise64
  72155. - * is defined.
  72156. - */
  72157. -int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advise)
  72158. -{
  72159. -#warning This is not correct as far as SUSv3 is concerned.
  72160. - return ENOSYS;
  72161. -}
  72162. -#endif /* __NR_fadvise64_64 */
  72163. -#endif /* __UCLIBC_HAS_LFS__ */
  72164. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise.c uClibc-git/libc/sysdeps/linux/powerpc/posix_fadvise.c
  72165. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  72166. +++ uClibc-git/libc/sysdeps/linux/powerpc/posix_fadvise.c 1970-01-01 01:00:00.000000000 +0100
  72167. @@ -1,36 +0,0 @@
  72168. -/* vi: set sw=4 ts=4: */
  72169. -/*
  72170. - * posix_fadvise() for uClibc
  72171. - * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  72172. - *
  72173. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72174. - *
  72175. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72176. - */
  72177. -
  72178. -#include <sys/syscall.h>
  72179. -#include <fcntl.h>
  72180. -
  72181. -#ifdef __NR_fadvise64
  72182. -#define __NR_posix_fadvise __NR_fadvise64
  72183. -int posix_fadvise(int fd, off_t offset, off_t len, int advice)
  72184. -{
  72185. - INTERNAL_SYSCALL_DECL(err);
  72186. - int ret = (int) (INTERNAL_SYSCALL(posix_fadvise, err, 6, fd, 0,
  72187. - __LONG_LONG_PAIR (offset >> 31, offset), len, advice));
  72188. - if (INTERNAL_SYSCALL_ERROR_P (ret, err))
  72189. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  72190. - return 0;
  72191. -}
  72192. -
  72193. -#if defined __UCLIBC_HAS_LFS__ && (!defined __NR_fadvise64_64 || !defined _syscall6)
  72194. -strong_alias(posix_fadvise,posix_fadvise64)
  72195. -#endif
  72196. -
  72197. -#else
  72198. -int posix_fadvise(int fd attribute_unused, off_t offset attribute_unused, off_t len attribute_unused, int advice attribute_unused)
  72199. -{
  72200. -#warning This is not correct as far as SUSv3 is concerned.
  72201. - return ENOSYS;
  72202. -}
  72203. -#endif
  72204. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h uClibc-git/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h
  72205. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  72206. +++ uClibc-git/libc/sysdeps/linux/powerpc/powerpc32/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  72207. @@ -13,9 +13,8 @@
  72208. Lesser General Public License for more details.
  72209. You should have received a copy of the GNU Lesser General Public
  72210. - License along with the GNU C Library; if not, write to the Free
  72211. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  72212. - 02110-1301 USA. */
  72213. + License along with the GNU C Library; if not, see
  72214. + <http://www.gnu.org/licenses/>. */
  72215. #ifdef __ASSEMBLER__
  72216. @@ -133,6 +132,7 @@
  72217. #define PSEUDO_RET_ERRVAL \
  72218. blr
  72219. +#undef ret_ERRVAL
  72220. #define ret_ERRVAL PSEUDO_RET_ERRVAL
  72221. #undef PSEUDO_END_ERRVAL
  72222. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h uClibc-git/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h
  72223. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  72224. +++ uClibc-git/libc/sysdeps/linux/powerpc/powerpc64/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  72225. @@ -13,9 +13,8 @@
  72226. Lesser General Public License for more details.
  72227. You should have received a copy of the GNU Lesser General Public
  72228. - License along with the GNU C Library; if not, write to the Free
  72229. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  72230. - 02110-1301 USA. */
  72231. + License along with the GNU C Library; if not, see
  72232. + <http://www.gnu.org/licenses/>. */
  72233. #ifdef __ELF__
  72234. @@ -228,6 +227,7 @@
  72235. #define PSEUDO_RET_ERRVAL \
  72236. blr
  72237. +#undef ret_ERRVAL
  72238. #define ret_ERRVAL PSEUDO_RET_ERRVAL
  72239. #undef PSEUDO_END_ERRVAL
  72240. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ppc_asm.h uClibc-git/libc/sysdeps/linux/powerpc/ppc_asm.h
  72241. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/ppc_asm.h 2012-05-15 09:20:09.000000000 +0200
  72242. +++ uClibc-git/libc/sysdeps/linux/powerpc/ppc_asm.h 2014-02-03 12:32:56.000000000 +0100
  72243. @@ -12,9 +12,8 @@
  72244. Lesser General Public License for more details.
  72245. You should have received a copy of the GNU Lesser General Public
  72246. - License along with the GNU C Library; if not, write to the Free
  72247. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72248. - 02111-1307 USA. */
  72249. + License along with the GNU C Library; if not, see
  72250. + <http://www.gnu.org/licenses/>. */
  72251. #ifdef __ASSEMBLER__
  72252. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/pread_write.c uClibc-git/libc/sysdeps/linux/powerpc/pread_write.c
  72253. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  72254. +++ uClibc-git/libc/sysdeps/linux/powerpc/pread_write.c 1970-01-01 01:00:00.000000000 +0100
  72255. @@ -1,183 +0,0 @@
  72256. -/* vi: set sw=4 ts=4:
  72257. - *
  72258. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72259. - *
  72260. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72261. - */
  72262. -/* Based in part on the files
  72263. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  72264. - * ./sysdeps/unix/sysv/linux/pread.c,
  72265. - * sysdeps/posix/pread.c
  72266. - * sysdeps/posix/pwrite.c
  72267. - * from GNU libc 2.2.5, but reworked considerably...
  72268. - */
  72269. -
  72270. -#include <sys/syscall.h>
  72271. -#include <unistd.h>
  72272. -#include <endian.h>
  72273. -
  72274. -#ifndef __UCLIBC_HAS_LFS__
  72275. -# define off64_t off_t
  72276. -#endif
  72277. -
  72278. -#ifdef __NR_pread
  72279. -extern __typeof(pread) __libc_pread;
  72280. -# define __NR___syscall_pread __NR_pread
  72281. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd,
  72282. - void *, buf, size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  72283. -
  72284. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  72285. -{
  72286. - return(__syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset)));
  72287. -}
  72288. -weak_alias(__libc_pread,pread)
  72289. -
  72290. -# ifdef __UCLIBC_HAS_LFS__
  72291. -extern __typeof(pread64) __libc_pread64;
  72292. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  72293. -{
  72294. - return(__syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 32, offset)));
  72295. -}
  72296. -weak_alias(__libc_pread64,pread64)
  72297. -# endif /* __UCLIBC_HAS_LFS__ */
  72298. -#endif /* __NR_pread */
  72299. -
  72300. -
  72301. -#ifdef __NR_pwrite
  72302. -extern __typeof(pwrite) __libc_pwrite;
  72303. -# define __NR___syscall_pwrite __NR_pwrite
  72304. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd,
  72305. - const void *, buf, size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  72306. -
  72307. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  72308. -{
  72309. - return(__syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset)));
  72310. -}
  72311. -weak_alias(__libc_pwrite,pwrite)
  72312. -
  72313. -# ifdef __UCLIBC_HAS_LFS__
  72314. -extern __typeof(pwrite64) __libc_pwrite64;
  72315. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  72316. -{
  72317. - return(__syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 32, offset)));
  72318. -}
  72319. -weak_alias(__libc_pwrite64,pwrite64)
  72320. -# endif /* __UCLIBC_HAS_LFS__ */
  72321. -#endif /* __NR_pwrite */
  72322. -
  72323. -
  72324. -
  72325. -#if ! defined __NR_pread || ! defined __NR_pwrite
  72326. -
  72327. -static ssize_t __fake_pread_write(int fd, void *buf,
  72328. - size_t count, off_t offset, int do_pwrite)
  72329. -{
  72330. - int save_errno;
  72331. - ssize_t result;
  72332. - off_t old_offset;
  72333. -
  72334. - /* Since we must not change the file pointer preserve the
  72335. - * value so that we can restore it later. */
  72336. - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
  72337. - return -1;
  72338. -
  72339. - /* Set to wanted position. */
  72340. - if (lseek (fd, offset, SEEK_SET) == (off_t) -1)
  72341. - return -1;
  72342. -
  72343. - if (do_pwrite == 1) {
  72344. - /* Write the data. */
  72345. - result = write(fd, buf, count);
  72346. - } else {
  72347. - /* Read the data. */
  72348. - result = read(fd, buf, count);
  72349. - }
  72350. -
  72351. - /* Now we have to restore the position. If this fails we
  72352. - * have to return this as an error. */
  72353. - save_errno = errno;
  72354. - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
  72355. - {
  72356. - if (result == -1)
  72357. - __set_errno(save_errno);
  72358. - return -1;
  72359. - }
  72360. - __set_errno(save_errno);
  72361. - return(result);
  72362. -}
  72363. -
  72364. -# ifdef __UCLIBC_HAS_LFS__
  72365. -
  72366. -static ssize_t __fake_pread_write64(int fd, void *buf,
  72367. - size_t count, off64_t offset, int do_pwrite)
  72368. -{
  72369. - int save_errno;
  72370. - ssize_t result;
  72371. - off64_t old_offset;
  72372. -
  72373. - /* Since we must not change the file pointer preserve the
  72374. - * value so that we can restore it later. */
  72375. - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
  72376. - return -1;
  72377. -
  72378. - /* Set to wanted position. */
  72379. - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
  72380. - return -1;
  72381. -
  72382. - if (do_pwrite == 1) {
  72383. - /* Write the data. */
  72384. - result = write(fd, buf, count);
  72385. - } else {
  72386. - /* Read the data. */
  72387. - result = read(fd, buf, count);
  72388. - }
  72389. -
  72390. - /* Now we have to restore the position. */
  72391. - save_errno = errno;
  72392. - if (lseek64 (fd, old_offset, SEEK_SET) == (off64_t) -1) {
  72393. - if (result == -1)
  72394. - __set_errno (save_errno);
  72395. - return -1;
  72396. - }
  72397. - __set_errno (save_errno);
  72398. - return result;
  72399. -}
  72400. -# endif /* __UCLIBC_HAS_LFS__ */
  72401. -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */
  72402. -
  72403. -#ifndef __NR_pread
  72404. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset);
  72405. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  72406. -{
  72407. - return(__fake_pread_write(fd, buf, count, offset, 0));
  72408. -}
  72409. -weak_alias(__libc_pread,pread)
  72410. -
  72411. -# ifdef __UCLIBC_HAS_LFS__
  72412. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset);
  72413. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  72414. -{
  72415. - return(__fake_pread_write64(fd, buf, count, offset, 0));
  72416. -}
  72417. -weak_alias(__libc_pread64,pread64)
  72418. -# endif /* __UCLIBC_HAS_LFS__ */
  72419. -#endif /* ! __NR_pread */
  72420. -
  72421. -
  72422. -#ifndef __NR_pwrite
  72423. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset);
  72424. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  72425. -{
  72426. - return(__fake_pread_write(fd, (void*)buf, count, offset, 1));
  72427. -}
  72428. -weak_alias(__libc_pwrite,pwrite)
  72429. -
  72430. -# ifdef __UCLIBC_HAS_LFS__
  72431. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset);
  72432. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  72433. -{
  72434. - return(__fake_pread_write64(fd, (void*)buf, count, offset, 1));
  72435. -}
  72436. -weak_alias(__libc_pwrite64,pwrite64)
  72437. -# endif /* __UCLIBC_HAS_LFS__ */
  72438. -#endif /* ! __NR_pwrite */
  72439. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/setjmp.S uClibc-git/libc/sysdeps/linux/powerpc/setjmp.S
  72440. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  72441. +++ uClibc-git/libc/sysdeps/linux/powerpc/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  72442. @@ -15,15 +15,12 @@
  72443. Lesser General Public License for more details.
  72444. You should have received a copy of the GNU Lesser General Public
  72445. - License along with the GNU C Library; if not, write to the Free
  72446. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72447. - 02111-1307 USA. */
  72448. + License along with the GNU C Library; if not, see
  72449. + <http://www.gnu.org/licenses/>. */
  72450. #include <features.h>
  72451. #include "ppc_asm.h"
  72452. -#define _ASM
  72453. -#define _SETJMP_H
  72454. -#include <bits/setjmp.h>
  72455. +#include <jmpbuf-offsets.h>
  72456. #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
  72457. #define FP(x...) x
  72458. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/procfs.h uClibc-git/libc/sysdeps/linux/powerpc/sys/procfs.h
  72459. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  72460. +++ uClibc-git/libc/sysdeps/linux/powerpc/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  72461. @@ -12,9 +12,8 @@
  72462. Lesser General Public License for more details.
  72463. You should have received a copy of the GNU Lesser General Public
  72464. - License along with the GNU C Library; if not, write to the Free
  72465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72466. - 02111-1307 USA. */
  72467. + License along with the GNU C Library; if not, see
  72468. + <http://www.gnu.org/licenses/>. */
  72469. #ifndef _SYS_PROCFS_H
  72470. #define _SYS_PROCFS_H 1
  72471. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ptrace.h uClibc-git/libc/sysdeps/linux/powerpc/sys/ptrace.h
  72472. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  72473. +++ uClibc-git/libc/sysdeps/linux/powerpc/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  72474. @@ -13,9 +13,8 @@
  72475. Lesser General Public License for more details.
  72476. You should have received a copy of the GNU Lesser General Public
  72477. - License along with the GNU C Library; if not, write to the Free
  72478. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72479. - 02111-1307 USA. */
  72480. + License along with the GNU C Library; if not, see
  72481. + <http://www.gnu.org/licenses/>. */
  72482. #ifndef _SYS_PTRACE_H
  72483. #define _SYS_PTRACE_H 1
  72484. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ucontext.h uClibc-git/libc/sysdeps/linux/powerpc/sys/ucontext.h
  72485. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  72486. +++ uClibc-git/libc/sysdeps/linux/powerpc/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  72487. @@ -12,9 +12,8 @@
  72488. Lesser General Public License for more details.
  72489. You should have received a copy of the GNU Lesser General Public
  72490. - License along with the GNU C Library; if not, write to the Free
  72491. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72492. - 02111-1307 USA. */
  72493. + License along with the GNU C Library; if not, see
  72494. + <http://www.gnu.org/licenses/>. */
  72495. #ifndef _SYS_UCONTEXT_H
  72496. #define _SYS_UCONTEXT_H 1
  72497. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/user.h uClibc-git/libc/sysdeps/linux/powerpc/sys/user.h
  72498. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  72499. +++ uClibc-git/libc/sysdeps/linux/powerpc/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  72500. @@ -12,9 +12,8 @@
  72501. Lesser General Public License for more details.
  72502. You should have received a copy of the GNU Lesser General Public
  72503. - License along with the GNU C Library; if not, write to the Free
  72504. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72505. - 02111-1307 USA. */
  72506. + License along with the GNU C Library; if not, see
  72507. + <http://www.gnu.org/licenses/>. */
  72508. #ifndef _SYS_USER_H
  72509. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/syscall.S uClibc-git/libc/sysdeps/linux/powerpc/syscall.S
  72510. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/syscall.S 2012-05-15 09:20:09.000000000 +0200
  72511. +++ uClibc-git/libc/sysdeps/linux/powerpc/syscall.S 2014-02-03 12:32:56.000000000 +0100
  72512. @@ -12,9 +12,8 @@
  72513. Lesser General Public License for more details.
  72514. You should have received a copy of the GNU Lesser General Public
  72515. - License along with the GNU C Library; if not, write to the Free
  72516. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72517. - 02111-1307 USA. */
  72518. + License along with the GNU C Library; if not, see
  72519. + <http://www.gnu.org/licenses/>. */
  72520. #include <features.h>
  72521. @@ -30,6 +29,7 @@
  72522. mr 5,6
  72523. mr 6,7
  72524. mr 7,8
  72525. + mr 8,9
  72526. sc
  72527. bnslr;
  72528. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sysdep.h uClibc-git/libc/sysdeps/linux/powerpc/sysdep.h
  72529. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  72530. +++ uClibc-git/libc/sysdeps/linux/powerpc/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  72531. @@ -12,9 +12,8 @@
  72532. Lesser General Public License for more details.
  72533. You should have received a copy of the GNU Lesser General Public
  72534. - License along with the GNU C Library; if not, write to the Free
  72535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72536. - 02111-1307 USA. */
  72537. + License along with the GNU C Library; if not, see
  72538. + <http://www.gnu.org/licenses/>. */
  72539. #include <common/sysdep.h>
  72540. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/vfork.S uClibc-git/libc/sysdeps/linux/powerpc/vfork.S
  72541. --- uClibc-0.9.33.2/libc/sysdeps/linux/powerpc/vfork.S 2012-05-15 09:20:09.000000000 +0200
  72542. +++ uClibc-git/libc/sysdeps/linux/powerpc/vfork.S 2014-02-03 12:32:56.000000000 +0100
  72543. @@ -27,4 +27,4 @@
  72544. .size __vfork,.-__vfork
  72545. weak_alias(__vfork,vfork)
  72546. -libc_hidden_weak(vfork)
  72547. +libc_hidden_def(vfork)
  72548. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/README uClibc-git/libc/sysdeps/linux/README
  72549. --- uClibc-0.9.33.2/libc/sysdeps/linux/README 2012-05-15 09:20:09.000000000 +0200
  72550. +++ uClibc-git/libc/sysdeps/linux/README 2014-02-03 12:32:56.000000000 +0100
  72551. @@ -4,4 +4,7 @@
  72552. to add that support.
  72553. All stuff that is not at all dependent on a particular Linux architecture
  72554. -goes in the 'common' directory.
  72555. +goes in the 'common' directory. However, for new architectures which are
  72556. +using the generic syscalls in the Linux Kernel, the 'common-generic'
  72557. +directory should be used instead as they all use identical interfaces for
  72558. +the system calls.
  72559. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/atomic.h uClibc-git/libc/sysdeps/linux/sh/bits/atomic.h
  72560. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  72561. +++ uClibc-git/libc/sysdeps/linux/sh/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  72562. @@ -13,9 +13,8 @@
  72563. Lesser General Public License for more details.
  72564. You should have received a copy of the GNU Lesser General Public
  72565. - License along with the GNU C Library; if not, write to the Free
  72566. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72567. - 02111-1307 USA. */
  72568. + License along with the GNU C Library; if not, see
  72569. + <http://www.gnu.org/licenses/>. */
  72570. #include <stdint.h>
  72571. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fcntl.h uClibc-git/libc/sysdeps/linux/sh/bits/fcntl.h
  72572. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  72573. +++ uClibc-git/libc/sysdeps/linux/sh/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  72574. @@ -14,9 +14,8 @@
  72575. Lesser General Public License for more details.
  72576. You should have received a copy of the GNU Lesser General Public
  72577. - License along with the GNU C Library; if not, write to the Free
  72578. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72579. - 02111-1307 USA. */
  72580. + License along with the GNU C Library; if not, see
  72581. + <http://www.gnu.org/licenses/>. */
  72582. #ifndef _FCNTL_H
  72583. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  72584. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fenv.h uClibc-git/libc/sysdeps/linux/sh/bits/fenv.h
  72585. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  72586. +++ uClibc-git/libc/sysdeps/linux/sh/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  72587. @@ -12,9 +12,8 @@
  72588. Lesser General Public License for more details.
  72589. You should have received a copy of the GNU Lesser General Public
  72590. - License along with the GNU C Library; if not, write to the Free
  72591. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72592. - 02111-1307 USA. */
  72593. + License along with the GNU C Library; if not, see
  72594. + <http://www.gnu.org/licenses/>. */
  72595. #ifndef _FENV_H
  72596. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  72597. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/huge_val.h uClibc-git/libc/sysdeps/linux/sh/bits/huge_val.h
  72598. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/huge_val.h 2012-05-15 09:20:09.000000000 +0200
  72599. +++ uClibc-git/libc/sysdeps/linux/sh/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  72600. @@ -16,9 +16,8 @@
  72601. Lesser General Public License for more details.
  72602. You should have received a copy of the GNU Lesser General Public
  72603. - License along with the GNU C Library; if not, write to the Free
  72604. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72605. - 02111-1307 USA. */
  72606. + License along with the GNU C Library; if not, see
  72607. + <http://www.gnu.org/licenses/>. */
  72608. #ifndef _MATH_H
  72609. # error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  72610. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/sh/bits/kernel_types.h
  72611. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  72612. +++ uClibc-git/libc/sysdeps/linux/sh/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  72613. @@ -32,6 +32,8 @@
  72614. typedef unsigned short __kernel_old_uid_t;
  72615. typedef unsigned short __kernel_old_gid_t;
  72616. typedef __kernel_dev_t __kernel_old_dev_t;
  72617. +typedef long __kernel_long_t;
  72618. +typedef unsigned long __kernel_ulong_t;
  72619. typedef long long __kernel_loff_t;
  72620. typedef struct {
  72621. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/mathdef.h uClibc-git/libc/sysdeps/linux/sh/bits/mathdef.h
  72622. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  72623. +++ uClibc-git/libc/sysdeps/linux/sh/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  72624. @@ -12,9 +12,8 @@
  72625. Lesser General Public License for more details.
  72626. You should have received a copy of the GNU Lesser General Public
  72627. - License along with the GNU C Library; if not, write to the Free
  72628. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72629. - 02111-1307 USA. */
  72630. + License along with the GNU C Library; if not, see
  72631. + <http://www.gnu.org/licenses/>. */
  72632. #if !defined _MATH_H && !defined _COMPLEX_H
  72633. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  72634. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/setjmp.h uClibc-git/libc/sysdeps/linux/sh/bits/setjmp.h
  72635. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  72636. +++ uClibc-git/libc/sysdeps/linux/sh/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  72637. @@ -1,4 +1,4 @@
  72638. -/* Copyright (C) 1999, 2000, 2003, 2005 Free Software Foundation, Inc.
  72639. +/* Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
  72640. This file is part of the GNU C Library.
  72641. The GNU C Library is free software; you can redistribute it and/or
  72642. @@ -12,19 +12,17 @@
  72643. Lesser General Public License for more details.
  72644. You should have received a copy of the GNU Lesser General Public
  72645. - License along with the GNU C Library; if not, write to the Free
  72646. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72647. - 02111-1307 USA. */
  72648. + License along with the GNU C Library; if not, see
  72649. + <http://www.gnu.org/licenses/>. */
  72650. /* Define the machine-dependent type `jmp_buf'. SH version. */
  72651. #ifndef _BITS_SETJMP_H
  72652. -#define _BITS_SETJMP_H 1
  72653. +#define _BITS_SETJMP_H 1
  72654. #if !defined _SETJMP_H && !defined _PTHREAD_H
  72655. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  72656. #endif
  72657. -#ifndef _ASM
  72658. typedef struct
  72659. {
  72660. /* Callee-saved registers r8 through r15. */
  72661. @@ -42,15 +40,5 @@
  72662. /* Callee-saved floating point registers fr12 through fr15. */
  72663. int __fpregs[4];
  72664. } __jmp_buf[1];
  72665. -#endif
  72666. -
  72667. -#if defined __USE_MISC || defined _ASM
  72668. -# define JB_SIZE (4 * 15)
  72669. -#endif
  72670. -
  72671. -/* Test if longjmp to JMPBUF would unwind the frame
  72672. - containing a local variable at ADDRESS. */
  72673. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  72674. - ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
  72675. -#endif /* bits/setjmp.h */
  72676. +#endif /* bits/setjmp.h */
  72677. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/shm.h uClibc-git/libc/sysdeps/linux/sh/bits/shm.h
  72678. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  72679. +++ uClibc-git/libc/sysdeps/linux/sh/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  72680. @@ -12,9 +12,8 @@
  72681. Lesser General Public License for more details.
  72682. You should have received a copy of the GNU Lesser General Public
  72683. - License along with the GNU C Library; if not, write to the Free
  72684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72685. - 02111-1307 USA. */
  72686. + License along with the GNU C Library; if not, see
  72687. + <http://www.gnu.org/licenses/>. */
  72688. #ifndef _SYS_SHM_H
  72689. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  72690. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/sh/bits/sigcontextinfo.h
  72691. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  72692. +++ uClibc-git/libc/sysdeps/linux/sh/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  72693. @@ -13,9 +13,8 @@
  72694. Lesser General Public License for more details.
  72695. You should have received a copy of the GNU Lesser General Public
  72696. - License along with the GNU C Library; if not, write to the Free
  72697. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72698. - 02111-1307 USA. */
  72699. + License along with the GNU C Library; if not, see
  72700. + <http://www.gnu.org/licenses/>. */
  72701. #define SIGCONTEXT int _a2, int _a3, int _a4, struct sigcontext
  72702. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/sh/bits/stackinfo.h
  72703. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  72704. +++ uClibc-git/libc/sysdeps/linux/sh/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  72705. @@ -12,9 +12,8 @@
  72706. Lesser General Public License for more details.
  72707. You should have received a copy of the GNU Lesser General Public
  72708. - License along with the GNU C Library; if not, write to the Free
  72709. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72710. - 02111-1307 USA. */
  72711. + License along with the GNU C Library; if not, see
  72712. + <http://www.gnu.org/licenses/>. */
  72713. /* This file contains a bit of information about the stack allocation
  72714. of the processor. */
  72715. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h
  72716. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  72717. +++ uClibc-git/libc/sysdeps/linux/sh/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  72718. @@ -15,8 +15,8 @@
  72719. /* can your target use syscall6() for mmap ? */
  72720. #define __UCLIBC_MMAP_HAS_6_ARGS__
  72721. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  72722. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  72723. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  72724. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  72725. /* does your target have a broken create_module() ? */
  72726. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  72727. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/wordsize.h uClibc-git/libc/sysdeps/linux/sh/bits/wordsize.h
  72728. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  72729. +++ uClibc-git/libc/sysdeps/linux/sh/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  72730. @@ -12,8 +12,7 @@
  72731. Lesser General Public License for more details.
  72732. You should have received a copy of the GNU Lesser General Public
  72733. - License along with the GNU C Library; if not, write to the Free
  72734. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72735. - 02111-1307 USA. */
  72736. + License along with the GNU C Library; if not, see
  72737. + <http://www.gnu.org/licenses/>. */
  72738. #define __WORDSIZE 32
  72739. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/cacheflush.c uClibc-git/libc/sysdeps/linux/sh/cacheflush.c
  72740. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/cacheflush.c 2012-05-15 09:20:09.000000000 +0200
  72741. +++ uClibc-git/libc/sysdeps/linux/sh/cacheflush.c 2014-02-03 12:32:56.000000000 +0100
  72742. @@ -6,10 +6,9 @@
  72743. *
  72744. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72745. */
  72746. -#include <errno.h>
  72747. -#include <unistd.h>
  72748. #include <sys/syscall.h>
  72749. #ifdef __NR_cacheflush
  72750. -_syscall3(int, cacheflush, char *, addr, int, nbytes, int, op)
  72751. +int cacheflush(void *addr, const int nbytes, int op);
  72752. +_syscall3(int, cacheflush, void *, addr, const int, nbytes, const int, op)
  72753. #endif
  72754. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/clone.S uClibc-git/libc/sysdeps/linux/sh/clone.S
  72755. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/clone.S 2012-05-15 09:20:09.000000000 +0200
  72756. +++ uClibc-git/libc/sysdeps/linux/sh/clone.S 2014-02-03 12:32:56.000000000 +0100
  72757. @@ -12,9 +12,8 @@
  72758. Lesser General Public License for more details.
  72759. You should have received a copy of the GNU Lesser General Public
  72760. - License along with the GNU C Library; if not, write to the Free
  72761. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72762. - 02111-1307 USA. */
  72763. + License along with the GNU C Library; if not, see
  72764. + <http://www.gnu.org/licenses/>. */
  72765. /* clone() is even more special than fork() as it mucks with stacks
  72766. and invokes a function in the right context after its all over. */
  72767. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/crt1.S uClibc-git/libc/sysdeps/linux/sh/crt1.S
  72768. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/crt1.S 2012-05-15 09:20:09.000000000 +0200
  72769. +++ uClibc-git/libc/sysdeps/linux/sh/crt1.S 2014-02-03 12:32:56.000000000 +0100
  72770. @@ -14,8 +14,7 @@
  72771. details.
  72772. You should have received a copy of the GNU Library General Public License
  72773. - along with this program; if not, write to the Free Software Foundation, Inc.,
  72774. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  72775. + along with this program; if not, see <http://www.gnu.org/licenses/>.
  72776. */
  72777. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/___fpscr_values.S uClibc-git/libc/sysdeps/linux/sh/___fpscr_values.S
  72778. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/___fpscr_values.S 2012-05-15 09:20:09.000000000 +0200
  72779. +++ uClibc-git/libc/sysdeps/linux/sh/___fpscr_values.S 2014-02-03 12:32:56.000000000 +0100
  72780. @@ -14,8 +14,7 @@
  72781. details.
  72782. You should have received a copy of the GNU Library General Public License
  72783. - along with this program; if not, write to the Free Software Foundation, Inc.,
  72784. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  72785. + along with this program; if not, see <http://www.gnu.org/licenses/>.
  72786. */
  72787. #include <features.h>
  72788. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/fpu_control.h uClibc-git/libc/sysdeps/linux/sh/fpu_control.h
  72789. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  72790. +++ uClibc-git/libc/sysdeps/linux/sh/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  72791. @@ -13,9 +13,8 @@
  72792. Lesser General Public License for more details.
  72793. You should have received a copy of the GNU Lesser General Public
  72794. - License along with the GNU C Library; if not, write to the Free
  72795. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  72796. - 02111-1307 USA. */
  72797. + License along with the GNU C Library; if not, see
  72798. + <http://www.gnu.org/licenses/>. */
  72799. #ifndef _FPU_CONTROL_H
  72800. #define _FPU_CONTROL_H
  72801. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/sh/jmpbuf-offsets.h
  72802. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  72803. +++ uClibc-git/libc/sysdeps/linux/sh/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  72804. @@ -0,0 +1,19 @@
  72805. +/* Private macros for accessing __jmp_buf contents. SH version.
  72806. + Copyright (C) 2006 Free Software Foundation, Inc.
  72807. + This file is part of the GNU C Library.
  72808. +
  72809. + The GNU C Library is free software; you can redistribute it and/or
  72810. + modify it under the terms of the GNU Lesser General Public
  72811. + License as published by the Free Software Foundation; either
  72812. + version 2.1 of the License, or (at your option) any later version.
  72813. +
  72814. + The GNU C Library is distributed in the hope that it will be useful,
  72815. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  72816. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  72817. + Lesser General Public License for more details.
  72818. +
  72819. + You should have received a copy of the GNU Lesser General Public
  72820. + License along with the GNU C Library; if not, see
  72821. + <http://www.gnu.org/licenses/>. */
  72822. +
  72823. +#define JB_SIZE (4 * 15)
  72824. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/sh/jmpbuf-unwind.h
  72825. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  72826. +++ uClibc-git/libc/sysdeps/linux/sh/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  72827. @@ -0,0 +1,22 @@
  72828. +/*
  72829. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  72830. + *
  72831. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72832. + */
  72833. +#include <setjmp.h>
  72834. +
  72835. +/* Test if longjmp to JMPBUF would unwind the frame
  72836. + containing a local variable at ADDRESS. */
  72837. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  72838. + ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
  72839. +
  72840. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  72841. +#include <stdint.h>
  72842. +#include <unwind.h>
  72843. +
  72844. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  72845. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  72846. +
  72847. +#define _JMPBUF_UNWINDS_ADJ(jmpbuf, address, adj) \
  72848. + ((uintptr_t) (address) - (adj) < (uintptr_t) (jmpbuf)[0].__regs[7] - (adj))
  72849. +#endif
  72850. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/__longjmp.S uClibc-git/libc/sysdeps/linux/sh/__longjmp.S
  72851. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  72852. +++ uClibc-git/libc/sysdeps/linux/sh/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  72853. @@ -14,12 +14,8 @@
  72854. You should have received a copy of the GNU Library General Public
  72855. License along with the GNU C Library; see the file COPYING.LIB. If not,
  72856. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  72857. - Boston, MA 02111-1307, USA. */
  72858. + see <http://www.gnu.org/licenses/>. */
  72859. -#define _SETJMP_H
  72860. -#define _ASM
  72861. -#include <bits/setjmp.h>
  72862. #include <features.h>
  72863. /* __longjmp(jmpbuf, val) */
  72864. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/Makefile.arch uClibc-git/libc/sysdeps/linux/sh/Makefile.arch
  72865. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  72866. +++ uClibc-git/libc/sysdeps/linux/sh/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  72867. @@ -6,7 +6,10 @@
  72868. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72869. #
  72870. -CSRC := \
  72871. - mmap.c pipe.c __init_brk.c brk.c sbrk.c pread_write.c cacheflush.c
  72872. +CSRC-y := \
  72873. + pipe.c __init_brk.c brk.c sbrk.c pread_write.c
  72874. -SSRC := setjmp.S __longjmp.S ___fpscr_values.S vfork.S clone.S
  72875. +SSRC-y := setjmp.S __longjmp.S ___fpscr_values.S
  72876. +
  72877. +CSRC-$(UCLIBC_LINUX_SPECIFIC) += cacheflush.c
  72878. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += clone.S vfork.S
  72879. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/mmap.c uClibc-git/libc/sysdeps/linux/sh/mmap.c
  72880. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/mmap.c 2012-05-15 09:20:09.000000000 +0200
  72881. +++ uClibc-git/libc/sysdeps/linux/sh/mmap.c 1970-01-01 01:00:00.000000000 +0100
  72882. @@ -1,34 +0,0 @@
  72883. -/* Copyright (C) 2001 Hewlett-Packard
  72884. -
  72885. - This program is free software; you can redistribute it and/or modify it under
  72886. - the terms of the GNU Library General Public License as published by the Free
  72887. - Software Foundation; either version 2 of the License, or (at your option) any
  72888. - later version.
  72889. -
  72890. - This program is distributed in the hope that it will be useful, but WITHOUT
  72891. - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  72892. - FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more
  72893. - details.
  72894. -
  72895. - You should have received a copy of the GNU Library General Public License
  72896. - along with this program; if not, write to the Free Software Foundation, Inc.,
  72897. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  72898. -
  72899. - Derived in part from the Linux-8086 C library, the GNU C Library, and several
  72900. - other sundry sources. Files within this library are copyright by their
  72901. - respective copyright holders.
  72902. -*/
  72903. -
  72904. -#include <unistd.h>
  72905. -#include <errno.h>
  72906. -#include <sys/mman.h>
  72907. -
  72908. -
  72909. -#ifdef HIOS
  72910. -# define __SH_SYSCALL6_TRAPA 0x2E
  72911. -#endif
  72912. -
  72913. -#include <sys/syscall.h>
  72914. -
  72915. -_syscall6(__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot, int, flags, int, fd, __off_t, offset)
  72916. -libc_hidden_def(mmap)
  72917. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/pread_write.c uClibc-git/libc/sysdeps/linux/sh/pread_write.c
  72918. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  72919. +++ uClibc-git/libc/sysdeps/linux/sh/pread_write.c 2014-02-03 12:32:56.000000000 +0100
  72920. @@ -4,122 +4,8 @@
  72921. *
  72922. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  72923. */
  72924. -/*
  72925. - * Based in part on the files
  72926. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  72927. - * ./sysdeps/unix/sysv/linux/pread.c,
  72928. - * sysdeps/posix/pread.c
  72929. - * sysdeps/posix/pwrite.c
  72930. - * from GNU libc 2.2.5, but reworked considerably...
  72931. - */
  72932. -
  72933. -#include <sys/syscall.h>
  72934. -#include <unistd.h>
  72935. -#include <stdint.h>
  72936. -#include <endian.h>
  72937. -
  72938. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  72939. -#include <sysdep-cancel.h>
  72940. -#else
  72941. -#define SINGLE_THREAD_P 1
  72942. -#endif
  72943. -
  72944. -
  72945. -#ifdef __NR_pread64 /* Newer kernels renamed but it's the same. */
  72946. -# ifdef __NR_pread
  72947. -# error "__NR_pread and __NR_pread64 both defined???"
  72948. -# endif
  72949. -# define __NR_pread __NR_pread64
  72950. -#endif
  72951. -
  72952. -#ifdef __NR_pread
  72953. -extern __typeof(pread) __libc_pread;
  72954. -# define __NR___syscall_pread __NR_pread
  72955. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  72956. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  72957. -
  72958. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  72959. -{
  72960. - if (SINGLE_THREAD_P)
  72961. - return(__syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset)));
  72962. -
  72963. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  72964. - int oldtype = LIBC_CANCEL_ASYNC ();
  72965. - ssize_t result = __syscall_pread(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset));
  72966. - LIBC_CANCEL_RESET (oldtype);
  72967. - return result;
  72968. -#endif
  72969. -}
  72970. -weak_alias(__libc_pread,pread)
  72971. -
  72972. -# ifdef __UCLIBC_HAS_LFS__
  72973. -extern __typeof(pread64) __libc_pread64;
  72974. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  72975. -{
  72976. - uint32_t low = offset & 0xffffffff;
  72977. - uint32_t high = offset >> 32;
  72978. -
  72979. - if (SINGLE_THREAD_P)
  72980. - return __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  72981. -
  72982. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  72983. - int oldtype = LIBC_CANCEL_ASYNC ();
  72984. - ssize_t result = __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  72985. - LIBC_CANCEL_RESET (oldtype);
  72986. - return result;
  72987. -#endif
  72988. -}
  72989. -weak_alias(__libc_pread64,pread64)
  72990. -# endif /* __UCLIBC_HAS_LFS__ */
  72991. -#endif /* __NR_pread */
  72992. -
  72993. -/**********************************************************************/
  72994. -
  72995. -#ifdef __NR_pwrite64 /* Newer kernels renamed but it's the same. */
  72996. -# ifdef __NR_pwrite
  72997. -# error "__NR_pwrite and __NR_pwrite64 both defined???"
  72998. -# endif
  72999. -# define __NR_pwrite __NR_pwrite64
  73000. -#endif
  73001. -
  73002. -#ifdef __NR_pwrite
  73003. -extern __typeof(pwrite) __libc_pwrite;
  73004. -# define __NR___syscall_pwrite __NR_pwrite
  73005. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  73006. - size_t, count, int, dummy, off_t, offset_hi, off_t, offset_lo)
  73007. -
  73008. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  73009. -{
  73010. - if (SINGLE_THREAD_P)
  73011. - return __syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset));
  73012. -
  73013. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73014. - int oldtype = LIBC_CANCEL_ASYNC ();
  73015. - ssize_t result = __syscall_pwrite(fd,buf,count,0,__LONG_LONG_PAIR(offset >> 31,offset));
  73016. - LIBC_CANCEL_RESET (oldtype);
  73017. - return result;
  73018. -#endif
  73019. -
  73020. -}
  73021. -weak_alias(__libc_pwrite,pwrite)
  73022. -
  73023. -# ifdef __UCLIBC_HAS_LFS__
  73024. -extern __typeof(pwrite64) __libc_pwrite64;
  73025. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  73026. -{
  73027. - uint32_t low = offset & 0xffffffff;
  73028. - uint32_t high = offset >> 32;
  73029. -
  73030. - if (SINGLE_THREAD_P)
  73031. - return __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  73032. -#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  73033. - int oldtype = LIBC_CANCEL_ASYNC ();
  73034. - ssize_t result = __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR (high, low));
  73035. - LIBC_CANCEL_RESET (oldtype);
  73036. - return result;
  73037. -#endif
  73038. -}
  73039. -weak_alias(__libc_pwrite64,pwrite64)
  73040. -# endif /* __UCLIBC_HAS_LFS__ */
  73041. -#endif /* __NR_pwrite */
  73042. +/* SuperH doesn't have this alignment issue. It just decided to copy
  73043. + * the syscall interface from another arch for no good reason. */
  73044. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  73045. +#include "../common/pread_write.c"
  73046. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/setjmp.S uClibc-git/libc/sysdeps/linux/sh/setjmp.S
  73047. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  73048. +++ uClibc-git/libc/sysdeps/linux/sh/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  73049. @@ -14,13 +14,10 @@
  73050. You should have received a copy of the GNU Library General Public
  73051. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73052. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73053. - Boston, MA 02111-1307, USA. */
  73054. + see <http://www.gnu.org/licenses/>. */
  73055. #include <features.h>
  73056. -#define _SETJMP_H
  73057. -#define _ASM
  73058. -#include <bits/setjmp.h>
  73059. +#include <jmpbuf-offsets.h>
  73060. .text
  73061. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/io.h uClibc-git/libc/sysdeps/linux/sh/sys/io.h
  73062. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  73063. +++ uClibc-git/libc/sysdeps/linux/sh/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  73064. @@ -12,9 +12,8 @@
  73065. Lesser General Public License for more details.
  73066. You should have received a copy of the GNU Lesser General Public
  73067. - License along with the GNU C Library; if not, write to the Free
  73068. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73069. - 02111-1307 USA. */
  73070. + License along with the GNU C Library; if not, see
  73071. + <http://www.gnu.org/licenses/>. */
  73072. #ifndef _SYS_IO_H
  73073. @@ -23,17 +22,18 @@
  73074. __BEGIN_DECLS
  73075. +#if defined __UCLIBC_LINUX_SPECIFIC__
  73076. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  73077. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  73078. permission off for that range. This call requires root privileges. */
  73079. extern int ioperm (unsigned long int __from, unsigned long int __num,
  73080. int __turn_on) __THROW;
  73081. -libc_hidden_proto(ioperm)
  73082. /* Set the I/O privilege level to LEVEL. If LEVEL is nonzero,
  73083. permission to access any I/O port is granted. This call requires
  73084. root privileges. */
  73085. extern int iopl (int __level) __THROW;
  73086. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  73087. /* The functions that actually perform reads and writes. */
  73088. extern unsigned char inb (unsigned long int port) __THROW;
  73089. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/procfs.h uClibc-git/libc/sysdeps/linux/sh/sys/procfs.h
  73090. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  73091. +++ uClibc-git/libc/sysdeps/linux/sh/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  73092. @@ -12,9 +12,8 @@
  73093. Lesser General Public License for more details.
  73094. You should have received a copy of the GNU Lesser General Public
  73095. - License along with the GNU C Library; if not, write to the Free
  73096. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73097. - 02111-1307 USA. */
  73098. + License along with the GNU C Library; if not, see
  73099. + <http://www.gnu.org/licenses/>. */
  73100. #ifndef _SYS_PROCFS_H
  73101. #define _SYS_PROCFS_H 1
  73102. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/ucontext.h uClibc-git/libc/sysdeps/linux/sh/sys/ucontext.h
  73103. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  73104. +++ uClibc-git/libc/sysdeps/linux/sh/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  73105. @@ -12,9 +12,8 @@
  73106. Lesser General Public License for more details.
  73107. You should have received a copy of the GNU Lesser General Public
  73108. - License along with the GNU C Library; if not, write to the Free
  73109. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73110. - 02111-1307 USA. */
  73111. + License along with the GNU C Library; if not, see
  73112. + <http://www.gnu.org/licenses/>. */
  73113. /* Where is System V/SH ABI? */
  73114. @@ -32,10 +31,10 @@
  73115. typedef int greg_t;
  73116. /* Number of general registers. */
  73117. -#define NFPREG 16
  73118. +#define NGREG 16
  73119. /* Container for all general registers. */
  73120. -typedef greg_t gregset_t[NFPREG];
  73121. +typedef greg_t gregset_t[NGREG];
  73122. #ifdef __USE_GNU
  73123. /* Number of each register is the `gregset_t' array. */
  73124. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/user.h uClibc-git/libc/sysdeps/linux/sh/sys/user.h
  73125. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  73126. +++ uClibc-git/libc/sysdeps/linux/sh/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  73127. @@ -12,9 +12,8 @@
  73128. Lesser General Public License for more details.
  73129. You should have received a copy of the GNU Lesser General Public
  73130. - License along with the GNU C Library; if not, write to the Free
  73131. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73132. - 02111-1307 USA. */
  73133. + License along with the GNU C Library; if not, see
  73134. + <http://www.gnu.org/licenses/>. */
  73135. #ifndef _SYS_USER_H
  73136. #define _SYS_USER_H 1
  73137. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/sysdep.h uClibc-git/libc/sysdeps/linux/sh/sysdep.h
  73138. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  73139. +++ uClibc-git/libc/sysdeps/linux/sh/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  73140. @@ -13,14 +13,12 @@
  73141. Lesser General Public License for more details.
  73142. You should have received a copy of the GNU Lesser General Public
  73143. - License along with the GNU C Library; if not, write to the Free
  73144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73145. - 02111-1307 USA. */
  73146. + License along with the GNU C Library; if not, see
  73147. + <http://www.gnu.org/licenses/>. */
  73148. #include <common/sysdep.h>
  73149. #include <features.h>
  73150. -#include <libc-internal.h>
  73151. #ifdef __ASSEMBLER__
  73152. @@ -143,8 +141,6 @@
  73153. #define PSEUDO_END_ERRVAL(name) \
  73154. END (name)
  73155. -#define ret_ERRVAL ret
  73156. -
  73157. #ifndef __PIC__
  73158. # define SYSCALL_ERROR_HANDLER \
  73159. mov.l 0f,r1; \
  73160. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh/vfork.S uClibc-git/libc/sysdeps/linux/sh/vfork.S
  73161. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh/vfork.S 2012-05-15 09:20:09.000000000 +0200
  73162. +++ uClibc-git/libc/sysdeps/linux/sh/vfork.S 2014-02-03 12:32:56.000000000 +0100
  73163. @@ -12,19 +12,16 @@
  73164. details.
  73165. You should have received a copy of the GNU Library General Public License
  73166. - along with this program; if not, write to the Free Software Foundation, Inc.,
  73167. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  73168. + along with this program; if not, see <http://www.gnu.org/licenses/>.
  73169. Derived in part from the Linux-8086 C library, the GNU C Library, and several
  73170. other sundry sources. Files within this library are copyright by their
  73171. respective copyright holders.
  73172. */
  73173. -#include <features.h>
  73174. #include <sys/syscall.h>
  73175. #define _ERRNO_H
  73176. #include <bits/errno.h>
  73177. -#include <bits/sysnum.h>
  73178. /* Clone the calling process, but without copying the whole address space.
  73179. The calling process is suspended until the new process exits or is
  73180. @@ -109,6 +106,6 @@
  73181. .size __vfork, .-__vfork
  73182. weak_alias(__vfork,vfork)
  73183. -libc_hidden_weak(vfork)
  73184. +libc_hidden_def(vfork)
  73185. #include "syscall_error.S"
  73186. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/fcntl.h uClibc-git/libc/sysdeps/linux/sh64/bits/fcntl.h
  73187. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  73188. +++ uClibc-git/libc/sysdeps/linux/sh64/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  73189. @@ -13,9 +13,8 @@
  73190. Lesser General Public License for more details.
  73191. You should have received a copy of the GNU Lesser General Public
  73192. - License along with the GNU C Library; if not, write to the Free
  73193. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73194. - 02111-1307 USA. */
  73195. + License along with the GNU C Library; if not, see
  73196. + <http://www.gnu.org/licenses/>. */
  73197. #ifndef _FCNTL_H
  73198. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  73199. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/sh64/bits/kernel_types.h
  73200. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  73201. +++ uClibc-git/libc/sysdeps/linux/sh64/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  73202. @@ -43,6 +43,8 @@
  73203. typedef unsigned short __kernel_old_uid_t;
  73204. typedef unsigned short __kernel_old_gid_t;
  73205. typedef __kernel_dev_t __kernel_old_dev_t;
  73206. +typedef long __kernel_long_t;
  73207. +typedef unsigned long __kernel_ulong_t;
  73208. typedef long long __kernel_loff_t;
  73209. typedef struct {
  73210. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/setjmp.h uClibc-git/libc/sysdeps/linux/sh64/bits/setjmp.h
  73211. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  73212. +++ uClibc-git/libc/sysdeps/linux/sh64/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  73213. @@ -12,9 +12,8 @@
  73214. Lesser General Public License for more details.
  73215. You should have received a copy of the GNU Lesser General Public
  73216. - License along with the GNU C Library; if not, write to the Free
  73217. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73218. - 02111-1307 USA. */
  73219. + License along with the GNU C Library; if not, see
  73220. + <http://www.gnu.org/licenses/>. */
  73221. /* Define the machine-dependent type `jmp_buf'. SH-5 version. */
  73222. #ifndef _BITS_SETJMP_H
  73223. @@ -33,8 +32,6 @@
  73224. #define __SETJMP_TRG(x) (__SETJMP_NUM_INT+__SETJMP_NUM_DBL+(x))
  73225. #define __SETJMP_LR (__SETJMP_NUM_INT+__SETJMP_NUM_DBL+__SETJMP_NUM_TRG)
  73226. -
  73227. -#ifndef _ASM
  73228. typedef struct
  73229. {
  73230. /* Callee-saved registers. */
  73231. @@ -45,6 +42,5 @@
  73232. unsigned long long __trgs[__SETJMP_NUM_TRG]; /* traget registers */
  73233. unsigned long long __lr; /* linkage register */
  73234. } __jmp_buf[1];
  73235. -#endif
  73236. #endif /* bits/setjmp.h */
  73237. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/shm.h uClibc-git/libc/sysdeps/linux/sh64/bits/shm.h
  73238. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  73239. +++ uClibc-git/libc/sysdeps/linux/sh64/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  73240. @@ -12,9 +12,8 @@
  73241. Lesser General Public License for more details.
  73242. You should have received a copy of the GNU Lesser General Public
  73243. - License along with the GNU C Library; if not, write to the Free
  73244. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73245. - 02111-1307 USA. */
  73246. + License along with the GNU C Library; if not, see
  73247. + <http://www.gnu.org/licenses/>. */
  73248. #ifndef _SYS_SHM_H
  73249. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  73250. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/sh64/bits/stackinfo.h
  73251. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  73252. +++ uClibc-git/libc/sysdeps/linux/sh64/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  73253. @@ -12,9 +12,8 @@
  73254. Lesser General Public License for more details.
  73255. You should have received a copy of the GNU Lesser General Public
  73256. - License along with the GNU C Library; if not, write to the Free
  73257. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73258. - 02111-1307 USA. */
  73259. + License along with the GNU C Library; if not, see
  73260. + <http://www.gnu.org/licenses/>. */
  73261. /* This file contains a bit of information about the stack allocation
  73262. of the processor. */
  73263. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h
  73264. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  73265. +++ uClibc-git/libc/sysdeps/linux/sh64/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  73266. @@ -11,8 +11,8 @@
  73267. /* can your target use syscall6() for mmap ? */
  73268. #undef __UCLIBC_MMAP_HAS_6_ARGS__
  73269. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  73270. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  73271. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  73272. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  73273. /* does your target have a broken create_module() ? */
  73274. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  73275. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/crt1.S uClibc-git/libc/sysdeps/linux/sh64/crt1.S
  73276. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/crt1.S 2012-05-15 09:20:09.000000000 +0200
  73277. +++ uClibc-git/libc/sysdeps/linux/sh64/crt1.S 2014-02-03 12:32:56.000000000 +0100
  73278. @@ -16,8 +16,7 @@
  73279. You should have received a copy of the GNU Library General Public
  73280. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73281. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73282. - Boston, MA 02111-1307, USA. */
  73283. + see <http://www.gnu.org/licenses/>. */
  73284. /* This is the canonical entry point, usually the first thing in the text
  73285. segment.
  73286. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/__longjmp.S uClibc-git/libc/sysdeps/linux/sh64/__longjmp.S
  73287. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  73288. +++ uClibc-git/libc/sysdeps/linux/sh64/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  73289. @@ -14,8 +14,7 @@
  73290. You should have received a copy of the GNU Library General Public
  73291. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73292. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73293. - Boston, MA 02111-1307, USA. */
  73294. + see <http://www.gnu.org/licenses/>. */
  73295. #define _SETJMP_H
  73296. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/Makefile.arch uClibc-git/libc/sysdeps/linux/sh64/Makefile.arch
  73297. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  73298. +++ uClibc-git/libc/sysdeps/linux/sh64/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  73299. @@ -5,6 +5,6 @@
  73300. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  73301. #
  73302. -CSRC := __init_brk.c brk.c sbrk.c syscall.c
  73303. +CSRC-y := __init_brk.c brk.c sbrk.c syscall.c
  73304. -SSRC := setjmp.S __longjmp.S
  73305. +SSRC-y := setjmp.S __longjmp.S
  73306. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/setjmp.S uClibc-git/libc/sysdeps/linux/sh64/setjmp.S
  73307. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  73308. +++ uClibc-git/libc/sysdeps/linux/sh64/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  73309. @@ -14,8 +14,7 @@
  73310. You should have received a copy of the GNU Library General Public
  73311. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73312. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73313. - Boston, MA 02111-1307, USA. */
  73314. + see <http://www.gnu.org/licenses/>. */
  73315. #define _SETJMP_H
  73316. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/procfs.h uClibc-git/libc/sysdeps/linux/sh64/sys/procfs.h
  73317. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  73318. +++ uClibc-git/libc/sysdeps/linux/sh64/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  73319. @@ -12,9 +12,8 @@
  73320. Lesser General Public License for more details.
  73321. You should have received a copy of the GNU Lesser General Public
  73322. - License along with the GNU C Library; if not, write to the Free
  73323. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73324. - 02111-1307 USA. */
  73325. + License along with the GNU C Library; if not, see
  73326. + <http://www.gnu.org/licenses/>. */
  73327. #ifndef _SYS_PROCFS_H
  73328. #define _SYS_PROCFS_H 1
  73329. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/ucontext.h uClibc-git/libc/sysdeps/linux/sh64/sys/ucontext.h
  73330. --- uClibc-0.9.33.2/libc/sysdeps/linux/sh64/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  73331. +++ uClibc-git/libc/sysdeps/linux/sh64/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  73332. @@ -13,8 +13,7 @@
  73333. You should have received a copy of the GNU Library General Public
  73334. License along with the GNU C Library; see the file COPYING.LIB. If not,
  73335. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  73336. - Boston, MA 02111-1307, USA. */
  73337. + see <http://www.gnu.org/licenses/>. */
  73338. /* Where is System V/SH ABI? */
  73339. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/atomic.h uClibc-git/libc/sysdeps/linux/sparc/bits/atomic.h
  73340. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  73341. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  73342. @@ -14,9 +14,8 @@
  73343. Lesser General Public License for more details.
  73344. You should have received a copy of the GNU Lesser General Public
  73345. - License along with the GNU C Library; if not, write to the Free
  73346. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73347. - 02111-1307 USA. */
  73348. + License along with the GNU C Library; if not, see
  73349. + <http://www.gnu.org/licenses/>. */
  73350. #ifndef _BITS_ATOMIC_H
  73351. #define _BITS_ATOMIC_H 1
  73352. @@ -290,11 +289,11 @@
  73353. __typeof (*(mem)) __acev_wval = (newval); \
  73354. do \
  73355. __acev_wret = *__acev_wmemp; \
  73356. - while (__builtin_expect \
  73357. + while (unlikely \
  73358. (__v9_compare_and_exchange_val_32_acq (__acev_wmemp,\
  73359. __acev_wval, \
  73360. __acev_wret) \
  73361. - != __acev_wret, 0)); \
  73362. + != __acev_wret)); \
  73363. } \
  73364. else \
  73365. __acev_wret = __v7_exchange_acq (mem, newval); \
  73366. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/eventfd.h uClibc-git/libc/sysdeps/linux/sparc/bits/eventfd.h
  73367. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/eventfd.h 1970-01-01 01:00:00.000000000 +0100
  73368. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/eventfd.h 2014-02-03 12:32:56.000000000 +0100
  73369. @@ -0,0 +1,31 @@
  73370. +/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
  73371. + This file is part of the GNU C Library.
  73372. +
  73373. + The GNU C Library is free software; you can redistribute it and/or
  73374. + modify it under the terms of the GNU Lesser General Public
  73375. + License as published by the Free Software Foundation; either
  73376. + version 2.1 of the License, or (at your option) any later version.
  73377. +
  73378. + The GNU C Library is distributed in the hope that it will be useful,
  73379. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  73380. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  73381. + Lesser General Public License for more details.
  73382. +
  73383. + You should have received a copy of the GNU Lesser General Public
  73384. + License along with the GNU C Library; if not, see
  73385. + <http://www.gnu.org/licenses/>. */
  73386. +
  73387. +#ifndef _SYS_EVENTFD_H
  73388. +# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
  73389. +#endif
  73390. +
  73391. +/* Flags for eventfd. */
  73392. +enum
  73393. + {
  73394. + EFD_SEMAPHORE = 1,
  73395. +#define EFD_SEMAPHORE EFD_SEMAPHORE
  73396. + EFD_CLOEXEC = 0x400000,
  73397. +#define EFD_CLOEXEC EFD_CLOEXEC
  73398. + EFD_NONBLOCK = 0x004000
  73399. +#define EFD_NONBLOCK EFD_NONBLOCK
  73400. + };
  73401. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fcntl.h uClibc-git/libc/sysdeps/linux/sparc/bits/fcntl.h
  73402. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  73403. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  73404. @@ -14,9 +14,8 @@
  73405. Lesser General Public License for more details.
  73406. You should have received a copy of the GNU Lesser General Public
  73407. - License along with the GNU C Library; if not, write to the Free
  73408. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73409. - 02111-1307 USA. */
  73410. + License along with the GNU C Library; if not, see
  73411. + <http://www.gnu.org/licenses/>. */
  73412. #ifndef _FCNTL_H
  73413. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  73414. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fenv.h uClibc-git/libc/sysdeps/linux/sparc/bits/fenv.h
  73415. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  73416. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  73417. @@ -12,9 +12,8 @@
  73418. Lesser General Public License for more details.
  73419. You should have received a copy of the GNU Lesser General Public
  73420. - License along with the GNU C Library; if not, write to the Free
  73421. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73422. - 02111-1307 USA. */
  73423. + License along with the GNU C Library; if not, see
  73424. + <http://www.gnu.org/licenses/>. */
  73425. #ifndef _FENV_H
  73426. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  73427. @@ -68,11 +67,11 @@
  73428. typedef unsigned long int fenv_t;
  73429. /* If the default argument is used we use this value. */
  73430. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  73431. +#define FE_DFL_ENV ((const fenv_t *) -1)
  73432. #ifdef __USE_GNU
  73433. /* Floating-point environment where none of the exception is masked. */
  73434. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  73435. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  73436. #endif
  73437. /* For internal use only: access the fp state register. */
  73438. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/huge_vall.h uClibc-git/libc/sysdeps/linux/sparc/bits/huge_vall.h
  73439. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/huge_vall.h 1970-01-01 01:00:00.000000000 +0100
  73440. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/huge_vall.h 2014-02-03 12:32:56.000000000 +0100
  73441. @@ -0,0 +1,48 @@
  73442. +/* `HUGE_VALL' constant for IEEE 754 machines (where it is infinity).
  73443. + Used by <stdlib.h> and <math.h> functions for overflow.
  73444. + Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  73445. + Free Software Foundation, Inc.
  73446. + This file is part of the GNU C Library.
  73447. +
  73448. + The GNU C Library is free software; you can redistribute it and/or
  73449. + modify it under the terms of the GNU Lesser General Public
  73450. + License as published by the Free Software Foundation; either
  73451. + version 2.1 of the License, or (at your option) any later version.
  73452. +
  73453. + The GNU C Library is distributed in the hope that it will be useful,
  73454. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  73455. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  73456. + Lesser General Public License for more details.
  73457. +
  73458. + You should have received a copy of the GNU Lesser General Public
  73459. + License along with the GNU C Library; if not, see
  73460. + <http://www.gnu.org/licenses/>. */
  73461. +
  73462. +#ifndef _MATH_H
  73463. +# error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  73464. +#endif
  73465. +
  73466. +#if __GNUC_PREREQ(3,3)
  73467. +# define HUGE_VALL (__builtin_huge_vall())
  73468. +#else
  73469. +# include <bits/wordsize.h>
  73470. +# if __WORDSIZE == 32
  73471. +# define HUGE_VALL ((long double) HUGE_VAL)
  73472. +# elif __GNUC_PREREQ(2,96)
  73473. +# define HUGE_VALL (__extension__ 0x1.0p32767L)
  73474. +# elif defined __GNUC__
  73475. +
  73476. +# define HUGE_VALL \
  73477. + (__extension__ \
  73478. + ((union { struct { unsigned long __h, __l; } __i; long double __d; }) \
  73479. + { __i: { __h: 0x7fff000000000000UL, __l: 0 } }).__d)
  73480. +
  73481. +# else /* not GCC */
  73482. +
  73483. +typedef union { unsigned char __c[16]; long double __d; } __huge_vall_t;
  73484. +# define __HUGE_VALL_bytes { 0x7f, 0xff, 0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
  73485. +static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  73486. +# define HUGE_VALL (__huge_vall.__d)
  73487. +
  73488. +# endif /* GCC. */
  73489. +#endif /* GCC 3.3. */
  73490. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ioctls.h uClibc-git/libc/sysdeps/linux/sparc/bits/ioctls.h
  73491. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ioctls.h 2012-05-15 09:20:09.000000000 +0200
  73492. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/ioctls.h 2014-02-03 12:32:56.000000000 +0100
  73493. @@ -12,9 +12,8 @@
  73494. Lesser General Public License for more details.
  73495. You should have received a copy of the GNU Lesser General Public
  73496. - License along with the GNU C Library; if not, write to the Free
  73497. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73498. - 02111-1307 USA. */
  73499. + License along with the GNU C Library; if not, see
  73500. + <http://www.gnu.org/licenses/>. */
  73501. #ifndef _SYS_IOCTL_H
  73502. # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
  73503. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ipc.h uClibc-git/libc/sysdeps/linux/sparc/bits/ipc.h
  73504. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  73505. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  73506. @@ -12,9 +12,8 @@
  73507. Lesser General Public License for more details.
  73508. You should have received a copy of the GNU Lesser General Public
  73509. - License along with the GNU C Library; if not, write to the Free
  73510. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73511. - 02111-1307 USA. */
  73512. + License along with the GNU C Library; if not, see
  73513. + <http://www.gnu.org/licenses/>. */
  73514. #ifndef _SYS_IPC_H
  73515. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  73516. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/sparc/bits/kernel_types.h
  73517. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  73518. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  73519. @@ -32,6 +32,8 @@
  73520. typedef __kernel_uid_t __kernel_old_uid_t;
  73521. typedef __kernel_gid_t __kernel_old_gid_t;
  73522. typedef __kernel_dev_t __kernel_old_dev_t;
  73523. +typedef long __kernel_long_t;
  73524. +typedef unsigned long __kernel_ulong_t;
  73525. typedef __kernel_uid_t __kernel_uid32_t;
  73526. typedef __kernel_gid_t __kernel_gid32_t;
  73527. typedef int __kernel_suseconds_t;
  73528. @@ -62,6 +64,8 @@
  73529. typedef unsigned short __kernel_old_uid_t;
  73530. typedef unsigned short __kernel_old_gid_t;
  73531. typedef __kernel_dev_t __kernel_old_dev_t;
  73532. +typedef long __kernel_long_t;
  73533. +typedef unsigned long __kernel_ulong_t;
  73534. typedef long long __kernel_loff_t;
  73535. #endif
  73536. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/local_lim.h uClibc-git/libc/sysdeps/linux/sparc/bits/local_lim.h
  73537. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/local_lim.h 1970-01-01 01:00:00.000000000 +0100
  73538. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/local_lim.h 2014-02-03 12:32:56.000000000 +0100
  73539. @@ -0,0 +1,99 @@
  73540. +/* Minimum guaranteed maximum values for system limits. Linux/SPARC version.
  73541. + Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc.
  73542. + This file is part of the GNU C Library.
  73543. +
  73544. + The GNU C Library is free software; you can redistribute it and/or
  73545. + modify it under the terms of the GNU Library General Public License as
  73546. + published by the Free Software Foundation; either version 2 of the
  73547. + License, or (at your option) any later version.
  73548. +
  73549. + The GNU C Library is distributed in the hope that it will be useful,
  73550. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  73551. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  73552. + Library General Public License for more details.
  73553. +
  73554. + You should have received a copy of the GNU Library General Public
  73555. + License along with the GNU C Library; see the file COPYING.LIB. If not,
  73556. + see <http://www.gnu.org/licenses/>. */
  73557. +
  73558. +/* The kernel header pollutes the namespace with the NR_OPEN symbol
  73559. + and defines LINK_MAX although filesystems have different maxima. A
  73560. + similar thing is true for OPEN_MAX: the limit can be changed at
  73561. + runtime and therefore the macro must not be defined. Remove this
  73562. + after including the header if necessary. */
  73563. +#ifndef NR_OPEN
  73564. +# define __undef_NR_OPEN
  73565. +#endif
  73566. +#ifndef LINK_MAX
  73567. +# define __undef_LINK_MAX
  73568. +#endif
  73569. +#ifndef OPEN_MAX
  73570. +# define __undef_OPEN_MAX
  73571. +#endif
  73572. +#ifndef ARG_MAX
  73573. +# define __undef_ARG_MAX
  73574. +#endif
  73575. +
  73576. +/* The kernel sources contain a file with all the needed information. */
  73577. +#include <linux/limits.h>
  73578. +
  73579. +/* Have to remove NR_OPEN? */
  73580. +#ifdef __undef_NR_OPEN
  73581. +# undef NR_OPEN
  73582. +# undef __undef_NR_OPEN
  73583. +#endif
  73584. +/* Have to remove LINK_MAX? */
  73585. +#ifdef __undef_LINK_MAX
  73586. +# undef LINK_MAX
  73587. +# undef __undef_LINK_MAX
  73588. +#endif
  73589. +/* Have to remove OPEN_MAX? */
  73590. +#ifdef __undef_OPEN_MAX
  73591. +# undef OPEN_MAX
  73592. +# undef __undef_OPEN_MAX
  73593. +#endif
  73594. +/* Have to remove ARG_MAX? */
  73595. +#ifdef __undef_ARG_MAX
  73596. +# undef ARG_MAX
  73597. +# undef __undef_ARG_MAX
  73598. +#endif
  73599. +
  73600. +/* The number of data keys per process. */
  73601. +#define _POSIX_THREAD_KEYS_MAX 128
  73602. +/* This is the value this implementation supports. */
  73603. +#define PTHREAD_KEYS_MAX 1024
  73604. +
  73605. +/* Controlling the iterations of destructors for thread-specific data. */
  73606. +#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
  73607. +/* Number of iterations this implementation does. */
  73608. +#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
  73609. +
  73610. +/* The number of threads per process. */
  73611. +#define _POSIX_THREAD_THREADS_MAX 64
  73612. +/* We have no predefined limit on the number of threads. */
  73613. +#undef PTHREAD_THREADS_MAX
  73614. +
  73615. +/* Maximum amount by which a process can descrease its asynchronous I/O
  73616. + priority level. */
  73617. +#define AIO_PRIO_DELTA_MAX 20
  73618. +
  73619. +/* Minimum size for a thread. We are free to choose a reasonable value. */
  73620. +#define PTHREAD_STACK_MIN 24576
  73621. +
  73622. +/* Maximum number of timer expiration overruns. */
  73623. +#define DELAYTIMER_MAX 2147483647
  73624. +
  73625. +/* Maximum tty name length. */
  73626. +#define TTY_NAME_MAX 32
  73627. +
  73628. +/* Maximum login name length. This is arbitrary. */
  73629. +#define LOGIN_NAME_MAX 256
  73630. +
  73631. +/* Maximum host name length. */
  73632. +#define HOST_NAME_MAX 64
  73633. +
  73634. +/* Maximum message queue priority level. */
  73635. +#define MQ_PRIO_MAX 32768
  73636. +
  73637. +/* Maximum value the semaphore can have. */
  73638. +#define SEM_VALUE_MAX (2147483647)
  73639. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathdef.h uClibc-git/libc/sysdeps/linux/sparc/bits/mathdef.h
  73640. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  73641. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  73642. @@ -13,9 +13,8 @@
  73643. Lesser General Public License for more details.
  73644. You should have received a copy of the GNU Lesser General Public
  73645. - License along with the GNU C Library; if not, write to the Free
  73646. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73647. - 02111-1307 USA. */
  73648. + License along with the GNU C Library; if not, see
  73649. + <http://www.gnu.org/licenses/>. */
  73650. #if !defined _MATH_H && !defined _COMPLEX_H
  73651. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  73652. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathinline.h uClibc-git/libc/sysdeps/linux/sparc/bits/mathinline.h
  73653. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  73654. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  73655. @@ -15,9 +15,8 @@
  73656. Lesser General Public License for more details.
  73657. You should have received a copy of the GNU Lesser General Public
  73658. - License along with the GNU C Library; if not, write to the Free
  73659. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73660. - 02111-1307 USA. */
  73661. + License along with the GNU C Library; if not, see
  73662. + <http://www.gnu.org/licenses/>. */
  73663. #ifndef _MATH_H
  73664. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  73665. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mman.h uClibc-git/libc/sysdeps/linux/sparc/bits/mman.h
  73666. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  73667. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  73668. @@ -13,9 +13,8 @@
  73669. Lesser General Public License for more details.
  73670. You should have received a copy of the GNU Lesser General Public
  73671. - License along with the GNU C Library; if not, write to the Free
  73672. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73673. - 02111-1307 USA. */
  73674. + License along with the GNU C Library; if not, see
  73675. + <http://www.gnu.org/licenses/>. */
  73676. #ifndef _SYS_MMAN_H
  73677. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  73678. @@ -65,7 +64,7 @@
  73679. # define _MAP_NEW 0x80000000 /* Binary compatibility with SunOS. */
  73680. # define MAP_POPULATE 0x8000 /* Populate (prefault) pagetables. */
  73681. # define MAP_NONBLOCK 0x10000 /* Do not block on IO. */
  73682. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  73683. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  73684. be uninitialized. */
  73685. #endif
  73686. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/msq.h uClibc-git/libc/sysdeps/linux/sparc/bits/msq.h
  73687. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  73688. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  73689. @@ -12,9 +12,8 @@
  73690. Lesser General Public License for more details.
  73691. You should have received a copy of the GNU Lesser General Public
  73692. - License along with the GNU C Library; if not, write to the Free
  73693. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73694. - 02111-1307 USA. */
  73695. + License along with the GNU C Library; if not, see
  73696. + <http://www.gnu.org/licenses/>. */
  73697. #ifndef _SYS_MSG_H
  73698. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  73699. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/poll.h uClibc-git/libc/sysdeps/linux/sparc/bits/poll.h
  73700. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  73701. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  73702. @@ -12,9 +12,8 @@
  73703. Lesser General Public License for more details.
  73704. You should have received a copy of the GNU Lesser General Public
  73705. - License along with the GNU C Library; if not, write to the Free
  73706. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73707. - 02111-1307 USA. */
  73708. + License along with the GNU C Library; if not, see
  73709. + <http://www.gnu.org/licenses/>. */
  73710. #ifndef _SYS_POLL_H
  73711. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  73712. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/resource.h uClibc-git/libc/sysdeps/linux/sparc/bits/resource.h
  73713. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/resource.h 2012-05-15 09:20:09.000000000 +0200
  73714. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/resource.h 2014-02-03 12:32:56.000000000 +0100
  73715. @@ -14,9 +14,8 @@
  73716. Lesser General Public License for more details.
  73717. You should have received a copy of the GNU Lesser General Public
  73718. - License along with the GNU C Library; if not, write to the Free
  73719. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73720. - 02111-1307 USA. */
  73721. + License along with the GNU C Library; if not, see
  73722. + <http://www.gnu.org/licenses/>. */
  73723. #ifndef _SYS_RESOURCE_H
  73724. # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
  73725. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sem.h uClibc-git/libc/sysdeps/linux/sparc/bits/sem.h
  73726. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  73727. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  73728. @@ -12,9 +12,8 @@
  73729. Lesser General Public License for more details.
  73730. You should have received a copy of the GNU Lesser General Public
  73731. - License along with the GNU C Library; if not, write to the Free
  73732. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73733. - 02111-1307 USA. */
  73734. + License along with the GNU C Library; if not, see
  73735. + <http://www.gnu.org/licenses/>. */
  73736. #ifndef _SYS_SEM_H
  73737. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  73738. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/setjmp.h uClibc-git/libc/sysdeps/linux/sparc/bits/setjmp.h
  73739. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  73740. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  73741. @@ -1,4 +1,5 @@
  73742. -/* Copyright (C) 1997,1999,2000,2003 Free Software Foundation, Inc.
  73743. +/* Copyright (C) 1997, 1999, 2000, 2003, 2005, 2006
  73744. + Free Software Foundation, Inc.
  73745. This file is part of the GNU C Library.
  73746. The GNU C Library is free software; you can redistribute it and/or
  73747. @@ -12,9 +13,8 @@
  73748. Lesser General Public License for more details.
  73749. You should have received a copy of the GNU Lesser General Public
  73750. - License along with the GNU C Library; if not, write to the Free
  73751. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73752. - 02111-1307 USA. */
  73753. + License along with the GNU C Library; if not, see
  73754. + <http://www.gnu.org/licenses/>. */
  73755. #ifndef _BITS_SETJMP_H
  73756. #define _BITS_SETJMP_H 1
  73757. @@ -27,7 +27,6 @@
  73758. #if 0 /*__WORDSIZE == 64*/
  73759. -#ifndef _ASM
  73760. typedef struct __sparc64_jmp_buf
  73761. {
  73762. struct __sparc64_jmp_buf *uc_link;
  73763. @@ -55,30 +54,8 @@
  73764. } mc_fpregs;
  73765. } uc_mcontext;
  73766. } __jmp_buf[1];
  73767. -#endif
  73768. -
  73769. -/* Test if longjmp to JMPBUF would unwind the frame
  73770. - containing a local variable at ADDRESS. */
  73771. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  73772. - ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp)
  73773. -
  73774. #else
  73775. -
  73776. -#if defined __USE_MISC || defined _ASM
  73777. -# define JB_SP 0
  73778. -# define JB_FP 1
  73779. -# define JB_PC 2
  73780. -#endif
  73781. -
  73782. -#ifndef _ASM
  73783. typedef int __jmp_buf[3];
  73784. #endif
  73785. -/* Test if longjmp to JMPBUF would unwind the frame
  73786. - containing a local variable at ADDRESS. */
  73787. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  73788. - ((int) (address) < (jmpbuf)[JB_SP])
  73789. -
  73790. -#endif
  73791. -
  73792. #endif /* bits/setjmp.h */
  73793. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/shm.h uClibc-git/libc/sysdeps/linux/sparc/bits/shm.h
  73794. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  73795. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  73796. @@ -13,9 +13,8 @@
  73797. Lesser General Public License for more details.
  73798. You should have received a copy of the GNU Lesser General Public
  73799. - License along with the GNU C Library; if not, write to the Free
  73800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73801. - 02111-1307 USA. */
  73802. + License along with the GNU C Library; if not, see
  73803. + <http://www.gnu.org/licenses/>. */
  73804. #ifndef _SYS_SHM_H
  73805. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  73806. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigaction.h uClibc-git/libc/sysdeps/linux/sparc/bits/sigaction.h
  73807. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigaction.h 2012-05-15 09:20:09.000000000 +0200
  73808. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/sigaction.h 2014-02-03 12:32:56.000000000 +0100
  73809. @@ -13,9 +13,8 @@
  73810. Lesser General Public License for more details.
  73811. You should have received a copy of the GNU Lesser General Public
  73812. - License along with the GNU C Library; if not, write to the Free
  73813. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73814. - 02111-1307 USA. */
  73815. + License along with the GNU C Library; if not, see
  73816. + <http://www.gnu.org/licenses/>. */
  73817. #ifndef _SIGNAL_H
  73818. # error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
  73819. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/sparc/bits/sigcontext.h
  73820. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  73821. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  73822. @@ -12,9 +12,8 @@
  73823. Lesser General Public License for more details.
  73824. You should have received a copy of the GNU Lesser General Public
  73825. - License along with the GNU C Library; if not, write to the Free
  73826. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73827. - 02111-1307 USA. */
  73828. + License along with the GNU C Library; if not, see
  73829. + <http://www.gnu.org/licenses/>. */
  73830. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  73831. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  73832. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h
  73833. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  73834. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  73835. @@ -13,9 +13,8 @@
  73836. Lesser General Public License for more details.
  73837. You should have received a copy of the GNU Lesser General Public
  73838. - License along with the GNU C Library; if not, write to the Free
  73839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73840. - 02111-1307 USA. */
  73841. + License along with the GNU C Library; if not, see
  73842. + <http://www.gnu.org/licenses/>. */
  73843. #define SIGCONTEXT struct sigcontext *
  73844. #define SIGCONTEXT_EXTRA_ARGS
  73845. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/siginfo.h uClibc-git/libc/sysdeps/linux/sparc/bits/siginfo.h
  73846. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/siginfo.h 2012-05-15 09:20:09.000000000 +0200
  73847. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/siginfo.h 2014-02-03 12:32:56.000000000 +0100
  73848. @@ -13,9 +13,8 @@
  73849. Lesser General Public License for more details.
  73850. You should have received a copy of the GNU Lesser General Public
  73851. - License along with the GNU C Library; if not, write to the Free
  73852. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73853. - 02111-1307 USA. */
  73854. + License along with the GNU C Library; if not, see
  73855. + <http://www.gnu.org/licenses/>. */
  73856. #if !defined _SIGNAL_H && !defined __need_siginfo_t \
  73857. && !defined __need_sigevent_t
  73858. @@ -289,6 +288,10 @@
  73859. {
  73860. int _pad[__SIGEV_PAD_SIZE];
  73861. + /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
  73862. + thread to receive the signal. */
  73863. + __pid_t _tid;
  73864. +
  73865. struct
  73866. {
  73867. void (*_function) (sigval_t); /* Function to start. */
  73868. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/signum.h uClibc-git/libc/sysdeps/linux/sparc/bits/signum.h
  73869. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/signum.h 2012-05-15 09:20:09.000000000 +0200
  73870. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/signum.h 2014-02-03 12:32:56.000000000 +0100
  73871. @@ -13,9 +13,8 @@
  73872. Lesser General Public License for more details.
  73873. You should have received a copy of the GNU Lesser General Public
  73874. - License along with the GNU C Library; if not, write to the Free
  73875. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73876. - 02111-1307 USA. */
  73877. + License along with the GNU C Library; if not, see
  73878. + <http://www.gnu.org/licenses/>. */
  73879. #ifdef _SIGNAL_H
  73880. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigstack.h uClibc-git/libc/sysdeps/linux/sparc/bits/sigstack.h
  73881. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/sigstack.h 2012-05-15 09:20:09.000000000 +0200
  73882. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/sigstack.h 2014-02-03 12:32:56.000000000 +0100
  73883. @@ -13,9 +13,8 @@
  73884. Lesser General Public License for more details.
  73885. You should have received a copy of the GNU Lesser General Public
  73886. - License along with the GNU C Library; if not, write to the Free
  73887. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73888. - 02111-1307 USA. */
  73889. + License along with the GNU C Library; if not, see
  73890. + <http://www.gnu.org/licenses/>. */
  73891. #ifndef _SIGNAL_H
  73892. # error "Never include this file directly. Use <signal.h> instead"
  73893. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket.h uClibc-git/libc/sysdeps/linux/sparc/bits/socket.h
  73894. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket.h 2012-05-15 09:20:09.000000000 +0200
  73895. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/socket.h 1970-01-01 01:00:00.000000000 +0100
  73896. @@ -1,376 +0,0 @@
  73897. -/* System-specific socket constants and types. Linux version.
  73898. - Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc.
  73899. - This file is part of the GNU C Library.
  73900. -
  73901. - The GNU C Library is free software; you can redistribute it and/or
  73902. - modify it under the terms of the GNU Lesser General Public
  73903. - License as published by the Free Software Foundation; either
  73904. - version 2.1 of the License, or (at your option) any later version.
  73905. -
  73906. - The GNU C Library is distributed in the hope that it will be useful,
  73907. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  73908. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  73909. - Lesser General Public License for more details.
  73910. -
  73911. - You should have received a copy of the GNU Lesser General Public
  73912. - License along with the GNU C Library; if not, write to the Free
  73913. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  73914. - 02111-1307 USA. */
  73915. -
  73916. -#ifndef __BITS_SOCKET_H
  73917. -#define __BITS_SOCKET_H
  73918. -
  73919. -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
  73920. -# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
  73921. -#endif
  73922. -
  73923. -#define __need_size_t
  73924. -#define __need_NULL
  73925. -#include <stddef.h>
  73926. -
  73927. -#include <limits.h>
  73928. -#include <sys/types.h>
  73929. -
  73930. -/* Type for length arguments in socket calls. */
  73931. -#ifndef __socklen_t_defined
  73932. -typedef __socklen_t socklen_t;
  73933. -# define __socklen_t_defined
  73934. -#endif
  73935. -
  73936. -/* Types of sockets. */
  73937. -enum __socket_type
  73938. -{
  73939. - SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  73940. - byte streams. */
  73941. -#define SOCK_STREAM SOCK_STREAM
  73942. - SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  73943. - of fixed maximum length. */
  73944. -#define SOCK_DGRAM SOCK_DGRAM
  73945. - SOCK_RAW = 3, /* Raw protocol interface. */
  73946. -#define SOCK_RAW SOCK_RAW
  73947. - SOCK_RDM = 4, /* Reliably-delivered messages. */
  73948. -#define SOCK_RDM SOCK_RDM
  73949. - SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  73950. - datagrams of fixed maximum length. */
  73951. -#define SOCK_SEQPACKET SOCK_SEQPACKET
  73952. - SOCK_PACKET = 10 /* Linux specific way of getting packets
  73953. - at the dev level. For writing rarp and
  73954. - other similar things on the user level. */
  73955. -#define SOCK_PACKET SOCK_PACKET
  73956. -};
  73957. -
  73958. -/* Protocol families. */
  73959. -#define PF_UNSPEC 0 /* Unspecified. */
  73960. -#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
  73961. -#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
  73962. -#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
  73963. -#define PF_INET 2 /* IP protocol family. */
  73964. -#define PF_AX25 3 /* Amateur Radio AX.25. */
  73965. -#define PF_IPX 4 /* Novell Internet Protocol. */
  73966. -#define PF_APPLETALK 5 /* Appletalk DDP. */
  73967. -#define PF_NETROM 6 /* Amateur radio NetROM. */
  73968. -#define PF_BRIDGE 7 /* Multiprotocol bridge. */
  73969. -#define PF_ATMPVC 8 /* ATM PVCs. */
  73970. -#define PF_X25 9 /* Reserved for X.25 project. */
  73971. -#define PF_INET6 10 /* IP version 6. */
  73972. -#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
  73973. -#define PF_DECnet 12 /* Reserved for DECnet project. */
  73974. -#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
  73975. -#define PF_SECURITY 14 /* Security callback pseudo AF. */
  73976. -#define PF_KEY 15 /* PF_KEY key management API. */
  73977. -#define PF_NETLINK 16
  73978. -#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
  73979. -#define PF_PACKET 17 /* Packet family. */
  73980. -#define PF_ASH 18 /* Ash. */
  73981. -#define PF_ECONET 19 /* Acorn Econet. */
  73982. -#define PF_ATMSVC 20 /* ATM SVCs. */
  73983. -#define PF_SNA 22 /* Linux SNA Project */
  73984. -#define PF_IRDA 23 /* IRDA sockets. */
  73985. -#define PF_PPPOX 24 /* PPPoX sockets. */
  73986. -#define PF_WANPIPE 25 /* Wanpipe API sockets. */
  73987. -#define PF_LLC 26 /* Linux LLC. */
  73988. -#define PF_CAN 29 /* Controller Area Network. */
  73989. -#define PF_TIPC 30 /* TIPC sockets. */
  73990. -#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
  73991. -#define PF_IUCV 32 /* IUCV sockets. */
  73992. -#define PF_RXRPC 33 /* RxRPC sockets. */
  73993. -#define PF_ISDN 34 /* mISDN sockets. */
  73994. -#define PF_PHONET 35 /* Phonet sockets. */
  73995. -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */
  73996. -#define PF_CAIF 37 /* CAIF sockets. */
  73997. -#define PF_ALG 38 /* Algorithm sockets. */
  73998. -#define PF_MAX 39 /* For now.. */
  73999. -
  74000. -/* Address families. */
  74001. -#define AF_UNSPEC PF_UNSPEC
  74002. -#define AF_LOCAL PF_LOCAL
  74003. -#define AF_UNIX PF_UNIX
  74004. -#define AF_FILE PF_FILE
  74005. -#define AF_INET PF_INET
  74006. -#define AF_AX25 PF_AX25
  74007. -#define AF_IPX PF_IPX
  74008. -#define AF_APPLETALK PF_APPLETALK
  74009. -#define AF_NETROM PF_NETROM
  74010. -#define AF_BRIDGE PF_BRIDGE
  74011. -#define AF_ATMPVC PF_ATMPVC
  74012. -#define AF_X25 PF_X25
  74013. -#define AF_INET6 PF_INET6
  74014. -#define AF_ROSE PF_ROSE
  74015. -#define AF_DECnet PF_DECnet
  74016. -#define AF_NETBEUI PF_NETBEUI
  74017. -#define AF_SECURITY PF_SECURITY
  74018. -#define AF_KEY PF_KEY
  74019. -#define AF_NETLINK PF_NETLINK
  74020. -#define AF_ROUTE PF_ROUTE
  74021. -#define AF_PACKET PF_PACKET
  74022. -#define AF_ASH PF_ASH
  74023. -#define AF_ECONET PF_ECONET
  74024. -#define AF_ATMSVC PF_ATMSVC
  74025. -#define AF_SNA PF_SNA
  74026. -#define AF_IRDA PF_IRDA
  74027. -#define AF_PPPOX PF_PPPOX
  74028. -#define AF_WANPIPE PF_WANPIPE
  74029. -#define AF_LLC PF_LLC
  74030. -#define AF_CAN PF_CAN
  74031. -#define AF_TIPC PF_TIPC
  74032. -#define AF_BLUETOOTH PF_BLUETOOTH
  74033. -#define AF_IUCV PF_IUCV
  74034. -#define AF_RXRPC PF_RXRPC
  74035. -#define AF_ISDN PF_ISDN
  74036. -#define AF_PHONET PF_PHONET
  74037. -#define AF_IEEE802154 PF_IEEE802154
  74038. -#define AF_CAIF PF_CAIF
  74039. -#define AF_ALG PF_ALG
  74040. -#define AF_MAX PF_MAX
  74041. -
  74042. -/* Socket level values. Others are defined in the appropriate headers.
  74043. -
  74044. - XXX These definitions also should go into the appropriate headers as
  74045. - far as they are available. */
  74046. -#define SOL_RAW 255
  74047. -#define SOL_DECNET 261
  74048. -#define SOL_X25 262
  74049. -#define SOL_PACKET 263
  74050. -#define SOL_ATM 264 /* ATM layer (cell level). */
  74051. -#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */
  74052. -#define SOL_IRDA 266
  74053. -
  74054. -/* Maximum queue length specifiable by listen. */
  74055. -#define SOMAXCONN 128
  74056. -
  74057. -/* Get the definition of the macro to define the common sockaddr members. */
  74058. -#include <bits/sockaddr.h>
  74059. -
  74060. -/* Structure describing a generic socket address. */
  74061. -struct sockaddr
  74062. - {
  74063. - __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
  74064. - char sa_data[14]; /* Address data. */
  74065. - };
  74066. -
  74067. -
  74068. -/* Structure large enough to hold any socket address (with the historical
  74069. - exception of AF_UNIX). We reserve 128 bytes. */
  74070. -#if ULONG_MAX > 0xffffffff
  74071. -# define __ss_aligntype __uint64_t
  74072. -#else
  74073. -# define __ss_aligntype __uint32_t
  74074. -#endif
  74075. -#define _SS_SIZE 128
  74076. -#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
  74077. -
  74078. -struct sockaddr_storage
  74079. - {
  74080. - __SOCKADDR_COMMON (ss_); /* Address family, etc. */
  74081. - __ss_aligntype __ss_align; /* Force desired alignment. */
  74082. - char __ss_padding[_SS_PADSIZE];
  74083. - };
  74084. -
  74085. -
  74086. -/* Bits in the FLAGS argument to `send', `recv', et al. */
  74087. -enum
  74088. - {
  74089. - MSG_OOB = 0x01, /* Process out-of-band data. */
  74090. -#define MSG_OOB MSG_OOB
  74091. - MSG_PEEK = 0x02, /* Peek at incoming messages. */
  74092. -#define MSG_PEEK MSG_PEEK
  74093. - MSG_DONTROUTE = 0x04, /* Don't use local routing. */
  74094. -#define MSG_DONTROUTE MSG_DONTROUTE
  74095. -#ifdef __USE_GNU
  74096. - /* DECnet uses a different name. */
  74097. - MSG_TRYHARD = MSG_DONTROUTE,
  74098. -# define MSG_TRYHARD MSG_DONTROUTE
  74099. -#endif
  74100. - MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
  74101. -#define MSG_CTRUNC MSG_CTRUNC
  74102. - MSG_PROXY = 0x10, /* Supply or ask second address. */
  74103. -#define MSG_PROXY MSG_PROXY
  74104. - MSG_TRUNC = 0x20,
  74105. -#define MSG_TRUNC MSG_TRUNC
  74106. - MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
  74107. -#define MSG_DONTWAIT MSG_DONTWAIT
  74108. - MSG_EOR = 0x80, /* End of record. */
  74109. -#define MSG_EOR MSG_EOR
  74110. - MSG_WAITALL = 0x100, /* Wait for a full request. */
  74111. -#define MSG_WAITALL MSG_WAITALL
  74112. - MSG_FIN = 0x200,
  74113. -#define MSG_FIN MSG_FIN
  74114. - MSG_SYN = 0x400,
  74115. -#define MSG_SYN MSG_SYN
  74116. - MSG_CONFIRM = 0x800, /* Confirm path validity. */
  74117. -#define MSG_CONFIRM MSG_CONFIRM
  74118. - MSG_RST = 0x1000,
  74119. -#define MSG_RST MSG_RST
  74120. - MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
  74121. -#define MSG_ERRQUEUE MSG_ERRQUEUE
  74122. - MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
  74123. -#define MSG_NOSIGNAL MSG_NOSIGNAL
  74124. - MSG_MORE = 0x8000 /* Sender will send more. */
  74125. -#define MSG_MORE MSG_MORE
  74126. - };
  74127. -
  74128. -
  74129. -/* Structure describing messages sent by
  74130. - `sendmsg' and received by `recvmsg'. */
  74131. -/* Note: do not change these members to match glibc; these match the
  74132. - SuSv3 spec already (e.g. msg_iovlen/msg_controllen).
  74133. - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */
  74134. -/* Note: linux kernel uses __kernel_size_t (which is 8bytes on 64bit
  74135. - platforms, and 4bytes on 32bit platforms) for msg_iovlen/msg_controllen */
  74136. -struct msghdr
  74137. - {
  74138. - void *msg_name; /* Address to send to/receive from. */
  74139. - socklen_t msg_namelen; /* Length of address data. */
  74140. -
  74141. - struct iovec *msg_iov; /* Vector of data to send/receive into. */
  74142. -#if __WORDSIZE == 32
  74143. - int msg_iovlen; /* Number of elements in the vector. */
  74144. -#else
  74145. - size_t msg_iovlen; /* Number of elements in the vector. */
  74146. -#endif
  74147. -
  74148. - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
  74149. -#if __WORDSIZE == 32
  74150. - socklen_t msg_controllen; /* Ancillary data buffer length. */
  74151. -#else
  74152. - size_t msg_controllen; /* Ancillary data buffer length. */
  74153. -#endif
  74154. -
  74155. - int msg_flags; /* Flags on received message. */
  74156. - };
  74157. -
  74158. -/* Structure used for storage of ancillary data object information. */
  74159. -struct cmsghdr
  74160. - {
  74161. - size_t cmsg_len; /* Length of data in cmsg_data plus length
  74162. - of cmsghdr structure. */
  74163. - int cmsg_level; /* Originating protocol. */
  74164. - int cmsg_type; /* Protocol specific type. */
  74165. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  74166. - __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
  74167. -#endif
  74168. - };
  74169. -
  74170. -/* Ancillary data object manipulation macros. */
  74171. -#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
  74172. -# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
  74173. -#else
  74174. -# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
  74175. -#endif
  74176. -#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
  74177. -#define CMSG_FIRSTHDR(mhdr) \
  74178. - ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
  74179. - ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
  74180. -#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
  74181. - & (size_t) ~(sizeof (size_t) - 1))
  74182. -#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
  74183. - + CMSG_ALIGN (sizeof (struct cmsghdr)))
  74184. -#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
  74185. -
  74186. -extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
  74187. - struct cmsghdr *__cmsg) __THROW;
  74188. -libc_hidden_proto(__cmsg_nxthdr)
  74189. -#ifdef __USE_EXTERN_INLINES
  74190. -# ifndef _EXTERN_INLINE
  74191. -# define _EXTERN_INLINE extern __inline
  74192. -# endif
  74193. -_EXTERN_INLINE struct cmsghdr *
  74194. -__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
  74195. -{
  74196. - if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
  74197. - /* The kernel header does this so there may be a reason. */
  74198. - return 0;
  74199. -
  74200. - __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
  74201. - + CMSG_ALIGN (__cmsg->cmsg_len));
  74202. - if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
  74203. - + __mhdr->msg_controllen)
  74204. - || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
  74205. - > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
  74206. - /* No more entries. */
  74207. - return 0;
  74208. - return __cmsg;
  74209. -}
  74210. -#endif /* Use `extern inline'. */
  74211. -
  74212. -/* Socket level message types. This must match the definitions in
  74213. - <linux/socket.h>. */
  74214. -enum
  74215. - {
  74216. - SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
  74217. -#define SCM_RIGHTS SCM_RIGHTS
  74218. -#ifdef __USE_BSD
  74219. - , SCM_CREDENTIALS = 0x02 /* Credentials passing. */
  74220. -# define SCM_CREDENTIALS SCM_CREDENTIALS
  74221. -#endif
  74222. - };
  74223. -
  74224. -/* User visible structure for SCM_CREDENTIALS message */
  74225. -
  74226. -struct ucred
  74227. -{
  74228. - pid_t pid; /* PID of sending process. */
  74229. - uid_t uid; /* UID of sending process. */
  74230. - gid_t gid; /* GID of sending process. */
  74231. -};
  74232. -
  74233. -/* Get socket manipulation related informations from kernel headers. */
  74234. -#ifndef __GLIBC__
  74235. -#define __GLIBC__ 2
  74236. -#include <asm/socket.h>
  74237. -#undef __GLIBC__
  74238. -#else
  74239. -#include <asm/socket.h>
  74240. -#endif
  74241. -
  74242. -
  74243. -/* Structure used to manipulate the SO_LINGER option. */
  74244. -struct linger
  74245. - {
  74246. - int l_onoff; /* Nonzero to linger on close. */
  74247. - int l_linger; /* Time to linger. */
  74248. - };
  74249. -
  74250. -/* Prefer socketcall over all these for sparc32,
  74251. - since it only has socketcall */
  74252. -#ifndef __arch64__
  74253. - #undef __NR_accept
  74254. - #undef __NR_bind
  74255. - #undef __NR_connect
  74256. - #undef __NR_getpeername
  74257. - #undef __NR_getsockname
  74258. - #undef __NR_getsockopt
  74259. - #undef __NR_listen
  74260. - #undef __NR_recv
  74261. - #undef __NR_recvfrom
  74262. - #undef __NR_recvmsg
  74263. - #undef __NR_send
  74264. - #undef __NR_sendmsg
  74265. - #undef __NR_sendto
  74266. - #undef __NR_setsockopt
  74267. - #undef __NR_shutdown
  74268. - #undef __NR_socket
  74269. - #undef __NR_socketpair
  74270. -#endif
  74271. -
  74272. -#endif /* bits/socket.h */
  74273. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket_type.h uClibc-git/libc/sysdeps/linux/sparc/bits/socket_type.h
  74274. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/socket_type.h 1970-01-01 01:00:00.000000000 +0100
  74275. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/socket_type.h 2014-02-03 12:32:56.000000000 +0100
  74276. @@ -0,0 +1,54 @@
  74277. +/* System-specific socket constants and types. Linux version.
  74278. + Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc.
  74279. + This file is part of the GNU C Library.
  74280. +
  74281. + The GNU C Library is free software; you can redistribute it and/or
  74282. + modify it under the terms of the GNU Lesser General Public
  74283. + License as published by the Free Software Foundation; either
  74284. + version 2.1 of the License, or (at your option) any later version.
  74285. +
  74286. + The GNU C Library is distributed in the hope that it will be useful,
  74287. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  74288. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  74289. + Lesser General Public License for more details.
  74290. +
  74291. + You should have received a copy of the GNU Lesser General Public
  74292. + License along with the GNU C Library; if not, see
  74293. + <http://www.gnu.org/licenses/>. */
  74294. +
  74295. +#ifndef _SYS_SOCKET_H
  74296. +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead."
  74297. +#endif
  74298. +
  74299. +/* Types of sockets. */
  74300. +enum __socket_type
  74301. +{
  74302. + SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
  74303. + byte streams. */
  74304. +#define SOCK_STREAM SOCK_STREAM
  74305. + SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
  74306. + of fixed maximum length. */
  74307. +#define SOCK_DGRAM SOCK_DGRAM
  74308. + SOCK_RAW = 3, /* Raw protocol interface. */
  74309. +#define SOCK_RAW SOCK_RAW
  74310. + SOCK_RDM = 4, /* Reliably-delivered messages. */
  74311. +#define SOCK_RDM SOCK_RDM
  74312. + SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
  74313. + datagrams of fixed maximum length. */
  74314. +#define SOCK_SEQPACKET SOCK_SEQPACKET
  74315. + SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
  74316. +#define SOCK_DCCP SOCK_DCCP
  74317. + SOCK_PACKET = 10, /* Linux specific way of getting packets
  74318. + at the dev level. For writing rarp and
  74319. + other similar things on the user level. */
  74320. +#define SOCK_PACKET SOCK_PACKET
  74321. +
  74322. + /* Flags to be ORed into the type parameter of socket and socketpair. */
  74323. +
  74324. + SOCK_CLOEXEC = 0x400000, /* Atomically set close-on-exec flag for the
  74325. + new descriptor(s). */
  74326. +#define SOCK_CLOEXEC SOCK_CLOEXEC
  74327. + SOCK_NONBLOCK = 0x004000 /* Atomically mark descriptor(s) as
  74328. + non-blocking. */
  74329. +#define SOCK_NONBLOCK SOCK_NONBLOCK
  74330. +};
  74331. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/sparc/bits/stackinfo.h
  74332. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  74333. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  74334. @@ -12,9 +12,8 @@
  74335. Lesser General Public License for more details.
  74336. You should have received a copy of the GNU Lesser General Public
  74337. - License along with the GNU C Library; if not, write to the Free
  74338. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74339. - 02111-1307 USA. */
  74340. + License along with the GNU C Library; if not, see
  74341. + <http://www.gnu.org/licenses/>. */
  74342. /* This file contains a bit of information about the stack allocation
  74343. of the processor. */
  74344. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stat.h uClibc-git/libc/sysdeps/linux/sparc/bits/stat.h
  74345. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  74346. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  74347. @@ -12,9 +12,8 @@
  74348. Lesser General Public License for more details.
  74349. You should have received a copy of the GNU Lesser General Public
  74350. - License along with the GNU C Library; if not, write to the Free
  74351. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74352. - 02111-1307 USA. */
  74353. + License along with the GNU C Library; if not, see
  74354. + <http://www.gnu.org/licenses/>. */
  74355. #ifndef _SYS_STAT_H
  74356. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  74357. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/termios.h uClibc-git/libc/sysdeps/linux/sparc/bits/termios.h
  74358. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/termios.h 2012-05-15 09:20:09.000000000 +0200
  74359. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/termios.h 2014-02-03 12:32:56.000000000 +0100
  74360. @@ -14,9 +14,8 @@
  74361. Lesser General Public License for more details.
  74362. You should have received a copy of the GNU Lesser General Public
  74363. - License along with the GNU C Library; if not, write to the Free
  74364. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74365. - 02111-1307 USA. */
  74366. + License along with the GNU C Library; if not, see
  74367. + <http://www.gnu.org/licenses/>. */
  74368. #ifndef _TERMIOS_H
  74369. # error "Never include <bits/termios.h> directly; use <termios.h> instead."
  74370. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/typesizes.h uClibc-git/libc/sysdeps/linux/sparc/bits/typesizes.h
  74371. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  74372. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/typesizes.h 2014-02-03 12:32:56.000000000 +0100
  74373. @@ -13,9 +13,8 @@
  74374. Lesser General Public License for more details.
  74375. You should have received a copy of the GNU Lesser General Public
  74376. - License along with the GNU C Library; if not, write to the Free
  74377. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74378. - 02111-1307 USA. */
  74379. + License along with the GNU C Library; if not, see
  74380. + <http://www.gnu.org/licenses/>. */
  74381. #ifndef _BITS_TYPES_H
  74382. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  74383. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h
  74384. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  74385. +++ uClibc-git/libc/sysdeps/linux/sparc/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  74386. @@ -11,8 +11,8 @@
  74387. /* can your target use syscall6() for mmap ? */
  74388. #define __UCLIBC_MMAP_HAS_6_ARGS__
  74389. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  74390. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  74391. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  74392. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  74393. /* does your target have a broken create_module() ? */
  74394. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  74395. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/brk.c uClibc-git/libc/sysdeps/linux/sparc/brk.c
  74396. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/brk.c 2012-05-15 09:20:09.000000000 +0200
  74397. +++ uClibc-git/libc/sysdeps/linux/sparc/brk.c 2014-02-03 12:32:56.000000000 +0100
  74398. @@ -13,9 +13,8 @@
  74399. Lesser General Public License for more details.
  74400. You should have received a copy of the GNU Lesser General Public
  74401. - License along with the GNU C Library; if not, write to the Free
  74402. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74403. - 02111-1307 USA. */
  74404. + License along with the GNU C Library; if not, see
  74405. + <http://www.gnu.org/licenses/>. */
  74406. #include <errno.h>
  74407. #include <unistd.h>
  74408. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/clone.S uClibc-git/libc/sysdeps/linux/sparc/clone.S
  74409. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/clone.S 2012-05-15 09:20:09.000000000 +0200
  74410. +++ uClibc-git/libc/sysdeps/linux/sparc/clone.S 2014-02-03 12:32:56.000000000 +0100
  74411. @@ -14,9 +14,8 @@
  74412. Lesser General Public License for more details.
  74413. You should have received a copy of the GNU Lesser General Public
  74414. - License along with the GNU C Library; if not, write to the Free
  74415. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74416. - 02111-1307 USA. */
  74417. + License along with the GNU C Library; if not, see
  74418. + <http://www.gnu.org/licenses/>. */
  74419. /* clone() is even more special than fork() as it mucks with stacks
  74420. and invokes a function in the right context after its all over. */
  74421. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/crt1.S uClibc-git/libc/sysdeps/linux/sparc/crt1.S
  74422. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/crt1.S 2012-05-15 09:20:09.000000000 +0200
  74423. +++ uClibc-git/libc/sysdeps/linux/sparc/crt1.S 2014-02-03 12:32:56.000000000 +0100
  74424. @@ -31,9 +31,8 @@
  74425. Lesser General Public License for more details.
  74426. You should have received a copy of the GNU Lesser General Public
  74427. - License along with the GNU C Library; if not, write to the Free
  74428. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74429. - 02111-1307 USA. */
  74430. + License along with the GNU C Library; if not, see
  74431. + <http://www.gnu.org/licenses/>. */
  74432. /* Originally based on glibc's sysdeps/sparc/sparc{32,64}/elf/start.S */
  74433. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fork.S uClibc-git/libc/sysdeps/linux/sparc/fork.S
  74434. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fork.S 2012-05-15 09:20:09.000000000 +0200
  74435. +++ uClibc-git/libc/sysdeps/linux/sparc/fork.S 2014-02-03 12:32:56.000000000 +0100
  74436. @@ -13,9 +13,8 @@
  74437. Lesser General Public License for more details.
  74438. You should have received a copy of the GNU Lesser General Public
  74439. - License along with the GNU C Library; if not, write to the Free
  74440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74441. - 02111-1307 USA. */
  74442. + License along with the GNU C Library; if not, see
  74443. + <http://www.gnu.org/licenses/>. */
  74444. /* Code taken from glibc2.2.2/sysdeps/unix/sysv/linux/sparc/vfork.S */
  74445. @@ -23,11 +22,14 @@
  74446. #include <sys/syscall.h>
  74447. .text
  74448. -.global __libc_fork
  74449. -.type __libc_fork,%function
  74450. +.global fork
  74451. +#ifdef __UCLIBC_HAS_THREADS__
  74452. +.weak fork
  74453. +#endif
  74454. +.type fork,%function
  74455. .align 4
  74456. -__libc_fork:
  74457. +fork:
  74458. mov __NR_fork, %g1
  74459. ta 0x10
  74460. bcc,a 9000f
  74461. @@ -44,6 +46,8 @@
  74462. retl
  74463. and %o0, %o1, %o0
  74464. -.size __libc_fork,.-__libc_fork
  74465. -weak_alias(__libc_fork,fork)
  74466. -libc_hidden_weak(fork)
  74467. +.size fork,.-fork
  74468. +#ifdef __UCLIBC_HAS_THREADS__
  74469. +strong_alias(fork,__libc_fork)
  74470. +#endif
  74471. +libc_hidden_def(fork)
  74472. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fpu_control.h uClibc-git/libc/sysdeps/linux/sparc/fpu_control.h
  74473. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  74474. +++ uClibc-git/libc/sysdeps/linux/sparc/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  74475. @@ -14,9 +14,8 @@
  74476. Lesser General Public License for more details.
  74477. You should have received a copy of the GNU Lesser General Public
  74478. - License along with the GNU C Library; if not, write to the Free
  74479. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74480. - 02111-1307 USA. */
  74481. + License along with the GNU C Library; if not, see
  74482. + <http://www.gnu.org/licenses/>. */
  74483. #ifndef _FPU_CONTROL_H
  74484. #define _FPU_CONTROL_H 1
  74485. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/sparc/jmpbuf-offsets.h
  74486. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  74487. +++ uClibc-git/libc/sysdeps/linux/sparc/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  74488. @@ -0,0 +1,29 @@
  74489. +/* Private macros for accessing __jmp_buf contents. SPARC version.
  74490. + Copyright (C) 2006 Free Software Foundation, Inc.
  74491. + This file is part of the GNU C Library.
  74492. +
  74493. + The GNU C Library is free software; you can redistribute it and/or
  74494. + modify it under the terms of the GNU Lesser General Public
  74495. + License as published by the Free Software Foundation; either
  74496. + version 2.1 of the License, or (at your option) any later version.
  74497. +
  74498. + The GNU C Library is distributed in the hope that it will be useful,
  74499. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  74500. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  74501. + Lesser General Public License for more details.
  74502. +
  74503. + You should have received a copy of the GNU Lesser General Public
  74504. + License along with the GNU C Library; if not, see
  74505. + <http://www.gnu.org/licenses/>. */
  74506. +
  74507. +#include <bits/wordsize.h>
  74508. +
  74509. +#if __WORDSIZE == 64
  74510. +#define O_mask_was_saved 512
  74511. +#define O_gregs 32
  74512. +#define O_g1 (O_gregs + 4*8)
  74513. +#else
  74514. +#define JB_SP 0
  74515. +#define JB_FP 1
  74516. +#define JB_PC 2
  74517. +#endif
  74518. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/sparc/jmpbuf-unwind.h
  74519. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  74520. +++ uClibc-git/libc/sysdeps/linux/sparc/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  74521. @@ -0,0 +1,31 @@
  74522. +/*
  74523. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  74524. + *
  74525. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  74526. + */
  74527. +#include <setjmp.h>
  74528. +#include <jmpbuf-offsets.h>
  74529. +
  74530. +#if __WORDSIZE == 64
  74531. +
  74532. +/* Test if longjmp to JMPBUF would unwind the frame
  74533. + containing a local variable at ADDRESS. */
  74534. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  74535. + ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp)
  74536. +
  74537. +#else
  74538. +
  74539. +/* Test if longjmp to JMPBUF would unwind the frame
  74540. + containing a local variable at ADDRESS. */
  74541. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  74542. + ((int) (address) < (jmpbuf)[JB_SP])
  74543. +
  74544. +#endif
  74545. +
  74546. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  74547. +#if defined(__arch64__)
  74548. +#include "sparc64/jmpbuf-unwind.h"
  74549. +#else
  74550. +#include "sparc32/jmpbuf-unwind.h"
  74551. +#endif
  74552. +#endif
  74553. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/__longjmp.S uClibc-git/libc/sysdeps/linux/sparc/__longjmp.S
  74554. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  74555. +++ uClibc-git/libc/sysdeps/linux/sparc/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  74556. @@ -12,16 +12,11 @@
  74557. Lesser General Public License for more details.
  74558. You should have received a copy of the GNU Lesser General Public
  74559. - License along with the GNU C Library; if not, write to the Free
  74560. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74561. - 02111-1307 USA. */
  74562. + License along with the GNU C Library; if not, see
  74563. + <http://www.gnu.org/licenses/>. */
  74564. -#include <features.h>
  74565. -#include <sys/syscall.h>
  74566. +#include <jmpbuf-offsets.h>
  74567. -#define _ASM 1
  74568. -#define _SETJMP_H
  74569. -#include <bits/setjmp.h>
  74570. #define ENV(base,reg) [%base + (reg * 4)]
  74571. #define ST_FLUSH_WINDOWS 3
  74572. #define RW_FP [%fp + 0x48]
  74573. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/Makefile.arch uClibc-git/libc/sysdeps/linux/sparc/Makefile.arch
  74574. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  74575. +++ uClibc-git/libc/sysdeps/linux/sparc/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  74576. @@ -5,25 +5,23 @@
  74577. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  74578. #
  74579. -CSRC := brk.c __syscall_error.c sigaction.c
  74580. +CSRC-y := brk.c __syscall_error.c sigaction.c
  74581. -SSRC := \
  74582. +SSRC-y := \
  74583. __longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \
  74584. syscall.S urem.S udiv.S umul.S sdiv.S rem.S pipe.S
  74585. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  74586. -SSRC += fork.S vfork.S clone.S
  74587. -endif
  74588. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += fork.S vfork.S clone.S
  74589. # check weather __LONG_DOUBLE_128__ is defined (long double support)
  74590. UCLIBC_SPARC_HAS_LONG_DOUBLE=$(shell if [ "x`$(CC) -E -dM -xc /dev/null 2>&1 | grep __LONG_DOUBLE_128__`" != "x" ]; then echo "y"; fi)
  74591. ifeq ($(UCLIBC_SPARC_HAS_LONG_DOUBLE),y)
  74592. -CSRC += $(foreach f, \
  74593. +CSRC-y += $(addprefix soft-fp/, \
  74594. q_div.c q_fle.c q_mul.c q_qtoll.c q_stoq.c \
  74595. mp_clz_tab.c q_dtoq.c q_flt.c q_neg.c q_qtos.c q_sub.c \
  74596. q_add.c q_feq.c q_fne.c q_qtod.c q_qtou.c q_ulltoq.c \
  74597. q_cmp.c q_fge.c q_itoq.c q_qtoull.c q_util.c \
  74598. - q_cmpe.c q_fgt.c q_lltoq.c q_qtoi.c q_sqrt.c q_utoq.c, soft-fp/$(f))
  74599. + q_cmpe.c q_fgt.c q_lltoq.c q_qtoi.c q_sqrt.c q_utoq.c)
  74600. else
  74601. -CSRC += qp_ops.c
  74602. +CSRC-y += qp_ops.c
  74603. endif
  74604. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/pipe.S uClibc-git/libc/sysdeps/linux/sparc/pipe.S
  74605. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/pipe.S 2012-05-15 09:20:09.000000000 +0200
  74606. +++ uClibc-git/libc/sysdeps/linux/sparc/pipe.S 2014-02-03 12:32:56.000000000 +0100
  74607. @@ -13,10 +13,9 @@
  74608. Lesser General Public License for more details.
  74609. You should have received a copy of the GNU Lesser General Public
  74610. - License along with the GNU C Library; if not, write to the Free
  74611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74612. - 02111-1307 USA.
  74613. -
  74614. + License along with the GNU C Library; if not, see
  74615. + <http://www.gnu.org/licenses/>.
  74616. +
  74617. Ported to uClibc by:
  74618. Austin Foxley, Ceton Corporation <austinf@cetoncorp.com>
  74619. */
  74620. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/setjmp.S uClibc-git/libc/sysdeps/linux/sparc/setjmp.S
  74621. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  74622. +++ uClibc-git/libc/sysdeps/linux/sparc/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  74623. @@ -12,15 +12,11 @@
  74624. Lesser General Public License for more details.
  74625. You should have received a copy of the GNU Lesser General Public
  74626. - License along with the GNU C Library; if not, write to the Free
  74627. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74628. - 02111-1307 USA. */
  74629. + License along with the GNU C Library; if not, see
  74630. + <http://www.gnu.org/licenses/>. */
  74631. -#include <sys/syscall.h>
  74632. +#include <jmpbuf-offsets.h>
  74633. -#define _ASM 1
  74634. -#define _SETJMP_H
  74635. -#include <bits/setjmp.h>
  74636. #define ST_FLUSH_WINDOWS 3
  74637. .global _setjmp
  74638. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sigaction.c uClibc-git/libc/sysdeps/linux/sparc/sigaction.c
  74639. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  74640. +++ uClibc-git/libc/sysdeps/linux/sparc/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  74641. @@ -14,9 +14,8 @@
  74642. Lesser General Public License for more details.
  74643. You should have received a copy of the GNU Lesser General Public
  74644. - License along with the GNU C Library; if not, write to the Free
  74645. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74646. - 02111-1307 USA.
  74647. + License along with the GNU C Library; if not, see
  74648. + <http://www.gnu.org/licenses/>.
  74649. Ported to uClibc from glibc: 090520:
  74650. Jan Buchholz, KIP, Uni Heidelberg <jan.buchholz@kip.uni-heidelberg.de>
  74651. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/double.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/double.h
  74652. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/double.h 2012-05-15 09:20:09.000000000 +0200
  74653. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/double.h 2014-02-03 12:32:56.000000000 +0100
  74654. @@ -27,9 +27,8 @@
  74655. Lesser General Public License for more details.
  74656. You should have received a copy of the GNU Lesser General Public
  74657. - License along with the GNU C Library; if not, write to the Free
  74658. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74659. - MA 02110-1301, USA. */
  74660. + License along with the GNU C Library; if not, see
  74661. + <http://www.gnu.org/licenses/>. */
  74662. #if _FP_W_TYPE_SIZE < 32
  74663. #error "Here's a nickel kid. Go buy yourself a real computer."
  74664. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/extended.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/extended.h
  74665. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/extended.h 2012-05-15 09:20:09.000000000 +0200
  74666. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/extended.h 2014-02-03 12:32:56.000000000 +0100
  74667. @@ -24,9 +24,8 @@
  74668. Lesser General Public License for more details.
  74669. You should have received a copy of the GNU Lesser General Public
  74670. - License along with the GNU C Library; if not, write to the Free
  74671. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74672. - MA 02110-1301, USA. */
  74673. + License along with the GNU C Library; if not, see
  74674. + <http://www.gnu.org/licenses/>. */
  74675. #if _FP_W_TYPE_SIZE < 32
  74676. #error "Here's a nickel, kid. Go buy yourself a real computer."
  74677. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/longlong.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/longlong.h
  74678. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/longlong.h 2012-05-15 09:20:09.000000000 +0200
  74679. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/longlong.h 2014-02-03 12:32:56.000000000 +0100
  74680. @@ -15,9 +15,8 @@
  74681. Lesser General Public License for more details.
  74682. You should have received a copy of the GNU Lesser General Public
  74683. - License along with the GNU C Library; if not, write to the Free
  74684. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74685. - 02111-1307 USA. */
  74686. + License along with the GNU C Library; if not, see
  74687. + <http://www.gnu.org/licenses/>. */
  74688. /* You have to define the following before including this file:
  74689. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c
  74690. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c 2012-05-15 09:20:09.000000000 +0200
  74691. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/mp_clz_tab.c 2014-02-03 12:32:56.000000000 +0100
  74692. @@ -14,9 +14,8 @@
  74693. Lesser General Public License for more details.
  74694. You should have received a copy of the GNU Lesser General Public
  74695. - License along with the GNU C Library; if not, write to the Free
  74696. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74697. - 02111-1307 USA. */
  74698. + License along with the GNU C Library; if not, see
  74699. + <http://www.gnu.org/licenses/>. */
  74700. #if 0
  74701. #include <gmp.h>
  74702. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-1.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-1.h
  74703. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-1.h 2012-05-15 09:20:09.000000000 +0200
  74704. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-1.h 2014-02-03 12:32:56.000000000 +0100
  74705. @@ -27,9 +27,8 @@
  74706. Lesser General Public License for more details.
  74707. You should have received a copy of the GNU Lesser General Public
  74708. - License along with the GNU C Library; if not, write to the Free
  74709. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74710. - MA 02110-1301, USA. */
  74711. + License along with the GNU C Library; if not, see
  74712. + <http://www.gnu.org/licenses/>. */
  74713. #define _FP_FRAC_DECL_1(X) _FP_W_TYPE X##_f
  74714. #define _FP_FRAC_COPY_1(D,S) (D##_f = S##_f)
  74715. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-2.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-2.h
  74716. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-2.h 2012-05-15 09:20:09.000000000 +0200
  74717. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-2.h 2014-02-03 12:32:56.000000000 +0100
  74718. @@ -27,9 +27,8 @@
  74719. Lesser General Public License for more details.
  74720. You should have received a copy of the GNU Lesser General Public
  74721. - License along with the GNU C Library; if not, write to the Free
  74722. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74723. - MA 02110-1301, USA. */
  74724. + License along with the GNU C Library; if not, see
  74725. + <http://www.gnu.org/licenses/>. */
  74726. #define _FP_FRAC_DECL_2(X) _FP_W_TYPE X##_f0, X##_f1
  74727. #define _FP_FRAC_COPY_2(D,S) (D##_f0 = S##_f0, D##_f1 = S##_f1)
  74728. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-4.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-4.h
  74729. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-4.h 2012-05-15 09:20:09.000000000 +0200
  74730. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-4.h 2014-02-03 12:32:56.000000000 +0100
  74731. @@ -27,9 +27,8 @@
  74732. Lesser General Public License for more details.
  74733. You should have received a copy of the GNU Lesser General Public
  74734. - License along with the GNU C Library; if not, write to the Free
  74735. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74736. - MA 02110-1301, USA. */
  74737. + License along with the GNU C Library; if not, see
  74738. + <http://www.gnu.org/licenses/>. */
  74739. #define _FP_FRAC_DECL_4(X) _FP_W_TYPE X##_f[4]
  74740. #define _FP_FRAC_COPY_4(D,S) \
  74741. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-8.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-8.h
  74742. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-8.h 2012-05-15 09:20:09.000000000 +0200
  74743. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-8.h 2014-02-03 12:32:56.000000000 +0100
  74744. @@ -26,9 +26,8 @@
  74745. Lesser General Public License for more details.
  74746. You should have received a copy of the GNU Lesser General Public
  74747. - License along with the GNU C Library; if not, write to the Free
  74748. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74749. - MA 02110-1301, USA. */
  74750. + License along with the GNU C Library; if not, see
  74751. + <http://www.gnu.org/licenses/>. */
  74752. /* We need just a few things from here for op-4, if we ever need some
  74753. other macros, they can be added. */
  74754. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-common.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-common.h
  74755. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/op-common.h 2012-05-15 09:20:09.000000000 +0200
  74756. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/op-common.h 2014-02-03 12:32:56.000000000 +0100
  74757. @@ -26,9 +26,8 @@
  74758. Lesser General Public License for more details.
  74759. You should have received a copy of the GNU Lesser General Public
  74760. - License along with the GNU C Library; if not, write to the Free
  74761. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  74762. - MA 02110-1301, USA. */
  74763. + License along with the GNU C Library; if not, see
  74764. + <http://www.gnu.org/licenses/>. */
  74765. #define _FP_DECL(wc, X) \
  74766. _FP_I_TYPE X##_c __attribute__((unused)), X##_s, X##_e; \
  74767. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_add.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_add.c
  74768. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_add.c 2012-05-15 09:20:09.000000000 +0200
  74769. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_add.c 2014-02-03 12:32:56.000000000 +0100
  74770. @@ -16,9 +16,8 @@
  74771. Lesser General Public License for more details.
  74772. You should have received a copy of the GNU Lesser General Public
  74773. - License along with the GNU C Library; if not, write to the Free
  74774. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74775. - 02111-1307 USA. */
  74776. + License along with the GNU C Library; if not, see
  74777. + <http://www.gnu.org/licenses/>. */
  74778. #include "soft-fp.h"
  74779. #include "quad.h"
  74780. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c
  74781. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c 2012-05-15 09:20:09.000000000 +0200
  74782. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_cmp.c 2014-02-03 12:32:56.000000000 +0100
  74783. @@ -16,9 +16,8 @@
  74784. Lesser General Public License for more details.
  74785. You should have received a copy of the GNU Lesser General Public
  74786. - License along with the GNU C Library; if not, write to the Free
  74787. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74788. - 02111-1307 USA. */
  74789. + License along with the GNU C Library; if not, see
  74790. + <http://www.gnu.org/licenses/>. */
  74791. #include "soft-fp.h"
  74792. #include "quad.h"
  74793. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c
  74794. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c 2012-05-15 09:20:09.000000000 +0200
  74795. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_cmpe.c 2014-02-03 12:32:56.000000000 +0100
  74796. @@ -17,9 +17,8 @@
  74797. Lesser General Public License for more details.
  74798. You should have received a copy of the GNU Lesser General Public
  74799. - License along with the GNU C Library; if not, write to the Free
  74800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74801. - 02111-1307 USA. */
  74802. + License along with the GNU C Library; if not, see
  74803. + <http://www.gnu.org/licenses/>. */
  74804. #include "soft-fp.h"
  74805. #include "quad.h"
  74806. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_div.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_div.c
  74807. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_div.c 2012-05-15 09:20:09.000000000 +0200
  74808. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_div.c 2014-02-03 12:32:56.000000000 +0100
  74809. @@ -16,9 +16,8 @@
  74810. Lesser General Public License for more details.
  74811. You should have received a copy of the GNU Lesser General Public
  74812. - License along with the GNU C Library; if not, write to the Free
  74813. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74814. - 02111-1307 USA. */
  74815. + License along with the GNU C Library; if not, see
  74816. + <http://www.gnu.org/licenses/>. */
  74817. #include "soft-fp.h"
  74818. #include "quad.h"
  74819. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c
  74820. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c 2012-05-15 09:20:09.000000000 +0200
  74821. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_dtoq.c 2014-02-03 12:32:56.000000000 +0100
  74822. @@ -16,9 +16,8 @@
  74823. Lesser General Public License for more details.
  74824. You should have received a copy of the GNU Lesser General Public
  74825. - License along with the GNU C Library; if not, write to the Free
  74826. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74827. - 02111-1307 USA. */
  74828. + License along with the GNU C Library; if not, see
  74829. + <http://www.gnu.org/licenses/>. */
  74830. #include "soft-fp.h"
  74831. #include "double.h"
  74832. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_feq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_feq.c
  74833. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_feq.c 2012-05-15 09:20:09.000000000 +0200
  74834. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_feq.c 2014-02-03 12:32:56.000000000 +0100
  74835. @@ -16,9 +16,8 @@
  74836. Lesser General Public License for more details.
  74837. You should have received a copy of the GNU Lesser General Public
  74838. - License along with the GNU C Library; if not, write to the Free
  74839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74840. - 02111-1307 USA. */
  74841. + License along with the GNU C Library; if not, see
  74842. + <http://www.gnu.org/licenses/>. */
  74843. #include "soft-fp.h"
  74844. #include "quad.h"
  74845. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fge.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fge.c
  74846. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fge.c 2012-05-15 09:20:09.000000000 +0200
  74847. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fge.c 2014-02-03 12:32:56.000000000 +0100
  74848. @@ -16,9 +16,8 @@
  74849. Lesser General Public License for more details.
  74850. You should have received a copy of the GNU Lesser General Public
  74851. - License along with the GNU C Library; if not, write to the Free
  74852. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74853. - 02111-1307 USA. */
  74854. + License along with the GNU C Library; if not, see
  74855. + <http://www.gnu.org/licenses/>. */
  74856. #include "soft-fp.h"
  74857. #include "quad.h"
  74858. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c
  74859. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c 2012-05-15 09:20:09.000000000 +0200
  74860. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fgt.c 2014-02-03 12:32:56.000000000 +0100
  74861. @@ -16,9 +16,8 @@
  74862. Lesser General Public License for more details.
  74863. You should have received a copy of the GNU Lesser General Public
  74864. - License along with the GNU C Library; if not, write to the Free
  74865. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74866. - 02111-1307 USA. */
  74867. + License along with the GNU C Library; if not, see
  74868. + <http://www.gnu.org/licenses/>. */
  74869. #include "soft-fp.h"
  74870. #include "quad.h"
  74871. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fle.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fle.c
  74872. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fle.c 2012-05-15 09:20:09.000000000 +0200
  74873. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fle.c 2014-02-03 12:32:56.000000000 +0100
  74874. @@ -16,9 +16,8 @@
  74875. Lesser General Public License for more details.
  74876. You should have received a copy of the GNU Lesser General Public
  74877. - License along with the GNU C Library; if not, write to the Free
  74878. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74879. - 02111-1307 USA. */
  74880. + License along with the GNU C Library; if not, see
  74881. + <http://www.gnu.org/licenses/>. */
  74882. #include "soft-fp.h"
  74883. #include "quad.h"
  74884. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_flt.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_flt.c
  74885. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_flt.c 2012-05-15 09:20:09.000000000 +0200
  74886. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_flt.c 2014-02-03 12:32:56.000000000 +0100
  74887. @@ -16,9 +16,8 @@
  74888. Lesser General Public License for more details.
  74889. You should have received a copy of the GNU Lesser General Public
  74890. - License along with the GNU C Library; if not, write to the Free
  74891. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74892. - 02111-1307 USA. */
  74893. + License along with the GNU C Library; if not, see
  74894. + <http://www.gnu.org/licenses/>. */
  74895. #include "soft-fp.h"
  74896. #include "quad.h"
  74897. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fne.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fne.c
  74898. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_fne.c 2012-05-15 09:20:09.000000000 +0200
  74899. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_fne.c 2014-02-03 12:32:56.000000000 +0100
  74900. @@ -16,9 +16,8 @@
  74901. Lesser General Public License for more details.
  74902. You should have received a copy of the GNU Lesser General Public
  74903. - License along with the GNU C Library; if not, write to the Free
  74904. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74905. - 02111-1307 USA. */
  74906. + License along with the GNU C Library; if not, see
  74907. + <http://www.gnu.org/licenses/>. */
  74908. #include "soft-fp.h"
  74909. #include "quad.h"
  74910. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c
  74911. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c 2012-05-15 09:20:09.000000000 +0200
  74912. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_itoq.c 2014-02-03 12:32:56.000000000 +0100
  74913. @@ -16,9 +16,8 @@
  74914. Lesser General Public License for more details.
  74915. You should have received a copy of the GNU Lesser General Public
  74916. - License along with the GNU C Library; if not, write to the Free
  74917. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74918. - 02111-1307 USA. */
  74919. + License along with the GNU C Library; if not, see
  74920. + <http://www.gnu.org/licenses/>. */
  74921. #include "soft-fp.h"
  74922. #include "quad.h"
  74923. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c
  74924. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c 2012-05-15 09:20:09.000000000 +0200
  74925. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_lltoq.c 2014-02-03 12:32:56.000000000 +0100
  74926. @@ -16,9 +16,8 @@
  74927. Lesser General Public License for more details.
  74928. You should have received a copy of the GNU Lesser General Public
  74929. - License along with the GNU C Library; if not, write to the Free
  74930. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74931. - 02111-1307 USA. */
  74932. + License along with the GNU C Library; if not, see
  74933. + <http://www.gnu.org/licenses/>. */
  74934. #include "soft-fp.h"
  74935. #include "quad.h"
  74936. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_mul.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_mul.c
  74937. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_mul.c 2012-05-15 09:20:09.000000000 +0200
  74938. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_mul.c 2014-02-03 12:32:56.000000000 +0100
  74939. @@ -16,9 +16,8 @@
  74940. Lesser General Public License for more details.
  74941. You should have received a copy of the GNU Lesser General Public
  74942. - License along with the GNU C Library; if not, write to the Free
  74943. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74944. - 02111-1307 USA. */
  74945. + License along with the GNU C Library; if not, see
  74946. + <http://www.gnu.org/licenses/>. */
  74947. #include "soft-fp.h"
  74948. #include "quad.h"
  74949. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_neg.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_neg.c
  74950. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_neg.c 2012-05-15 09:20:09.000000000 +0200
  74951. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_neg.c 2014-02-03 12:32:56.000000000 +0100
  74952. @@ -16,9 +16,8 @@
  74953. Lesser General Public License for more details.
  74954. You should have received a copy of the GNU Lesser General Public
  74955. - License along with the GNU C Library; if not, write to the Free
  74956. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74957. - 02111-1307 USA. */
  74958. + License along with the GNU C Library; if not, see
  74959. + <http://www.gnu.org/licenses/>. */
  74960. #include "soft-fp.h"
  74961. #include "quad.h"
  74962. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c
  74963. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c 2012-05-15 09:20:09.000000000 +0200
  74964. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtod.c 2014-02-03 12:32:56.000000000 +0100
  74965. @@ -16,9 +16,8 @@
  74966. Lesser General Public License for more details.
  74967. You should have received a copy of the GNU Lesser General Public
  74968. - License along with the GNU C Library; if not, write to the Free
  74969. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74970. - 02111-1307 USA. */
  74971. + License along with the GNU C Library; if not, see
  74972. + <http://www.gnu.org/licenses/>. */
  74973. #include "soft-fp.h"
  74974. #include "double.h"
  74975. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c
  74976. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c 2012-05-15 09:20:09.000000000 +0200
  74977. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtoi.c 2014-02-03 12:32:56.000000000 +0100
  74978. @@ -16,9 +16,8 @@
  74979. Lesser General Public License for more details.
  74980. You should have received a copy of the GNU Lesser General Public
  74981. - License along with the GNU C Library; if not, write to the Free
  74982. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74983. - 02111-1307 USA. */
  74984. + License along with the GNU C Library; if not, see
  74985. + <http://www.gnu.org/licenses/>. */
  74986. #define FP_ROUNDMODE FP_RND_ZERO
  74987. #include "soft-fp.h"
  74988. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c
  74989. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c 2012-05-15 09:20:09.000000000 +0200
  74990. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtoll.c 2014-02-03 12:32:56.000000000 +0100
  74991. @@ -16,9 +16,8 @@
  74992. Lesser General Public License for more details.
  74993. You should have received a copy of the GNU Lesser General Public
  74994. - License along with the GNU C Library; if not, write to the Free
  74995. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  74996. - 02111-1307 USA. */
  74997. + License along with the GNU C Library; if not, see
  74998. + <http://www.gnu.org/licenses/>. */
  74999. #define FP_ROUNDMODE FP_RND_ZERO
  75000. #include "soft-fp.h"
  75001. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c
  75002. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c 2012-05-15 09:20:09.000000000 +0200
  75003. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtos.c 2014-02-03 12:32:56.000000000 +0100
  75004. @@ -16,9 +16,8 @@
  75005. Lesser General Public License for more details.
  75006. You should have received a copy of the GNU Lesser General Public
  75007. - License along with the GNU C Library; if not, write to the Free
  75008. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75009. - 02111-1307 USA. */
  75010. + License along with the GNU C Library; if not, see
  75011. + <http://www.gnu.org/licenses/>. */
  75012. #include "soft-fp.h"
  75013. #include "single.h"
  75014. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c
  75015. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c 2012-05-15 09:20:09.000000000 +0200
  75016. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtou.c 2014-02-03 12:32:56.000000000 +0100
  75017. @@ -16,9 +16,8 @@
  75018. Lesser General Public License for more details.
  75019. You should have received a copy of the GNU Lesser General Public
  75020. - License along with the GNU C Library; if not, write to the Free
  75021. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75022. - 02111-1307 USA. */
  75023. + License along with the GNU C Library; if not, see
  75024. + <http://www.gnu.org/licenses/>. */
  75025. #define FP_ROUNDMODE FP_RND_ZERO
  75026. #include "soft-fp.h"
  75027. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c
  75028. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c 2012-05-15 09:20:09.000000000 +0200
  75029. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_qtoull.c 2014-02-03 12:32:56.000000000 +0100
  75030. @@ -16,9 +16,8 @@
  75031. Lesser General Public License for more details.
  75032. You should have received a copy of the GNU Lesser General Public
  75033. - License along with the GNU C Library; if not, write to the Free
  75034. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75035. - 02111-1307 USA. */
  75036. + License along with the GNU C Library; if not, see
  75037. + <http://www.gnu.org/licenses/>. */
  75038. #define FP_ROUNDMODE FP_RND_ZERO
  75039. #include "soft-fp.h"
  75040. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c
  75041. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c 2012-05-15 09:20:09.000000000 +0200
  75042. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_sqrt.c 2014-02-03 12:32:56.000000000 +0100
  75043. @@ -16,9 +16,8 @@
  75044. Lesser General Public License for more details.
  75045. You should have received a copy of the GNU Lesser General Public
  75046. - License along with the GNU C Library; if not, write to the Free
  75047. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75048. - 02111-1307 USA. */
  75049. + License along with the GNU C Library; if not, see
  75050. + <http://www.gnu.org/licenses/>. */
  75051. #include "soft-fp.h"
  75052. #include "quad.h"
  75053. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c
  75054. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c 2012-05-15 09:20:09.000000000 +0200
  75055. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_stoq.c 2014-02-03 12:32:56.000000000 +0100
  75056. @@ -16,9 +16,8 @@
  75057. Lesser General Public License for more details.
  75058. You should have received a copy of the GNU Lesser General Public
  75059. - License along with the GNU C Library; if not, write to the Free
  75060. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75061. - 02111-1307 USA. */
  75062. + License along with the GNU C Library; if not, see
  75063. + <http://www.gnu.org/licenses/>. */
  75064. #include "soft-fp.h"
  75065. #include "single.h"
  75066. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sub.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_sub.c
  75067. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_sub.c 2012-05-15 09:20:09.000000000 +0200
  75068. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_sub.c 2014-02-03 12:32:56.000000000 +0100
  75069. @@ -16,9 +16,8 @@
  75070. Lesser General Public License for more details.
  75071. You should have received a copy of the GNU Lesser General Public
  75072. - License along with the GNU C Library; if not, write to the Free
  75073. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75074. - 02111-1307 USA. */
  75075. + License along with the GNU C Library; if not, see
  75076. + <http://www.gnu.org/licenses/>. */
  75077. #include "soft-fp.h"
  75078. #include "quad.h"
  75079. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/quad.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/quad.h
  75080. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/quad.h 2012-05-15 09:20:09.000000000 +0200
  75081. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/quad.h 2014-02-03 12:32:56.000000000 +0100
  75082. @@ -27,9 +27,8 @@
  75083. Lesser General Public License for more details.
  75084. You should have received a copy of the GNU Lesser General Public
  75085. - License along with the GNU C Library; if not, write to the Free
  75086. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75087. - MA 02110-1301, USA. */
  75088. + License along with the GNU C Library; if not, see
  75089. + <http://www.gnu.org/licenses/>. */
  75090. #if _FP_W_TYPE_SIZE < 32
  75091. #error "Here's a nickel, kid. Go buy yourself a real computer."
  75092. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c
  75093. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c 2012-05-15 09:20:09.000000000 +0200
  75094. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_ulltoq.c 2014-02-03 12:32:56.000000000 +0100
  75095. @@ -16,9 +16,8 @@
  75096. Lesser General Public License for more details.
  75097. You should have received a copy of the GNU Lesser General Public
  75098. - License along with the GNU C Library; if not, write to the Free
  75099. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75100. - 02111-1307 USA. */
  75101. + License along with the GNU C Library; if not, see
  75102. + <http://www.gnu.org/licenses/>. */
  75103. #include "soft-fp.h"
  75104. #include "quad.h"
  75105. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_util.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_util.c
  75106. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_util.c 2012-05-15 09:20:09.000000000 +0200
  75107. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_util.c 2014-02-03 12:32:56.000000000 +0100
  75108. @@ -16,9 +16,8 @@
  75109. Lesser General Public License for more details.
  75110. You should have received a copy of the GNU Lesser General Public
  75111. - License along with the GNU C Library; if not, write to the Free
  75112. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75113. - 02111-1307 USA. */
  75114. + License along with the GNU C Library; if not, see
  75115. + <http://www.gnu.org/licenses/>. */
  75116. #include "soft-fp.h"
  75117. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c
  75118. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c 2012-05-15 09:20:09.000000000 +0200
  75119. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/q_utoq.c 2014-02-03 12:32:56.000000000 +0100
  75120. @@ -16,9 +16,8 @@
  75121. Lesser General Public License for more details.
  75122. You should have received a copy of the GNU Lesser General Public
  75123. - License along with the GNU C Library; if not, write to the Free
  75124. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75125. - 02111-1307 USA. */
  75126. + License along with the GNU C Library; if not, see
  75127. + <http://www.gnu.org/licenses/>. */
  75128. #include "soft-fp.h"
  75129. #include "quad.h"
  75130. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h
  75131. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h 2012-05-15 09:20:09.000000000 +0200
  75132. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/sfp-machine.h 2014-02-03 12:32:56.000000000 +0100
  75133. @@ -17,9 +17,8 @@
  75134. Lesser General Public License for more details.
  75135. You should have received a copy of the GNU Lesser General Public
  75136. - License along with the GNU C Library; if not, write to the Free
  75137. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75138. - 02111-1307 USA. */
  75139. + License along with the GNU C Library; if not, see
  75140. + <http://www.gnu.org/licenses/>. */
  75141. #include <fpu_control.h>
  75142. #include <stdlib.h>
  75143. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/single.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/single.h
  75144. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/single.h 2012-05-15 09:20:09.000000000 +0200
  75145. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/single.h 2014-02-03 12:32:56.000000000 +0100
  75146. @@ -27,9 +27,8 @@
  75147. Lesser General Public License for more details.
  75148. You should have received a copy of the GNU Lesser General Public
  75149. - License along with the GNU C Library; if not, write to the Free
  75150. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75151. - MA 02110-1301, USA. */
  75152. + License along with the GNU C Library; if not, see
  75153. + <http://www.gnu.org/licenses/>. */
  75154. #if _FP_W_TYPE_SIZE < 32
  75155. #error "Here's a nickel kid. Go buy yourself a real computer."
  75156. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h uClibc-git/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h
  75157. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h 2012-05-15 09:20:09.000000000 +0200
  75158. +++ uClibc-git/libc/sysdeps/linux/sparc/soft-fp/soft-fp.h 2014-02-03 12:32:56.000000000 +0100
  75159. @@ -27,9 +27,8 @@
  75160. Lesser General Public License for more details.
  75161. You should have received a copy of the GNU Lesser General Public
  75162. - License along with the GNU C Library; if not, write to the Free
  75163. - Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
  75164. - MA 02110-1301, USA. */
  75165. + License along with the GNU C Library; if not, see
  75166. + <http://www.gnu.org/licenses/>. */
  75167. #ifndef SOFT_FP_H
  75168. #define SOFT_FP_H
  75169. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sparcv9/clone.S uClibc-git/libc/sysdeps/linux/sparc/sparcv9/clone.S
  75170. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sparcv9/clone.S 2012-05-15 09:20:09.000000000 +0200
  75171. +++ uClibc-git/libc/sysdeps/linux/sparc/sparcv9/clone.S 2014-02-03 12:32:56.000000000 +0100
  75172. @@ -13,9 +13,8 @@
  75173. Lesser General Public License for more details.
  75174. You should have received a copy of the GNU Lesser General Public
  75175. - License along with the GNU C Library; if not, write to the Free
  75176. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75177. - 02111-1307 USA. */
  75178. + License along with the GNU C Library; if not, see
  75179. + <http://www.gnu.org/licenses/>. */
  75180. /* clone() is even more special than fork() as it mucks with stacks
  75181. and invokes a function in the right context after its all over. */
  75182. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/procfs.h uClibc-git/libc/sysdeps/linux/sparc/sys/procfs.h
  75183. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  75184. +++ uClibc-git/libc/sysdeps/linux/sparc/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  75185. @@ -12,9 +12,8 @@
  75186. Lesser General Public License for more details.
  75187. You should have received a copy of the GNU Lesser General Public
  75188. - License along with the GNU C Library; if not, write to the Free
  75189. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75190. - 02111-1307 USA. */
  75191. + License along with the GNU C Library; if not, see
  75192. + <http://www.gnu.org/licenses/>. */
  75193. #ifndef _SYS_PROCFS_H
  75194. #define _SYS_PROCFS_H 1
  75195. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ptrace.h uClibc-git/libc/sysdeps/linux/sparc/sys/ptrace.h
  75196. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  75197. +++ uClibc-git/libc/sysdeps/linux/sparc/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  75198. @@ -13,9 +13,8 @@
  75199. Lesser General Public License for more details.
  75200. You should have received a copy of the GNU Lesser General Public
  75201. - License along with the GNU C Library; if not, write to the Free
  75202. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75203. - 02111-1307 USA. */
  75204. + License along with the GNU C Library; if not, see
  75205. + <http://www.gnu.org/licenses/>. */
  75206. #ifndef _SYS_PTRACE_H
  75207. #define _SYS_PTRACE_H 1
  75208. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ucontext.h uClibc-git/libc/sysdeps/linux/sparc/sys/ucontext.h
  75209. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  75210. +++ uClibc-git/libc/sysdeps/linux/sparc/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  75211. @@ -12,9 +12,8 @@
  75212. Lesser General Public License for more details.
  75213. You should have received a copy of the GNU Lesser General Public
  75214. - License along with the GNU C Library; if not, write to the Free
  75215. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75216. - 02111-1307 USA. */
  75217. + License along with the GNU C Library; if not, see
  75218. + <http://www.gnu.org/licenses/>. */
  75219. #ifndef _SYS_UCONTEXT_H
  75220. #define _SYS_UCONTEXT_H 1
  75221. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/user.h uClibc-git/libc/sysdeps/linux/sparc/sys/user.h
  75222. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  75223. +++ uClibc-git/libc/sysdeps/linux/sparc/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  75224. @@ -12,9 +12,8 @@
  75225. Lesser General Public License for more details.
  75226. You should have received a copy of the GNU Lesser General Public
  75227. - License along with the GNU C Library; if not, write to the Free
  75228. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75229. - 02111-1307 USA. */
  75230. + License along with the GNU C Library; if not, see
  75231. + <http://www.gnu.org/licenses/>. */
  75232. #ifndef _SYS_USER_H
  75233. #define _SYS_USER_H 1
  75234. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/syscall.S uClibc-git/libc/sysdeps/linux/sparc/syscall.S
  75235. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/syscall.S 2012-05-15 09:20:09.000000000 +0200
  75236. +++ uClibc-git/libc/sysdeps/linux/sparc/syscall.S 2014-02-03 12:32:56.000000000 +0100
  75237. @@ -12,9 +12,8 @@
  75238. Lesser General Public License for more details.
  75239. You should have received a copy of the GNU Lesser General Public
  75240. - License along with the GNU C Library; if not, write to the Free
  75241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75242. - 02111-1307 USA. */
  75243. + License along with the GNU C Library; if not, see
  75244. + <http://www.gnu.org/licenses/>. */
  75245. #include <features.h>
  75246. #include <sys/syscall.h>
  75247. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/sparc/vfork.S uClibc-git/libc/sysdeps/linux/sparc/vfork.S
  75248. --- uClibc-0.9.33.2/libc/sysdeps/linux/sparc/vfork.S 2012-05-15 09:20:09.000000000 +0200
  75249. +++ uClibc-git/libc/sysdeps/linux/sparc/vfork.S 2014-02-03 12:32:56.000000000 +0100
  75250. @@ -13,9 +13,8 @@
  75251. Lesser General Public License for more details.
  75252. You should have received a copy of the GNU Lesser General Public
  75253. - License along with the GNU C Library; if not, write to the Free
  75254. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75255. - 02111-1307 USA. */
  75256. + License along with the GNU C Library; if not, see
  75257. + <http://www.gnu.org/licenses/>. */
  75258. /* Code taken from glibc2.2.2/sysdeps/unix/sysv/linux/sparc/vfork.S */
  75259. @@ -52,4 +51,4 @@
  75260. .size __vfork,.-__vfork
  75261. weak_alias(__vfork,vfork)
  75262. -libc_hidden_weak(vfork)
  75263. +libc_hidden_def(vfork)
  75264. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/fcntl.h uClibc-git/libc/sysdeps/linux/v850/bits/fcntl.h
  75265. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  75266. +++ uClibc-git/libc/sysdeps/linux/v850/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  75267. @@ -13,9 +13,8 @@
  75268. Lesser General Public License for more details.
  75269. You should have received a copy of the GNU Lesser General Public
  75270. - License along with the GNU C Library; if not, write to the Free
  75271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75272. - 02111-1307 USA. */
  75273. + License along with the GNU C Library; if not, see
  75274. + <http://www.gnu.org/licenses/>. */
  75275. #ifndef _FCNTL_H
  75276. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  75277. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/v850/bits/kernel_types.h
  75278. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  75279. +++ uClibc-git/libc/sysdeps/linux/v850/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  75280. @@ -41,6 +41,8 @@
  75281. typedef unsigned short __kernel_old_uid_t;
  75282. typedef unsigned short __kernel_old_gid_t;
  75283. typedef __kernel_dev_t __kernel_old_dev_t;
  75284. +typedef long __kernel_long_t;
  75285. +typedef unsigned long __kernel_ulong_t;
  75286. typedef struct {
  75287. #ifdef __USE_ALL
  75288. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/poll.h uClibc-git/libc/sysdeps/linux/v850/bits/poll.h
  75289. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/poll.h 2012-05-15 09:20:09.000000000 +0200
  75290. +++ uClibc-git/libc/sysdeps/linux/v850/bits/poll.h 2014-02-03 12:32:56.000000000 +0100
  75291. @@ -12,9 +12,8 @@
  75292. Lesser General Public License for more details.
  75293. You should have received a copy of the GNU Lesser General Public
  75294. - License along with the GNU C Library; if not, write to the Free
  75295. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75296. - 02111-1307 USA. */
  75297. + License along with the GNU C Library; if not, see
  75298. + <http://www.gnu.org/licenses/>. */
  75299. #ifndef _SYS_POLL_H
  75300. # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
  75301. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/setjmp.h uClibc-git/libc/sysdeps/linux/v850/bits/setjmp.h
  75302. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  75303. +++ uClibc-git/libc/sysdeps/linux/v850/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  75304. @@ -18,7 +18,6 @@
  75305. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  75306. #endif
  75307. -#ifndef _ASM
  75308. typedef struct
  75309. {
  75310. /* Stack pointer. */
  75311. @@ -30,13 +29,5 @@
  75312. /* Callee-saved registers r2 and r20-r29. */
  75313. int __regs[11];
  75314. } __jmp_buf[1];
  75315. -#endif
  75316. -
  75317. -#define JB_SIZE (4 * 13)
  75318. -
  75319. -/* Test if longjmp to JMPBUF would unwind the frame
  75320. - containing a local variable at ADDRESS. */
  75321. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  75322. - ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  75323. #endif /* bits/setjmp.h */
  75324. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h
  75325. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  75326. +++ uClibc-git/libc/sysdeps/linux/v850/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  75327. @@ -10,10 +10,10 @@
  75328. #undef __UCLIBC_ABORT_INSTRUCTION__
  75329. /* can your target use syscall6() for mmap ? */
  75330. -#undef __UCLIBC_MMAP_HAS_6_ARGS__
  75331. +#define __UCLIBC_MMAP_HAS_6_ARGS__
  75332. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  75333. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  75334. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  75335. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  75336. /* does your target have a broken create_module() ? */
  75337. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  75338. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/wordsize.h uClibc-git/libc/sysdeps/linux/v850/bits/wordsize.h
  75339. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  75340. +++ uClibc-git/libc/sysdeps/linux/v850/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  75341. @@ -12,8 +12,7 @@
  75342. Lesser General Public License for more details.
  75343. You should have received a copy of the GNU Lesser General Public
  75344. - License along with the GNU C Library; if not, write to the Free
  75345. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75346. - 02111-1307 USA. */
  75347. + License along with the GNU C Library; if not, see
  75348. + <http://www.gnu.org/licenses/>. */
  75349. #define __WORDSIZE 32
  75350. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/v850/jmpbuf-offsets.h
  75351. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  75352. +++ uClibc-git/libc/sysdeps/linux/v850/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  75353. @@ -0,0 +1,6 @@
  75354. +/*
  75355. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  75356. + *
  75357. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75358. + */
  75359. +#define JB_SIZE (4 * 13)
  75360. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/v850/jmpbuf-unwind.h
  75361. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  75362. +++ uClibc-git/libc/sysdeps/linux/v850/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  75363. @@ -0,0 +1,11 @@
  75364. +/*
  75365. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  75366. + *
  75367. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75368. + */
  75369. +#include <setjmp.h>
  75370. +
  75371. +/* Test if longjmp to JMPBUF would unwind the frame
  75372. + containing a local variable at ADDRESS. */
  75373. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  75374. + ((void *) (address) < (void *) (jmpbuf)[0].__sp)
  75375. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/__longjmp.S uClibc-git/libc/sysdeps/linux/v850/__longjmp.S
  75376. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  75377. +++ uClibc-git/libc/sysdeps/linux/v850/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  75378. @@ -11,11 +11,6 @@
  75379. * Written by Miles Bader <miles@gnu.org>
  75380. */
  75381. -#include <features.h>
  75382. -#define _SETJMP_H
  75383. -#define _ASM
  75384. -#include <bits/setjmp.h>
  75385. -
  75386. #include <clinkage.h>
  75387. .text
  75388. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/Makefile uClibc-git/libc/sysdeps/linux/v850/Makefile
  75389. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/Makefile 2012-05-15 09:20:09.000000000 +0200
  75390. +++ uClibc-git/libc/sysdeps/linux/v850/Makefile 2014-02-03 12:32:56.000000000 +0100
  75391. @@ -20,7 +20,7 @@
  75392. SSRC := setjmp.S __longjmp.S vfork.S
  75393. SOBJ := $(patsubst %.S,%.o, $(SSRC))
  75394. -CSRC := mmap.c syscall.c clone.c
  75395. +CSRC := syscall.c clone.c
  75396. COBJ := $(patsubst %.c,%.o, $(CSRC))
  75397. OBJS := $(SOBJ) $(COBJ)
  75398. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/mmap.c uClibc-git/libc/sysdeps/linux/v850/mmap.c
  75399. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/mmap.c 2012-05-15 09:20:09.000000000 +0200
  75400. +++ uClibc-git/libc/sysdeps/linux/v850/mmap.c 1970-01-01 01:00:00.000000000 +0100
  75401. @@ -1,16 +0,0 @@
  75402. -/* Use new style mmap for v850 */
  75403. -/*
  75404. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  75405. - *
  75406. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75407. - */
  75408. -
  75409. -#include <unistd.h>
  75410. -#include <errno.h>
  75411. -#include <sys/mman.h>
  75412. -#include <sys/syscall.h>
  75413. -
  75414. -
  75415. -_syscall6 (__ptr_t, mmap, __ptr_t, addr, size_t, len, int, prot,
  75416. - int, flags, int, fd, __off_t, offset)
  75417. -libc_hidden_def(mmap)
  75418. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/setjmp.S uClibc-git/libc/sysdeps/linux/v850/setjmp.S
  75419. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  75420. +++ uClibc-git/libc/sysdeps/linux/v850/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  75421. @@ -11,10 +11,6 @@
  75422. * Written by Miles Bader <miles@gnu.org>
  75423. */
  75424. -#define _SETJMP_H
  75425. -#define _ASM
  75426. -#include <bits/setjmp.h>
  75427. -
  75428. #include <clinkage.h>
  75429. .text
  75430. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/procfs.h uClibc-git/libc/sysdeps/linux/v850/sys/procfs.h
  75431. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  75432. +++ uClibc-git/libc/sysdeps/linux/v850/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  75433. @@ -12,9 +12,8 @@
  75434. Lesser General Public License for more details.
  75435. You should have received a copy of the GNU Lesser General Public
  75436. - License along with the GNU C Library; if not, write to the Free
  75437. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75438. - 02111-1307 USA. */
  75439. + License along with the GNU C Library; if not, see
  75440. + <http://www.gnu.org/licenses/>. */
  75441. #ifndef _SYS_PROCFS_H
  75442. #define _SYS_PROCFS_H 1
  75443. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ptrace.h uClibc-git/libc/sysdeps/linux/v850/sys/ptrace.h
  75444. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  75445. +++ uClibc-git/libc/sysdeps/linux/v850/sys/ptrace.h 2014-02-03 12:32:56.000000000 +0100
  75446. @@ -13,9 +13,8 @@
  75447. Lesser General Public License for more details.
  75448. You should have received a copy of the GNU Lesser General Public
  75449. - License along with the GNU C Library; if not, write to the Free
  75450. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75451. - 02111-1307 USA. */
  75452. + License along with the GNU C Library; if not, see
  75453. + <http://www.gnu.org/licenses/>. */
  75454. #ifndef _SYS_PTRACE_H
  75455. #define _SYS_PTRACE_H 1
  75456. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ucontext.h uClibc-git/libc/sysdeps/linux/v850/sys/ucontext.h
  75457. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  75458. +++ uClibc-git/libc/sysdeps/linux/v850/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  75459. @@ -12,9 +12,8 @@
  75460. Lesser General Public License for more details.
  75461. You should have received a copy of the GNU Lesser General Public
  75462. - License along with the GNU C Library; if not, write to the Free
  75463. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75464. - 02111-1307 USA. */
  75465. + License along with the GNU C Library; if not, see
  75466. + <http://www.gnu.org/licenses/>. */
  75467. #ifndef _SYS_UCONTEXT_H
  75468. #define _SYS_UCONTEXT_H 1
  75469. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/v850/vfork.S uClibc-git/libc/sysdeps/linux/v850/vfork.S
  75470. --- uClibc-0.9.33.2/libc/sysdeps/linux/v850/vfork.S 2012-05-15 09:20:09.000000000 +0200
  75471. +++ uClibc-git/libc/sysdeps/linux/v850/vfork.S 2014-02-03 12:32:56.000000000 +0100
  75472. @@ -11,12 +11,7 @@
  75473. * Written by Miles Bader <miles@gnu.org>
  75474. */
  75475. -#include <features.h>
  75476. -#define _ERRNO_H 1
  75477. -#include <bits/errno.h>
  75478. -#define _SYSCALL_H
  75479. -#include <bits/sysnum.h>
  75480. -
  75481. +#include <sys/syscall.h>
  75482. #include <clinkage.h>
  75483. /* Clone the calling process, but without copying the whole address space.
  75484. @@ -24,8 +19,7 @@
  75485. replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
  75486. and the process ID of the new process to the old process. */
  75487. -.global C_SYMBOL_NAME(errno)
  75488. -
  75489. +/* this should be made hidden */
  75490. C_ENTRY (__vfork):
  75491. addi SYS_vfork, r0, r12
  75492. trap 0
  75493. @@ -39,4 +33,4 @@
  75494. jmp [lp] /* error return */
  75495. C_END(__vfork)
  75496. weak_alias(__vfork,vfork)
  75497. -libc_hidden_weak(vfork)
  75498. +libc_hidden_def(vfork)
  75499. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/fcntl.h uClibc-git/libc/sysdeps/linux/vax/bits/fcntl.h
  75500. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  75501. +++ uClibc-git/libc/sysdeps/linux/vax/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  75502. @@ -14,8 +14,7 @@
  75503. You should have received a copy of the GNU Library General Public
  75504. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75505. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75506. - Boston, MA 02111-1307, USA. */
  75507. + see <http://www.gnu.org/licenses/>. */
  75508. #ifndef _FCNTL_H
  75509. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  75510. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/huge_val.h uClibc-git/libc/sysdeps/linux/vax/bits/huge_val.h
  75511. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/huge_val.h 1970-01-01 01:00:00.000000000 +0100
  75512. +++ uClibc-git/libc/sysdeps/linux/vax/bits/huge_val.h 2014-02-03 12:32:56.000000000 +0100
  75513. @@ -0,0 +1,25 @@
  75514. +/* `HUGE_VAL' constant for Vaxen.
  75515. + Used by <stdlib.h> and <math.h> functions for overflow.
  75516. + Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
  75517. + This file is part of the GNU C Library.
  75518. +
  75519. + The GNU C Library is free software; you can redistribute it and/or
  75520. + modify it under the terms of the GNU Lesser General Public
  75521. + License as published by the Free Software Foundation; either
  75522. + version 2.1 of the License, or (at your option) any later version.
  75523. +
  75524. + The GNU C Library is distributed in the hope that it will be useful,
  75525. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  75526. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  75527. + Lesser General Public License for more details.
  75528. +
  75529. + You should have received a copy of the GNU Lesser General Public
  75530. + License along with the GNU C Library; if not, see
  75531. + <http://www.gnu.org/licenses/>. */
  75532. +
  75533. +#ifndef _MATH_H
  75534. +# error "Never use <bits/huge_val.h> directly; include <math.h> instead."
  75535. +#endif
  75536. +
  75537. +
  75538. +#define HUGE_VAL 1.70141182460469227e38
  75539. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/ipc.h uClibc-git/libc/sysdeps/linux/vax/bits/ipc.h
  75540. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  75541. +++ uClibc-git/libc/sysdeps/linux/vax/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  75542. @@ -13,8 +13,7 @@
  75543. You should have received a copy of the GNU Library General Public
  75544. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75545. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75546. - Boston, MA 02111-1307, USA. */
  75547. + see <http://www.gnu.org/licenses/>. */
  75548. #ifndef _SYS_IPC_H
  75549. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  75550. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/machine-gmon.h uClibc-git/libc/sysdeps/linux/vax/bits/machine-gmon.h
  75551. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/machine-gmon.h 2012-05-15 09:20:09.000000000 +0200
  75552. +++ uClibc-git/libc/sysdeps/linux/vax/bits/machine-gmon.h 1970-01-01 01:00:00.000000000 +0100
  75553. @@ -1,41 +0,0 @@
  75554. -/* i386-specific implementation of profiling support.
  75555. - Copyright (C) 1997, 2002 Free Software Foundation, Inc.
  75556. - This file is part of the GNU C Library.
  75557. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
  75558. -
  75559. - The GNU C Library is free software; you can redistribute it and/or
  75560. - modify it under the terms of the GNU Lesser General Public
  75561. - License as published by the Free Software Foundation; either
  75562. - version 2.1 of the License, or (at your option) any later version.
  75563. -
  75564. - The GNU C Library is distributed in the hope that it will be useful,
  75565. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  75566. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  75567. - Lesser General Public License for more details.
  75568. -
  75569. - You should have received a copy of the GNU Lesser General Public
  75570. - License along with the GNU C Library; if not, write to the Free
  75571. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75572. - 02111-1307 USA. */
  75573. -
  75574. -#include <sysdep.h>
  75575. -
  75576. -/* We need a special version of the `mcount' function since for ix86 it
  75577. - must not clobber any register. This has several reasons:
  75578. - - there is a bug in gcc as of version 2.7.2.2 which prohibits the
  75579. - use of profiling together with nested functions
  75580. - - the ELF `fixup' function uses GCC's regparm feature
  75581. - - some (future) systems might want to pass parameters in registers. */
  75582. -
  75583. -/* We must not pollute the global namespace. */
  75584. -#define mcount_internal __mcount_internal
  75585. -
  75586. -extern void mcount_internal (u_long frompc, u_long selfpc);
  75587. -
  75588. -#define _MCOUNT_DECL(frompc, selfpc) \
  75589. -void __attribute__ (( regparm (2) )) mcount_internal (u_long frompc, u_long selfpc)
  75590. -
  75591. -
  75592. -/* Define MCOUNT as empty since we have the implementation in another
  75593. - file. */
  75594. -#define MCOUNT
  75595. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sem.h uClibc-git/libc/sysdeps/linux/vax/bits/sem.h
  75596. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  75597. +++ uClibc-git/libc/sysdeps/linux/vax/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  75598. @@ -13,8 +13,7 @@
  75599. You should have received a copy of the GNU Library General Public
  75600. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75601. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75602. - Boston, MA 02111-1307, USA. */
  75603. + see <http://www.gnu.org/licenses/>. */
  75604. #ifndef _SYS_SEM_H
  75605. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  75606. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/setjmp.h uClibc-git/libc/sysdeps/linux/vax/bits/setjmp.h
  75607. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  75608. +++ uClibc-git/libc/sysdeps/linux/vax/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  75609. @@ -6,14 +6,8 @@
  75610. /* we want to save enough that we can use this to fool RET,
  75611. * So we basically save all of the CALLS stack frame. Plus regs. */
  75612. -#ifndef _ASM
  75613. typedef int __jmp_buf[16];
  75614. -#endif
  75615. -/* Test if longjmp to JMPBUF would unwind the frame
  75616. - containing a local variable at ADDRESS. */
  75617. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  75618. - ((void *) (address) < (void *) (jmpbuf[4]))
  75619. /*
  75620. jmp_buf layout. jmp_buf[0]
  75621. void *__cond; The condition handler
  75622. @@ -34,4 +28,3 @@
  75623. void *__rA; regs, r0->r11.
  75624. void *__rB; regs, r0->r11.
  75625. */
  75626. -
  75627. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/shm.h uClibc-git/libc/sysdeps/linux/vax/bits/shm.h
  75628. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  75629. +++ uClibc-git/libc/sysdeps/linux/vax/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  75630. @@ -13,8 +13,7 @@
  75631. You should have received a copy of the GNU Library General Public
  75632. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75633. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75634. - Boston, MA 02111-1307, USA. */
  75635. + see <http://www.gnu.org/licenses/>. */
  75636. #ifndef _SYS_SHM_H
  75637. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  75638. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/vax/bits/sigcontext.h
  75639. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  75640. +++ uClibc-git/libc/sysdeps/linux/vax/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  75641. @@ -13,8 +13,7 @@
  75642. You should have received a copy of the GNU Library General Public
  75643. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75644. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75645. - Boston, MA 02111-1307, USA. */
  75646. + see <http://www.gnu.org/licenses/>. */
  75647. #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  75648. # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  75649. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/statfs.h uClibc-git/libc/sysdeps/linux/vax/bits/statfs.h
  75650. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/statfs.h 2012-05-15 09:20:09.000000000 +0200
  75651. +++ uClibc-git/libc/sysdeps/linux/vax/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100
  75652. @@ -1,61 +0,0 @@
  75653. -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
  75654. - This file is part of the GNU C Library.
  75655. -
  75656. - The GNU C Library is free software; you can redistribute it and/or
  75657. - modify it under the terms of the GNU Library General Public License as
  75658. - published by the Free Software Foundation; either version 2 of the
  75659. - License, or (at your option) any later version.
  75660. -
  75661. - The GNU C Library is distributed in the hope that it will be useful,
  75662. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  75663. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  75664. - Library General Public License for more details.
  75665. -
  75666. - You should have received a copy of the GNU Library General Public
  75667. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  75668. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75669. - Boston, MA 02111-1307, USA. */
  75670. -
  75671. -#ifndef _SYS_STATFS_H
  75672. -# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
  75673. -#endif
  75674. -
  75675. -#include <bits/types.h> /* for __fsid_t and __fsblkcnt_t*/
  75676. -
  75677. -struct statfs
  75678. - {
  75679. - int f_type;
  75680. - int f_bsize;
  75681. -#ifndef __USE_FILE_OFFSET64
  75682. - __fsblkcnt_t f_blocks;
  75683. - __fsblkcnt_t f_bfree;
  75684. - __fsblkcnt_t f_bavail;
  75685. - __fsfilcnt_t f_files;
  75686. - __fsfilcnt_t f_ffree;
  75687. -#else
  75688. - __fsblkcnt64_t f_blocks;
  75689. - __fsblkcnt64_t f_bfree;
  75690. - __fsblkcnt64_t f_bavail;
  75691. - __fsfilcnt64_t f_files;
  75692. - __fsfilcnt64_t f_ffree;
  75693. -#endif
  75694. - __fsid_t f_fsid;
  75695. - int f_namelen;
  75696. - int f_spare[6];
  75697. - };
  75698. -
  75699. -#ifdef __USE_LARGEFILE64
  75700. -struct statfs64
  75701. - {
  75702. - int f_type;
  75703. - int f_bsize;
  75704. - __fsblkcnt64_t f_blocks;
  75705. - __fsblkcnt64_t f_bfree;
  75706. - __fsblkcnt64_t f_bavail;
  75707. - __fsfilcnt64_t f_files;
  75708. - __fsfilcnt64_t f_ffree;
  75709. - __fsid_t f_fsid;
  75710. - int f_namelen;
  75711. - int f_spare[6];
  75712. - };
  75713. -#endif
  75714. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h
  75715. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  75716. +++ uClibc-git/libc/sysdeps/linux/vax/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  75717. @@ -11,8 +11,8 @@
  75718. /* can your target use syscall6() for mmap ? */
  75719. #define __UCLIBC_MMAP_HAS_6_ARGS__
  75720. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  75721. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  75722. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  75723. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  75724. /* does your target have a broken create_module() ? */
  75725. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  75726. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/wordsize.h uClibc-git/libc/sysdeps/linux/vax/bits/wordsize.h
  75727. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  75728. +++ uClibc-git/libc/sysdeps/linux/vax/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  75729. @@ -13,7 +13,6 @@
  75730. You should have received a copy of the GNU Library General Public
  75731. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75732. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75733. - Boston, MA 02111-1307, USA. */
  75734. + see <http://www.gnu.org/licenses/>. */
  75735. #define __WORDSIZE 32
  75736. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/brk.c uClibc-git/libc/sysdeps/linux/vax/brk.c
  75737. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/brk.c 2012-05-15 09:20:09.000000000 +0200
  75738. +++ uClibc-git/libc/sysdeps/linux/vax/brk.c 2014-02-03 12:32:56.000000000 +0100
  75739. @@ -13,9 +13,8 @@
  75740. Lesser General Public License for more details.
  75741. You should have received a copy of the GNU Lesser General Public
  75742. - License along with the GNU C Library; if not, write to the Free
  75743. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75744. - 02111-1307 USA. */
  75745. + License along with the GNU C Library; if not, see
  75746. + <http://www.gnu.org/licenses/>. */
  75747. #include <errno.h>
  75748. #include <unistd.h>
  75749. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/clone.S uClibc-git/libc/sysdeps/linux/vax/clone.S
  75750. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/clone.S 2012-05-15 09:20:09.000000000 +0200
  75751. +++ uClibc-git/libc/sysdeps/linux/vax/clone.S 2014-02-03 12:32:56.000000000 +0100
  75752. @@ -12,8 +12,7 @@
  75753. You should have received a copy of the GNU Library General Public
  75754. License along with the GNU C Library; see the file COPYING.LIB. If not,
  75755. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  75756. - Boston, MA 02111-1307, USA. */
  75757. + see <http://www.gnu.org/licenses/>. */
  75758. /* clone() is even more special than fork() as it mucks with stacks
  75759. and invokes a function in the right context after its all over. */
  75760. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/vax/jmpbuf-unwind.h
  75761. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  75762. +++ uClibc-git/libc/sysdeps/linux/vax/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  75763. @@ -0,0 +1,11 @@
  75764. +/*
  75765. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  75766. + *
  75767. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75768. + */
  75769. +#include <setjmp.h>
  75770. +
  75771. +/* Test if longjmp to JMPBUF would unwind the frame
  75772. + containing a local variable at ADDRESS. */
  75773. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  75774. + ((void *) (address) < (void *) (jmpbuf[4]))
  75775. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/Makefile.arch uClibc-git/libc/sysdeps/linux/vax/Makefile.arch
  75776. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  75777. +++ uClibc-git/libc/sysdeps/linux/vax/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  75778. @@ -6,5 +6,5 @@
  75779. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  75780. #
  75781. -CSRC := brk.c mmap.c
  75782. -SSRC := __longjmp.S setjmp.S _setjmp.S clone.S
  75783. +CSRC-y := brk.c
  75784. +SSRC-y := __longjmp.S setjmp.S _setjmp.S clone.S
  75785. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/mmap.c uClibc-git/libc/sysdeps/linux/vax/mmap.c
  75786. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/mmap.c 2012-05-15 09:20:09.000000000 +0200
  75787. +++ uClibc-git/libc/sysdeps/linux/vax/mmap.c 1970-01-01 01:00:00.000000000 +0100
  75788. @@ -1,10 +0,0 @@
  75789. -
  75790. -#include <unistd.h>
  75791. -#include <sys/mman.h>
  75792. -#include <errno.h>
  75793. -#include <sys/syscall.h>
  75794. -
  75795. -_syscall6 (void *, mmap, void *, start, size_t, length, int, prot, int, flags,
  75796. - int, fd, off_t, offset)
  75797. -libc_hidden_def(mmap)
  75798. -
  75799. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/procfs.h uClibc-git/libc/sysdeps/linux/vax/sys/procfs.h
  75800. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  75801. +++ uClibc-git/libc/sysdeps/linux/vax/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  75802. @@ -12,9 +12,8 @@
  75803. Lesser General Public License for more details.
  75804. You should have received a copy of the GNU Lesser General Public
  75805. - License along with the GNU C Library; if not, write to the Free
  75806. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75807. - 02111-1307 USA. */
  75808. + License along with the GNU C Library; if not, see
  75809. + <http://www.gnu.org/licenses/>. */
  75810. #ifndef _SYS_PROCFS_H
  75811. #define _SYS_PROCFS_H 1
  75812. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/ucontext.h uClibc-git/libc/sysdeps/linux/vax/sys/ucontext.h
  75813. --- uClibc-0.9.33.2/libc/sysdeps/linux/vax/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  75814. +++ uClibc-git/libc/sysdeps/linux/vax/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  75815. @@ -12,9 +12,8 @@
  75816. Lesser General Public License for more details.
  75817. You should have received a copy of the GNU Lesser General Public
  75818. - License along with the GNU C Library; if not, write to the Free
  75819. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75820. - 02111-1307 USA. */
  75821. + License along with the GNU C Library; if not, see
  75822. + <http://www.gnu.org/licenses/>. */
  75823. /* Don't rely on this, the interface is currently messed up and may need to
  75824. be broken to be fixed. */
  75825. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/atomic.h uClibc-git/libc/sysdeps/linux/x86_64/bits/atomic.h
  75826. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/atomic.h 2012-05-15 09:20:09.000000000 +0200
  75827. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  75828. @@ -13,9 +13,8 @@
  75829. Lesser General Public License for more details.
  75830. You should have received a copy of the GNU Lesser General Public
  75831. - License along with the GNU C Library; if not, write to the Free
  75832. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75833. - 02111-1307 USA. */
  75834. + License along with the GNU C Library; if not, see
  75835. + <http://www.gnu.org/licenses/>. */
  75836. #include <stdint.h>
  75837. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/byteswap.h uClibc-git/libc/sysdeps/linux/x86_64/bits/byteswap.h
  75838. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/byteswap.h 2012-05-15 09:20:09.000000000 +0200
  75839. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/byteswap.h 2014-02-03 12:32:56.000000000 +0100
  75840. @@ -13,9 +13,8 @@
  75841. Lesser General Public License for more details.
  75842. You should have received a copy of the GNU Lesser General Public
  75843. - License along with the GNU C Library; if not, write to the Free
  75844. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75845. - 02111-1307 USA. */
  75846. + License along with the GNU C Library; if not, see
  75847. + <http://www.gnu.org/licenses/>. */
  75848. #ifndef _ASM_BITS_BYTESWAP_H
  75849. #define _ASM_BITS_BYTESWAP_H 1
  75850. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/environments.h uClibc-git/libc/sysdeps/linux/x86_64/bits/environments.h
  75851. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/environments.h 2012-05-15 09:20:09.000000000 +0200
  75852. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/environments.h 2014-02-03 12:32:56.000000000 +0100
  75853. @@ -12,9 +12,8 @@
  75854. Lesser General Public License for more details.
  75855. You should have received a copy of the GNU Lesser General Public
  75856. - License along with the GNU C Library; if not, write to the Free
  75857. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75858. - 02111-1307 USA. */
  75859. + License along with the GNU C Library; if not, see
  75860. + <http://www.gnu.org/licenses/>. */
  75861. #ifndef _UNISTD_H
  75862. # error "Never include this file directly. Use <unistd.h> instead"
  75863. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fcntl.h uClibc-git/libc/sysdeps/linux/x86_64/bits/fcntl.h
  75864. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  75865. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  75866. @@ -13,9 +13,8 @@
  75867. Lesser General Public License for more details.
  75868. You should have received a copy of the GNU Lesser General Public
  75869. - License along with the GNU C Library; if not, write to the Free
  75870. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75871. - 02111-1307 USA. */
  75872. + License along with the GNU C Library; if not, see
  75873. + <http://www.gnu.org/licenses/>. */
  75874. #ifndef _FCNTL_H
  75875. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  75876. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fenv.h uClibc-git/libc/sysdeps/linux/x86_64/bits/fenv.h
  75877. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/fenv.h 2012-05-15 09:20:09.000000000 +0200
  75878. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/fenv.h 2014-02-03 12:32:56.000000000 +0100
  75879. @@ -12,9 +12,8 @@
  75880. Lesser General Public License for more details.
  75881. You should have received a copy of the GNU Lesser General Public
  75882. - License along with the GNU C Library; if not, write to the Free
  75883. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75884. - 02111-1307 USA. */
  75885. + License along with the GNU C Library; if not, see
  75886. + <http://www.gnu.org/licenses/>. */
  75887. #ifndef _FENV_H
  75888. # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
  75889. @@ -89,9 +88,9 @@
  75890. fenv_t;
  75891. /* If the default argument is used we use this value. */
  75892. -#define FE_DFL_ENV ((__const fenv_t *) -1)
  75893. +#define FE_DFL_ENV ((const fenv_t *) -1)
  75894. #ifdef __USE_GNU
  75895. /* Floating-point environment where none of the exception is masked. */
  75896. -# define FE_NOMASK_ENV ((__const fenv_t *) -2)
  75897. +# define FE_NOMASK_ENV ((const fenv_t *) -2)
  75898. #endif
  75899. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/x86_64/bits/kernel_types.h
  75900. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  75901. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  75902. @@ -40,6 +40,8 @@
  75903. typedef unsigned short __kernel_old_uid_t;
  75904. typedef unsigned short __kernel_old_gid_t;
  75905. typedef __kernel_dev_t __kernel_old_dev_t;
  75906. +typedef long __kernel_long_t;
  75907. +typedef unsigned long __kernel_ulong_t;
  75908. typedef long long __kernel_loff_t;
  75909. typedef struct {
  75910. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathdef.h uClibc-git/libc/sysdeps/linux/x86_64/bits/mathdef.h
  75911. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  75912. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  75913. @@ -12,9 +12,8 @@
  75914. Lesser General Public License for more details.
  75915. You should have received a copy of the GNU Lesser General Public
  75916. - License along with the GNU C Library; if not, write to the Free
  75917. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75918. - 02111-1307 USA. */
  75919. + License along with the GNU C Library; if not, see
  75920. + <http://www.gnu.org/licenses/>. */
  75921. #if !defined _MATH_H && !defined _COMPLEX_H
  75922. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  75923. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathinline.h uClibc-git/libc/sysdeps/linux/x86_64/bits/mathinline.h
  75924. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/mathinline.h 2012-05-15 09:20:09.000000000 +0200
  75925. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/mathinline.h 2014-02-03 12:32:56.000000000 +0100
  75926. @@ -14,9 +14,8 @@
  75927. Lesser General Public License for more details.
  75928. You should have received a copy of the GNU Lesser General Public
  75929. - License along with the GNU C Library; if not, write to the Free
  75930. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75931. - 02111-1307 USA. */
  75932. + License along with the GNU C Library; if not, see
  75933. + <http://www.gnu.org/licenses/>. */
  75934. #ifndef _MATH_H
  75935. # error "Never use <bits/mathinline.h> directly; include <math.h> instead."
  75936. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/msq.h uClibc-git/libc/sysdeps/linux/x86_64/bits/msq.h
  75937. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  75938. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  75939. @@ -12,9 +12,8 @@
  75940. Lesser General Public License for more details.
  75941. You should have received a copy of the GNU Lesser General Public
  75942. - License along with the GNU C Library; if not, write to the Free
  75943. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75944. - 02111-1307 USA. */
  75945. + License along with the GNU C Library; if not, see
  75946. + <http://www.gnu.org/licenses/>. */
  75947. #ifndef _SYS_MSG_H
  75948. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  75949. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sem.h uClibc-git/libc/sysdeps/linux/x86_64/bits/sem.h
  75950. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sem.h 2012-05-15 09:20:09.000000000 +0200
  75951. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/sem.h 2014-02-03 12:32:56.000000000 +0100
  75952. @@ -12,9 +12,8 @@
  75953. Lesser General Public License for more details.
  75954. You should have received a copy of the GNU Lesser General Public
  75955. - License along with the GNU C Library; if not, write to the Free
  75956. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75957. - 02111-1307 USA. */
  75958. + License along with the GNU C Library; if not, see
  75959. + <http://www.gnu.org/licenses/>. */
  75960. #ifndef _SYS_SEM_H
  75961. # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
  75962. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/setjmp.h uClibc-git/libc/sysdeps/linux/x86_64/bits/setjmp.h
  75963. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  75964. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  75965. @@ -1,4 +1,4 @@
  75966. -/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
  75967. +/* Copyright (C) 2001,2002,2003,2005,2006 Free Software Foundation, Inc.
  75968. This file is part of the GNU C Library.
  75969. The GNU C Library is free software; you can redistribute it and/or
  75970. @@ -12,13 +12,12 @@
  75971. Lesser General Public License for more details.
  75972. You should have received a copy of the GNU Lesser General Public
  75973. - License along with the GNU C Library; if not, write to the Free
  75974. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  75975. - 02111-1307 USA. */
  75976. + License along with the GNU C Library; if not, see
  75977. + <http://www.gnu.org/licenses/>. */
  75978. /* Define the machine-dependent type `jmp_buf'. x86-64 version. */
  75979. #ifndef _BITS_SETJMP_H
  75980. -#define _BITS_SETJMP_H 1
  75981. +#define _BITS_SETJMP_H 1
  75982. #if !defined _SETJMP_H && !defined _PTHREAD_H
  75983. # error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
  75984. @@ -27,52 +26,9 @@
  75985. #include <bits/wordsize.h>
  75986. #if __WORDSIZE == 64
  75987. -
  75988. -/* We only need to save callee-saved registers plus stackpointer and
  75989. - program counter. */
  75990. -# if defined __USE_MISC || defined _ASM
  75991. -# define JB_RBX 0
  75992. -# define JB_RBP 1
  75993. -# define JB_R12 2
  75994. -# define JB_R13 3
  75995. -# define JB_R14 4
  75996. -# define JB_R15 5
  75997. -# define JB_RSP 6
  75998. -# define JB_PC 7
  75999. -# define JB_SIZE (8*8)
  76000. -# endif
  76001. -
  76002. -#else
  76003. -
  76004. -# if defined __USE_MISC || defined _ASM
  76005. -# define JB_BX 0
  76006. -# define JB_SI 1
  76007. -# define JB_DI 2
  76008. -# define JB_BP 3
  76009. -# define JB_SP 4
  76010. -# define JB_PC 5
  76011. -# define JB_SIZE 24
  76012. -# endif
  76013. -
  76014. -#endif
  76015. -
  76016. -#ifndef _ASM
  76017. -
  76018. -# if __WORDSIZE == 64
  76019. typedef long int __jmp_buf[8];
  76020. -# else
  76021. +#else
  76022. typedef int __jmp_buf[6];
  76023. -# endif
  76024. -
  76025. -/* Test if longjmp to JMPBUF would unwind the frame
  76026. - containing a local variable at ADDRESS. */
  76027. -# if __WORDSIZE == 64
  76028. -# define _JMPBUF_UNWINDS(jmpbuf, address) \
  76029. - ((void *) (address) < (void *) (jmpbuf)[JB_RSP])
  76030. -# else
  76031. -# define _JMPBUF_UNWINDS(jmpbuf, address) \
  76032. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  76033. -# endif
  76034. #endif
  76035. -#endif /* bits/setjmp.h */
  76036. +#endif /* bits/setjmp.h */
  76037. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/shm.h uClibc-git/libc/sysdeps/linux/x86_64/bits/shm.h
  76038. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  76039. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  76040. @@ -13,9 +13,8 @@
  76041. Lesser General Public License for more details.
  76042. You should have received a copy of the GNU Lesser General Public
  76043. - License along with the GNU C Library; if not, write to the Free
  76044. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76045. - 02111-1307 USA. */
  76046. + License along with the GNU C Library; if not, see
  76047. + <http://www.gnu.org/licenses/>. */
  76048. #ifndef _SYS_SHM_H
  76049. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  76050. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/x86_64/bits/sigcontext.h
  76051. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontext.h 2012-05-15 09:20:09.000000000 +0200
  76052. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  76053. @@ -12,9 +12,8 @@
  76054. Lesser General Public License for more details.
  76055. You should have received a copy of the GNU Lesser General Public
  76056. - License along with the GNU C Library; if not, write to the Free
  76057. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76058. - 02111-1307 USA. */
  76059. + License along with the GNU C Library; if not, see
  76060. + <http://www.gnu.org/licenses/>. */
  76061. #ifndef _BITS_SIGCONTEXT_H
  76062. #define _BITS_SIGCONTEXT_H 1
  76063. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h
  76064. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  76065. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  76066. @@ -12,9 +12,8 @@
  76067. Lesser General Public License for more details.
  76068. You should have received a copy of the GNU Lesser General Public
  76069. - License along with the GNU C Library; if not, write to the Free
  76070. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76071. - 02111-1307 USA. */
  76072. + License along with the GNU C Library; if not, see
  76073. + <http://www.gnu.org/licenses/>. */
  76074. #define SIGCONTEXT siginfo_t *_si, struct ucontext *
  76075. #define SIGCONTEXT_EXTRA_ARGS _si,
  76076. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/x86_64/bits/stackinfo.h
  76077. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  76078. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  76079. @@ -12,9 +12,8 @@
  76080. Lesser General Public License for more details.
  76081. You should have received a copy of the GNU Lesser General Public
  76082. - License along with the GNU C Library; if not, write to the Free
  76083. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76084. - 02111-1307 USA. */
  76085. + License along with the GNU C Library; if not, see
  76086. + <http://www.gnu.org/licenses/>. */
  76087. /* This file contains a bit of information about the stack allocation
  76088. of the processor. */
  76089. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stat.h uClibc-git/libc/sysdeps/linux/x86_64/bits/stat.h
  76090. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  76091. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  76092. @@ -12,9 +12,8 @@
  76093. Lesser General Public License for more details.
  76094. You should have received a copy of the GNU Lesser General Public
  76095. - License along with the GNU C Library; if not, write to the Free
  76096. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76097. - 02111-1307 USA. */
  76098. + License along with the GNU C Library; if not, see
  76099. + <http://www.gnu.org/licenses/>. */
  76100. #ifndef _SYS_STAT_H
  76101. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  76102. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h
  76103. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  76104. +++ uClibc-git/libc/sysdeps/linux/x86_64/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  76105. @@ -11,8 +11,8 @@
  76106. /* can your target use syscall6() for mmap ? */
  76107. #define __UCLIBC_MMAP_HAS_6_ARGS__
  76108. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  76109. -#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  76110. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  76111. +#undef __UCLIBC_SYSCALL_ALIGN_64BIT__
  76112. /* does your target have a broken create_module() ? */
  76113. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  76114. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/brk.c uClibc-git/libc/sysdeps/linux/x86_64/brk.c
  76115. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/brk.c 2012-05-15 09:20:09.000000000 +0200
  76116. +++ uClibc-git/libc/sysdeps/linux/x86_64/brk.c 2014-02-03 12:32:56.000000000 +0100
  76117. @@ -13,9 +13,8 @@
  76118. Lesser General Public License for more details.
  76119. You should have received a copy of the GNU Lesser General Public
  76120. - License along with the GNU C Library; if not, write to the Free
  76121. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76122. - 02111-1307 USA. */
  76123. + License along with the GNU C Library; if not, see
  76124. + <http://www.gnu.org/licenses/>. */
  76125. #include <errno.h>
  76126. #include <unistd.h>
  76127. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-_setjmp.S uClibc-git/libc/sysdeps/linux/x86_64/bsd-_setjmp.S
  76128. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-_setjmp.S 2012-05-15 09:20:09.000000000 +0200
  76129. +++ uClibc-git/libc/sysdeps/linux/x86_64/bsd-_setjmp.S 2014-02-03 12:32:56.000000000 +0100
  76130. @@ -13,9 +13,8 @@
  76131. Lesser General Public License for more details.
  76132. You should have received a copy of the GNU Lesser General Public
  76133. - License along with the GNU C Library; if not, write to the Free
  76134. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76135. - 02111-1307 USA. */
  76136. + License along with the GNU C Library; if not, see
  76137. + <http://www.gnu.org/licenses/>. */
  76138. /* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
  76139. We cannot do it in C because it must be a tail-call, so frame-unwinding
  76140. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-setjmp.S uClibc-git/libc/sysdeps/linux/x86_64/bsd-setjmp.S
  76141. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/bsd-setjmp.S 2012-05-15 09:20:09.000000000 +0200
  76142. +++ uClibc-git/libc/sysdeps/linux/x86_64/bsd-setjmp.S 2014-02-03 12:32:56.000000000 +0100
  76143. @@ -13,14 +13,8 @@
  76144. Lesser General Public License for more details.
  76145. You should have received a copy of the GNU Lesser General Public
  76146. - License along with the GNU C Library; if not, write to the Free
  76147. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76148. - 02111-1307 USA. */
  76149. -
  76150. -#define _ASM
  76151. -#define _SETJMP_H
  76152. -#include <bits/setjmp.h>
  76153. -#include <sysdep.h>
  76154. + License along with the GNU C Library; if not, see
  76155. + <http://www.gnu.org/licenses/>. */
  76156. .global setjmp
  76157. .type setjmp,%function
  76158. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/clone.S uClibc-git/libc/sysdeps/linux/x86_64/clone.S
  76159. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/clone.S 2012-05-15 09:20:09.000000000 +0200
  76160. +++ uClibc-git/libc/sysdeps/linux/x86_64/clone.S 2014-02-03 12:32:56.000000000 +0100
  76161. @@ -12,9 +12,8 @@
  76162. Lesser General Public License for more details.
  76163. You should have received a copy of the GNU Lesser General Public
  76164. - License along with the GNU C Library; if not, write to the Free
  76165. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76166. - 02111-1307 USA. */
  76167. + License along with the GNU C Library; if not, see
  76168. + <http://www.gnu.org/licenses/>. */
  76169. /* clone() is even more special than fork() as it mucks with stacks
  76170. and invokes a function in the right context after its all over. */
  76171. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/crt1.S uClibc-git/libc/sysdeps/linux/x86_64/crt1.S
  76172. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/crt1.S 2012-05-15 09:20:09.000000000 +0200
  76173. +++ uClibc-git/libc/sysdeps/linux/x86_64/crt1.S 2014-02-03 12:32:56.000000000 +0100
  76174. @@ -31,9 +31,8 @@
  76175. Lesser General Public License for more details.
  76176. You should have received a copy of the GNU Lesser General Public
  76177. - License along with the GNU C Library; if not, write to the Free
  76178. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76179. - 02111-1307 USA. */
  76180. + License along with the GNU C Library; if not, see
  76181. + <http://www.gnu.org/licenses/>. */
  76182. /* Originally based on glibc's sysdeps/x86_64/elf/start.S */
  76183. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/fpu_control.h uClibc-git/libc/sysdeps/linux/x86_64/fpu_control.h
  76184. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/fpu_control.h 2012-05-15 09:20:09.000000000 +0200
  76185. +++ uClibc-git/libc/sysdeps/linux/x86_64/fpu_control.h 2014-02-03 12:32:56.000000000 +0100
  76186. @@ -14,9 +14,8 @@
  76187. Lesser General Public License for more details.
  76188. You should have received a copy of the GNU Lesser General Public
  76189. - License along with the GNU C Library; if not, write to the Free
  76190. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76191. - 02111-1307 USA. */
  76192. + License along with the GNU C Library; if not, see
  76193. + <http://www.gnu.org/licenses/>. */
  76194. #ifndef _FPU_CONTROL_H
  76195. #define _FPU_CONTROL_H 1
  76196. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/getcontext.S uClibc-git/libc/sysdeps/linux/x86_64/getcontext.S
  76197. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/getcontext.S 1970-01-01 01:00:00.000000000 +0100
  76198. +++ uClibc-git/libc/sysdeps/linux/x86_64/getcontext.S 2014-02-03 12:32:56.000000000 +0100
  76199. @@ -0,0 +1,88 @@
  76200. +/* Save current context.
  76201. + Copyright (C) 2002-2012 Free Software Foundation, Inc.
  76202. + This file is part of the GNU C Library.
  76203. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  76204. +
  76205. + The GNU C Library is free software; you can redistribute it and/or
  76206. + modify it under the terms of the GNU Lesser General Public
  76207. + License as published by the Free Software Foundation; either
  76208. + version 2.1 of the License, or (at your option) any later version.
  76209. +
  76210. + The GNU C Library is distributed in the hope that it will be useful,
  76211. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76212. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76213. + Lesser General Public License for more details.
  76214. +
  76215. + You should have received a copy of the GNU Lesser General Public
  76216. + License along with the GNU C Library; if not, see
  76217. + <http://www.gnu.org/licenses/>. */
  76218. +
  76219. +#include <sysdep.h>
  76220. +
  76221. +#include "ucontext_i.h"
  76222. +
  76223. +/* int __getcontext (ucontext_t *ucp)
  76224. +
  76225. + Saves the machine context in UCP such that when it is activated,
  76226. + it appears as if __getcontext() returned again.
  76227. +
  76228. + This implementation is intended to be used for *synchronous* context
  76229. + switches only. Therefore, it does not have to save anything
  76230. + other than the PRESERVED state. */
  76231. +
  76232. +
  76233. +ENTRY(__getcontext)
  76234. + /* Save the preserved registers, the registers used for passing
  76235. + args, and the return address. */
  76236. + movq %rbx, oRBX(%rdi)
  76237. + movq %rbp, oRBP(%rdi)
  76238. + movq %r12, oR12(%rdi)
  76239. + movq %r13, oR13(%rdi)
  76240. + movq %r14, oR14(%rdi)
  76241. + movq %r15, oR15(%rdi)
  76242. +
  76243. + movq %rdi, oRDI(%rdi)
  76244. + movq %rsi, oRSI(%rdi)
  76245. + movq %rdx, oRDX(%rdi)
  76246. + movq %rcx, oRCX(%rdi)
  76247. + movq %r8, oR8(%rdi)
  76248. + movq %r9, oR9(%rdi)
  76249. +
  76250. + movq (%rsp), %rcx
  76251. + movq %rcx, oRIP(%rdi)
  76252. + leaq 8(%rsp), %rcx /* Exclude the return address. */
  76253. + movq %rcx, oRSP(%rdi)
  76254. +
  76255. + /* We have separate floating-point register content memory on the
  76256. + stack. We use the __fpregs_mem block in the context. Set the
  76257. + links up correctly. */
  76258. +
  76259. + leaq oFPREGSMEM(%rdi), %rcx
  76260. + movq %rcx, oFPREGS(%rdi)
  76261. + /* Save the floating-point environment. */
  76262. + fnstenv (%rcx)
  76263. + fldenv (%rcx)
  76264. + stmxcsr oMXCSR(%rdi)
  76265. +
  76266. + /* Save the current signal mask with
  76267. + rt_sigprocmask (SIG_BLOCK, NULL, set,_NSIG/8). */
  76268. + leaq oSIGMASK(%rdi), %rdx
  76269. + xorl %esi,%esi
  76270. +#if SIG_BLOCK == 0
  76271. + xorl %edi, %edi
  76272. +#else
  76273. + movl $SIG_BLOCK, %edi
  76274. +#endif
  76275. + movl $_NSIG8,%r10d
  76276. + movl $__NR_rt_sigprocmask, %eax
  76277. + syscall
  76278. + cmpq $-4095, %rax /* Check %rax for error. */
  76279. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  76280. +
  76281. + /* All done, return 0 for success. */
  76282. + xorl %eax, %eax
  76283. +L(pseudo_end):
  76284. + ret
  76285. +PSEUDO_END(__getcontext)
  76286. +
  76287. +weak_alias (__getcontext, getcontext)
  76288. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h
  76289. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  76290. +++ uClibc-git/libc/sysdeps/linux/x86_64/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  76291. @@ -0,0 +1,45 @@
  76292. +/* Private macros for accessing __jmp_buf contents. x86-64 version.
  76293. + Copyright (C) 2006 Free Software Foundation, Inc.
  76294. + This file is part of the GNU C Library.
  76295. +
  76296. + The GNU C Library is free software; you can redistribute it and/or
  76297. + modify it under the terms of the GNU Lesser General Public
  76298. + License as published by the Free Software Foundation; either
  76299. + version 2.1 of the License, or (at your option) any later version.
  76300. +
  76301. + The GNU C Library is distributed in the hope that it will be useful,
  76302. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76303. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76304. + Lesser General Public License for more details.
  76305. +
  76306. + You should have received a copy of the GNU Lesser General Public
  76307. + License along with the GNU C Library; if not, see
  76308. + <http://www.gnu.org/licenses/>. */
  76309. +
  76310. +#include <bits/wordsize.h>
  76311. +
  76312. +#if __WORDSIZE == 64
  76313. +
  76314. +/* We only need to save callee-saved registers plus stackpointer and
  76315. + program counter. */
  76316. +# define JB_RBX 0
  76317. +# define JB_RBP 1
  76318. +# define JB_R12 2
  76319. +# define JB_R13 3
  76320. +# define JB_R14 4
  76321. +# define JB_R15 5
  76322. +# define JB_RSP 6
  76323. +# define JB_PC 7
  76324. +# define JB_SIZE (8*8)
  76325. +
  76326. +#else
  76327. +
  76328. +# define JB_BX 0
  76329. +# define JB_SI 1
  76330. +# define JB_DI 2
  76331. +# define JB_BP 3
  76332. +# define JB_SP 4
  76333. +# define JB_PC 5
  76334. +# define JB_SIZE 24
  76335. +
  76336. +#endif
  76337. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h
  76338. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  76339. +++ uClibc-git/libc/sysdeps/linux/x86_64/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  76340. @@ -0,0 +1,28 @@
  76341. +/*
  76342. + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  76343. + *
  76344. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76345. + */
  76346. +#include <setjmp.h>
  76347. +#include <jmpbuf-offsets.h>
  76348. +
  76349. +/* Test if longjmp to JMPBUF would unwind the frame
  76350. + containing a local variable at ADDRESS. */
  76351. +#if __WORDSIZE == 64
  76352. +# define _JMPBUF_UNWINDS(jmpbuf, address) \
  76353. + ((void *) (address) < (void *) (jmpbuf)[JB_RSP])
  76354. +#else
  76355. +# define _JMPBUF_UNWINDS(jmpbuf, address) \
  76356. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  76357. +#endif
  76358. +
  76359. +#ifdef __UCLIBC_HAS_THREADS_NATIVE__
  76360. +#include <stdint.h>
  76361. +#include <unwind.h>
  76362. +
  76363. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  76364. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  76365. +
  76366. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  76367. + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_RSP] - (_adj))
  76368. +#endif
  76369. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__longjmp.S uClibc-git/libc/sysdeps/linux/x86_64/__longjmp.S
  76370. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  76371. +++ uClibc-git/libc/sysdeps/linux/x86_64/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  76372. @@ -12,14 +12,10 @@
  76373. Lesser General Public License for more details.
  76374. You should have received a copy of the GNU Lesser General Public
  76375. - License along with the GNU C Library; if not, write to the Free
  76376. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76377. - 02111-1307 USA. */
  76378. + License along with the GNU C Library; if not, see
  76379. + <http://www.gnu.org/licenses/>. */
  76380. -#include <features.h>
  76381. -#define _ASM
  76382. -#define _SETJMP_H
  76383. -#include <bits/setjmp.h>
  76384. +#include <jmpbuf-offsets.h>
  76385. /* Jump to the position specified by ENV, causing the
  76386. setjmp call there to return VAL, or 1 if VAL is 0.
  76387. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/makecontext.c uClibc-git/libc/sysdeps/linux/x86_64/makecontext.c
  76388. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/makecontext.c 1970-01-01 01:00:00.000000000 +0100
  76389. +++ uClibc-git/libc/sysdeps/linux/x86_64/makecontext.c 2014-02-03 12:32:56.000000000 +0100
  76390. @@ -0,0 +1,121 @@
  76391. +/* Create new context.
  76392. + Copyright (C) 2002, 2004, 2005, 2008 Free Software Foundation, Inc.
  76393. + This file is part of the GNU C Library.
  76394. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  76395. +
  76396. + The GNU C Library is free software; you can redistribute it and/or
  76397. + modify it under the terms of the GNU Lesser General Public
  76398. + License as published by the Free Software Foundation; either
  76399. + version 2.1 of the License, or (at your option) any later version.
  76400. +
  76401. + The GNU C Library is distributed in the hope that it will be useful,
  76402. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76403. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76404. + Lesser General Public License for more details.
  76405. +
  76406. + You should have received a copy of the GNU Lesser General Public
  76407. + License along with the GNU C Library; if not, see
  76408. + <http://www.gnu.org/licenses/>. */
  76409. +
  76410. +#include <sysdep.h>
  76411. +#include <stdarg.h>
  76412. +#include <stdint.h>
  76413. +#include <ucontext.h>
  76414. +
  76415. +#include "ucontext_i.h"
  76416. +
  76417. +/* This implementation can handle any ARGC value but only
  76418. + normal integer parameters.
  76419. + makecontext sets up a stack and the registers for the
  76420. + user context. The stack looks like this:
  76421. + +-----------------------+
  76422. + | next context |
  76423. + +-----------------------+
  76424. + | parameter 7-n |
  76425. + +-----------------------+
  76426. + | trampoline address |
  76427. + %rsp -> +-----------------------+
  76428. +
  76429. + The registers are set up like this:
  76430. + %rdi,%rsi,%rdx,%rcx,%r8,%r9: parameter 1 to 6
  76431. + %rbx : address of next context
  76432. + %rsp : stack pointer.
  76433. +*/
  76434. +
  76435. +/* XXX: This implementation currently only handles integer arguments.
  76436. + To handle long int and pointer arguments the va_arg arguments needs
  76437. + to be changed to long and also the stdlib/tst-setcontext.c file needs
  76438. + to be changed to pass long arguments to makecontext. */
  76439. +
  76440. +
  76441. +void
  76442. +__makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
  76443. +{
  76444. + extern void __start_context (void);
  76445. + greg_t *sp;
  76446. + unsigned int idx_uc_link;
  76447. + va_list ap;
  76448. + int i;
  76449. +
  76450. + /* Generate room on stack for parameter if needed and uc_link. */
  76451. + sp = (greg_t *) ((uintptr_t) ucp->uc_stack.ss_sp
  76452. + + ucp->uc_stack.ss_size);
  76453. + sp -= (argc > 6 ? argc - 6 : 0) + 1;
  76454. + /* Align stack and make space for trampoline address. */
  76455. + sp = (greg_t *) ((((uintptr_t) sp) & -16L) - 8);
  76456. +
  76457. + idx_uc_link = (argc > 6 ? argc - 6 : 0) + 1;
  76458. +
  76459. + /* Setup context ucp. */
  76460. + /* Address to jump to. */
  76461. + ucp->uc_mcontext.gregs[REG_RIP] = (uintptr_t) func;
  76462. + /* Setup rbx.*/
  76463. + ucp->uc_mcontext.gregs[REG_RBX] = (uintptr_t) &sp[idx_uc_link];
  76464. + ucp->uc_mcontext.gregs[REG_RSP] = (uintptr_t) sp;
  76465. +
  76466. + /* Setup stack. */
  76467. + sp[0] = (uintptr_t) &__start_context;
  76468. + sp[idx_uc_link] = (uintptr_t) ucp->uc_link;
  76469. +
  76470. + va_start (ap, argc);
  76471. + /* Handle arguments.
  76472. +
  76473. + The standard says the parameters must all be int values. This is
  76474. + an historic accident and would be done differently today. For
  76475. + x86-64 all integer values are passed as 64-bit values and
  76476. + therefore extending the API to copy 64-bit values instead of
  76477. + 32-bit ints makes sense. It does not break existing
  76478. + functionality and it does not violate the standard which says
  76479. + that passing non-int values means undefined behavior. */
  76480. + for (i = 0; i < argc; ++i)
  76481. + switch (i)
  76482. + {
  76483. + case 0:
  76484. + ucp->uc_mcontext.gregs[REG_RDI] = va_arg (ap, greg_t);
  76485. + break;
  76486. + case 1:
  76487. + ucp->uc_mcontext.gregs[REG_RSI] = va_arg (ap, greg_t);
  76488. + break;
  76489. + case 2:
  76490. + ucp->uc_mcontext.gregs[REG_RDX] = va_arg (ap, greg_t);
  76491. + break;
  76492. + case 3:
  76493. + ucp->uc_mcontext.gregs[REG_RCX] = va_arg (ap, greg_t);
  76494. + break;
  76495. + case 4:
  76496. + ucp->uc_mcontext.gregs[REG_R8] = va_arg (ap, greg_t);
  76497. + break;
  76498. + case 5:
  76499. + ucp->uc_mcontext.gregs[REG_R9] = va_arg (ap, greg_t);
  76500. + break;
  76501. + default:
  76502. + /* Put value on stack. */
  76503. + sp[i - 5] = va_arg (ap, greg_t);
  76504. + break;
  76505. + }
  76506. + va_end (ap);
  76507. +
  76508. +}
  76509. +
  76510. +
  76511. +weak_alias (__makecontext, makecontext)
  76512. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/Makefile.arch uClibc-git/libc/sysdeps/linux/x86_64/Makefile.arch
  76513. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  76514. +++ uClibc-git/libc/sysdeps/linux/x86_64/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  76515. @@ -5,18 +5,15 @@
  76516. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76517. #
  76518. -CSRC := brk.c __syscall_error.c sigaction.c mmap.c
  76519. +CSRC-y := brk.c __syscall_error.c sigaction.c
  76520. -SSRC := \
  76521. +SSRC-y := \
  76522. __longjmp.S setjmp.S syscall.S bsd-setjmp.S bsd-_setjmp.S
  76523. -ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  76524. -SSRC += vfork.S clone.S
  76525. -endif
  76526. -
  76527. +SSRC-$(if $(UCLIBC_HAS_THREADS_NATIVE),,y) += vfork.S clone.S
  76528. +ARCH_OBJ_FILTEROUT-$(UCLIBC_LINUX_SPECIFIC) := sched_getcpu.c
  76529. ifeq ($(UCLIBC_LINUX_SPECIFIC),y)
  76530. -ARCH_OBJ_FILTEROUT = sched_getcpu.c
  76531. -ifeq ($(UCLIBC_HAS_TLS),y)
  76532. -SSRC += sched_getcpu.S
  76533. -endif
  76534. +SSRC-$(UCLIBC_HAS_TLS) += sched_getcpu.S
  76535. endif
  76536. +CSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += makecontext.c
  76537. +SSRC-$(UCLIBC_HAS_CONTEXT_FUNCS) += setcontext.S getcontext.S swapcontext.S __start_context.S
  76538. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/mmap.c uClibc-git/libc/sysdeps/linux/x86_64/mmap.c
  76539. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/mmap.c 2012-05-15 09:20:09.000000000 +0200
  76540. +++ uClibc-git/libc/sysdeps/linux/x86_64/mmap.c 1970-01-01 01:00:00.000000000 +0100
  76541. @@ -1,19 +0,0 @@
  76542. -/* vi: set sw=4 ts=4: */
  76543. -/*
  76544. - * mmap() for uClibc/x86_64
  76545. - *
  76546. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  76547. - * Copyright (C) 2005 by Mike Frysinger <vapier@gentoo.org>
  76548. - *
  76549. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  76550. - */
  76551. -
  76552. -#include <errno.h>
  76553. -#include <unistd.h>
  76554. -#include <sys/mman.h>
  76555. -#include <sys/syscall.h>
  76556. -
  76557. -
  76558. -_syscall6(void *, mmap, void *, start, size_t, length, int, prot,
  76559. - int, flags, int, fd, off_t, offset)
  76560. -libc_hidden_def(mmap)
  76561. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sched_getcpu.S uClibc-git/libc/sysdeps/linux/x86_64/sched_getcpu.S
  76562. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sched_getcpu.S 2012-05-15 09:20:09.000000000 +0200
  76563. +++ uClibc-git/libc/sysdeps/linux/x86_64/sched_getcpu.S 2014-02-03 12:32:56.000000000 +0100
  76564. @@ -12,9 +12,8 @@
  76565. Lesser General Public License for more details.
  76566. You should have received a copy of the GNU Lesser General Public
  76567. - License along with the GNU C Library; if not, write to the Free
  76568. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76569. - 02111-1307 USA. */
  76570. + License along with the GNU C Library; if not, see
  76571. + <http://www.gnu.org/licenses/>. */
  76572. #include <sysdep.h>
  76573. #include <tls.h>
  76574. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setcontext.S uClibc-git/libc/sysdeps/linux/x86_64/setcontext.S
  76575. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setcontext.S 1970-01-01 01:00:00.000000000 +0100
  76576. +++ uClibc-git/libc/sysdeps/linux/x86_64/setcontext.S 2014-02-03 12:32:56.000000000 +0100
  76577. @@ -0,0 +1,103 @@
  76578. +/* Install given context.
  76579. + Copyright (C) 2002-2012 Free Software Foundation, Inc.
  76580. + This file is part of the GNU C Library.
  76581. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  76582. +
  76583. + The GNU C Library is free software; you can redistribute it and/or
  76584. + modify it under the terms of the GNU Lesser General Public
  76585. + License as published by the Free Software Foundation; either
  76586. + version 2.1 of the License, or (at your option) any later version.
  76587. +
  76588. + The GNU C Library is distributed in the hope that it will be useful,
  76589. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76590. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76591. + Lesser General Public License for more details.
  76592. +
  76593. + You should have received a copy of the GNU Lesser General Public
  76594. + License along with the GNU C Library; if not, see
  76595. + <http://www.gnu.org/licenses/>. */
  76596. +
  76597. +#include <sysdep.h>
  76598. +
  76599. +#include "ucontext_i.h"
  76600. +
  76601. +
  76602. +/* int __setcontext (const ucontext_t *ucp)
  76603. +
  76604. + Restores the machine context in UCP and thereby resumes execution
  76605. + in that context.
  76606. +
  76607. + This implementation is intended to be used for *synchronous* context
  76608. + switches only. Therefore, it does not have to restore anything
  76609. + other than the PRESERVED state. */
  76610. +
  76611. +ENTRY(__setcontext)
  76612. + /* Save argument since syscall will destroy it. */
  76613. + pushq %rdi
  76614. + cfi_adjust_cfa_offset(8)
  76615. +
  76616. + /* Set the signal mask with
  76617. + rt_sigprocmask (SIG_SETMASK, mask, NULL, _NSIG/8). */
  76618. + leaq oSIGMASK(%rdi), %rsi
  76619. + xorl %edx, %edx
  76620. + movl $SIG_SETMASK, %edi
  76621. + movl $_NSIG8,%r10d
  76622. + movl $__NR_rt_sigprocmask, %eax
  76623. + syscall
  76624. + popq %rdi /* Reload %rdi, adjust stack. */
  76625. + cfi_adjust_cfa_offset(-8)
  76626. + cmpq $-4095, %rax /* Check %rax for error. */
  76627. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  76628. +
  76629. + /* Restore the floating-point context. Not the registers, only the
  76630. + rest. */
  76631. + movq oFPREGS(%rdi), %rcx
  76632. + fldenv (%rcx)
  76633. + ldmxcsr oMXCSR(%rdi)
  76634. +
  76635. +
  76636. + /* Load the new stack pointer, the preserved registers and
  76637. + registers used for passing args. */
  76638. + cfi_def_cfa(%rdi, 0)
  76639. + cfi_offset(%rbx,oRBX)
  76640. + cfi_offset(%rbp,oRBP)
  76641. + cfi_offset(%r12,oR12)
  76642. + cfi_offset(%r13,oR13)
  76643. + cfi_offset(%r14,oR14)
  76644. + cfi_offset(%r15,oR15)
  76645. + cfi_offset(%rsp,oRSP)
  76646. + cfi_offset(%rip,oRIP)
  76647. +
  76648. + movq oRSP(%rdi), %rsp
  76649. + movq oRBX(%rdi), %rbx
  76650. + movq oRBP(%rdi), %rbp
  76651. + movq oR12(%rdi), %r12
  76652. + movq oR13(%rdi), %r13
  76653. + movq oR14(%rdi), %r14
  76654. + movq oR15(%rdi), %r15
  76655. +
  76656. + /* The following ret should return to the address set with
  76657. + getcontext. Therefore push the address on the stack. */
  76658. + movq oRIP(%rdi), %rcx
  76659. + pushq %rcx
  76660. +
  76661. + movq oRSI(%rdi), %rsi
  76662. + movq oRDX(%rdi), %rdx
  76663. + movq oRCX(%rdi), %rcx
  76664. + movq oR8(%rdi), %r8
  76665. + movq oR9(%rdi), %r9
  76666. +
  76667. + /* Setup finally %rdi. */
  76668. + movq oRDI(%rdi), %rdi
  76669. +
  76670. + /* End FDE here, we fall into another context. */
  76671. + cfi_endproc
  76672. + cfi_startproc
  76673. +
  76674. + /* Clear rax to indicate success. */
  76675. + xorl %eax, %eax
  76676. +L(pseudo_end):
  76677. + ret
  76678. +PSEUDO_END(__setcontext)
  76679. +
  76680. +weak_alias (__setcontext, setcontext)
  76681. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setjmp.S uClibc-git/libc/sysdeps/linux/x86_64/setjmp.S
  76682. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  76683. +++ uClibc-git/libc/sysdeps/linux/x86_64/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  76684. @@ -13,14 +13,10 @@
  76685. Lesser General Public License for more details.
  76686. You should have received a copy of the GNU Lesser General Public
  76687. - License along with the GNU C Library; if not, write to the Free
  76688. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76689. - 02111-1307 USA. */
  76690. + License along with the GNU C Library; if not, see
  76691. + <http://www.gnu.org/licenses/>. */
  76692. -#define _ASM
  76693. -#define _SETJMP_H
  76694. -#include <bits/setjmp.h>
  76695. -#include <sysdep.h>
  76696. +#include <jmpbuf-offsets.h>
  76697. .global __sigsetjmp
  76698. .type __sigsetjmp,%function
  76699. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sigaction.c uClibc-git/libc/sysdeps/linux/x86_64/sigaction.c
  76700. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  76701. +++ uClibc-git/libc/sysdeps/linux/x86_64/sigaction.c 2014-02-03 12:32:56.000000000 +0100
  76702. @@ -13,9 +13,8 @@
  76703. Lesser General Public License for more details.
  76704. You should have received a copy of the GNU Lesser General Public
  76705. - License along with the GNU C Library; if not, write to the Free
  76706. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76707. - 02111-1307 USA. */
  76708. + License along with the GNU C Library; if not, see
  76709. + <http://www.gnu.org/licenses/>. */
  76710. #include <errno.h>
  76711. @@ -30,9 +29,6 @@
  76712. /* We do not globally define the SA_RESTORER flag so do it here. */
  76713. #define SA_RESTORER 0x04000000
  76714. -extern __typeof(sigaction) __libc_sigaction;
  76715. -
  76716. -
  76717. #ifdef __NR_rt_sigaction
  76718. /* Using the hidden attribute here does not change the code but it
  76719. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__start_context.S uClibc-git/libc/sysdeps/linux/x86_64/__start_context.S
  76720. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/__start_context.S 1970-01-01 01:00:00.000000000 +0100
  76721. +++ uClibc-git/libc/sysdeps/linux/x86_64/__start_context.S 2014-02-03 12:32:56.000000000 +0100
  76722. @@ -0,0 +1,49 @@
  76723. +/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
  76724. + This file is part of the GNU C Library.
  76725. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  76726. +
  76727. + The GNU C Library is free software; you can redistribute it and/or
  76728. + modify it under the terms of the GNU Lesser General Public
  76729. + License as published by the Free Software Foundation; either
  76730. + version 2.1 of the License, or (at your option) any later version.
  76731. +
  76732. + The GNU C Library is distributed in the hope that it will be useful,
  76733. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76734. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76735. + Lesser General Public License for more details.
  76736. +
  76737. + You should have received a copy of the GNU Lesser General Public
  76738. + License along with the GNU C Library; if not, see
  76739. + <http://www.gnu.org/licenses/>. */
  76740. +
  76741. +#include <sysdep.h>
  76742. +
  76743. +/* This is the helper code which gets called if a function which is
  76744. + registered with 'makecontext' returns. In this case we have to
  76745. + install the context listed in the uc_link element of the context
  76746. + 'makecontext' manipulated at the time of the 'makecontext' call.
  76747. + If the pointer is NULL the process must terminate. */
  76748. +
  76749. +
  76750. +ENTRY(__start_context)
  76751. + /* This removes the parameters passed to the function given to
  76752. + 'makecontext' from the stack. RBX contains the address
  76753. + on the stack pointer for the next context. */
  76754. + movq %rbx, %rsp
  76755. +
  76756. + popq %rdi /* This is the next context. */
  76757. + cfi_adjust_cfa_offset(-8)
  76758. + testq %rdi, %rdi
  76759. + je 2f /* If it is zero exit. */
  76760. +
  76761. + call JUMPTARGET(__setcontext)
  76762. + /* If this returns (which can happen if the syscall fails) we'll
  76763. + exit the program with the return error value (-1). */
  76764. + movq %rax,%rdi
  76765. +
  76766. +2:
  76767. + call HIDDEN_JUMPTARGET(exit)
  76768. + /* The 'exit' call should never return. In case it does cause
  76769. + the process to terminate. */
  76770. + hlt
  76771. +END(__start_context)
  76772. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/swapcontext.S uClibc-git/libc/sysdeps/linux/x86_64/swapcontext.S
  76773. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/swapcontext.S 1970-01-01 01:00:00.000000000 +0100
  76774. +++ uClibc-git/libc/sysdeps/linux/x86_64/swapcontext.S 2014-02-03 12:32:56.000000000 +0100
  76775. @@ -0,0 +1,121 @@
  76776. +/* Save current context and install the given one.
  76777. + Copyright (C) 2002-2012 Free Software Foundation, Inc.
  76778. + This file is part of the GNU C Library.
  76779. + Contributed by Andreas Jaeger <aj@suse.de>, 2002.
  76780. +
  76781. + The GNU C Library is free software; you can redistribute it and/or
  76782. + modify it under the terms of the GNU Lesser General Public
  76783. + License as published by the Free Software Foundation; either
  76784. + version 2.1 of the License, or (at your option) any later version.
  76785. +
  76786. + The GNU C Library is distributed in the hope that it will be useful,
  76787. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  76788. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  76789. + Lesser General Public License for more details.
  76790. +
  76791. + You should have received a copy of the GNU Lesser General Public
  76792. + License along with the GNU C Library; if not, see
  76793. + <http://www.gnu.org/licenses/>. */
  76794. +
  76795. +#include <sysdep.h>
  76796. +
  76797. +#include "ucontext_i.h"
  76798. +
  76799. +
  76800. +/* int __swapcontext (ucontext_t *oucp, const ucontext_t *ucp);
  76801. +
  76802. + Saves the machine context in oucp such that when it is activated,
  76803. + it appears as if __swapcontextt() returned again, restores the
  76804. + machine context in ucp and thereby resumes execution in that
  76805. + context.
  76806. +
  76807. + This implementation is intended to be used for *synchronous* context
  76808. + switches only. Therefore, it does not have to save anything
  76809. + other than the PRESERVED state. */
  76810. +
  76811. +ENTRY(__swapcontext)
  76812. + /* Save the preserved registers, the registers used for passing args,
  76813. + and the return address. */
  76814. + movq %rbx, oRBX(%rdi)
  76815. + movq %rbp, oRBP(%rdi)
  76816. + movq %r12, oR12(%rdi)
  76817. + movq %r13, oR13(%rdi)
  76818. + movq %r14, oR14(%rdi)
  76819. + movq %r15, oR15(%rdi)
  76820. +
  76821. + movq %rdi, oRDI(%rdi)
  76822. + movq %rsi, oRSI(%rdi)
  76823. + movq %rdx, oRDX(%rdi)
  76824. + movq %rcx, oRCX(%rdi)
  76825. + movq %r8, oR8(%rdi)
  76826. + movq %r9, oR9(%rdi)
  76827. +
  76828. + movq (%rsp), %rcx
  76829. + movq %rcx, oRIP(%rdi)
  76830. + leaq 8(%rsp), %rcx /* Exclude the return address. */
  76831. + movq %rcx, oRSP(%rdi)
  76832. +
  76833. + /* We have separate floating-point register content memory on the
  76834. + stack. We use the __fpregs_mem block in the context. Set the
  76835. + links up correctly. */
  76836. + leaq oFPREGSMEM(%rdi), %rcx
  76837. + movq %rcx, oFPREGS(%rdi)
  76838. + /* Save the floating-point environment. */
  76839. + fnstenv (%rcx)
  76840. + stmxcsr oMXCSR(%rdi)
  76841. +
  76842. +
  76843. + /* The syscall destroys some registers, save them. */
  76844. + movq %rsi, %r12
  76845. +
  76846. + /* Save the current signal mask and install the new one with
  76847. + rt_sigprocmask (SIG_BLOCK, newset, oldset,_NSIG/8). */
  76848. + leaq oSIGMASK(%rdi), %rdx
  76849. + leaq oSIGMASK(%rsi), %rsi
  76850. + movl $SIG_SETMASK, %edi
  76851. + movl $_NSIG8,%r10d
  76852. + movl $__NR_rt_sigprocmask, %eax
  76853. + syscall
  76854. + cmpq $-4095, %rax /* Check %rax for error. */
  76855. + jae SYSCALL_ERROR_LABEL /* Jump to error handler if error. */
  76856. +
  76857. + /* Restore destroyed registers. */
  76858. + movq %r12, %rsi
  76859. +
  76860. + /* Restore the floating-point context. Not the registers, only the
  76861. + rest. */
  76862. + movq oFPREGS(%rsi), %rcx
  76863. + fldenv (%rcx)
  76864. + ldmxcsr oMXCSR(%rsi)
  76865. +
  76866. + /* Load the new stack pointer and the preserved registers. */
  76867. + movq oRSP(%rsi), %rsp
  76868. + movq oRBX(%rsi), %rbx
  76869. + movq oRBP(%rsi), %rbp
  76870. + movq oR12(%rsi), %r12
  76871. + movq oR13(%rsi), %r13
  76872. + movq oR14(%rsi), %r14
  76873. + movq oR15(%rsi), %r15
  76874. +
  76875. + /* The following ret should return to the address set with
  76876. + getcontext. Therefore push the address on the stack. */
  76877. + movq oRIP(%rsi), %rcx
  76878. + pushq %rcx
  76879. +
  76880. + /* Setup registers used for passing args. */
  76881. + movq oRDI(%rsi), %rdi
  76882. + movq oRDX(%rsi), %rdx
  76883. + movq oRCX(%rsi), %rcx
  76884. + movq oR8(%rsi), %r8
  76885. + movq oR9(%rsi), %r9
  76886. +
  76887. + /* Setup finally %rsi. */
  76888. + movq oRSI(%rsi), %rsi
  76889. +
  76890. + /* Clear rax to indicate success. */
  76891. + xorl %eax, %eax
  76892. +L(pseudo_end):
  76893. + ret
  76894. +PSEUDO_END(__swapcontext)
  76895. +
  76896. +weak_alias (__swapcontext, swapcontext)
  76897. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/debugreg.h uClibc-git/libc/sysdeps/linux/x86_64/sys/debugreg.h
  76898. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/debugreg.h 2012-05-15 09:20:09.000000000 +0200
  76899. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/debugreg.h 2014-02-03 12:32:56.000000000 +0100
  76900. @@ -12,9 +12,8 @@
  76901. Lesser General Public License for more details.
  76902. You should have received a copy of the GNU Lesser General Public
  76903. - License along with the GNU C Library; if not, write to the Free
  76904. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76905. - 02111-1307 USA. */
  76906. + License along with the GNU C Library; if not, see
  76907. + <http://www.gnu.org/licenses/>. */
  76908. #ifndef _SYS_DEBUGREG_H
  76909. #define _SYS_DEBUGREG_H 1
  76910. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/io.h uClibc-git/libc/sysdeps/linux/x86_64/sys/io.h
  76911. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/io.h 2012-05-15 09:20:09.000000000 +0200
  76912. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/io.h 2014-02-03 12:32:56.000000000 +0100
  76913. @@ -12,9 +12,8 @@
  76914. Lesser General Public License for more details.
  76915. You should have received a copy of the GNU Lesser General Public
  76916. - License along with the GNU C Library; if not, write to the Free
  76917. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76918. - 02111-1307 USA. */
  76919. + License along with the GNU C Library; if not, see
  76920. + <http://www.gnu.org/licenses/>. */
  76921. #ifndef _SYS_IO_H
  76922. #define _SYS_IO_H 1
  76923. @@ -23,6 +22,7 @@
  76924. __BEGIN_DECLS
  76925. +#if defined __UCLIBC_LINUX_SPECIFIC__
  76926. /* If TURN_ON is TRUE, request for permission to do direct i/o on the
  76927. port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
  76928. permission off for that range. This call requires root privileges.
  76929. @@ -32,12 +32,12 @@
  76930. E.g., Linux/Alpha for Alpha PCs supports this. */
  76931. extern int ioperm (unsigned long int __from, unsigned long int __num,
  76932. int __turn_on) __THROW;
  76933. -libc_hidden_proto(ioperm)
  76934. /* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
  76935. access any I/O port is granted. This call requires root
  76936. privileges. */
  76937. extern int iopl (int __level) __THROW;
  76938. +#endif /* __UCLIBC_LINUX_SPECIFIC__ */
  76939. #if defined __GNUC__ && __GNUC__ >= 2
  76940. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/perm.h uClibc-git/libc/sysdeps/linux/x86_64/sys/perm.h
  76941. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/perm.h 2012-05-15 09:20:09.000000000 +0200
  76942. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/perm.h 2014-02-03 12:32:56.000000000 +0100
  76943. @@ -12,9 +12,8 @@
  76944. Lesser General Public License for more details.
  76945. You should have received a copy of the GNU Lesser General Public
  76946. - License along with the GNU C Library; if not, write to the Free
  76947. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76948. - 02111-1307 USA. */
  76949. + License along with the GNU C Library; if not, see
  76950. + <http://www.gnu.org/licenses/>. */
  76951. #ifndef _SYS_PERM_H
  76952. @@ -26,7 +25,6 @@
  76953. /* Set port input/output permissions. */
  76954. extern int ioperm (unsigned long int __from, unsigned long int __num,
  76955. int __turn_on) __THROW;
  76956. -libc_hidden_proto(ioperm)
  76957. /* Change I/O privilege level. */
  76958. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/procfs.h uClibc-git/libc/sysdeps/linux/x86_64/sys/procfs.h
  76959. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  76960. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  76961. @@ -12,9 +12,8 @@
  76962. Lesser General Public License for more details.
  76963. You should have received a copy of the GNU Lesser General Public
  76964. - License along with the GNU C Library; if not, write to the Free
  76965. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76966. - 02111-1307 USA. */
  76967. + License along with the GNU C Library; if not, see
  76968. + <http://www.gnu.org/licenses/>. */
  76969. #ifndef _SYS_PROCFS_H
  76970. #define _SYS_PROCFS_H 1
  76971. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/reg.h uClibc-git/libc/sysdeps/linux/x86_64/sys/reg.h
  76972. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/reg.h 2012-05-15 09:20:09.000000000 +0200
  76973. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/reg.h 2014-02-03 12:32:56.000000000 +0100
  76974. @@ -12,9 +12,8 @@
  76975. Lesser General Public License for more details.
  76976. You should have received a copy of the GNU Lesser General Public
  76977. - License along with the GNU C Library; if not, write to the Free
  76978. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76979. - 02111-1307 USA. */
  76980. + License along with the GNU C Library; if not, see
  76981. + <http://www.gnu.org/licenses/>. */
  76982. #ifndef _SYS_REG_H
  76983. #define _SYS_REG_H 1
  76984. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/ucontext.h uClibc-git/libc/sysdeps/linux/x86_64/sys/ucontext.h
  76985. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  76986. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  76987. @@ -12,9 +12,8 @@
  76988. Lesser General Public License for more details.
  76989. You should have received a copy of the GNU Lesser General Public
  76990. - License along with the GNU C Library; if not, write to the Free
  76991. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  76992. - 02111-1307 USA. */
  76993. + License along with the GNU C Library; if not, see
  76994. + <http://www.gnu.org/licenses/>. */
  76995. #ifndef _SYS_UCONTEXT_H
  76996. #define _SYS_UCONTEXT_H 1
  76997. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/user.h uClibc-git/libc/sysdeps/linux/x86_64/sys/user.h
  76998. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sys/user.h 2012-05-15 09:20:09.000000000 +0200
  76999. +++ uClibc-git/libc/sysdeps/linux/x86_64/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  77000. @@ -12,9 +12,8 @@
  77001. Lesser General Public License for more details.
  77002. You should have received a copy of the GNU Lesser General Public
  77003. - License along with the GNU C Library; if not, write to the Free
  77004. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77005. - 02111-1307 USA. */
  77006. + License along with the GNU C Library; if not, see
  77007. + <http://www.gnu.org/licenses/>. */
  77008. #ifndef _SYS_USER_H
  77009. #define _SYS_USER_H 1
  77010. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/syscall.S uClibc-git/libc/sysdeps/linux/x86_64/syscall.S
  77011. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/syscall.S 2012-05-15 09:20:09.000000000 +0200
  77012. +++ uClibc-git/libc/sysdeps/linux/x86_64/syscall.S 2014-02-03 12:32:56.000000000 +0100
  77013. @@ -12,9 +12,8 @@
  77014. Lesser General Public License for more details.
  77015. You should have received a copy of the GNU Lesser General Public
  77016. - License along with the GNU C Library; if not, write to the Free
  77017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77018. - 02111-1307 USA. */
  77019. + License along with the GNU C Library; if not, see
  77020. + <http://www.gnu.org/licenses/>. */
  77021. /* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
  77022. more information about the value -4095 used below. */
  77023. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sysdep.h uClibc-git/libc/sysdeps/linux/x86_64/sysdep.h
  77024. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  77025. +++ uClibc-git/libc/sysdeps/linux/x86_64/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  77026. @@ -12,9 +12,8 @@
  77027. Lesser General Public License for more details.
  77028. You should have received a copy of the GNU Lesser General Public
  77029. - License along with the GNU C Library; if not, write to the Free
  77030. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77031. - 02111-1307 USA. */
  77032. + License along with the GNU C Library; if not, see
  77033. + <http://www.gnu.org/licenses/>. */
  77034. #ifndef _LINUX_X86_64_SYSDEP_H
  77035. #define _LINUX_X86_64_SYSDEP_H 1
  77036. @@ -183,8 +182,6 @@
  77037. # define PSEUDO_END_ERRVAL(name) \
  77038. END (name)
  77039. -# define ret_ERRVAL ret
  77040. -
  77041. # ifndef __PIC__
  77042. # define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
  77043. # elif defined(RTLD_PRIVATE_ERRNO)
  77044. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/ucontext_i.sym uClibc-git/libc/sysdeps/linux/x86_64/ucontext_i.sym
  77045. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/ucontext_i.sym 1970-01-01 01:00:00.000000000 +0100
  77046. +++ uClibc-git/libc/sysdeps/linux/x86_64/ucontext_i.sym 2014-02-03 12:32:56.000000000 +0100
  77047. @@ -0,0 +1,37 @@
  77048. +#include <stddef.h>
  77049. +#include <signal.h>
  77050. +#include <sys/ucontext.h>
  77051. +
  77052. +--
  77053. +
  77054. +SIG_BLOCK
  77055. +SIG_SETMASK
  77056. +
  77057. +_NSIG8 (_NSIG / 8)
  77058. +
  77059. +#define ucontext(member) offsetof (ucontext_t, member)
  77060. +#define mcontext(member) ucontext (uc_mcontext.member)
  77061. +#define mreg(reg) mcontext (gregs[REG_##reg])
  77062. +
  77063. +oRBP mreg (RBP)
  77064. +oRSP mreg (RSP)
  77065. +oRBX mreg (RBX)
  77066. +oR8 mreg (R8)
  77067. +oR9 mreg (R9)
  77068. +oR10 mreg (R10)
  77069. +oR11 mreg (R11)
  77070. +oR12 mreg (R12)
  77071. +oR13 mreg (R13)
  77072. +oR14 mreg (R14)
  77073. +oR15 mreg (R15)
  77074. +oRDI mreg (RDI)
  77075. +oRSI mreg (RSI)
  77076. +oRDX mreg (RDX)
  77077. +oRAX mreg (RAX)
  77078. +oRCX mreg (RCX)
  77079. +oRIP mreg (RIP)
  77080. +oEFL mreg (EFL)
  77081. +oFPREGS mcontext (fpregs)
  77082. +oSIGMASK ucontext (uc_sigmask)
  77083. +oFPREGSMEM ucontext (__fpregs_mem)
  77084. +oMXCSR ucontext (__fpregs_mem.mxcsr)
  77085. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/vfork.S uClibc-git/libc/sysdeps/linux/x86_64/vfork.S
  77086. --- uClibc-0.9.33.2/libc/sysdeps/linux/x86_64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  77087. +++ uClibc-git/libc/sysdeps/linux/x86_64/vfork.S 2014-02-03 12:32:56.000000000 +0100
  77088. @@ -12,9 +12,8 @@
  77089. Lesser General Public License for more details.
  77090. You should have received a copy of the GNU Lesser General Public
  77091. - License along with the GNU C Library; if not, write to the Free
  77092. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77093. - 02111-1307 USA. */
  77094. + License along with the GNU C Library; if not, see
  77095. + <http://www.gnu.org/licenses/>. */
  77096. #include <sys/syscall.h>
  77097. @@ -63,4 +62,4 @@
  77098. .size __vfork,.-__vfork
  77099. weak_alias(__vfork,vfork)
  77100. -libc_hidden_weak(vfork)
  77101. +libc_hidden_def(vfork)
  77102. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/atomic.h uClibc-git/libc/sysdeps/linux/xtensa/bits/atomic.h
  77103. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/atomic.h 1970-01-01 01:00:00.000000000 +0100
  77104. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/atomic.h 2014-02-03 12:32:56.000000000 +0100
  77105. @@ -0,0 +1,232 @@
  77106. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  77107. + This file is part of the GNU C Library.
  77108. +
  77109. + The GNU C Library is free software; you can redistribute it and/or
  77110. + modify it under the terms of the GNU Lesser General Public
  77111. + License as published by the Free Software Foundation; either
  77112. + version 2.1 of the License, or (at your option) any later version.
  77113. +
  77114. + The GNU C Library is distributed in the hope that it will be useful,
  77115. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77116. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77117. + Lesser General Public License for more details.
  77118. +
  77119. + You should have received a copy of the GNU Lesser General Public
  77120. + License along with the GNU C Library; if not, see
  77121. + <http://www.gnu.org/licenses/>. */
  77122. +
  77123. +#ifndef _BITS_ATOMIC_H
  77124. +#define _BITS_ATOMIC_H 1
  77125. +
  77126. +#include <inttypes.h>
  77127. +
  77128. +typedef int32_t atomic32_t;
  77129. +typedef uint32_t uatomic32_t;
  77130. +typedef int_fast32_t atomic_fast32_t;
  77131. +typedef uint_fast32_t uatomic_fast32_t;
  77132. +
  77133. +typedef int64_t atomic64_t;
  77134. +typedef uint64_t uatomic64_t;
  77135. +typedef int_fast64_t atomic_fast64_t;
  77136. +typedef uint_fast64_t uatomic_fast64_t;
  77137. +
  77138. +typedef intptr_t atomicptr_t;
  77139. +typedef uintptr_t uatomicptr_t;
  77140. +typedef intmax_t atomic_max_t;
  77141. +typedef uintmax_t uatomic_max_t;
  77142. +
  77143. +
  77144. +/* Xtensa has only a 32-bit form of a store-conditional instruction. */
  77145. +
  77146. +#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval) \
  77147. + (abort (), 0)
  77148. +
  77149. +#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval) \
  77150. + (abort (), 0)
  77151. +
  77152. +#define __arch_compare_and_exchange_bool_8_rel(mem, newval, oldval) \
  77153. + (abort (), 0)
  77154. +
  77155. +#define __arch_compare_and_exchange_bool_16_rel(mem, newval, oldval) \
  77156. + (abort (), 0)
  77157. +
  77158. +/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
  77159. + Return the old *MEM value. */
  77160. +
  77161. +#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
  77162. + ({__typeof__(*(mem)) __tmp, __value; \
  77163. + __asm__ __volatile__( \
  77164. + "1: l32i %1, %2, 0 \n" \
  77165. + " bne %1, %4, 2f \n" \
  77166. + " wsr %1, SCOMPARE1 \n" \
  77167. + " mov %0, %1 \n" \
  77168. + " mov %1, %3 \n" \
  77169. + " s32c1i %1, %2, 0 \n" \
  77170. + " bne %0, %1, 1b \n" \
  77171. + "2: \n" \
  77172. + : "=&a" (__value), "=&a" (__tmp) \
  77173. + : "a" (mem), "a" (newval), "a" (oldval) \
  77174. + : "memory" ); \
  77175. + __tmp; \
  77176. + })
  77177. +
  77178. +/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
  77179. + Return zero if *MEM was changed or non-zero if no exchange happened. */
  77180. +
  77181. +#define __arch_compare_and_exchange_bool_32_acq(mem, newval, oldval) \
  77182. + ({__typeof__(*(mem)) __tmp, __value; \
  77183. + __asm__ __volatile__( \
  77184. + "1: l32i %0, %2, 0 \n" \
  77185. + " sub %1, %4, %0 \n" \
  77186. + " bnez %1, 2f \n" \
  77187. + " wsr %0, SCOMPARE1 \n" \
  77188. + " mov %1, %3 \n" \
  77189. + " s32c1i %1, %2, 0 \n" \
  77190. + " bne %0, %1, 1b \n" \
  77191. + " movi %1, 0 \n" \
  77192. + "2: \n" \
  77193. + : "=&a" (__value), "=&a" (__tmp) \
  77194. + : "a" (mem), "a" (newval), "a" (oldval) \
  77195. + : "memory" ); \
  77196. + __tmp != 0; \
  77197. + })
  77198. +
  77199. +/* Store NEWVALUE in *MEM and return the old value. */
  77200. +
  77201. +#define __arch_exchange_32_acq(mem, newval) \
  77202. + ({__typeof__(*(mem)) __tmp, __value; \
  77203. + __asm__ __volatile__( \
  77204. + "1: l32i %0, %2, 0 \n" \
  77205. + " wsr %0, SCOMPARE1 \n" \
  77206. + " mov %1, %3 \n" \
  77207. + " s32c1i %1, %2, 0 \n" \
  77208. + " bne %0, %1, 1b \n" \
  77209. + : "=&a" (__value), "=&a" (__tmp) \
  77210. + : "a" (mem), "a" (newval) \
  77211. + : "memory" ); \
  77212. + __tmp; \
  77213. + })
  77214. +
  77215. +/* Add VALUE to *MEM and return the old value of *MEM. */
  77216. +
  77217. +#define __arch_atomic_exchange_and_add_32(mem, value) \
  77218. + ({__typeof__(*(mem)) __tmp, __value; \
  77219. + __asm__ __volatile__( \
  77220. + "1: l32i %0, %2, 0 \n" \
  77221. + " wsr %0, SCOMPARE1 \n" \
  77222. + " add %1, %0, %3 \n" \
  77223. + " s32c1i %1, %2, 0 \n" \
  77224. + " bne %0, %1, 1b \n" \
  77225. + : "=&a" (__value), "=&a" (__tmp) \
  77226. + : "a" (mem), "a" (value) \
  77227. + : "memory" ); \
  77228. + __tmp; \
  77229. + })
  77230. +
  77231. +/* Subtract VALUE from *MEM and return the old value of *MEM. */
  77232. +
  77233. +#define __arch_atomic_exchange_and_sub_32(mem, value) \
  77234. + ({__typeof__(*(mem)) __tmp, __value; \
  77235. + __asm__ __volatile__( \
  77236. + "1: l32i %0, %2, 0 \n" \
  77237. + " wsr %0, SCOMPARE1 \n" \
  77238. + " sub %1, %0, %3 \n" \
  77239. + " s32c1i %1, %2, 0 \n" \
  77240. + " bne %0, %1, 1b \n" \
  77241. + : "=&a" (__value), "=&a" (__tmp) \
  77242. + : "a" (mem), "a" (value) \
  77243. + : "memory" ); \
  77244. + __tmp; \
  77245. + })
  77246. +
  77247. +/* Decrement *MEM if it is > 0, and return the old value. */
  77248. +
  77249. +#define __arch_atomic_decrement_if_positive_32(mem) \
  77250. + ({__typeof__(*(mem)) __tmp, __value; \
  77251. + __asm__ __volatile__( \
  77252. + "1: l32i %0, %2, 0 \n" \
  77253. + " blti %0, 1, 2f \n" \
  77254. + " wsr %0, SCOMPARE1 \n" \
  77255. + " addi %1, %0, -1 \n" \
  77256. + " s32c1i %1, %2, 0 \n" \
  77257. + " bne %0, %1, 1b \n" \
  77258. + "2: \n" \
  77259. + : "=&a" (__value), "=&a" (__tmp) \
  77260. + : "a" (mem) \
  77261. + : "memory" ); \
  77262. + __value; \
  77263. + })
  77264. +
  77265. +
  77266. +/* These are the preferred public interfaces: */
  77267. +
  77268. +#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
  77269. + ({ \
  77270. + if (sizeof (*mem) != 4) \
  77271. + abort(); \
  77272. + __arch_compare_and_exchange_val_32_acq(mem, newval, oldval); \
  77273. + })
  77274. +
  77275. +#define atomic_exchange_acq(mem, newval) \
  77276. + ({ \
  77277. + if (sizeof(*(mem)) != 4) \
  77278. + abort(); \
  77279. + __arch_exchange_32_acq(mem, newval); \
  77280. + })
  77281. +
  77282. +#define atomic_exchange_and_add(mem, newval) \
  77283. + ({ \
  77284. + if (sizeof(*(mem)) != 4) \
  77285. + abort(); \
  77286. + __arch_atomic_exchange_and_add_32(mem, newval); \
  77287. + })
  77288. +
  77289. +#define atomic_exchange_and_sub(mem, newval) \
  77290. + ({ \
  77291. + if (sizeof(*(mem)) != 4) \
  77292. + abort(); \
  77293. + __arch_atomic_exchange_and_sub_32(mem, newval); \
  77294. + })
  77295. +
  77296. +#define atomic_decrement_if_positive(mem) \
  77297. + ({ \
  77298. + if (sizeof(*(mem)) != 4) \
  77299. + abort(); \
  77300. + __arch_atomic_decrement_if_positive_32(mem); \
  77301. + })
  77302. +
  77303. +
  77304. +# define __arch_compare_and_exchange_bool_64_acq(mem, newval, oldval) \
  77305. + (abort (), 0)
  77306. +
  77307. +# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
  77308. + (abort (), (__typeof (*mem)) 0)
  77309. +
  77310. +# define __arch_compare_and_exchange_bool_64_rel(mem, newval, oldval) \
  77311. + (abort (), 0)
  77312. +
  77313. +# define __arch_compare_and_exchange_val_64_rel(mem, newval, oldval) \
  77314. + (abort (), (__typeof (*mem)) 0)
  77315. +
  77316. +# define __arch_atomic_exchange_64_acq(mem, value) \
  77317. + ({ abort (); (*mem) = (value); })
  77318. +
  77319. +# define __arch_atomic_exchange_64_rel(mem, value) \
  77320. + ({ abort (); (*mem) = (value); })
  77321. +
  77322. +# define __arch_atomic_exchange_and_add_64(mem, value) \
  77323. + ({ abort (); (*mem) = (value); })
  77324. +
  77325. +# define __arch_atomic_increment_val_64(mem) \
  77326. + ({ abort (); (*mem)++; })
  77327. +
  77328. +# define __arch_atomic_decrement_val_64(mem) \
  77329. + ({ abort (); (*mem)--; })
  77330. +
  77331. +# define __arch_atomic_decrement_if_positive_64(mem) \
  77332. + ({ abort (); (*mem)--; })
  77333. +
  77334. +
  77335. +
  77336. +#endif /* _BITS_ATOMIC_H */
  77337. +
  77338. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/fcntl.h uClibc-git/libc/sysdeps/linux/xtensa/bits/fcntl.h
  77339. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/fcntl.h 2012-05-15 09:20:09.000000000 +0200
  77340. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/fcntl.h 2014-02-03 12:32:56.000000000 +0100
  77341. @@ -14,9 +14,8 @@
  77342. Lesser General Public License for more details.
  77343. You should have received a copy of the GNU Lesser General Public
  77344. - License along with the GNU C Library; if not, write to the Free
  77345. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77346. - Boston, MA 02110-1301, USA. */
  77347. + License along with the GNU C Library; if not, see
  77348. + <http://www.gnu.org/licenses/>. */
  77349. #ifndef _FCNTL_H
  77350. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  77351. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/ipc.h uClibc-git/libc/sysdeps/linux/xtensa/bits/ipc.h
  77352. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/ipc.h 2012-05-15 09:20:09.000000000 +0200
  77353. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/ipc.h 2014-02-03 12:32:56.000000000 +0100
  77354. @@ -12,9 +12,8 @@
  77355. Lesser General Public License for more details.
  77356. You should have received a copy of the GNU Lesser General Public
  77357. - License along with the GNU C Library; if not, write to the Free
  77358. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77359. - Boston, MA 02110-1301, USA. */
  77360. + License along with the GNU C Library; if not, see
  77361. + <http://www.gnu.org/licenses/>. */
  77362. #ifndef _SYS_IPC_H
  77363. # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
  77364. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/kernel_types.h uClibc-git/libc/sysdeps/linux/xtensa/bits/kernel_types.h
  77365. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/kernel_types.h 2012-05-15 09:20:09.000000000 +0200
  77366. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/kernel_types.h 2014-02-03 12:32:56.000000000 +0100
  77367. @@ -33,6 +33,8 @@
  77368. typedef unsigned short __kernel_old_uid_t;
  77369. typedef unsigned short __kernel_old_gid_t;
  77370. typedef unsigned short __kernel_old_dev_t;
  77371. +typedef long __kernel_long_t;
  77372. +typedef unsigned long __kernel_ulong_t;
  77373. typedef long long __kernel_loff_t;
  77374. /* Beginning in 2.6 kernels, which is the first version that includes the
  77375. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mathdef.h uClibc-git/libc/sysdeps/linux/xtensa/bits/mathdef.h
  77376. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mathdef.h 2012-05-15 09:20:09.000000000 +0200
  77377. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/mathdef.h 2014-02-03 12:32:56.000000000 +0100
  77378. @@ -13,9 +13,8 @@
  77379. Lesser General Public License for more details.
  77380. You should have received a copy of the GNU Lesser General Public
  77381. - License along with the GNU C Library; if not, write to the Free
  77382. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77383. - Boston, MA 02110-1301, USA. */
  77384. + License along with the GNU C Library; if not, see
  77385. + <http://www.gnu.org/licenses/>. */
  77386. #if !defined _MATH_H && !defined _COMPLEX_H
  77387. # error "Never use <bits/mathdef.h> directly; include <math.h> instead"
  77388. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mman.h uClibc-git/libc/sysdeps/linux/xtensa/bits/mman.h
  77389. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/mman.h 2012-05-15 09:20:09.000000000 +0200
  77390. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/mman.h 2014-02-03 12:32:56.000000000 +0100
  77391. @@ -13,9 +13,8 @@
  77392. Lesser General Public License for more details.
  77393. You should have received a copy of the GNU Lesser General Public
  77394. - License along with the GNU C Library; if not, write to the Free
  77395. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77396. - Boston, MA 02110-1301, USA. */
  77397. + License along with the GNU C Library; if not, see
  77398. + <http://www.gnu.org/licenses/>. */
  77399. #ifndef _SYS_MMAN_H
  77400. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  77401. @@ -64,7 +63,7 @@
  77402. # define MAP_NORESERVE 0x0400 /* Don't check for reservations. */
  77403. # define MAP_POPULATE 0x10000 /* Populate (prefault) pagetables. */
  77404. # define MAP_NONBLOCK 0x20000 /* Do not block on IO. */
  77405. -# define MAP_UNINITIALIZE 0x4000000 /* For anonymous mmap, memory could
  77406. +# define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
  77407. be uninitialized. */
  77408. #endif
  77409. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/msq.h uClibc-git/libc/sysdeps/linux/xtensa/bits/msq.h
  77410. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/msq.h 2012-05-15 09:20:09.000000000 +0200
  77411. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/msq.h 2014-02-03 12:32:56.000000000 +0100
  77412. @@ -12,9 +12,8 @@
  77413. Lesser General Public License for more details.
  77414. You should have received a copy of the GNU Lesser General Public
  77415. - License along with the GNU C Library; if not, write to the Free
  77416. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77417. - Boston, MA 02110-1301, USA. */
  77418. + License along with the GNU C Library; if not, see
  77419. + <http://www.gnu.org/licenses/>. */
  77420. #ifndef _SYS_MSG_H
  77421. # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
  77422. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/setjmp.h uClibc-git/libc/sysdeps/linux/xtensa/bits/setjmp.h
  77423. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/setjmp.h 2012-05-15 09:20:09.000000000 +0200
  77424. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/setjmp.h 2014-02-03 12:32:56.000000000 +0100
  77425. @@ -12,9 +12,8 @@
  77426. Lesser General Public License for more details.
  77427. You should have received a copy of the GNU Lesser General Public
  77428. - License along with the GNU C Library; if not, write to the Free
  77429. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77430. - Boston, MA 02110-1301, USA. */
  77431. + License along with the GNU C Library; if not, see
  77432. + <http://www.gnu.org/licenses/>. */
  77433. /* Define the machine-dependent type `jmp_buf'. Xtensa version. */
  77434. #ifndef _BITS_SETJMP_H
  77435. @@ -30,17 +29,6 @@
  77436. subsequent alloca in proc moves $sp), and the return address within
  77437. proc. Everything else is saved on the stack in the normal save areas. */
  77438. -#ifndef _ASM
  77439. typedef int __jmp_buf[17];
  77440. -#endif
  77441. -
  77442. -#define JB_SP 1
  77443. -#define JB_PC 16
  77444. -
  77445. -/* Test if longjmp to JMPBUF would unwind the frame containing a local
  77446. - variable at ADDRESS. */
  77447. -
  77448. -#define _JMPBUF_UNWINDS(jmpbuf, address) \
  77449. - ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  77450. #endif /* bits/setjmp.h */
  77451. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/shm.h uClibc-git/libc/sysdeps/linux/xtensa/bits/shm.h
  77452. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/shm.h 2012-05-15 09:20:09.000000000 +0200
  77453. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/shm.h 2014-02-03 12:32:56.000000000 +0100
  77454. @@ -13,9 +13,8 @@
  77455. Lesser General Public License for more details.
  77456. You should have received a copy of the GNU Lesser General Public
  77457. - License along with the GNU C Library; if not, write to the Free
  77458. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77459. - Boston, MA 02110-1301, USA. */
  77460. + License along with the GNU C Library; if not, see
  77461. + <http://www.gnu.org/licenses/>. */
  77462. #ifndef _SYS_SHM_H
  77463. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  77464. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontext.h uClibc-git/libc/sysdeps/linux/xtensa/bits/sigcontext.h
  77465. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontext.h 1970-01-01 01:00:00.000000000 +0100
  77466. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/sigcontext.h 2014-02-03 12:32:56.000000000 +0100
  77467. @@ -0,0 +1,40 @@
  77468. +/* Copyright (C) 2012 Free Software Foundation, Inc.
  77469. + This file is part of the GNU C Library.
  77470. +
  77471. + The GNU C Library is free software; you can redistribute it and/or
  77472. + modify it under the terms of the GNU Lesser General Public
  77473. + License as published by the Free Software Foundation; either
  77474. + version 2.1 of the License, or (at your option) any later version.
  77475. +
  77476. + The GNU C Library is distributed in the hope that it will be useful,
  77477. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77478. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77479. + Lesser General Public License for more details.
  77480. +
  77481. + You should have received a copy of the GNU Lesser General Public
  77482. + License along with the GNU C Library; if not, see
  77483. + <http://www.gnu.org/licenses/>. */
  77484. +
  77485. +#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
  77486. +# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
  77487. +#endif
  77488. +
  77489. +#ifndef _BITS_SIGCONTEXT_H
  77490. +#define _BITS_SIGCONTEXT_H 1
  77491. +
  77492. +struct sigcontext
  77493. +{
  77494. + unsigned long sc_pc;
  77495. + unsigned long sc_ps;
  77496. + unsigned long sc_lbeg;
  77497. + unsigned long sc_lend;
  77498. + unsigned long sc_lcount;
  77499. + unsigned long sc_sar;
  77500. + unsigned long sc_acclo;
  77501. + unsigned long sc_acchi;
  77502. + unsigned long sc_a[16];
  77503. + void *sc_xtregs;
  77504. +};
  77505. +
  77506. +#endif /* _BITS_SIGCONTEXT_H */
  77507. +
  77508. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h uClibc-git/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h
  77509. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h 2012-05-15 09:20:09.000000000 +0200
  77510. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/sigcontextinfo.h 2014-02-03 12:32:56.000000000 +0100
  77511. @@ -12,9 +12,8 @@
  77512. Lesser General Public License for more details.
  77513. You should have received a copy of the GNU Lesser General Public
  77514. - License along with the GNU C Library; if not, write to the Free
  77515. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77516. - Boston, MA 02110-1301, USA. */
  77517. + License along with the GNU C Library; if not, see
  77518. + <http://www.gnu.org/licenses/>. */
  77519. /* Also see register-dump.h, where we spill live registers to the
  77520. stack so that we can trace the stack backward. */
  77521. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stackinfo.h uClibc-git/libc/sysdeps/linux/xtensa/bits/stackinfo.h
  77522. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stackinfo.h 2012-05-15 09:20:09.000000000 +0200
  77523. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/stackinfo.h 2014-02-03 12:32:56.000000000 +0100
  77524. @@ -12,9 +12,8 @@
  77525. Lesser General Public License for more details.
  77526. You should have received a copy of the GNU Lesser General Public
  77527. - License along with the GNU C Library; if not, write to the Free
  77528. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77529. - Boston, MA 02110-1301, USA. */
  77530. + License along with the GNU C Library; if not, see
  77531. + <http://www.gnu.org/licenses/>. */
  77532. /* This file contains a bit of information about the stack allocation
  77533. of the processor. */
  77534. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stat.h uClibc-git/libc/sysdeps/linux/xtensa/bits/stat.h
  77535. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/stat.h 2012-05-15 09:20:09.000000000 +0200
  77536. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/stat.h 2014-02-03 12:32:56.000000000 +0100
  77537. @@ -12,9 +12,8 @@
  77538. Lesser General Public License for more details.
  77539. You should have received a copy of the GNU Lesser General Public
  77540. - License along with the GNU C Library; if not, write to the Free
  77541. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77542. - Boston, MA 02110-1301, USA. */
  77543. + License along with the GNU C Library; if not, see
  77544. + <http://www.gnu.org/licenses/>. */
  77545. #ifndef _SYS_STAT_H
  77546. # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
  77547. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h uClibc-git/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h
  77548. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h 2012-05-15 09:20:09.000000000 +0200
  77549. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/uClibc_arch_features.h 2014-02-03 12:32:56.000000000 +0100
  77550. @@ -11,8 +11,8 @@
  77551. /* can your target use syscall6() for mmap ? */
  77552. #define __UCLIBC_MMAP_HAS_6_ARGS__
  77553. -/* does your target use syscall4() for truncate64 ? (32bit arches only) */
  77554. -#define __UCLIBC_TRUNCATE64_HAS_4_ARGS__
  77555. +/* does your target align 64bit values in register pairs ? (32bit arches only) */
  77556. +#define __UCLIBC_SYSCALL_ALIGN_64BIT__
  77557. /* does your target have a broken create_module() ? */
  77558. #undef __UCLIBC_BROKEN_CREATE_MODULE__
  77559. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_page.h uClibc-git/libc/sysdeps/linux/xtensa/bits/uClibc_page.h
  77560. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/uClibc_page.h 2012-05-15 09:20:09.000000000 +0200
  77561. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/uClibc_page.h 1970-01-01 01:00:00.000000000 +0100
  77562. @@ -1,31 +0,0 @@
  77563. -/* Copyright (C) 2004 Erik Andersen
  77564. - *
  77565. - * This library is free software; you can redistribute it and/or
  77566. - * modify it under the terms of the GNU Lesser General Public
  77567. - * License as published by the Free Software Foundation; either
  77568. - * version 2.1 of the License, or (at your option) any later version.
  77569. - *
  77570. - * The GNU C Library is distributed in the hope that it will be useful,
  77571. - * but WITHOUT ANY WARRANTY; without even the implied warranty of
  77572. - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77573. - * Lesser General Public License for more details.
  77574. - *
  77575. - * You should have received a copy of the GNU Lesser General Public
  77576. - * License along with the GNU C Library; if not, write to the Free
  77577. - * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77578. - * 02111-1307 USA.
  77579. - */
  77580. -
  77581. -/* Supply an architecture specific value for PAGE_SIZE and friends. */
  77582. -
  77583. -#ifndef _UCLIBC_PAGE_H
  77584. -#define _UCLIBC_PAGE_H
  77585. -
  77586. -#include <bits/xtensa-config.h>
  77587. -
  77588. -/* PAGE_SHIFT determines the page size -- in this case 4096 */
  77589. -#define PAGE_SHIFT XCHAL_MMU_MIN_PTE_PAGE_SIZE
  77590. -#define PAGE_SIZE (1UL << PAGE_SHIFT)
  77591. -#define PAGE_MASK (~(PAGE_SIZE-1))
  77592. -
  77593. -#endif /* _UCLIBC_PAGE_H */
  77594. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/wordsize.h uClibc-git/libc/sysdeps/linux/xtensa/bits/wordsize.h
  77595. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/wordsize.h 2012-05-15 09:20:09.000000000 +0200
  77596. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/wordsize.h 2014-02-03 12:32:56.000000000 +0100
  77597. @@ -12,8 +12,7 @@
  77598. Lesser General Public License for more details.
  77599. You should have received a copy of the GNU Lesser General Public
  77600. - License along with the GNU C Library; if not, write to the Free
  77601. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  77602. - 02111-1307 USA. */
  77603. + License along with the GNU C Library; if not, see
  77604. + <http://www.gnu.org/licenses/>. */
  77605. #define __WORDSIZE 32
  77606. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/xtensa-config.h uClibc-git/libc/sysdeps/linux/xtensa/bits/xtensa-config.h
  77607. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/bits/xtensa-config.h 2012-05-15 09:20:09.000000000 +0200
  77608. +++ uClibc-git/libc/sysdeps/linux/xtensa/bits/xtensa-config.h 2014-02-03 12:32:56.000000000 +0100
  77609. @@ -14,9 +14,8 @@
  77610. Lesser General Public License for more details.
  77611. You should have received a copy of the GNU Lesser General Public
  77612. - License along with the GNU C Library; if not, write to the Free
  77613. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77614. - Boston, MA 02110-1301, USA. */
  77615. + License along with the GNU C Library; if not, see
  77616. + <http://www.gnu.org/licenses/>. */
  77617. #ifndef XTENSA_CONFIG_H
  77618. #define XTENSA_CONFIG_H
  77619. @@ -44,10 +43,4 @@
  77620. #undef XCHAL_NUM_AREGS
  77621. #define XCHAL_NUM_AREGS 64
  77622. -/* Set a default page size. This is currently needed when bootstrapping
  77623. - the runtime linker. See comments in dl-machine.h where this is used. */
  77624. -
  77625. -#undef XCHAL_MMU_MIN_PTE_PAGE_SIZE
  77626. -#define XCHAL_MMU_MIN_PTE_PAGE_SIZE 12
  77627. -
  77628. #endif /* !XTENSA_CONFIG_H */
  77629. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/brk.c uClibc-git/libc/sysdeps/linux/xtensa/brk.c
  77630. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/brk.c 2012-05-15 09:20:09.000000000 +0200
  77631. +++ uClibc-git/libc/sysdeps/linux/xtensa/brk.c 2014-02-03 12:32:56.000000000 +0100
  77632. @@ -13,9 +13,8 @@
  77633. Lesser General Public License for more details.
  77634. You should have received a copy of the GNU Lesser General Public
  77635. - License along with the GNU C Library; if not, write to the Free
  77636. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77637. - Boston, MA 02110-1301, USA. */
  77638. + License along with the GNU C Library; if not, see
  77639. + <http://www.gnu.org/licenses/>. */
  77640. #include <errno.h>
  77641. #include <unistd.h>
  77642. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/clone.S uClibc-git/libc/sysdeps/linux/xtensa/clone.S
  77643. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/clone.S 2012-05-15 09:20:09.000000000 +0200
  77644. +++ uClibc-git/libc/sysdeps/linux/xtensa/clone.S 2014-02-03 12:32:56.000000000 +0100
  77645. @@ -11,9 +11,8 @@
  77646. Lesser General Public License for more details.
  77647. You should have received a copy of the GNU Lesser General Public
  77648. - License along with the GNU C Library; if not, write to the Free
  77649. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77650. - Boston, MA 02110-1301, USA. */
  77651. + License along with the GNU C Library; if not, see
  77652. + <http://www.gnu.org/licenses/>. */
  77653. /* clone is even more special than fork as it mucks with stacks
  77654. and invokes a function in the right context after it's all over. */
  77655. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/crt1.S uClibc-git/libc/sysdeps/linux/xtensa/crt1.S
  77656. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/crt1.S 2012-05-15 09:20:09.000000000 +0200
  77657. +++ uClibc-git/libc/sysdeps/linux/xtensa/crt1.S 2014-02-03 12:32:56.000000000 +0100
  77658. @@ -30,9 +30,8 @@
  77659. Lesser General Public License for more details.
  77660. You should have received a copy of the GNU Lesser General Public
  77661. - License along with the GNU C Library; if not, write to the Free
  77662. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77663. - Boston, MA 02110-1301, USA. */
  77664. + License along with the GNU C Library; if not, see
  77665. + <http://www.gnu.org/licenses/>. */
  77666. #include <features.h>
  77667. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/fork.c uClibc-git/libc/sysdeps/linux/xtensa/fork.c
  77668. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/fork.c 2012-05-15 09:20:09.000000000 +0200
  77669. +++ uClibc-git/libc/sysdeps/linux/xtensa/fork.c 2014-02-03 12:32:56.000000000 +0100
  77670. @@ -7,19 +7,19 @@
  77671. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77672. */
  77673. -#include <unistd.h>
  77674. -#include <sys/syscall.h>
  77675. -#define _SIGNAL_H
  77676. -#include <bits/signum.h>
  77677. /* Xtensa doesn't provide a 'fork' system call, so we use 'clone'. */
  77678. +#include <sys/syscall.h>
  77679. -extern __typeof(fork) __libc_fork;
  77680. +#if defined __NR_clone && defined __ARCH_USE_MMU__
  77681. +# include <unistd.h>
  77682. +# include <signal.h>
  77683. +# include <cancel.h>
  77684. -libc_hidden_proto(fork)
  77685. -pid_t __libc_fork(void)
  77686. +pid_t fork(void)
  77687. {
  77688. return (pid_t) INLINE_SYSCALL(clone, 2, SIGCHLD, 0);
  77689. }
  77690. -weak_alias(__libc_fork, fork)
  77691. -libc_hidden_weak(fork)
  77692. +lt_strong_alias(fork)
  77693. +lt_libc_hidden(fork)
  77694. +#endif
  77695. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h uClibc-git/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h
  77696. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h 1970-01-01 01:00:00.000000000 +0100
  77697. +++ uClibc-git/libc/sysdeps/linux/xtensa/jmpbuf-offsets.h 2014-02-03 12:32:56.000000000 +0100
  77698. @@ -0,0 +1,20 @@
  77699. +/* Private macros for accessing __jmp_buf contents. Xtensa version.
  77700. + Copyright (C) 2006 Free Software Foundation, Inc.
  77701. + This file is part of the GNU C Library.
  77702. +
  77703. + The GNU C Library is free software; you can redistribute it and/or
  77704. + modify it under the terms of the GNU Lesser General Public
  77705. + License as published by the Free Software Foundation; either
  77706. + version 2.1 of the License, or (at your option) any later version.
  77707. +
  77708. + The GNU C Library is distributed in the hope that it will be useful,
  77709. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77710. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77711. + Lesser General Public License for more details.
  77712. +
  77713. + You should have received a copy of the GNU Lesser General Public
  77714. + License along with the GNU C Library; if not, see
  77715. + <http://www.gnu.org/licenses/>. */
  77716. +
  77717. +#define JB_SP 1
  77718. +#define JB_PC 16
  77719. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h uClibc-git/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h
  77720. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  77721. +++ uClibc-git/libc/sysdeps/linux/xtensa/jmpbuf-unwind.h 2014-02-03 12:32:56.000000000 +0100
  77722. @@ -0,0 +1,25 @@
  77723. +/* Copyright (C) 1997, 1998, 2007 Free Software Foundation, Inc.
  77724. + This file is part of the GNU C Library.
  77725. +
  77726. + The GNU C Library is free software; you can redistribute it and/or
  77727. + modify it under the terms of the GNU Lesser General Public
  77728. + License as published by the Free Software Foundation; either
  77729. + version 2.1 of the License, or (at your option) any later version.
  77730. +
  77731. + The GNU C Library is distributed in the hope that it will be useful,
  77732. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  77733. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  77734. + Lesser General Public License for more details.
  77735. +
  77736. + You should have received a copy of the GNU Lesser General Public
  77737. + License along with the GNU C Library; if not, see
  77738. + <http://www.gnu.org/licenses/>. */
  77739. +
  77740. +/* Test if longjmp to JMPBUF would unwind the frame containing a local
  77741. + variable at ADDRESS. */
  77742. +
  77743. +#include <setjmp.h>
  77744. +#include <jmpbuf-offsets.h>
  77745. +
  77746. +#define _JMPBUF_UNWINDS(jmpbuf, address) \
  77747. + ((void *) (address) < (void *) (jmpbuf)[JB_SP])
  77748. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/__longjmp.S uClibc-git/libc/sysdeps/linux/xtensa/__longjmp.S
  77749. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/__longjmp.S 2012-05-15 09:20:09.000000000 +0200
  77750. +++ uClibc-git/libc/sysdeps/linux/xtensa/__longjmp.S 2014-02-03 12:32:56.000000000 +0100
  77751. @@ -14,9 +14,8 @@
  77752. Lesser General Public License for more details.
  77753. You should have received a copy of the GNU Lesser General Public
  77754. - License along with the GNU C Library; if not, write to the Free
  77755. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77756. - Boston, MA 02110-1301, USA. */
  77757. + License along with the GNU C Library; if not, see
  77758. + <http://www.gnu.org/licenses/>. */
  77759. /* This implementation relies heavily on the Xtensa register window
  77760. mechanism. Setjmp flushes all the windows except its own to the
  77761. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/Makefile.arch uClibc-git/libc/sysdeps/linux/xtensa/Makefile.arch
  77762. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  77763. +++ uClibc-git/libc/sysdeps/linux/xtensa/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  77764. @@ -5,11 +5,7 @@
  77765. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77766. #
  77767. -CSRC := brk.c fork.c pread_write.c sigaction.c __syscall_error.c
  77768. +CSRC-y := brk.c fork.c sigaction.c __syscall_error.c
  77769. -ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
  77770. - CSRC += posix_fadvise.c posix_fadvise64.c
  77771. -endif
  77772. -
  77773. -SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S \
  77774. +SSRC-y := bsd-_setjmp.S bsd-setjmp.S setjmp.S clone.S \
  77775. sigrestorer.S syscall.S mmap.S windowspill.S __longjmp.S vfork.S
  77776. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/mmap.S uClibc-git/libc/sysdeps/linux/xtensa/mmap.S
  77777. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/mmap.S 2012-05-15 09:20:09.000000000 +0200
  77778. +++ uClibc-git/libc/sysdeps/linux/xtensa/mmap.S 2014-02-03 12:32:56.000000000 +0100
  77779. @@ -12,9 +12,8 @@
  77780. Lesser General Public License for more details.
  77781. You should have received a copy of the GNU Lesser General Public
  77782. - License along with the GNU C Library; if not, write to the Free
  77783. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  77784. - Boston, MA 02110-1301, USA. */
  77785. + License along with the GNU C Library; if not, see
  77786. + <http://www.gnu.org/licenses/>. */
  77787. #include "sysdep.h"
  77788. #include <sys/syscall.h>
  77789. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise64.c uClibc-git/libc/sysdeps/linux/xtensa/posix_fadvise64.c
  77790. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise64.c 2012-05-15 09:20:09.000000000 +0200
  77791. +++ uClibc-git/libc/sysdeps/linux/xtensa/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100
  77792. @@ -1,39 +0,0 @@
  77793. -/* vi: set sw=4 ts=4: */
  77794. -/*
  77795. - * posix_fadvise64() for Xtensa uClibc
  77796. - *
  77797. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  77798. - * Copyright (C) 2007 Tensilica Inc.
  77799. - *
  77800. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77801. - */
  77802. -
  77803. -#include <features.h>
  77804. -#include <unistd.h>
  77805. -#include <errno.h>
  77806. -#include <endian.h>
  77807. -#include <stdint.h>
  77808. -#include <sys/types.h>
  77809. -#include <sys/syscall.h>
  77810. -#include <fcntl.h>
  77811. -
  77812. -#ifdef __UCLIBC_HAS_LFS__
  77813. -
  77814. -int posix_fadvise64 (int fd, __off64_t offset, __off64_t len, int advice)
  77815. -{
  77816. -#ifdef __NR_fadvise64_64
  77817. - INTERNAL_SYSCALL_DECL (err);
  77818. - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,
  77819. - __LONG_LONG_PAIR ((long) (offset >> 32),
  77820. - (long) offset),
  77821. - __LONG_LONG_PAIR ((long) (len >> 32),
  77822. - (long) len));
  77823. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  77824. - return 0;
  77825. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  77826. -#else
  77827. - return ENOSYS;
  77828. -#endif
  77829. -}
  77830. -
  77831. -#endif /* __UCLIBC_HAS_LFS__ */
  77832. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise.c uClibc-git/libc/sysdeps/linux/xtensa/posix_fadvise.c
  77833. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/posix_fadvise.c 2012-05-15 09:20:09.000000000 +0200
  77834. +++ uClibc-git/libc/sysdeps/linux/xtensa/posix_fadvise.c 1970-01-01 01:00:00.000000000 +0100
  77835. @@ -1,29 +0,0 @@
  77836. -/* vi: set sw=4 ts=4: */
  77837. -/*
  77838. - * posix_fadvise() for Xtensa uClibc
  77839. - *
  77840. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  77841. - * Copyright (C) 2007 Tensilica Inc.
  77842. - *
  77843. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77844. - */
  77845. -
  77846. -#include <sys/syscall.h>
  77847. -#include <fcntl.h>
  77848. -
  77849. -int posix_fadvise (int fd, off_t offset, off_t len, int advice)
  77850. -{
  77851. -#ifdef __NR_fadvise64_64
  77852. - INTERNAL_SYSCALL_DECL (err);
  77853. - int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, advice,
  77854. - __LONG_LONG_PAIR ((long) (offset >> 31),
  77855. - (long) offset),
  77856. - __LONG_LONG_PAIR ((long) (len >> 31),
  77857. - (long) len));
  77858. - if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
  77859. - return 0;
  77860. - return INTERNAL_SYSCALL_ERRNO (ret, err);
  77861. -#else
  77862. - return ENOSYS;
  77863. -#endif
  77864. -}
  77865. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/pread_write.c uClibc-git/libc/sysdeps/linux/xtensa/pread_write.c
  77866. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/pread_write.c 2012-05-15 09:20:09.000000000 +0200
  77867. +++ uClibc-git/libc/sysdeps/linux/xtensa/pread_write.c 1970-01-01 01:00:00.000000000 +0100
  77868. @@ -1,189 +0,0 @@
  77869. -/* vi: set sw=4 ts=4: */
  77870. -/*
  77871. - * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  77872. - *
  77873. - * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  77874. - */
  77875. -/*
  77876. - * Based in part on the files
  77877. - * ./sysdeps/unix/sysv/linux/pwrite.c,
  77878. - * ./sysdeps/unix/sysv/linux/pread.c,
  77879. - * sysdeps/posix/pread.c
  77880. - * sysdeps/posix/pwrite.c
  77881. - * from GNU libc 2.2.5, but reworked considerably...
  77882. - */
  77883. -
  77884. -#include <sys/syscall.h>
  77885. -#include <unistd.h>
  77886. -#include <stdint.h>
  77887. -#include <endian.h>
  77888. -
  77889. -extern __typeof(pread) __libc_pread;
  77890. -extern __typeof(pwrite) __libc_pwrite;
  77891. -#ifdef __UCLIBC_HAS_LFS__
  77892. -extern __typeof(pread64) __libc_pread64;
  77893. -extern __typeof(pwrite64) __libc_pwrite64;
  77894. -#endif
  77895. -
  77896. -#include <bits/kernel_types.h>
  77897. -
  77898. -#ifdef __NR_pread
  77899. -
  77900. -# define __NR___syscall_pread __NR_pread
  77901. -/* On Xtensa, 64-bit values are aligned in even/odd register pairs. */
  77902. -static __inline__ _syscall6(ssize_t, __syscall_pread, int, fd, void *, buf,
  77903. - size_t, count, int, pad, off_t, offset_hi, off_t, offset_lo)
  77904. -
  77905. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  77906. -{
  77907. - return __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset));
  77908. -}
  77909. -weak_alias(__libc_pread,pread)
  77910. -
  77911. -# ifdef __UCLIBC_HAS_LFS__
  77912. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  77913. -{
  77914. - uint32_t low = offset & 0xffffffff;
  77915. - uint32_t high = offset >> 32;
  77916. - return __syscall_pread(fd, buf, count, 0, __LONG_LONG_PAIR(high, low));
  77917. -}
  77918. -weak_alias(__libc_pread64,pread64)
  77919. -# endif /* __UCLIBC_HAS_LFS__ */
  77920. -
  77921. -#endif /* __NR_pread */
  77922. -
  77923. -#ifdef __NR_pwrite
  77924. -
  77925. -# define __NR___syscall_pwrite __NR_pwrite
  77926. -/* On Xtensa, 64-bit values are aligned in even/odd register pairs. */
  77927. -static __inline__ _syscall6(ssize_t, __syscall_pwrite, int, fd, const void *, buf,
  77928. - size_t, count, int, pad, off_t, offset_hi, off_t, offset_lo)
  77929. -
  77930. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  77931. -{
  77932. - return __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(offset >> 31, offset));
  77933. -}
  77934. -weak_alias(__libc_pwrite,pwrite)
  77935. -
  77936. -# ifdef __UCLIBC_HAS_LFS__
  77937. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  77938. -{
  77939. - uint32_t low = offset & 0xffffffff;
  77940. - uint32_t high = offset >> 32;
  77941. - return __syscall_pwrite(fd, buf, count, 0, __LONG_LONG_PAIR(high, low));
  77942. -}
  77943. -weak_alias(__libc_pwrite64,pwrite64)
  77944. -# endif /* __UCLIBC_HAS_LFS__ */
  77945. -#endif /* __NR_pwrite */
  77946. -
  77947. -#if ! defined __NR_pread || ! defined __NR_pwrite
  77948. -
  77949. -static ssize_t __fake_pread_write(int fd, void *buf,
  77950. - size_t count, off_t offset, int do_pwrite)
  77951. -{
  77952. - int save_errno;
  77953. - ssize_t result;
  77954. - off_t old_offset;
  77955. -
  77956. - /* Since we must not change the file pointer preserve the
  77957. - * value so that we can restore it later. */
  77958. - if ((old_offset=lseek(fd, 0, SEEK_CUR)) == (off_t) -1)
  77959. - return -1;
  77960. -
  77961. - /* Set to wanted position. */
  77962. - if (lseek(fd, offset, SEEK_SET) == (off_t) -1)
  77963. - return -1;
  77964. -
  77965. - if (do_pwrite == 1) {
  77966. - /* Write the data. */
  77967. - result = write(fd, buf, count);
  77968. - } else {
  77969. - /* Read the data. */
  77970. - result = read(fd, buf, count);
  77971. - }
  77972. -
  77973. - /* Now we have to restore the position. If this fails we
  77974. - * have to return this as an error. */
  77975. - save_errno = errno;
  77976. - if (lseek(fd, old_offset, SEEK_SET) == (off_t) -1)
  77977. - {
  77978. - if (result == -1)
  77979. - __set_errno(save_errno);
  77980. - return -1;
  77981. - }
  77982. - __set_errno(save_errno);
  77983. - return(result);
  77984. -}
  77985. -
  77986. -# ifdef __UCLIBC_HAS_LFS__
  77987. -
  77988. -static ssize_t __fake_pread_write64(int fd, void *buf,
  77989. - size_t count, off64_t offset, int do_pwrite)
  77990. -{
  77991. - int save_errno;
  77992. - ssize_t result;
  77993. - off64_t old_offset;
  77994. -
  77995. - /* Since we must not change the file pointer preserve the
  77996. - * value so that we can restore it later. */
  77997. - if ((old_offset=lseek64(fd, 0, SEEK_CUR)) == (off64_t) -1)
  77998. - return -1;
  77999. -
  78000. - /* Set to wanted position. */
  78001. - if (lseek64(fd, offset, SEEK_SET) == (off64_t) -1)
  78002. - return -1;
  78003. -
  78004. - if (do_pwrite == 1) {
  78005. - /* Write the data. */
  78006. - result = write(fd, buf, count);
  78007. - } else {
  78008. - /* Read the data. */
  78009. - result = read(fd, buf, count);
  78010. - }
  78011. -
  78012. - /* Now we have to restore the position. */
  78013. - save_errno = errno;
  78014. - if (lseek64(fd, old_offset, SEEK_SET) == (off64_t) -1) {
  78015. - if (result == -1)
  78016. - __set_errno (save_errno);
  78017. - return -1;
  78018. - }
  78019. - __set_errno (save_errno);
  78020. - return result;
  78021. -}
  78022. -# endif /* __UCLIBC_HAS_LFS__ */
  78023. -#endif /* ! defined __NR_pread || ! defined __NR_pwrite */
  78024. -
  78025. -#ifndef __NR_pread
  78026. -ssize_t __libc_pread(int fd, void *buf, size_t count, off_t offset)
  78027. -{
  78028. - return __fake_pread_write(fd, buf, count, offset, 0);
  78029. -}
  78030. -weak_alias(__libc_pread,pread)
  78031. -
  78032. -# ifdef __UCLIBC_HAS_LFS__
  78033. -ssize_t __libc_pread64(int fd, void *buf, size_t count, off64_t offset)
  78034. -{
  78035. - return __fake_pread_write64(fd, buf, count, offset, 0);
  78036. -}
  78037. -weak_alias(__libc_pread64,pread64)
  78038. -# endif /* __UCLIBC_HAS_LFS__ */
  78039. -#endif /* ! __NR_pread */
  78040. -
  78041. -#ifndef __NR_pwrite
  78042. -ssize_t __libc_pwrite(int fd, const void *buf, size_t count, off_t offset)
  78043. -{
  78044. - /* we won't actually be modifying the buffer,
  78045. - *just cast it to get rid of warnings */
  78046. - return __fake_pread_write(fd, (void*)buf, count, offset, 1);
  78047. -}
  78048. -weak_alias(__libc_pwrite,pwrite)
  78049. -
  78050. -# ifdef __UCLIBC_HAS_LFS__
  78051. -ssize_t __libc_pwrite64(int fd, const void *buf, size_t count, off64_t offset)
  78052. -{
  78053. - return __fake_pread_write64(fd, (void*)buf, count, offset, 1);
  78054. -}
  78055. -weak_alias(__libc_pwrite64,pwrite64)
  78056. -# endif /* __UCLIBC_HAS_LFS__ */
  78057. -#endif /* ! __NR_pwrite */
  78058. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/setjmp.S uClibc-git/libc/sysdeps/linux/xtensa/setjmp.S
  78059. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/setjmp.S 2012-05-15 09:20:09.000000000 +0200
  78060. +++ uClibc-git/libc/sysdeps/linux/xtensa/setjmp.S 2014-02-03 12:32:56.000000000 +0100
  78061. @@ -13,9 +13,8 @@
  78062. Lesser General Public License for more details.
  78063. You should have received a copy of the GNU Lesser General Public
  78064. - License along with the GNU C Library; if not, write to the Free
  78065. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78066. - Boston, MA 02110-1301, USA. */
  78067. + License along with the GNU C Library; if not, see
  78068. + <http://www.gnu.org/licenses/>. */
  78069. /* This implementation relies heavily on the Xtensa register window
  78070. mechanism. Setjmp flushes all the windows except its own to the
  78071. @@ -25,24 +24,52 @@
  78072. then sets things up so that it will return to the right place,
  78073. using a window underflow to automatically restore the registers.
  78074. - Note that it would probably be sufficient to only copy the
  78075. - registers from setjmp's caller into jmp_buf. However, we also copy
  78076. - the save area located at the stack pointer of setjmp's caller.
  78077. - This save area will typically remain intact until the longjmp call.
  78078. - The one exception is when there is an intervening alloca in
  78079. - setjmp's caller. This is certainly an unusual situation and is
  78080. - likely to cause problems in any case (the storage allocated on the
  78081. - stack cannot be safely accessed following the longjmp). As bad as
  78082. - it is, on most systems this situation would not necessarily lead to
  78083. - a catastrophic failure. If we did not preserve the extra save area
  78084. - on Xtensa, however, it would. When setjmp's caller returns after a
  78085. - longjmp, there will be a window underflow; an invalid return
  78086. - address or stack pointer in the save area will almost certainly
  78087. - lead to a crash. Keeping a copy of the extra save area in the
  78088. - jmp_buf avoids this with only a small additional cost. If setjmp
  78089. - and longjmp are ever time-critical, this could be removed. */
  78090. + Note that we also save the area located just below the stack pointer
  78091. + of the caller. This save area could get overwritten by alloca
  78092. + following the call to setjmp. The alloca moves the stack pointer
  78093. + to allocate memory on the stack. This newly allocated memory
  78094. + includes(!) the original save area (alloca copies the save area
  78095. + before it moves that stack pointer).
  78096. +
  78097. +
  78098. + previous caller SP -> |------------------------------| <-----+
  78099. + | caller-2 registers a0-a3 | | p
  78100. + |------------------------------| | o
  78101. + | caller registers a4-a8/a12 | | i
  78102. + |------------------------------| | n
  78103. + | caller local stack | | t
  78104. + caller SP -> |------------------------------| <-+ | s
  78105. + | caller-1 registers a0-a3 | -:---+
  78106. + callee (setjmp) SP -> |==============================| |
  78107. + | caller registers a0-a3 | --+
  78108. + |------------------------------|
  78109. +
  78110. + In case of an alloca, registers a0-a3 of the previous caller (caller-1)
  78111. + are copied (*), and the original location get likely overwritten.
  78112. +
  78113. + previous caller SP -> |------------------------------| <-----+
  78114. + | caller-2 registers a0-a3 | | p
  78115. + |------------------------------| | o
  78116. + | caller registers a4-a8/a12 | | i
  78117. + |------------------------------| | n
  78118. + | caller local stack | | t
  78119. + caller SP before alloca-> |------------------------------| | s
  78120. + | alloca area (overwrites old | |
  78121. + | copy of caller-1 registers) | |
  78122. + caller SP after alloca -> |------------------------------| <-+ |
  78123. + | caller-1 registers a0-a3 (*) | -:---+
  78124. + callee (setjmp) SP -> |==============================| |
  78125. + | caller registers a0-a3 | --+
  78126. + |------------------------------|
  78127. +
  78128. + So, when longcall returns to the original caller SP, it also needs
  78129. + to restore the save area below the SP.
  78130. +
  78131. + */
  78132. #include "sysdep.h"
  78133. +
  78134. +/* NOTE: The ENTRY macro must allocate exactly 16 bytes (entry a1, 16) */
  78135. /* int setjmp (a2 = jmp_buf env) */
  78136. @@ -57,8 +84,7 @@
  78137. j 1f
  78138. END (setjmp)
  78139. -/* int __sigsetjmp (a2 = jmp_buf env,
  78140. - a3 = int savemask) */
  78141. +/* int __sigsetjmp (a2 = jmp_buf env, a3 = int savemask) */
  78142. ENTRY (__sigsetjmp)
  78143. 1:
  78144. @@ -66,61 +92,56 @@
  78145. movi a4, __window_spill
  78146. callx4 a4
  78147. - /* Preserve the second argument (savemask) in a15. The selection
  78148. - of a15 is arbitrary, except it's otherwise unused. There is no
  78149. - risk of triggering a window overflow since we just returned
  78150. - from __window_spill(). */
  78151. - mov a15, a3
  78152. -
  78153. - /* Copy the register save area at (sp - 16). */
  78154. - addi a5, a1, -16
  78155. - l32i a3, a5, 0
  78156. - l32i a4, a5, 4
  78157. - s32i a3, a2, 0
  78158. - s32i a4, a2, 4
  78159. - l32i a3, a5, 8
  78160. - l32i a4, a5, 12
  78161. - s32i a3, a2, 8
  78162. - s32i a4, a2, 12
  78163. -
  78164. - /* Copy 0-8 words from the register overflow area. */
  78165. - extui a3, a0, 30, 2
  78166. - blti a3, 2, .Lendsj
  78167. - l32i a7, a1, 4
  78168. - slli a4, a3, 4
  78169. - sub a5, a7, a4
  78170. - addi a6, a2, 16
  78171. - addi a7, a7, -16 /* a7 = end of register overflow area */
  78172. + /* Copy the caller register a0-a3 at (sp - 16) to jmpbuf. */
  78173. + addi a7, a1, -16
  78174. + l32i a4, a7, 0
  78175. + l32i a5, a7, 4
  78176. + s32i a4, a2, 0
  78177. + s32i a5, a2, 4
  78178. + l32i a4, a7, 8
  78179. + l32i a5, a7, 12
  78180. + s32i a4, a2, 8
  78181. + s32i a5, a2, 12
  78182. +
  78183. + /* Copy the caller registers a4-a8/a12 from the overflow area. */
  78184. + /* Note that entry moved the SP by 16B, so SP of caller-1 is at 4(sp) */
  78185. + extui a7, a0, 30, 2
  78186. + blti a7, 2, .Lendsj
  78187. + l32i a8, a1, 4 /* a8: SP of 'caller-1' */
  78188. + slli a4, a7, 4
  78189. + sub a6, a8, a4
  78190. + addi a5, a2, 16
  78191. + addi a8, a8, -16 /* a8: end of register overflow area */
  78192. .Lsjloop:
  78193. - l32i a3, a5, 0
  78194. - l32i a4, a5, 4
  78195. - s32i a3, a6, 0
  78196. - s32i a4, a6, 4
  78197. - l32i a3, a5, 8
  78198. - l32i a4, a5, 12
  78199. - s32i a3, a6, 8
  78200. - s32i a4, a6, 12
  78201. - addi a5, a5, 16
  78202. + l32i a7, a6, 0
  78203. + l32i a4, a6, 4
  78204. + s32i a7, a5, 0
  78205. + s32i a4, a5, 4
  78206. + l32i a7, a6, 8
  78207. + l32i a4, a6, 12
  78208. + s32i a7, a5, 8
  78209. + s32i a4, a5, 12
  78210. + addi a5, a6, 16
  78211. addi a6, a6, 16
  78212. - blt a5, a7, .Lsjloop
  78213. + blt a6, a8, .Lsjloop
  78214. .Lendsj:
  78215. - /* Copy the register save area at sp. */
  78216. - l32i a3, a1, 0
  78217. - l32i a4, a1, 4
  78218. - s32i a3, a2, 48
  78219. - s32i a4, a2, 52
  78220. - l32i a3, a1, 8
  78221. - l32i a4, a1, 12
  78222. - s32i a3, a2, 56
  78223. - s32i a4, a2, 60
  78224. + /* Copy previous caller registers (this is assuming 'entry a1,16') */
  78225. + l32i a4, a1, 0
  78226. + l32i a5, a1, 4
  78227. + s32i a4, a2, 48
  78228. + s32i a5, a2, 52
  78229. + l32i a4, a1, 8
  78230. + l32i a5, a1, 12
  78231. + s32i a4, a2, 56
  78232. + s32i a5, a2, 60
  78233. /* Save the return address, including the window size bits. */
  78234. s32i a0, a2, 64
  78235. - /* a2 still addresses jmp_buf. a15 contains savemask. */
  78236. + /* a2 still points to jmp_buf. a3 contains savemask. */
  78237. mov a6, a2
  78238. - mov a7, a15
  78239. + mov a7, a3
  78240. movi a3, __sigjmp_save
  78241. callx4 a3
  78242. mov a2, a6
  78243. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/procfs.h uClibc-git/libc/sysdeps/linux/xtensa/sys/procfs.h
  78244. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/procfs.h 2012-05-15 09:20:09.000000000 +0200
  78245. +++ uClibc-git/libc/sysdeps/linux/xtensa/sys/procfs.h 2014-02-03 12:32:56.000000000 +0100
  78246. @@ -12,9 +12,8 @@
  78247. Lesser General Public License for more details.
  78248. You should have received a copy of the GNU Lesser General Public
  78249. - License along with the GNU C Library; if not, write to the Free
  78250. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78251. - Boston, MA 02110-1301, USA. */
  78252. + License along with the GNU C Library; if not, see
  78253. + <http://www.gnu.org/licenses/>. */
  78254. #ifndef _SYS_PROCFS_H
  78255. #define _SYS_PROCFS_H 1
  78256. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ptrace.h uClibc-git/libc/sysdeps/linux/xtensa/sys/ptrace.h
  78257. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ptrace.h 2012-05-15 09:20:09.000000000 +0200
  78258. +++ uClibc-git/libc/sysdeps/linux/xtensa/sys/ptrace.h 1970-01-01 01:00:00.000000000 +0100
  78259. @@ -1,156 +0,0 @@
  78260. -/* `ptrace' debugger support interface. Linux version.
  78261. - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007
  78262. - Free Software Foundation, Inc.
  78263. - This file is part of the GNU C Library.
  78264. -
  78265. - The GNU C Library is free software; you can redistribute it and/or
  78266. - modify it under the terms of the GNU Lesser General Public
  78267. - License as published by the Free Software Foundation; either
  78268. - version 2.1 of the License, or (at your option) any later version.
  78269. -
  78270. - The GNU C Library is distributed in the hope that it will be useful,
  78271. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  78272. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  78273. - Lesser General Public License for more details.
  78274. -
  78275. - You should have received a copy of the GNU Lesser General Public
  78276. - License along with the GNU C Library; if not, write to the Free
  78277. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78278. - Boston, MA 02110-1301, USA. */
  78279. -
  78280. -#ifndef _SYS_PTRACE_H
  78281. -#define _SYS_PTRACE_H 1
  78282. -
  78283. -#include <features.h>
  78284. -
  78285. -/* Kludge away careless namespace pollution from the kernel. */
  78286. -
  78287. -#undef PTRACE_GETREGS
  78288. -#undef PTRACE_SETREGS
  78289. -#undef PTRACE_GETFPREGS
  78290. -#undef PTRACE_SETFPREGS
  78291. -#undef PTRACE_GETFPREGSIZE
  78292. -
  78293. -
  78294. -__BEGIN_DECLS
  78295. -
  78296. -/* Type of the REQUEST argument to `ptrace.' */
  78297. -enum __ptrace_request
  78298. -{
  78299. - /* Indicate that the process making this request should be traced.
  78300. - All signals received by this process can be intercepted by its
  78301. - parent, and its parent can use the other `ptrace' requests. */
  78302. - PTRACE_TRACEME = 0,
  78303. -#define PT_TRACE_ME PTRACE_TRACEME
  78304. -
  78305. - /* Return the word in the process's text space at address ADDR. */
  78306. - PTRACE_PEEKTEXT = 1,
  78307. -#define PT_READ_I PTRACE_PEEKTEXT
  78308. -
  78309. - /* Return the word in the process's data space at address ADDR. */
  78310. - PTRACE_PEEKDATA = 2,
  78311. -#define PT_READ_D PTRACE_PEEKDATA
  78312. -
  78313. - /* Return the word in the process's user area at offset ADDR. */
  78314. - PTRACE_PEEKUSER = 3,
  78315. -#define PT_READ_U PTRACE_PEEKUSER
  78316. -
  78317. - /* Write the word DATA into the process's text space at address ADDR. */
  78318. - PTRACE_POKETEXT = 4,
  78319. -#define PT_WRITE_I PTRACE_POKETEXT
  78320. -
  78321. - /* Write the word DATA into the process's data space at address ADDR. */
  78322. - PTRACE_POKEDATA = 5,
  78323. -#define PT_WRITE_D PTRACE_POKEDATA
  78324. -
  78325. - /* Write the word DATA into the process's user area at offset ADDR. */
  78326. - PTRACE_POKEUSER = 6,
  78327. -#define PT_WRITE_U PTRACE_POKEUSER
  78328. -
  78329. - /* Continue the process. */
  78330. - PTRACE_CONT = 7,
  78331. -#define PT_CONTINUE PTRACE_CONT
  78332. -
  78333. - /* Kill the process. */
  78334. - PTRACE_KILL = 8,
  78335. -#define PT_KILL PTRACE_KILL
  78336. -
  78337. - /* Single step the process.
  78338. - This is not supported on all machines. */
  78339. - PTRACE_SINGLESTEP = 9,
  78340. -#define PT_STEP PTRACE_SINGLESTEP
  78341. -
  78342. - /* Get all general purpose registers used by a processes.
  78343. - This is not supported on all machines. */
  78344. - PTRACE_GETREGS = 12,
  78345. -#define PT_GETREGS PTRACE_GETREGS
  78346. -
  78347. - /* Set all general purpose registers used by a processes.
  78348. - This is not supported on all machines. */
  78349. - PTRACE_SETREGS = 13,
  78350. -#define PT_SETREGS PTRACE_SETREGS
  78351. -
  78352. - /* Get all floating point registers used by a processes.
  78353. - This is not supported on all machines. */
  78354. - PTRACE_GETFPREGS = 14,
  78355. -#define PT_GETFPREGS PTRACE_GETFPREGS
  78356. -
  78357. - /* Set all floating point registers used by a processes.
  78358. - This is not supported on all machines. */
  78359. - PTRACE_SETFPREGS = 15,
  78360. -#define PT_SETFPREGS PTRACE_SETFPREGS
  78361. -
  78362. - /* Attach to a process that is already running. */
  78363. - PTRACE_ATTACH = 16,
  78364. -#define PT_ATTACH PTRACE_ATTACH
  78365. -
  78366. - /* Detach from a process attached to with PTRACE_ATTACH. */
  78367. - PTRACE_DETACH = 17,
  78368. -#define PT_DETACH PTRACE_DETACH
  78369. -
  78370. - /* Get size required for the buffer holding the floating point registers.
  78371. - This is not supported on all machines. */
  78372. - PTRACE_GETFPREGSIZE = 18,
  78373. -#define PT_GETFPREGSIZE PTRACE_GETFPREGSIZE
  78374. -
  78375. - /* Continue and stop at the next (return from) syscall. */
  78376. - PTRACE_SYSCALL = 24
  78377. -#define PT_SYSCALL PTRACE_SYSCALL
  78378. -};
  78379. -
  78380. -/* Options set using PTRACE_SETOPTIONS. */
  78381. -enum __ptrace_setoptions {
  78382. - PTRACE_O_TRACESYSGOOD = 0x00000001,
  78383. - PTRACE_O_TRACEFORK = 0x00000002,
  78384. - PTRACE_O_TRACEVFORK = 0x00000004,
  78385. - PTRACE_O_TRACECLONE = 0x00000008,
  78386. - PTRACE_O_TRACEEXEC = 0x00000010,
  78387. - PTRACE_O_TRACEVFORKDONE = 0x00000020,
  78388. - PTRACE_O_TRACEEXIT = 0x00000040,
  78389. - PTRACE_O_MASK = 0x0000007f
  78390. -};
  78391. -
  78392. -/* Wait extended result codes for the above trace options. */
  78393. -enum __ptrace_eventcodes {
  78394. - PTRACE_EVENT_FORK = 1,
  78395. - PTRACE_EVENT_VFORK = 2,
  78396. - PTRACE_EVENT_CLONE = 3,
  78397. - PTRACE_EVENT_EXEC = 4,
  78398. - PTRACE_EVENT_VFORK_DONE = 5,
  78399. - PTRACE_EVENT_EXIT = 6
  78400. -};
  78401. -
  78402. -/* Perform process tracing functions. REQUEST is one of the values
  78403. - above, and determines the action to be taken.
  78404. - For all requests except PTRACE_TRACEME, PID specifies the process to be
  78405. - traced.
  78406. -
  78407. - PID and the other arguments described above for the various requests should
  78408. - appear (those that are used for the particular request) as:
  78409. - pid_t PID, void *ADDR, int DATA, void *ADDR2
  78410. - after REQUEST. */
  78411. -extern long int ptrace (enum __ptrace_request __request, ...) __THROW;
  78412. -
  78413. -__END_DECLS
  78414. -
  78415. -#endif /* _SYS_PTRACE_H */
  78416. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ucontext.h uClibc-git/libc/sysdeps/linux/xtensa/sys/ucontext.h
  78417. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/ucontext.h 2012-05-15 09:20:09.000000000 +0200
  78418. +++ uClibc-git/libc/sysdeps/linux/xtensa/sys/ucontext.h 2014-02-03 12:32:56.000000000 +0100
  78419. @@ -12,9 +12,8 @@
  78420. Lesser General Public License for more details.
  78421. You should have received a copy of the GNU Lesser General Public
  78422. - License along with the GNU C Library; if not, write to the Free
  78423. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78424. - Boston, MA 02110-1301, USA. */
  78425. + License along with the GNU C Library; if not, see
  78426. + <http://www.gnu.org/licenses/>. */
  78427. #ifndef _SYS_UCONTEXT_H
  78428. #define _SYS_UCONTEXT_H 1
  78429. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/user.h uClibc-git/libc/sysdeps/linux/xtensa/sys/user.h
  78430. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sys/user.h 1970-01-01 01:00:00.000000000 +0100
  78431. +++ uClibc-git/libc/sysdeps/linux/xtensa/sys/user.h 2014-02-03 12:32:56.000000000 +0100
  78432. @@ -0,0 +1,20 @@
  78433. +/*
  78434. + * include/asm-xtensa/user.h
  78435. + *
  78436. + * Xtensa Processor version.
  78437. + *
  78438. + * This file is subject to the terms and conditions of the GNU General Public
  78439. + * License. See the file "COPYING" in the main directory of this archive
  78440. + * for more details.
  78441. + *
  78442. + * Copyright (C) 2001 - 2005 Tensilica Inc.
  78443. + */
  78444. +
  78445. +#ifndef _XTENSA_USER_H
  78446. +#define _XTENSA_USER_H
  78447. +
  78448. +/* This file usually defines a 'struct user' structure. However, it it only
  78449. + * used for a.out file, which are not supported on Xtensa.
  78450. + */
  78451. +
  78452. +#endif /* _XTENSA_USER_H */
  78453. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/syscall.S uClibc-git/libc/sysdeps/linux/xtensa/syscall.S
  78454. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/syscall.S 2012-05-15 09:20:09.000000000 +0200
  78455. +++ uClibc-git/libc/sysdeps/linux/xtensa/syscall.S 2014-02-03 12:32:56.000000000 +0100
  78456. @@ -12,9 +12,8 @@
  78457. Lesser General Public License for more details.
  78458. You should have received a copy of the GNU Lesser General Public
  78459. - License along with the GNU C Library; if not, write to the Free
  78460. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78461. - Boston, MA 02110-1301, USA. */
  78462. + License along with the GNU C Library; if not, see
  78463. + <http://www.gnu.org/licenses/>. */
  78464. #include "sysdep.h"
  78465. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sysdep.h uClibc-git/libc/sysdeps/linux/xtensa/sysdep.h
  78466. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  78467. +++ uClibc-git/libc/sysdeps/linux/xtensa/sysdep.h 2014-02-03 12:32:56.000000000 +0100
  78468. @@ -13,9 +13,10 @@
  78469. Lesser General Public License for more details.
  78470. You should have received a copy of the GNU Lesser General Public
  78471. - License along with the GNU C Library; if not, write to the Free
  78472. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78473. - Boston, MA 02110-1301, USA. */
  78474. + License along with the GNU C Library; if not, see
  78475. + <http://www.gnu.org/licenses/>. */
  78476. +
  78477. +#include <sys/syscall.h>
  78478. #ifdef __ASSEMBLER__
  78479. @@ -38,6 +39,16 @@
  78480. entry sp, FRAMESIZE; \
  78481. CALL_MCOUNT
  78482. +#define HIDDEN_ENTRY(name) \
  78483. + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \
  78484. + .hidden C_SYMBOL_NAME(name); \
  78485. + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name), @function); \
  78486. + .align ALIGNARG(2); \
  78487. + LITERAL_POSITION; \
  78488. + C_LABEL(name) \
  78489. + entry sp, FRAMESIZE; \
  78490. + CALL_MCOUNT
  78491. +
  78492. #undef END
  78493. #define END(name) ASM_SIZE_DIRECTIVE(name)
  78494. @@ -112,6 +123,7 @@
  78495. #define PSEUDO_END_ERRVAL(name) \
  78496. END (name)
  78497. +#undef ret_ERRVAL
  78498. #define ret_ERRVAL retw
  78499. #if defined RTLD_PRIVATE_ERRNO
  78500. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/vfork.S uClibc-git/libc/sysdeps/linux/xtensa/vfork.S
  78501. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/vfork.S 2012-05-15 09:20:09.000000000 +0200
  78502. +++ uClibc-git/libc/sysdeps/linux/xtensa/vfork.S 2014-02-03 12:32:56.000000000 +0100
  78503. @@ -12,9 +12,8 @@
  78504. Lesser General Public License for more details.
  78505. You should have received a copy of the GNU Lesser General Public
  78506. - License along with the GNU C Library; if not, write to the Free
  78507. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78508. - Boston, MA 02110-1301, USA. */
  78509. + License along with the GNU C Library; if not, see
  78510. + <http://www.gnu.org/licenses/>. */
  78511. #include "sysdep.h"
  78512. #include <sys/syscall.h>
  78513. @@ -49,7 +48,7 @@
  78514. /* pid_t vfork(void);
  78515. Implemented as __clone_syscall(CLONE_VFORK | CLONE_VM | SIGCHLD, 0) */
  78516. -ENTRY (__vfork)
  78517. +HIDDEN_ENTRY (__vfork)
  78518. movi a6, .Ljumptable
  78519. extui a2, a0, 30, 2 /* call-size: call4/8/12 = 1/2/3 */
  78520. @@ -165,6 +164,5 @@
  78521. .Lpseudo_end:
  78522. retw
  78523. -libc_hidden_def (__vfork)
  78524. -
  78525. weak_alias (__vfork, vfork)
  78526. +libc_hidden_def(vfork)
  78527. diff -Nur uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/windowspill.S uClibc-git/libc/sysdeps/linux/xtensa/windowspill.S
  78528. --- uClibc-0.9.33.2/libc/sysdeps/linux/xtensa/windowspill.S 2012-05-15 09:20:09.000000000 +0200
  78529. +++ uClibc-git/libc/sysdeps/linux/xtensa/windowspill.S 2014-02-03 12:32:56.000000000 +0100
  78530. @@ -13,9 +13,8 @@
  78531. Lesser General Public License for more details.
  78532. You should have received a copy of the GNU Lesser General Public
  78533. - License along with the GNU C Library; if not, write to the Free
  78534. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  78535. - Boston, MA 02110-1301, USA. */
  78536. + License along with the GNU C Library; if not, see
  78537. + <http://www.gnu.org/licenses/>. */
  78538. #include <bits/xtensa-config.h>
  78539. diff -Nur uClibc-0.9.33.2/libc/termios/cfmakeraw.c uClibc-git/libc/termios/cfmakeraw.c
  78540. --- uClibc-0.9.33.2/libc/termios/cfmakeraw.c 2012-05-15 09:20:09.000000000 +0200
  78541. +++ uClibc-git/libc/termios/cfmakeraw.c 2014-02-03 12:32:56.000000000 +0100
  78542. @@ -12,9 +12,8 @@
  78543. Lesser General Public License for more details.
  78544. You should have received a copy of the GNU Lesser General Public
  78545. - License along with the GNU C Library; if not, write to the Free
  78546. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78547. - 02111-1307 USA. */
  78548. + License along with the GNU C Library; if not, see
  78549. + <http://www.gnu.org/licenses/>. */
  78550. #include <termios.h>
  78551. diff -Nur uClibc-0.9.33.2/libc/termios/cfsetspeed.c uClibc-git/libc/termios/cfsetspeed.c
  78552. --- uClibc-0.9.33.2/libc/termios/cfsetspeed.c 2012-05-15 09:20:09.000000000 +0200
  78553. +++ uClibc-git/libc/termios/cfsetspeed.c 2014-02-03 12:32:56.000000000 +0100
  78554. @@ -12,9 +12,8 @@
  78555. Lesser General Public License for more details.
  78556. You should have received a copy of the GNU Lesser General Public
  78557. - License along with the GNU C Library; if not, write to the Free
  78558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78559. - 02111-1307 USA. */
  78560. + License along with the GNU C Library; if not, see
  78561. + <http://www.gnu.org/licenses/>. */
  78562. #include <termios.h>
  78563. #include <errno.h>
  78564. diff -Nur uClibc-0.9.33.2/libc/termios/isatty.c uClibc-git/libc/termios/isatty.c
  78565. --- uClibc-0.9.33.2/libc/termios/isatty.c 2012-05-15 09:20:09.000000000 +0200
  78566. +++ uClibc-git/libc/termios/isatty.c 2014-02-03 12:32:56.000000000 +0100
  78567. @@ -12,9 +12,8 @@
  78568. Lesser General Public License for more details.
  78569. You should have received a copy of the GNU Lesser General Public
  78570. - License along with the GNU C Library; if not, write to the Free
  78571. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78572. - 02111-1307 USA. */
  78573. + License along with the GNU C Library; if not, see
  78574. + <http://www.gnu.org/licenses/>. */
  78575. #include <unistd.h>
  78576. #include <termios.h>
  78577. diff -Nur uClibc-0.9.33.2/libc/termios/kernel_termios.h uClibc-git/libc/termios/kernel_termios.h
  78578. --- uClibc-0.9.33.2/libc/termios/kernel_termios.h 2012-05-15 09:20:09.000000000 +0200
  78579. +++ uClibc-git/libc/termios/kernel_termios.h 2014-02-03 12:32:56.000000000 +0100
  78580. @@ -12,9 +12,8 @@
  78581. Lesser General Public License for more details.
  78582. You should have received a copy of the GNU Lesser General Public
  78583. - License along with the GNU C Library; if not, write to the Free
  78584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78585. - 02111-1307 USA. */
  78586. + License along with the GNU C Library; if not, see
  78587. + <http://www.gnu.org/licenses/>. */
  78588. #ifndef _KERNEL_TERMIOS_H
  78589. #define _KERNEL_TERMIOS_H 1
  78590. diff -Nur uClibc-0.9.33.2/libc/termios/speed.c uClibc-git/libc/termios/speed.c
  78591. --- uClibc-0.9.33.2/libc/termios/speed.c 2012-05-15 09:20:09.000000000 +0200
  78592. +++ uClibc-git/libc/termios/speed.c 2014-02-03 12:32:56.000000000 +0100
  78593. @@ -14,9 +14,8 @@
  78594. Lesser General Public License for more details.
  78595. You should have received a copy of the GNU Lesser General Public
  78596. - License along with the GNU C Library; if not, write to the Free
  78597. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78598. - 02111-1307 USA. */
  78599. + License along with the GNU C Library; if not, see
  78600. + <http://www.gnu.org/licenses/>. */
  78601. #include <stddef.h>
  78602. #include <errno.h>
  78603. diff -Nur uClibc-0.9.33.2/libc/termios/tcdrain.c uClibc-git/libc/termios/tcdrain.c
  78604. --- uClibc-0.9.33.2/libc/termios/tcdrain.c 2012-05-15 09:20:09.000000000 +0200
  78605. +++ uClibc-git/libc/termios/tcdrain.c 2014-02-03 12:32:56.000000000 +0100
  78606. @@ -12,9 +12,8 @@
  78607. Lesser General Public License for more details.
  78608. You should have received a copy of the GNU Lesser General Public
  78609. - License along with the GNU C Library; if not, write to the Free
  78610. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78611. - 02111-1307 USA. */
  78612. + License along with the GNU C Library; if not, see
  78613. + <http://www.gnu.org/licenses/>. */
  78614. #include <errno.h>
  78615. #include <termios.h>
  78616. diff -Nur uClibc-0.9.33.2/libc/termios/tcflow.c uClibc-git/libc/termios/tcflow.c
  78617. --- uClibc-0.9.33.2/libc/termios/tcflow.c 2012-05-15 09:20:09.000000000 +0200
  78618. +++ uClibc-git/libc/termios/tcflow.c 2014-02-03 12:32:56.000000000 +0100
  78619. @@ -13,9 +13,8 @@
  78620. Lesser General Public License for more details.
  78621. You should have received a copy of the GNU Lesser General Public
  78622. - License along with the GNU C Library; if not, write to the Free
  78623. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78624. - 02111-1307 USA. */
  78625. + License along with the GNU C Library; if not, see
  78626. + <http://www.gnu.org/licenses/>. */
  78627. #include <errno.h>
  78628. #include <termios.h>
  78629. diff -Nur uClibc-0.9.33.2/libc/termios/tcflush.c uClibc-git/libc/termios/tcflush.c
  78630. --- uClibc-0.9.33.2/libc/termios/tcflush.c 2012-05-15 09:20:09.000000000 +0200
  78631. +++ uClibc-git/libc/termios/tcflush.c 2014-02-03 12:32:56.000000000 +0100
  78632. @@ -13,9 +13,8 @@
  78633. Lesser General Public License for more details.
  78634. You should have received a copy of the GNU Lesser General Public
  78635. - License along with the GNU C Library; if not, write to the Free
  78636. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78637. - 02111-1307 USA. */
  78638. + License along with the GNU C Library; if not, see
  78639. + <http://www.gnu.org/licenses/>. */
  78640. #include <errno.h>
  78641. #include <termios.h>
  78642. diff -Nur uClibc-0.9.33.2/libc/termios/tcgetattr.c uClibc-git/libc/termios/tcgetattr.c
  78643. --- uClibc-0.9.33.2/libc/termios/tcgetattr.c 2012-05-15 09:20:09.000000000 +0200
  78644. +++ uClibc-git/libc/termios/tcgetattr.c 2014-02-03 12:32:56.000000000 +0100
  78645. @@ -12,9 +12,8 @@
  78646. Lesser General Public License for more details.
  78647. You should have received a copy of the GNU Lesser General Public
  78648. - License along with the GNU C Library; if not, write to the Free
  78649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78650. - 02111-1307 USA. */
  78651. + License along with the GNU C Library; if not, see
  78652. + <http://www.gnu.org/licenses/>. */
  78653. #include <features.h>
  78654. #include <string.h>
  78655. diff -Nur uClibc-0.9.33.2/libc/termios/tcgetpgrp.c uClibc-git/libc/termios/tcgetpgrp.c
  78656. --- uClibc-0.9.33.2/libc/termios/tcgetpgrp.c 2012-05-15 09:20:09.000000000 +0200
  78657. +++ uClibc-git/libc/termios/tcgetpgrp.c 2014-02-03 12:32:56.000000000 +0100
  78658. @@ -12,9 +12,8 @@
  78659. Lesser General Public License for more details.
  78660. You should have received a copy of the GNU Lesser General Public
  78661. - License along with the GNU C Library; if not, write to the Free
  78662. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78663. - 02111-1307 USA. */
  78664. + License along with the GNU C Library; if not, see
  78665. + <http://www.gnu.org/licenses/>. */
  78666. #include <sys/ioctl.h>
  78667. #include <errno.h>
  78668. diff -Nur uClibc-0.9.33.2/libc/termios/tcgetsid.c uClibc-git/libc/termios/tcgetsid.c
  78669. --- uClibc-0.9.33.2/libc/termios/tcgetsid.c 2012-05-15 09:20:09.000000000 +0200
  78670. +++ uClibc-git/libc/termios/tcgetsid.c 2014-02-03 12:32:56.000000000 +0100
  78671. @@ -12,9 +12,8 @@
  78672. Lesser General Public License for more details.
  78673. You should have received a copy of the GNU Lesser General Public
  78674. - License along with the GNU C Library; if not, write to the Free
  78675. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78676. - 02111-1307 USA. */
  78677. + License along with the GNU C Library; if not, see
  78678. + <http://www.gnu.org/licenses/>. */
  78679. #include <errno.h>
  78680. #include <termios.h>
  78681. diff -Nur uClibc-0.9.33.2/libc/termios/tcsendbrk.c uClibc-git/libc/termios/tcsendbrk.c
  78682. --- uClibc-0.9.33.2/libc/termios/tcsendbrk.c 2012-05-15 09:20:09.000000000 +0200
  78683. +++ uClibc-git/libc/termios/tcsendbrk.c 2014-02-03 12:32:56.000000000 +0100
  78684. @@ -13,9 +13,8 @@
  78685. Lesser General Public License for more details.
  78686. You should have received a copy of the GNU Lesser General Public
  78687. - License along with the GNU C Library; if not, write to the Free
  78688. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78689. - 02111-1307 USA. */
  78690. + License along with the GNU C Library; if not, see
  78691. + <http://www.gnu.org/licenses/>. */
  78692. #include <errno.h>
  78693. #include <stddef.h>
  78694. diff -Nur uClibc-0.9.33.2/libc/termios/tcsetattr.c uClibc-git/libc/termios/tcsetattr.c
  78695. --- uClibc-0.9.33.2/libc/termios/tcsetattr.c 2012-05-15 09:20:09.000000000 +0200
  78696. +++ uClibc-git/libc/termios/tcsetattr.c 2014-02-03 12:32:56.000000000 +0100
  78697. @@ -12,9 +12,8 @@
  78698. Lesser General Public License for more details.
  78699. You should have received a copy of the GNU Lesser General Public
  78700. - License along with the GNU C Library; if not, write to the Free
  78701. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78702. - 02111-1307 USA. */
  78703. + License along with the GNU C Library; if not, see
  78704. + <http://www.gnu.org/licenses/>. */
  78705. #include <errno.h>
  78706. #include <string.h>
  78707. diff -Nur uClibc-0.9.33.2/libc/termios/tcsetpgrp.c uClibc-git/libc/termios/tcsetpgrp.c
  78708. --- uClibc-0.9.33.2/libc/termios/tcsetpgrp.c 2012-05-15 09:20:09.000000000 +0200
  78709. +++ uClibc-git/libc/termios/tcsetpgrp.c 2014-02-03 12:32:56.000000000 +0100
  78710. @@ -12,9 +12,8 @@
  78711. Lesser General Public License for more details.
  78712. You should have received a copy of the GNU Lesser General Public
  78713. - License along with the GNU C Library; if not, write to the Free
  78714. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78715. - 02111-1307 USA. */
  78716. + License along with the GNU C Library; if not, see
  78717. + <http://www.gnu.org/licenses/>. */
  78718. #include <sys/types.h>
  78719. #include <sys/ioctl.h>
  78720. diff -Nur uClibc-0.9.33.2/libc/unistd/confstr.c uClibc-git/libc/unistd/confstr.c
  78721. --- uClibc-0.9.33.2/libc/unistd/confstr.c 2012-05-15 09:20:09.000000000 +0200
  78722. +++ uClibc-git/libc/unistd/confstr.c 2014-02-03 12:32:56.000000000 +0100
  78723. @@ -13,9 +13,8 @@
  78724. Lesser General Public License for more details.
  78725. You should have received a copy of the GNU Lesser General Public
  78726. - License along with the GNU C Library; if not, write to the Free
  78727. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78728. - 02111-1307 USA. */
  78729. + License along with the GNU C Library; if not, see
  78730. + <http://www.gnu.org/licenses/>. */
  78731. #include <stddef.h>
  78732. #include <errno.h>
  78733. diff -Nur uClibc-0.9.33.2/libc/unistd/daemon.c uClibc-git/libc/unistd/daemon.c
  78734. --- uClibc-0.9.33.2/libc/unistd/daemon.c 2012-05-15 09:20:09.000000000 +0200
  78735. +++ uClibc-git/libc/unistd/daemon.c 2014-02-03 12:32:56.000000000 +0100
  78736. @@ -118,7 +118,7 @@
  78737. {
  78738. struct STAT st;
  78739. - if ((fd = open_not_cancel(_PATH_DEVNULL, O_RDWR, 0)) != -1
  78740. + if ((fd = open_not_cancel_2(_PATH_DEVNULL, O_RDWR)) != -1
  78741. && (__builtin_expect (FSTAT (fd, &st), 0) == 0))
  78742. {
  78743. if (__builtin_expect (S_ISCHR (st.st_mode), 1) != 0) {
  78744. diff -Nur uClibc-0.9.33.2/libc/unistd/exec.c uClibc-git/libc/unistd/exec.c
  78745. --- uClibc-0.9.33.2/libc/unistd/exec.c 2012-05-15 09:20:09.000000000 +0200
  78746. +++ uClibc-git/libc/unistd/exec.c 2014-02-03 12:32:56.000000000 +0100
  78747. @@ -32,6 +32,8 @@
  78748. /**********************************************************************/
  78749. #define EXEC_FUNC_COMMON 0
  78750. #define EXEC_FUNC_EXECVP 1
  78751. +#define EXEC_FUNC_EXECVPE 2
  78752. +
  78753. #if defined(__ARCH_USE_MMU__)
  78754. /* We have an MMU, so use alloca() to grab space for buffers and arg lists. */
  78755. @@ -58,6 +60,7 @@
  78756. * execle(a) -> execve(-)
  78757. * execv(-) -> execve(-)
  78758. * execvp(a) -> execve(-)
  78759. + * execvpe(a) -> execve(-)
  78760. */
  78761. # define EXEC_ALLOC_SIZE(VAR) /* nothing to do */
  78762. @@ -68,7 +71,7 @@
  78763. # ifdef L___exec_alloc
  78764. -void attribute_hidden *__exec_alloc(size_t size, int func)
  78765. +void *__exec_alloc(size_t size, int func)
  78766. {
  78767. static void *common_cache, *execvp_cache;
  78768. static size_t common_size, execvp_size;
  78769. @@ -135,7 +138,7 @@
  78770. /**********************************************************************/
  78771. #ifdef L_execv
  78772. -int execv(__const char *path, char *__const argv[])
  78773. +int execv(const char *path, char *const argv[])
  78774. {
  78775. return execve(path, argv, __environ);
  78776. }
  78777. @@ -219,15 +222,18 @@
  78778. #endif
  78779. /**********************************************************************/
  78780. -#ifdef L_execvp
  78781. +#if defined (L_execvp) || defined(L_execvpe)
  78782. /* Use a default path that matches glibc behavior, since SUSv3 says
  78783. * this is implementation-defined. The default is current working dir,
  78784. * /bin, and then /usr/bin. */
  78785. static const char default_path[] = ":/bin:/usr/bin";
  78786. -
  78787. +#if defined (L_execvp)
  78788. int execvp(const char *path, char *const argv[])
  78789. +#elif defined (L_execvpe)
  78790. +int execvpe(const char *path, char *const argv[], char *const envp[])
  78791. +#endif
  78792. {
  78793. char *buf = NULL;
  78794. char *p;
  78795. @@ -245,7 +251,11 @@
  78796. }
  78797. if (strchr(path, '/')) {
  78798. +#if defined (L_execvp)
  78799. execve(path, argv, __environ);
  78800. +#elif defined (L_execvpe)
  78801. + execve(path, argv, envp);
  78802. +#endif
  78803. if (errno == ENOEXEC) {
  78804. char **nargv;
  78805. EXEC_ALLOC_SIZE(size2) /* Do NOT add a semicolon! */
  78806. @@ -254,11 +264,19 @@
  78807. /* Need the dimension - 1. We omit counting the trailing
  78808. * NULL but we actually omit the first entry. */
  78809. for (n=0 ; argv[n] ; n++) {}
  78810. +#if defined (L_execvp)
  78811. nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVP);
  78812. +#elif defined (L_execvpe)
  78813. + nargv = (char **) EXEC_ALLOC((n+2) * sizeof(char *), size2, EXEC_FUNC_EXECVPE);
  78814. +#endif
  78815. nargv[0] = argv[0];
  78816. nargv[1] = (char *)path;
  78817. memcpy(nargv+2, argv+1, n*sizeof(char *));
  78818. +#if defined (L_execvp)
  78819. execve("/bin/sh", nargv, __environ);
  78820. +#elif defined (L_execvpe)
  78821. + execve("/bin/sh", nargv, envp);
  78822. +#endif
  78823. EXEC_FREE(nargv, size2);
  78824. }
  78825. } else {
  78826. @@ -277,8 +295,11 @@
  78827. return -1;
  78828. }
  78829. len = (FILENAME_MAX - 1) - plen;
  78830. -
  78831. +#if defined (L_execvp)
  78832. buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVP);
  78833. +#elif defined (L_execvpe)
  78834. + buf = EXEC_ALLOC(FILENAME_MAX, size, EXEC_FUNC_EXECVPE);
  78835. +#endif
  78836. {
  78837. int seen_small = 0;
  78838. s0 = buf + len;
  78839. @@ -300,8 +321,11 @@
  78840. s[plen-1] = '/';
  78841. }
  78842. +#if defined (L_execvp)
  78843. execve(s, argv, __environ);
  78844. -
  78845. +#elif defined (L_execvpe)
  78846. + execve(s, argv, envp);
  78847. +#endif
  78848. seen_small = 1;
  78849. if (errno == ENOEXEC) {
  78850. @@ -325,7 +349,11 @@
  78851. return -1;
  78852. }
  78853. +#if defined (L_execvp)
  78854. libc_hidden_def(execvp)
  78855. -
  78856. +#elif defined (L_execvpe)
  78857. +libc_hidden_def(execvpe)
  78858. #endif
  78859. +
  78860. +#endif /* #if defined (L_execvp) || defined(L_execvpe) */
  78861. /**********************************************************************/
  78862. diff -Nur uClibc-0.9.33.2/libc/unistd/execvpe.c uClibc-git/libc/unistd/execvpe.c
  78863. --- uClibc-0.9.33.2/libc/unistd/execvpe.c 1970-01-01 01:00:00.000000000 +0100
  78864. +++ uClibc-git/libc/unistd/execvpe.c 2014-02-03 12:32:56.000000000 +0100
  78865. @@ -0,0 +1,7 @@
  78866. +/* Copyright (C) 2011-2013 Hennning Heinold <heinold@inf.fu-berlin.de>
  78867. + *
  78868. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  78869. + */
  78870. +
  78871. +#define L_execvpe
  78872. +#include "exec.c"
  78873. diff -Nur uClibc-0.9.33.2/libc/unistd/fpathconf.c uClibc-git/libc/unistd/fpathconf.c
  78874. --- uClibc-0.9.33.2/libc/unistd/fpathconf.c 2012-05-15 09:20:09.000000000 +0200
  78875. +++ uClibc-git/libc/unistd/fpathconf.c 2014-02-03 12:32:56.000000000 +0100
  78876. @@ -13,9 +13,8 @@
  78877. Lesser General Public License for more details.
  78878. You should have received a copy of the GNU Lesser General Public
  78879. - License along with the GNU C Library; if not, write to the Free
  78880. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78881. - 02111-1307 USA. */
  78882. + License along with the GNU C Library; if not, see
  78883. + <http://www.gnu.org/licenses/>. */
  78884. #include <errno.h>
  78885. #include <unistd.h>
  78886. diff -Nur uClibc-0.9.33.2/libc/unistd/getopt.c uClibc-git/libc/unistd/getopt.c
  78887. --- uClibc-0.9.33.2/libc/unistd/getopt.c 2012-05-15 09:20:09.000000000 +0200
  78888. +++ uClibc-git/libc/unistd/getopt.c 2014-02-03 12:32:56.000000000 +0100
  78889. @@ -17,9 +17,8 @@
  78890. Lesser General Public License for more details.
  78891. You should have received a copy of the GNU Lesser General Public
  78892. - License along with the GNU C Library; if not, write to the Free
  78893. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78894. - 02111-1307 USA. */
  78895. + License along with the GNU C Library; if not, see
  78896. + <http://www.gnu.org/licenses/>. */
  78897. /*
  78898. * Modified for uClibc by Manuel Novoa III on 1/5/01.
  78899. @@ -36,9 +35,6 @@
  78900. # include <config.h>
  78901. #endif
  78902. -#define __FORCE_GLIBC
  78903. -#include <features.h>
  78904. -
  78905. #include <stdio.h>
  78906. /* Comment out all this code if we are using the GNU C Library, and are not
  78907. @@ -62,7 +58,7 @@
  78908. /* This needs to come after some library #include
  78909. to get __GNU_LIBRARY__ defined. */
  78910. -#ifdef __GNU_LIBRARY__
  78911. +#if defined __GNU_LIBRARY__ || defined __UCLIBC__
  78912. /* Don't include stdlib.h for non-GNU C libraries because some of them
  78913. contain conflicting prototypes for getopt. */
  78914. # include <stdlib.h>
  78915. @@ -75,22 +71,12 @@
  78916. # include <unixlib.h>
  78917. #endif
  78918. -#if !defined __UCLIBC__ && !defined __UCLIBC_HAS_GETTEXT_AWARENESS__
  78919. #ifdef _LIBC
  78920. # include <libintl.h>
  78921. #else
  78922. # include "gettext.h"
  78923. # define _(msgid) gettext (msgid)
  78924. #endif
  78925. -#else
  78926. -#ifdef __UCLIBC_MJN3_ONLY__
  78927. -#warning TODO: Enable gettext awareness.
  78928. -#endif /* __UCLIBC_MJN3_ONLY__ */
  78929. -
  78930. -#undef _
  78931. -#define _(X) X
  78932. -
  78933. -#endif
  78934. /* Treat '-W foo' the same as the long option '--foo',
  78935. * disabled for the moment since it costs about 2k... */
  78936. @@ -161,7 +147,7 @@
  78937. static struct _getopt_data getopt_data;
  78938. -#ifndef __GNU_LIBRARY__
  78939. +#if !defined __GNU_LIBRARY__ && !defined __UCLIBC__
  78940. /* Avoid depending on library functions or files
  78941. whose names are inconsistent. */
  78942. @@ -235,7 +221,7 @@
  78943. d->__nonoption_flags_len = d->__nonoption_flags_max_len = 0;
  78944. else
  78945. {
  78946. - memset (__mempcpy (new_str, __getopt_nonoption_flags,
  78947. + memset (mempcpy (new_str, __getopt_nonoption_flags,
  78948. d->__nonoption_flags_max_len),
  78949. '\0', top + 1 - d->__nonoption_flags_max_len);
  78950. d->__nonoption_flags_max_len = top + 1;
  78951. @@ -341,7 +327,7 @@
  78952. if (__getopt_nonoption_flags == NULL)
  78953. d->__nonoption_flags_max_len = -1;
  78954. else
  78955. - memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
  78956. + memset (mempcpy (__getopt_nonoption_flags, orig_str, len),
  78957. '\0', d->__nonoption_flags_max_len - len);
  78958. }
  78959. }
  78960. diff -Nur uClibc-0.9.33.2/libc/unistd/getopt_int.h uClibc-git/libc/unistd/getopt_int.h
  78961. --- uClibc-0.9.33.2/libc/unistd/getopt_int.h 2012-05-15 09:20:09.000000000 +0200
  78962. +++ uClibc-git/libc/unistd/getopt_int.h 2014-02-03 12:32:56.000000000 +0100
  78963. @@ -14,9 +14,8 @@
  78964. Lesser General Public License for more details.
  78965. You should have received a copy of the GNU Lesser General Public
  78966. - License along with the GNU C Library; if not, write to the Free
  78967. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78968. - 02111-1307 USA. */
  78969. + License along with the GNU C Library; if not, see
  78970. + <http://www.gnu.org/licenses/>. */
  78971. #ifndef _GETOPT_INT_H
  78972. #define _GETOPT_INT_H 1
  78973. diff -Nur uClibc-0.9.33.2/libc/unistd/getopt-susv3.c uClibc-git/libc/unistd/getopt-susv3.c
  78974. --- uClibc-0.9.33.2/libc/unistd/getopt-susv3.c 2012-05-15 09:20:09.000000000 +0200
  78975. +++ uClibc-git/libc/unistd/getopt-susv3.c 2014-02-03 12:32:56.000000000 +0100
  78976. @@ -22,14 +22,7 @@
  78977. #include <string.h>
  78978. #include <stdio.h>
  78979. #include <getopt.h>
  78980. -
  78981. -
  78982. -#ifdef __UCLIBC_MJN3_ONLY__
  78983. -#warning TODO: Enable gettext awareness.
  78984. -#endif /* __UCLIBC_MJN3_ONLY__ */
  78985. -
  78986. -#undef _
  78987. -#define _(X) X
  78988. +#include <libintl.h>
  78989. #ifdef __BCC__
  78990. static const char missing[] = "option requires an argument";
  78991. diff -Nur uClibc-0.9.33.2/libc/unistd/getpass.c uClibc-git/libc/unistd/getpass.c
  78992. --- uClibc-0.9.33.2/libc/unistd/getpass.c 2012-05-15 09:20:09.000000000 +0200
  78993. +++ uClibc-git/libc/unistd/getpass.c 2014-02-03 12:32:56.000000000 +0100
  78994. @@ -12,9 +12,8 @@
  78995. Lesser General Public License for more details.
  78996. You should have received a copy of the GNU Lesser General Public
  78997. - License along with the GNU C Library; if not, write to the Free
  78998. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  78999. - 02111-1307 USA. */
  79000. + License along with the GNU C Library; if not, see
  79001. + <http://www.gnu.org/licenses/>. */
  79002. #include <stdio.h>
  79003. #include <string.h>
  79004. diff -Nur uClibc-0.9.33.2/libc/unistd/getsubopt.c uClibc-git/libc/unistd/getsubopt.c
  79005. --- uClibc-0.9.33.2/libc/unistd/getsubopt.c 2012-05-15 09:20:09.000000000 +0200
  79006. +++ uClibc-git/libc/unistd/getsubopt.c 2014-02-03 12:32:56.000000000 +0100
  79007. @@ -14,9 +14,8 @@
  79008. Lesser General Public License for more details.
  79009. You should have received a copy of the GNU Lesser General Public
  79010. - License along with the GNU C Library; if not, write to the Free
  79011. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79012. - 02111-1307 USA. */
  79013. + License along with the GNU C Library; if not, see
  79014. + <http://www.gnu.org/licenses/>. */
  79015. #include <stdlib.h>
  79016. #include <string.h>
  79017. diff -Nur uClibc-0.9.33.2/libc/unistd/Makefile.in uClibc-git/libc/unistd/Makefile.in
  79018. --- uClibc-0.9.33.2/libc/unistd/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  79019. +++ uClibc-git/libc/unistd/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  79020. @@ -10,39 +10,21 @@
  79021. UNISTD_DIR := $(top_srcdir)libc/unistd
  79022. UNISTD_OUT := $(top_builddir)libc/unistd
  79023. -CSRC := $(notdir $(wildcard $(UNISTD_DIR)/*.c))
  79024. -# multi source
  79025. -CSRC := $(filter-out exec.c,$(CSRC))
  79026. -
  79027. -ifeq ($(ARCH_USE_MMU),y)
  79028. -CSRC := $(filter-out __exec_alloc.c,$(CSRC))
  79029. -endif
  79030. -
  79031. -ifeq ($(UCLIBC_HAS_GNU_GETOPT),y)
  79032. -CSRC := $(filter-out getopt-susv3.c getopt_long-simple.c,$(CSRC))
  79033. -else
  79034. -CSRC := $(filter-out getopt.c,$(CSRC))
  79035. -ifneq ($(UCLIBC_HAS_GETOPT_LONG),y)
  79036. -CSRC := $(filter-out getopt_long-simple.c,$(CSRC))
  79037. -endif
  79038. -endif
  79039. -
  79040. -ifeq ($(UCLIBC_HAS_GNU_GETSUBOPT),y)
  79041. -CSRC := $(filter-out getsubopt-susv3.c,$(CSRC))
  79042. -else
  79043. -CSRC := $(filter-out getsubopt.c,$(CSRC))
  79044. -endif
  79045. -
  79046. -ifneq ($(UCLIBC_SUSV3_LEGACY),y)
  79047. -CSRC := $(filter-out ualarm.c usleep.c,$(CSRC))
  79048. -endif
  79049. -
  79050. -ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  79051. -CSRC := $(filter-out sleep.c,$(CSRC))
  79052. -endif
  79053. +CSRC-y := $(notdir $(wildcard $(UNISTD_DIR)/*.c))
  79054. +OMIT-y := exec.c # multi source
  79055. +OMIT-$(ARCH_USE_MMU) += __exec_alloc.c
  79056. +OMIT-$(if $(UCLIBC_SUSV3_LEGACY),,y) += ualarm.c usleep.c
  79057. +#OMIT-$(UCLIBC_HAS_THREADS_NATIVE) += sleep.c
  79058. +
  79059. +# XXX: GNU_GETOPT comes with getopt_long unconditionally, which is wrong
  79060. +GO_LONG := $(if $(UCLIBC_HAS_GNU_GETOPT),getopt_long-simple.c)
  79061. +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETOPT),getopt-susv3.c $(GO_LONG),getopt.c)
  79062. +OMIT-y += $(if $(UCLIBC_HAS_GNU_GETSUBOPT),getsubopt-susv3.c,getsubopt.c)
  79063. -UNISTD_SRC := $(patsubst %.c,$(UNISTD_DIR)/%.c,$(CSRC))
  79064. -UNISTD_OBJ := $(patsubst %.c,$(UNISTD_OUT)/%.o,$(CSRC))
  79065. +CSRC-y := $(filter-out $(OMIT-y),$(CSRC-y))
  79066. +
  79067. +UNISTD_SRC := $(patsubst %.c,$(UNISTD_DIR)/%.c,$(CSRC-y))
  79068. +UNISTD_OBJ := $(patsubst %.c,$(UNISTD_OUT)/%.o,$(CSRC-y))
  79069. libc-y += $(UNISTD_OBJ)
  79070. diff -Nur uClibc-0.9.33.2/libc/unistd/pathconf.c uClibc-git/libc/unistd/pathconf.c
  79071. --- uClibc-0.9.33.2/libc/unistd/pathconf.c 2012-05-15 09:20:09.000000000 +0200
  79072. +++ uClibc-git/libc/unistd/pathconf.c 2014-02-03 12:32:56.000000000 +0100
  79073. @@ -13,9 +13,8 @@
  79074. Lesser General Public License for more details.
  79075. You should have received a copy of the GNU Lesser General Public
  79076. - License along with the GNU C Library; if not, write to the Free
  79077. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79078. - 02111-1307 USA. */
  79079. + License along with the GNU C Library; if not, see
  79080. + <http://www.gnu.org/licenses/>. */
  79081. /* pathconf -- adjusted for busybox */
  79082. diff -Nur uClibc-0.9.33.2/libc/unistd/sleep.c uClibc-git/libc/unistd/sleep.c
  79083. --- uClibc-0.9.33.2/libc/unistd/sleep.c 2012-05-15 09:20:09.000000000 +0200
  79084. +++ uClibc-git/libc/unistd/sleep.c 2014-02-03 12:32:56.000000000 +0100
  79085. @@ -15,8 +15,7 @@
  79086. You should have received a copy of the GNU Library General Public
  79087. License along with the GNU C Library; see the file COPYING.LIB. If not,
  79088. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  79089. - Boston, MA 02111-1307, USA. */
  79090. + see <http://www.gnu.org/licenses/>. */
  79091. #include <errno.h>
  79092. #include <time.h>
  79093. @@ -99,6 +98,7 @@
  79094. /* This is not necessary but some buggy programs depend on this. */
  79095. if (seconds == 0) {
  79096. # ifdef CANCELLATION_P
  79097. + int cancelhandling;
  79098. CANCELLATION_P (THREAD_SELF);
  79099. # endif
  79100. return 0;
  79101. diff -Nur uClibc-0.9.33.2/libc/unistd/sysconf.c uClibc-git/libc/unistd/sysconf.c
  79102. --- uClibc-0.9.33.2/libc/unistd/sysconf.c 2012-05-15 09:20:09.000000000 +0200
  79103. +++ uClibc-git/libc/unistd/sysconf.c 2014-02-03 12:32:56.000000000 +0100
  79104. @@ -14,11 +14,11 @@
  79105. You should have received a copy of the GNU Library General Public
  79106. License along with the GNU C Library; see the file COPYING.LIB. If not,
  79107. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  79108. - Boston, MA 02111-1307, USA. */
  79109. + see <http://www.gnu.org/licenses/>. */
  79110. #define _XOPEN_SOURCE 500
  79111. #include <features.h>
  79112. +#include <ctype.h>
  79113. #include <errno.h>
  79114. #include <limits.h>
  79115. #include <grp.h>
  79116. @@ -981,20 +981,9 @@
  79117. #endif
  79118. case _SC_MONOTONIC_CLOCK:
  79119. -#ifdef __NR_clock_getres
  79120. - /* Check using the clock_getres system call. */
  79121. -# ifdef __UCLIBC_HAS_THREADS_NATIVE__
  79122. - {
  79123. - struct timespec ts;
  79124. - INTERNAL_SYSCALL_DECL (err);
  79125. - int r;
  79126. - r = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts);
  79127. - return INTERNAL_SYSCALL_ERROR_P (r, err) ? -1 : _POSIX_VERSION;
  79128. - }
  79129. -# elif defined __UCLIBC_HAS_REALTIME__
  79130. +#if defined __UCLIBC_HAS_REALTIME__ && defined __NR_clock_getres
  79131. if (clock_getres(CLOCK_MONOTONIC, NULL) >= 0)
  79132. return _POSIX_VERSION;
  79133. -# endif
  79134. #endif
  79135. RETURN_NEG_1;
  79136. diff -Nur uClibc-0.9.33.2/libcrypt/crypt.c uClibc-git/libcrypt/crypt.c
  79137. --- uClibc-0.9.33.2/libcrypt/crypt.c 2012-05-15 09:20:09.000000000 +0200
  79138. +++ uClibc-git/libcrypt/crypt.c 2014-02-03 12:32:56.000000000 +0100
  79139. @@ -5,7 +5,6 @@
  79140. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  79141. */
  79142. -#define __FORCE_GLIBC
  79143. #include <unistd.h>
  79144. #include <crypt.h>
  79145. #include "libcrypt.h"
  79146. diff -Nur uClibc-0.9.33.2/libcrypt/crypt_stub.c uClibc-git/libcrypt/crypt_stub.c
  79147. --- uClibc-0.9.33.2/libcrypt/crypt_stub.c 2012-05-15 09:20:09.000000000 +0200
  79148. +++ uClibc-git/libcrypt/crypt_stub.c 2014-02-03 12:32:56.000000000 +0100
  79149. @@ -5,7 +5,6 @@
  79150. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  79151. */
  79152. -#define __FORCE_GLIBC
  79153. #include <crypt.h>
  79154. #include <unistd.h>
  79155. #include "libcrypt.h"
  79156. diff -Nur uClibc-0.9.33.2/libcrypt/des.c uClibc-git/libcrypt/des.c
  79157. --- uClibc-0.9.33.2/libcrypt/des.c 2012-05-15 09:20:09.000000000 +0200
  79158. +++ uClibc-git/libcrypt/des.c 2014-02-03 12:32:56.000000000 +0100
  79159. @@ -56,7 +56,6 @@
  79160. * alignment).
  79161. */
  79162. -#define __FORCE_GLIBC
  79163. #include <sys/cdefs.h>
  79164. #include <sys/types.h>
  79165. #include <sys/param.h>
  79166. diff -Nur uClibc-0.9.33.2/libcrypt/sha256.c uClibc-git/libcrypt/sha256.c
  79167. --- uClibc-0.9.33.2/libcrypt/sha256.c 2012-05-15 09:20:09.000000000 +0200
  79168. +++ uClibc-git/libcrypt/sha256.c 2014-02-03 12:32:56.000000000 +0100
  79169. @@ -14,9 +14,8 @@
  79170. Lesser General Public License for more details.
  79171. You should have received a copy of the GNU Lesser General Public
  79172. - License along with the GNU C Library; if not, write to the Free
  79173. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79174. - 02111-1307 USA. */
  79175. + License along with the GNU C Library; if not, see
  79176. + <http://www.gnu.org/licenses/>. */
  79177. /* Written by Ulrich Drepper <drepper@redhat.com>, 2007. */
  79178. diff -Nur uClibc-0.9.33.2/libcrypt/sha256-crypt.c uClibc-git/libcrypt/sha256-crypt.c
  79179. --- uClibc-0.9.33.2/libcrypt/sha256-crypt.c 2012-05-15 09:20:09.000000000 +0200
  79180. +++ uClibc-git/libcrypt/sha256-crypt.c 2014-02-03 12:32:56.000000000 +0100
  79181. @@ -14,9 +14,8 @@
  79182. Lesser General Public License for more details.
  79183. You should have received a copy of the GNU Lesser General Public
  79184. - License along with the GNU C Library; if not, write to the Free
  79185. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79186. - 02111-1307 USA. */
  79187. + License along with the GNU C Library; if not, see
  79188. + <http://www.gnu.org/licenses/>. */
  79189. #include <assert.h>
  79190. #include <errno.h>
  79191. diff -Nur uClibc-0.9.33.2/libcrypt/sha256.h uClibc-git/libcrypt/sha256.h
  79192. --- uClibc-0.9.33.2/libcrypt/sha256.h 2012-05-15 09:20:09.000000000 +0200
  79193. +++ uClibc-git/libcrypt/sha256.h 2014-02-03 12:32:56.000000000 +0100
  79194. @@ -14,9 +14,8 @@
  79195. Lesser General Public License for more details.
  79196. You should have received a copy of the GNU Lesser General Public
  79197. - License along with the GNU C Library; if not, write to the Free
  79198. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79199. - 02111-1307 USA. */
  79200. + License along with the GNU C Library; if not, see
  79201. + <http://www.gnu.org/licenses/>. */
  79202. #ifndef _SHA256_H
  79203. #define _SHA256_H 1
  79204. diff -Nur uClibc-0.9.33.2/libcrypt/sha512.c uClibc-git/libcrypt/sha512.c
  79205. --- uClibc-0.9.33.2/libcrypt/sha512.c 2012-05-15 09:20:09.000000000 +0200
  79206. +++ uClibc-git/libcrypt/sha512.c 2014-02-03 12:32:56.000000000 +0100
  79207. @@ -14,9 +14,8 @@
  79208. Lesser General Public License for more details.
  79209. You should have received a copy of the GNU Lesser General Public
  79210. - License along with the GNU C Library; if not, write to the Free
  79211. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79212. - 02111-1307 USA. */
  79213. + License along with the GNU C Library; if not, see
  79214. + <http://www.gnu.org/licenses/>. */
  79215. /* Written by Ulrich Drepper <drepper@redhat.com>, 2007. */
  79216. diff -Nur uClibc-0.9.33.2/libcrypt/sha512-crypt.c uClibc-git/libcrypt/sha512-crypt.c
  79217. --- uClibc-0.9.33.2/libcrypt/sha512-crypt.c 2012-05-15 09:20:09.000000000 +0200
  79218. +++ uClibc-git/libcrypt/sha512-crypt.c 2014-02-03 12:32:56.000000000 +0100
  79219. @@ -14,9 +14,8 @@
  79220. Lesser General Public License for more details.
  79221. You should have received a copy of the GNU Lesser General Public
  79222. - License along with the GNU C Library; if not, write to the Free
  79223. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79224. - 02111-1307 USA. */
  79225. + License along with the GNU C Library; if not, see
  79226. + <http://www.gnu.org/licenses/>. */
  79227. #include <assert.h>
  79228. #include <errno.h>
  79229. diff -Nur uClibc-0.9.33.2/libcrypt/sha512.h uClibc-git/libcrypt/sha512.h
  79230. --- uClibc-0.9.33.2/libcrypt/sha512.h 2012-05-15 09:20:09.000000000 +0200
  79231. +++ uClibc-git/libcrypt/sha512.h 2014-02-03 12:32:56.000000000 +0100
  79232. @@ -14,9 +14,8 @@
  79233. Lesser General Public License for more details.
  79234. You should have received a copy of the GNU Lesser General Public
  79235. - License along with the GNU C Library; if not, write to the Free
  79236. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79237. - 02111-1307 USA. */
  79238. + License along with the GNU C Library; if not, see
  79239. + <http://www.gnu.org/licenses/>. */
  79240. #ifndef _SHA512_H
  79241. #define _SHA512_H 1
  79242. diff -Nur uClibc-0.9.33.2/libm/carg.c uClibc-git/libm/carg.c
  79243. --- uClibc-0.9.33.2/libm/carg.c 2012-05-15 09:20:09.000000000 +0200
  79244. +++ uClibc-git/libm/carg.c 2014-02-03 12:32:56.000000000 +0100
  79245. @@ -14,9 +14,8 @@
  79246. Lesser General Public License for more details.
  79247. You should have received a copy of the GNU Lesser General Public
  79248. - License along with the GNU C Library; if not, write to the Free
  79249. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79250. - 02111-1307 USA. */
  79251. + License along with the GNU C Library; if not, see
  79252. + <http://www.gnu.org/licenses/>. */
  79253. #include <complex.h>
  79254. #include <math.h>
  79255. diff -Nur uClibc-0.9.33.2/libm/e_acos.c uClibc-git/libm/e_acos.c
  79256. --- uClibc-0.9.33.2/libm/e_acos.c 2012-05-15 09:20:09.000000000 +0200
  79257. +++ uClibc-git/libm/e_acos.c 2014-02-03 12:32:56.000000000 +0100
  79258. @@ -52,7 +52,7 @@
  79259. qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
  79260. qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
  79261. -double attribute_hidden __ieee754_acos(double x)
  79262. +double __ieee754_acos(double x)
  79263. {
  79264. double z,p,q,r,w,s,c,df;
  79265. int32_t hx,ix;
  79266. diff -Nur uClibc-0.9.33.2/libm/e_acosh.c uClibc-git/libm/e_acosh.c
  79267. --- uClibc-0.9.33.2/libm/e_acosh.c 2012-05-15 09:20:09.000000000 +0200
  79268. +++ uClibc-git/libm/e_acosh.c 2014-02-03 12:32:56.000000000 +0100
  79269. @@ -30,7 +30,7 @@
  79270. one = 1.0,
  79271. ln2 = 6.93147180559945286227e-01; /* 0x3FE62E42, 0xFEFA39EF */
  79272. -double attribute_hidden __ieee754_acosh(double x)
  79273. +double __ieee754_acosh(double x)
  79274. {
  79275. double t;
  79276. int32_t hx;
  79277. diff -Nur uClibc-0.9.33.2/libm/e_asin.c uClibc-git/libm/e_asin.c
  79278. --- uClibc-0.9.33.2/libm/e_asin.c 2012-05-15 09:20:09.000000000 +0200
  79279. +++ uClibc-git/libm/e_asin.c 2014-02-03 12:32:56.000000000 +0100
  79280. @@ -60,7 +60,7 @@
  79281. qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
  79282. qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
  79283. -double attribute_hidden __ieee754_asin(double x)
  79284. +double __ieee754_asin(double x)
  79285. {
  79286. double t=0.0,w,p,q,c,r,s;
  79287. int32_t hx,ix;
  79288. diff -Nur uClibc-0.9.33.2/libm/e_atan2.c uClibc-git/libm/e_atan2.c
  79289. --- uClibc-0.9.33.2/libm/e_atan2.c 2012-05-15 09:20:09.000000000 +0200
  79290. +++ uClibc-git/libm/e_atan2.c 2014-02-03 12:32:56.000000000 +0100
  79291. @@ -47,7 +47,7 @@
  79292. pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
  79293. pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
  79294. -double attribute_hidden __ieee754_atan2(double y, double x)
  79295. +double __ieee754_atan2(double y, double x)
  79296. {
  79297. double z;
  79298. int32_t k,m,hx,hy,ix,iy;
  79299. diff -Nur uClibc-0.9.33.2/libm/e_atanh.c uClibc-git/libm/e_atanh.c
  79300. --- uClibc-0.9.33.2/libm/e_atanh.c 2012-05-15 09:20:09.000000000 +0200
  79301. +++ uClibc-git/libm/e_atanh.c 2014-02-03 12:32:56.000000000 +0100
  79302. @@ -34,7 +34,7 @@
  79303. static const double zero = 0.0;
  79304. -double attribute_hidden __ieee754_atanh(double x)
  79305. +double __ieee754_atanh(double x)
  79306. {
  79307. double t;
  79308. int32_t hx,ix;
  79309. diff -Nur uClibc-0.9.33.2/libm/e_cosh.c uClibc-git/libm/e_cosh.c
  79310. --- uClibc-0.9.33.2/libm/e_cosh.c 2012-05-15 09:20:09.000000000 +0200
  79311. +++ uClibc-git/libm/e_cosh.c 2014-02-03 12:32:56.000000000 +0100
  79312. @@ -35,7 +35,7 @@
  79313. static const double one = 1.0, half=0.5, huge = 1.0e300;
  79314. -double attribute_hidden __ieee754_cosh(double x)
  79315. +double __ieee754_cosh(double x)
  79316. {
  79317. double t,w;
  79318. int32_t ix;
  79319. diff -Nur uClibc-0.9.33.2/libm/e_exp.c uClibc-git/libm/e_exp.c
  79320. --- uClibc-0.9.33.2/libm/e_exp.c 2012-05-15 09:20:09.000000000 +0200
  79321. +++ uClibc-git/libm/e_exp.c 2014-02-03 12:32:56.000000000 +0100
  79322. @@ -93,7 +93,7 @@
  79323. P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
  79324. P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
  79325. -double attribute_hidden __ieee754_exp(double x) /* default IEEE double exp */
  79326. +double __ieee754_exp(double x) /* default IEEE double exp */
  79327. {
  79328. double y;
  79329. double hi = 0.0;
  79330. diff -Nur uClibc-0.9.33.2/libm/e_fmod.c uClibc-git/libm/e_fmod.c
  79331. --- uClibc-0.9.33.2/libm/e_fmod.c 2012-05-15 09:20:09.000000000 +0200
  79332. +++ uClibc-git/libm/e_fmod.c 2014-02-03 12:32:56.000000000 +0100
  79333. @@ -20,7 +20,7 @@
  79334. static const double one = 1.0, Zero[] = {0.0, -0.0,};
  79335. -double attribute_hidden __ieee754_fmod(double x, double y)
  79336. +double __ieee754_fmod(double x, double y)
  79337. {
  79338. int32_t n,hx,hy,hz,ix,iy,sx,i;
  79339. u_int32_t lx,ly,lz;
  79340. diff -Nur uClibc-0.9.33.2/libm/e_hypot.c uClibc-git/libm/e_hypot.c
  79341. --- uClibc-0.9.33.2/libm/e_hypot.c 2012-05-15 09:20:09.000000000 +0200
  79342. +++ uClibc-git/libm/e_hypot.c 2014-02-03 12:32:56.000000000 +0100
  79343. @@ -44,9 +44,9 @@
  79344. #include "math.h"
  79345. #include "math_private.h"
  79346. -double attribute_hidden __ieee754_hypot(double x, double y)
  79347. +double __ieee754_hypot(double x, double y)
  79348. {
  79349. - double a=x,b=y,t1,t2,y1,y2,w;
  79350. + double a=x,b=y,t1,t2,_y1,y2,w;
  79351. int32_t j,k,ha,hb;
  79352. GET_HIGH_WORD(ha,x);
  79353. @@ -100,13 +100,13 @@
  79354. w = __ieee754_sqrt(t1*t1-(b*(-b)-t2*(a+t1)));
  79355. } else {
  79356. a = a+a;
  79357. - y1 = 0;
  79358. - SET_HIGH_WORD(y1,hb);
  79359. - y2 = b - y1;
  79360. + _y1 = 0;
  79361. + SET_HIGH_WORD(_y1,hb);
  79362. + y2 = b - _y1;
  79363. t1 = 0;
  79364. SET_HIGH_WORD(t1,ha+0x00100000);
  79365. t2 = a - t1;
  79366. - w = __ieee754_sqrt(t1*y1-(w*(-w)-(t1*y2+t2*b)));
  79367. + w = __ieee754_sqrt(t1*_y1-(w*(-w)-(t1*y2+t2*b)));
  79368. }
  79369. if(k!=0) {
  79370. u_int32_t high;
  79371. diff -Nur uClibc-0.9.33.2/libm/e_j0.c uClibc-git/libm/e_j0.c
  79372. --- uClibc-0.9.33.2/libm/e_j0.c 2012-05-15 09:20:09.000000000 +0200
  79373. +++ uClibc-git/libm/e_j0.c 2014-02-03 12:32:56.000000000 +0100
  79374. @@ -76,7 +76,7 @@
  79375. static const double zero = 0.0;
  79376. -double attribute_hidden __ieee754_j0(double x)
  79377. +double __ieee754_j0(double x)
  79378. {
  79379. double z, s,c,ss,cc,r,u,v;
  79380. int32_t hx,ix;
  79381. @@ -153,7 +153,7 @@
  79382. v03 = 2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */
  79383. v04 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */
  79384. -double attribute_hidden __ieee754_y0(double x)
  79385. +double __ieee754_y0(double x)
  79386. {
  79387. double z, s,c,ss,cc,u,v;
  79388. int32_t hx,ix,lx;
  79389. diff -Nur uClibc-0.9.33.2/libm/e_j1.c uClibc-git/libm/e_j1.c
  79390. --- uClibc-0.9.33.2/libm/e_j1.c 2012-05-15 09:20:09.000000000 +0200
  79391. +++ uClibc-git/libm/e_j1.c 2014-02-03 12:32:56.000000000 +0100
  79392. @@ -77,7 +77,7 @@
  79393. static const double zero = 0.0;
  79394. -double attribute_hidden __ieee754_j1(double x)
  79395. +double __ieee754_j1(double x)
  79396. {
  79397. double z, s,c,ss,cc,r,u,v,y;
  79398. int32_t hx,ix;
  79399. @@ -150,7 +150,7 @@
  79400. 1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
  79401. };
  79402. -double attribute_hidden __ieee754_y1(double x)
  79403. +double __ieee754_y1(double x)
  79404. {
  79405. double z, s,c,ss,cc,u,v;
  79406. int32_t hx,ix,lx;
  79407. diff -Nur uClibc-0.9.33.2/libm/e_jn.c uClibc-git/libm/e_jn.c
  79408. --- uClibc-0.9.33.2/libm/e_jn.c 2012-05-15 09:20:09.000000000 +0200
  79409. +++ uClibc-git/libm/e_jn.c 2014-02-03 12:32:56.000000000 +0100
  79410. @@ -45,7 +45,7 @@
  79411. static const double zero = 0.00000000000000000000e+00;
  79412. -double attribute_hidden __ieee754_jn(int n, double x)
  79413. +double __ieee754_jn(int n, double x)
  79414. {
  79415. int32_t i,hx,ix,lx, sgn;
  79416. double a, b, temp=0, di;
  79417. @@ -217,7 +217,7 @@
  79418. strong_alias(__ieee754_jn, jn)
  79419. #endif
  79420. -double attribute_hidden __ieee754_yn(int n, double x)
  79421. +double __ieee754_yn(int n, double x)
  79422. {
  79423. int32_t i,hx,ix,lx;
  79424. int32_t sign;
  79425. diff -Nur uClibc-0.9.33.2/libm/e_lgamma_r.c uClibc-git/libm/e_lgamma_r.c
  79426. --- uClibc-0.9.33.2/libm/e_lgamma_r.c 2012-05-15 09:20:09.000000000 +0200
  79427. +++ uClibc-git/libm/e_lgamma_r.c 2014-02-03 12:32:56.000000000 +0100
  79428. @@ -197,7 +197,7 @@
  79429. return -y;
  79430. }
  79431. -double attribute_hidden __ieee754_lgamma_r(double x, int *signgamp)
  79432. +double __ieee754_lgamma_r(double x, int *signgamp)
  79433. {
  79434. double t,y,z,nadj=0,p,p1,p2,p3,q,r,w;
  79435. int i,hx,lx,ix;
  79436. @@ -314,11 +314,12 @@
  79437. #else
  79438. strong_alias(__ieee754_lgamma_r, lgamma_r)
  79439. #endif
  79440. +libm_hidden_def(lgamma_r)
  79441. /* __ieee754_lgamma(x)
  79442. * Return the logarithm of the Gamma function of x.
  79443. */
  79444. -double attribute_hidden __ieee754_lgamma(double x)
  79445. +double __ieee754_lgamma(double x)
  79446. {
  79447. return __ieee754_lgamma_r(x, &signgam);
  79448. }
  79449. @@ -358,6 +359,7 @@
  79450. strong_alias(__ieee754_lgamma_r, gamma_r)
  79451. strong_alias(__ieee754_lgamma, gamma)
  79452. #endif
  79453. +libm_hidden_def(gamma)
  79454. /* double tgamma(double x)
  79455. diff -Nur uClibc-0.9.33.2/libm/e_log10.c uClibc-git/libm/e_log10.c
  79456. --- uClibc-0.9.33.2/libm/e_log10.c 2012-05-15 09:20:09.000000000 +0200
  79457. +++ uClibc-git/libm/e_log10.c 2014-02-03 12:32:56.000000000 +0100
  79458. @@ -53,7 +53,7 @@
  79459. static const double zero = 0.0;
  79460. -double attribute_hidden __ieee754_log10(double x)
  79461. +double __ieee754_log10(double x)
  79462. {
  79463. double y,z;
  79464. int32_t i,k,hx;
  79465. diff -Nur uClibc-0.9.33.2/libm/e_log2.c uClibc-git/libm/e_log2.c
  79466. --- uClibc-0.9.33.2/libm/e_log2.c 2012-05-15 09:20:09.000000000 +0200
  79467. +++ uClibc-git/libm/e_log2.c 2014-02-03 12:32:56.000000000 +0100
  79468. @@ -116,3 +116,4 @@
  79469. }
  79470. }
  79471. strong_alias(__ieee754_log2,log2)
  79472. +libm_hidden_def(log2)
  79473. diff -Nur uClibc-0.9.33.2/libm/e_log.c uClibc-git/libm/e_log.c
  79474. --- uClibc-0.9.33.2/libm/e_log.c 2012-05-15 09:20:09.000000000 +0200
  79475. +++ uClibc-git/libm/e_log.c 2014-02-03 12:32:56.000000000 +0100
  79476. @@ -77,7 +77,7 @@
  79477. static const double zero = 0.0;
  79478. -double attribute_hidden __ieee754_log(double x)
  79479. +double __ieee754_log(double x)
  79480. {
  79481. double hfsq,f,s,z,R,w,t1,t2,dk;
  79482. int32_t k,hx,i,j;
  79483. diff -Nur uClibc-0.9.33.2/libm/e_pow.c uClibc-git/libm/e_pow.c
  79484. --- uClibc-0.9.33.2/libm/e_pow.c 2012-05-15 09:20:09.000000000 +0200
  79485. +++ uClibc-git/libm/e_pow.c 2014-02-03 12:32:56.000000000 +0100
  79486. @@ -91,10 +91,10 @@
  79487. ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
  79488. ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
  79489. -double attribute_hidden __ieee754_pow(double x, double y)
  79490. +double __ieee754_pow(double x, double y)
  79491. {
  79492. double z,ax,z_h,z_l,p_h,p_l;
  79493. - double y1,t1,t2,r,s,t,u,v,w;
  79494. + double _y1,t1,t2,r,s,t,u,v,w;
  79495. int32_t i,j,k,yisint,n;
  79496. int32_t hx,hy,ix,iy;
  79497. u_int32_t lx,ly;
  79498. @@ -249,10 +249,10 @@
  79499. s = -one;/* (-ve)**(odd int) */
  79500. /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
  79501. - y1 = y;
  79502. - SET_LOW_WORD(y1,0);
  79503. - p_l = (y-y1)*t1+y*t2;
  79504. - p_h = y1*t1;
  79505. + _y1 = y;
  79506. + SET_LOW_WORD(_y1,0);
  79507. + p_l = (y-_y1)*t1+y*t2;
  79508. + p_h = _y1*t1;
  79509. z = p_l+p_h;
  79510. EXTRACT_WORDS(j,i,z);
  79511. if (j>=0x40900000) { /* z >= 1024 */
  79512. diff -Nur uClibc-0.9.33.2/libm/e_remainder.c uClibc-git/libm/e_remainder.c
  79513. --- uClibc-0.9.33.2/libm/e_remainder.c 2012-05-15 09:20:09.000000000 +0200
  79514. +++ uClibc-git/libm/e_remainder.c 2014-02-03 12:32:56.000000000 +0100
  79515. @@ -23,7 +23,7 @@
  79516. static const double zero = 0.0;
  79517. -double attribute_hidden __ieee754_remainder(double x, double p)
  79518. +double __ieee754_remainder(double x, double p)
  79519. {
  79520. int32_t hx,hp;
  79521. u_int32_t sx,lx,lp;
  79522. diff -Nur uClibc-0.9.33.2/libm/e_rem_pio2.c uClibc-git/libm/e_rem_pio2.c
  79523. --- uClibc-0.9.33.2/libm/e_rem_pio2.c 2012-05-15 09:20:09.000000000 +0200
  79524. +++ uClibc-git/libm/e_rem_pio2.c 2014-02-03 12:32:56.000000000 +0100
  79525. @@ -66,7 +66,7 @@
  79526. pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
  79527. pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
  79528. -int32_t attribute_hidden __ieee754_rem_pio2(double x, double *y)
  79529. +int32_t __ieee754_rem_pio2(double x, double *y)
  79530. {
  79531. double z=0.0,w,t,r,fn;
  79532. double tx[3];
  79533. diff -Nur uClibc-0.9.33.2/libm/e_scalb.c uClibc-git/libm/e_scalb.c
  79534. --- uClibc-0.9.33.2/libm/e_scalb.c 2012-05-15 09:20:09.000000000 +0200
  79535. +++ uClibc-git/libm/e_scalb.c 2014-02-03 12:32:56.000000000 +0100
  79536. @@ -19,7 +19,7 @@
  79537. #include "math_private.h"
  79538. #include <errno.h>
  79539. -double attribute_hidden __ieee754_scalb(double x, double fn)
  79540. +double __ieee754_scalb(double x, double fn)
  79541. {
  79542. if (isnan(x)||isnan(fn)) return x*fn;
  79543. if (!isfinite(fn)) {
  79544. @@ -55,5 +55,6 @@
  79545. #else
  79546. strong_alias(__ieee754_scalb, scalb)
  79547. #endif
  79548. +libm_hidden_def(scalb)
  79549. #endif /* UCLIBC_SUSV3_LEGACY */
  79550. diff -Nur uClibc-0.9.33.2/libm/e_sinh.c uClibc-git/libm/e_sinh.c
  79551. --- uClibc-0.9.33.2/libm/e_sinh.c 2012-05-15 09:20:09.000000000 +0200
  79552. +++ uClibc-git/libm/e_sinh.c 2014-02-03 12:32:56.000000000 +0100
  79553. @@ -32,7 +32,7 @@
  79554. static const double one = 1.0, shuge = 1.0e307;
  79555. -double attribute_hidden __ieee754_sinh(double x)
  79556. +double __ieee754_sinh(double x)
  79557. {
  79558. double t,w,h;
  79559. int32_t ix,jx;
  79560. diff -Nur uClibc-0.9.33.2/libm/e_sqrt.c uClibc-git/libm/e_sqrt.c
  79561. --- uClibc-0.9.33.2/libm/e_sqrt.c 2012-05-15 09:20:09.000000000 +0200
  79562. +++ uClibc-git/libm/e_sqrt.c 2014-02-03 12:32:56.000000000 +0100
  79563. @@ -84,7 +84,7 @@
  79564. static const double one = 1.0, tiny = 1.0e-300;
  79565. -double attribute_hidden __ieee754_sqrt(double x)
  79566. +double __ieee754_sqrt(double x)
  79567. {
  79568. double z;
  79569. int32_t sign = (int)0x80000000;
  79570. diff -Nur uClibc-0.9.33.2/libm/i386/fclrexcpt.c uClibc-git/libm/i386/fclrexcpt.c
  79571. --- uClibc-0.9.33.2/libm/i386/fclrexcpt.c 2012-05-15 09:20:09.000000000 +0200
  79572. +++ uClibc-git/libm/i386/fclrexcpt.c 2014-02-03 12:32:56.000000000 +0100
  79573. @@ -14,9 +14,8 @@
  79574. Lesser General Public License for more details.
  79575. You should have received a copy of the GNU Lesser General Public
  79576. - License along with the GNU C Library; if not, write to the Free
  79577. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79578. - 02111-1307 USA. */
  79579. + License along with the GNU C Library; if not, see
  79580. + <http://www.gnu.org/licenses/>. */
  79581. #include <fenv.h>
  79582. #include <unistd.h>
  79583. diff -Nur uClibc-0.9.33.2/libm/i386/fedisblxcpt.c uClibc-git/libm/i386/fedisblxcpt.c
  79584. --- uClibc-0.9.33.2/libm/i386/fedisblxcpt.c 2012-05-15 09:20:09.000000000 +0200
  79585. +++ uClibc-git/libm/i386/fedisblxcpt.c 2014-02-03 12:32:56.000000000 +0100
  79586. @@ -14,9 +14,8 @@
  79587. Lesser General Public License for more details.
  79588. You should have received a copy of the GNU Lesser General Public
  79589. - License along with the GNU C Library; if not, write to the Free
  79590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79591. - 02111-1307 USA. */
  79592. + License along with the GNU C Library; if not, see
  79593. + <http://www.gnu.org/licenses/>. */
  79594. #include <fenv.h>
  79595. #include <unistd.h>
  79596. diff -Nur uClibc-0.9.33.2/libm/i386/feenablxcpt.c uClibc-git/libm/i386/feenablxcpt.c
  79597. --- uClibc-0.9.33.2/libm/i386/feenablxcpt.c 2012-05-15 09:20:09.000000000 +0200
  79598. +++ uClibc-git/libm/i386/feenablxcpt.c 2014-02-03 12:32:56.000000000 +0100
  79599. @@ -14,9 +14,8 @@
  79600. Lesser General Public License for more details.
  79601. You should have received a copy of the GNU Lesser General Public
  79602. - License along with the GNU C Library; if not, write to the Free
  79603. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79604. - 02111-1307 USA. */
  79605. + License along with the GNU C Library; if not, see
  79606. + <http://www.gnu.org/licenses/>. */
  79607. #include <fenv.h>
  79608. #include <unistd.h>
  79609. diff -Nur uClibc-0.9.33.2/libm/i386/fegetenv.c uClibc-git/libm/i386/fegetenv.c
  79610. --- uClibc-0.9.33.2/libm/i386/fegetenv.c 2012-05-15 09:20:09.000000000 +0200
  79611. +++ uClibc-git/libm/i386/fegetenv.c 2014-02-03 12:32:56.000000000 +0100
  79612. @@ -14,9 +14,8 @@
  79613. Lesser General Public License for more details.
  79614. You should have received a copy of the GNU Lesser General Public
  79615. - License along with the GNU C Library; if not, write to the Free
  79616. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79617. - 02111-1307 USA. */
  79618. + License along with the GNU C Library; if not, see
  79619. + <http://www.gnu.org/licenses/>. */
  79620. #include <fenv.h>
  79621. diff -Nur uClibc-0.9.33.2/libm/i386/fegetexcept.c uClibc-git/libm/i386/fegetexcept.c
  79622. --- uClibc-0.9.33.2/libm/i386/fegetexcept.c 2012-05-15 09:20:09.000000000 +0200
  79623. +++ uClibc-git/libm/i386/fegetexcept.c 2014-02-03 12:32:56.000000000 +0100
  79624. @@ -14,9 +14,8 @@
  79625. Lesser General Public License for more details.
  79626. You should have received a copy of the GNU Lesser General Public
  79627. - License along with the GNU C Library; if not, write to the Free
  79628. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79629. - 02111-1307 USA. */
  79630. + License along with the GNU C Library; if not, see
  79631. + <http://www.gnu.org/licenses/>. */
  79632. #include <fenv.h>
  79633. diff -Nur uClibc-0.9.33.2/libm/i386/fegetround.c uClibc-git/libm/i386/fegetround.c
  79634. --- uClibc-0.9.33.2/libm/i386/fegetround.c 2012-05-15 09:20:09.000000000 +0200
  79635. +++ uClibc-git/libm/i386/fegetround.c 2014-02-03 12:32:56.000000000 +0100
  79636. @@ -14,9 +14,8 @@
  79637. Lesser General Public License for more details.
  79638. You should have received a copy of the GNU Lesser General Public
  79639. - License along with the GNU C Library; if not, write to the Free
  79640. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79641. - 02111-1307 USA. */
  79642. + License along with the GNU C Library; if not, see
  79643. + <http://www.gnu.org/licenses/>. */
  79644. #include <fenv.h>
  79645. diff -Nur uClibc-0.9.33.2/libm/i386/feholdexcpt.c uClibc-git/libm/i386/feholdexcpt.c
  79646. --- uClibc-0.9.33.2/libm/i386/feholdexcpt.c 2012-05-15 09:20:09.000000000 +0200
  79647. +++ uClibc-git/libm/i386/feholdexcpt.c 2014-02-03 12:32:56.000000000 +0100
  79648. @@ -15,9 +15,8 @@
  79649. Lesser General Public License for more details.
  79650. You should have received a copy of the GNU Lesser General Public
  79651. - License along with the GNU C Library; if not, write to the Free
  79652. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79653. - 02111-1307 USA. */
  79654. + License along with the GNU C Library; if not, see
  79655. + <http://www.gnu.org/licenses/>. */
  79656. #include <fenv.h>
  79657. #include <unistd.h>
  79658. diff -Nur uClibc-0.9.33.2/libm/i386/fesetenv.c uClibc-git/libm/i386/fesetenv.c
  79659. --- uClibc-0.9.33.2/libm/i386/fesetenv.c 2012-05-15 09:20:09.000000000 +0200
  79660. +++ uClibc-git/libm/i386/fesetenv.c 2014-02-03 12:32:56.000000000 +0100
  79661. @@ -14,9 +14,8 @@
  79662. Lesser General Public License for more details.
  79663. You should have received a copy of the GNU Lesser General Public
  79664. - License along with the GNU C Library; if not, write to the Free
  79665. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79666. - 02111-1307 USA. */
  79667. + License along with the GNU C Library; if not, see
  79668. + <http://www.gnu.org/licenses/>. */
  79669. #include <fenv.h>
  79670. #include <assert.h>
  79671. diff -Nur uClibc-0.9.33.2/libm/i386/fesetround.c uClibc-git/libm/i386/fesetround.c
  79672. --- uClibc-0.9.33.2/libm/i386/fesetround.c 2012-05-15 09:20:09.000000000 +0200
  79673. +++ uClibc-git/libm/i386/fesetround.c 2014-02-03 12:32:56.000000000 +0100
  79674. @@ -14,9 +14,8 @@
  79675. Lesser General Public License for more details.
  79676. You should have received a copy of the GNU Lesser General Public
  79677. - License along with the GNU C Library; if not, write to the Free
  79678. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79679. - 02111-1307 USA. */
  79680. + License along with the GNU C Library; if not, see
  79681. + <http://www.gnu.org/licenses/>. */
  79682. #include <fenv.h>
  79683. #include <unistd.h>
  79684. diff -Nur uClibc-0.9.33.2/libm/i386/feupdateenv.c uClibc-git/libm/i386/feupdateenv.c
  79685. --- uClibc-0.9.33.2/libm/i386/feupdateenv.c 2012-05-15 09:20:09.000000000 +0200
  79686. +++ uClibc-git/libm/i386/feupdateenv.c 2014-02-03 12:32:56.000000000 +0100
  79687. @@ -14,9 +14,8 @@
  79688. Lesser General Public License for more details.
  79689. You should have received a copy of the GNU Lesser General Public
  79690. - License along with the GNU C Library; if not, write to the Free
  79691. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79692. - 02111-1307 USA. */
  79693. + License along with the GNU C Library; if not, see
  79694. + <http://www.gnu.org/licenses/>. */
  79695. #include <fenv.h>
  79696. #include <unistd.h>
  79697. diff -Nur uClibc-0.9.33.2/libm/i386/fgetexcptflg.c uClibc-git/libm/i386/fgetexcptflg.c
  79698. --- uClibc-0.9.33.2/libm/i386/fgetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  79699. +++ uClibc-git/libm/i386/fgetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  79700. @@ -14,9 +14,8 @@
  79701. Lesser General Public License for more details.
  79702. You should have received a copy of the GNU Lesser General Public
  79703. - License along with the GNU C Library; if not, write to the Free
  79704. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79705. - 02111-1307 USA. */
  79706. + License along with the GNU C Library; if not, see
  79707. + <http://www.gnu.org/licenses/>. */
  79708. #include <fenv.h>
  79709. diff -Nur uClibc-0.9.33.2/libm/i386/fraiseexcpt.c uClibc-git/libm/i386/fraiseexcpt.c
  79710. --- uClibc-0.9.33.2/libm/i386/fraiseexcpt.c 2012-05-15 09:20:09.000000000 +0200
  79711. +++ uClibc-git/libm/i386/fraiseexcpt.c 2014-02-03 12:32:56.000000000 +0100
  79712. @@ -14,9 +14,8 @@
  79713. Lesser General Public License for more details.
  79714. You should have received a copy of the GNU Lesser General Public
  79715. - License along with the GNU C Library; if not, write to the Free
  79716. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79717. - 02111-1307 USA. */
  79718. + License along with the GNU C Library; if not, see
  79719. + <http://www.gnu.org/licenses/>. */
  79720. #include <fenv.h>
  79721. #include <math.h>
  79722. diff -Nur uClibc-0.9.33.2/libm/i386/fsetexcptflg.c uClibc-git/libm/i386/fsetexcptflg.c
  79723. --- uClibc-0.9.33.2/libm/i386/fsetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  79724. +++ uClibc-git/libm/i386/fsetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  79725. @@ -14,9 +14,8 @@
  79726. Lesser General Public License for more details.
  79727. You should have received a copy of the GNU Lesser General Public
  79728. - License along with the GNU C Library; if not, write to the Free
  79729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79730. - 02111-1307 USA. */
  79731. + License along with the GNU C Library; if not, see
  79732. + <http://www.gnu.org/licenses/>. */
  79733. #include <fenv.h>
  79734. #include <math.h>
  79735. diff -Nur uClibc-0.9.33.2/libm/i386/ftestexcept.c uClibc-git/libm/i386/ftestexcept.c
  79736. --- uClibc-0.9.33.2/libm/i386/ftestexcept.c 2012-05-15 09:20:09.000000000 +0200
  79737. +++ uClibc-git/libm/i386/ftestexcept.c 2014-02-03 12:32:56.000000000 +0100
  79738. @@ -14,9 +14,8 @@
  79739. Lesser General Public License for more details.
  79740. You should have received a copy of the GNU Lesser General Public
  79741. - License along with the GNU C Library; if not, write to the Free
  79742. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79743. - 02111-1307 USA. */
  79744. + License along with the GNU C Library; if not, see
  79745. + <http://www.gnu.org/licenses/>. */
  79746. #include <fenv.h>
  79747. #include <unistd.h>
  79748. diff -Nur uClibc-0.9.33.2/libm/k_cos.c uClibc-git/libm/k_cos.c
  79749. --- uClibc-0.9.33.2/libm/k_cos.c 2012-05-15 09:20:09.000000000 +0200
  79750. +++ uClibc-git/libm/k_cos.c 2014-02-03 12:32:56.000000000 +0100
  79751. @@ -56,7 +56,7 @@
  79752. C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */
  79753. C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
  79754. -double attribute_hidden __kernel_cos(double x, double y)
  79755. +double __kernel_cos(double x, double y)
  79756. {
  79757. double a,hz,z,r,qx;
  79758. int32_t ix;
  79759. diff -Nur uClibc-0.9.33.2/libm/k_rem_pio2.c uClibc-git/libm/k_rem_pio2.c
  79760. --- uClibc-0.9.33.2/libm/k_rem_pio2.c 2012-05-15 09:20:09.000000000 +0200
  79761. +++ uClibc-git/libm/k_rem_pio2.c 2014-02-03 12:32:56.000000000 +0100
  79762. @@ -147,7 +147,7 @@
  79763. two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */
  79764. twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */
  79765. -int attribute_hidden __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2)
  79766. +int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int32_t *ipio2)
  79767. {
  79768. int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
  79769. double z,fw,f[20],fq[20],q[20];
  79770. diff -Nur uClibc-0.9.33.2/libm/k_sin.c uClibc-git/libm/k_sin.c
  79771. --- uClibc-0.9.33.2/libm/k_sin.c 2012-05-15 09:20:09.000000000 +0200
  79772. +++ uClibc-git/libm/k_sin.c 2014-02-03 12:32:56.000000000 +0100
  79773. @@ -49,7 +49,7 @@
  79774. S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
  79775. S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
  79776. -double attribute_hidden __kernel_sin(double x, double y, int iy)
  79777. +double __kernel_sin(double x, double y, int iy)
  79778. {
  79779. double z,r,v;
  79780. int32_t ix;
  79781. diff -Nur uClibc-0.9.33.2/libm/k_standard.c uClibc-git/libm/k_standard.c
  79782. --- uClibc-0.9.33.2/libm/k_standard.c 2012-05-15 09:20:09.000000000 +0200
  79783. +++ uClibc-git/libm/k_standard.c 2014-02-03 12:32:56.000000000 +0100
  79784. @@ -598,6 +598,7 @@
  79785. errno = EDOM;
  79786. }
  79787. break;
  79788. +# ifdef __UCLIBC_SUSV3_LEGACY__
  79789. case 32:
  79790. case 132:
  79791. /* scalb overflow; SVID also returns +-HUGE_VAL */
  79792. @@ -622,6 +623,7 @@
  79793. errno = ERANGE;
  79794. }
  79795. break;
  79796. +# endif
  79797. case 34:
  79798. case 134:
  79799. /* j0(|x|>X_TLOSS) */
  79800. diff -Nur uClibc-0.9.33.2/libm/k_tan.c uClibc-git/libm/k_tan.c
  79801. --- uClibc-0.9.33.2/libm/k_tan.c 2012-05-15 09:20:09.000000000 +0200
  79802. +++ uClibc-git/libm/k_tan.c 2014-02-03 12:32:56.000000000 +0100
  79803. @@ -66,7 +66,7 @@
  79804. 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */
  79805. };
  79806. -double attribute_hidden __kernel_tan(double x, double y, int iy)
  79807. +double __kernel_tan(double x, double y, int iy)
  79808. {
  79809. double z,r,v,w,s;
  79810. int32_t ix,hx;
  79811. diff -Nur uClibc-0.9.33.2/libm/metag/fclrexcpt.c uClibc-git/libm/metag/fclrexcpt.c
  79812. --- uClibc-0.9.33.2/libm/metag/fclrexcpt.c 1970-01-01 01:00:00.000000000 +0100
  79813. +++ uClibc-git/libm/metag/fclrexcpt.c 2014-02-03 12:32:56.000000000 +0100
  79814. @@ -0,0 +1,44 @@
  79815. +/* Clear given exceptions in current floating-point environment.
  79816. + Copyright (C) 2013 Imagination Technologies Ltd.
  79817. + This file is part of the GNU C Library.
  79818. +
  79819. + The GNU C Library is free software; you can redistribute it and/or
  79820. + modify it under the terms of the GNU Lesser General Public
  79821. + License as published by the Free Software Foundation; either
  79822. + version 2.1 of the License, or (at your option) any later version.
  79823. +
  79824. + The GNU C Library is distributed in the hope that it will be useful,
  79825. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  79826. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  79827. + Lesser General Public License for more details.
  79828. +
  79829. + You should have received a copy of the GNU Lesser General Public
  79830. + License along with the GNU C Library; if not, write to the Free
  79831. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79832. + 02111-1307 USA. */
  79833. +
  79834. +#include <fenv.h>
  79835. +#include <unistd.h>
  79836. +
  79837. +#include "internal.h"
  79838. +
  79839. +int
  79840. +feclearexcept (int excepts)
  79841. +{
  79842. + unsigned int temp;
  79843. +
  79844. + /* Get the current exceptions. */
  79845. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  79846. +
  79847. + /* Mask out unsupported bits/exceptions. */
  79848. + excepts &= FE_ALL_EXCEPT;
  79849. +
  79850. + excepts <<= 16;
  79851. +
  79852. + temp &= ~excepts;
  79853. +
  79854. + metag_set_fpu_flags(temp);
  79855. +
  79856. + /* Success. */
  79857. + return 0;
  79858. +}
  79859. diff -Nur uClibc-0.9.33.2/libm/metag/fedisblxcpt.c uClibc-git/libm/metag/fedisblxcpt.c
  79860. --- uClibc-0.9.33.2/libm/metag/fedisblxcpt.c 1970-01-01 01:00:00.000000000 +0100
  79861. +++ uClibc-git/libm/metag/fedisblxcpt.c 2014-02-03 12:32:56.000000000 +0100
  79862. @@ -0,0 +1,40 @@
  79863. +/* Disable floating-point exceptions.
  79864. + Copyright (C) 2013 Imagination Technologies Ltd.
  79865. + This file is part of the GNU C Library.
  79866. +
  79867. + The GNU C Library is free software; you can redistribute it and/or
  79868. + modify it under the terms of the GNU Lesser General Public
  79869. + License as published by the Free Software Foundation; either
  79870. + version 2.1 of the License, or (at your option) any later version.
  79871. +
  79872. + The GNU C Library is distributed in the hope that it will be useful,
  79873. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  79874. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  79875. + Lesser General Public License for more details.
  79876. +
  79877. + You should have received a copy of the GNU Lesser General Public
  79878. + License along with the GNU C Library; if not, write to the Free
  79879. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79880. + 02111-1307 USA. */
  79881. +
  79882. +#include <fenv.h>
  79883. +#include <unistd.h>
  79884. +
  79885. +#include "internal.h"
  79886. +
  79887. +int
  79888. +fedisableexcept (int excepts)
  79889. +{
  79890. + unsigned int old_exc;
  79891. +
  79892. + /* Get the current control word. */
  79893. + __asm__ ("MOV %0,TXDEFR" : "=r" (old_exc));
  79894. +
  79895. + old_exc &= FE_ALL_EXCEPT;
  79896. +
  79897. + excepts = old_exc & ~excepts;
  79898. +
  79899. + metag_set_fpu_flags(excepts);
  79900. +
  79901. + return old_exc;
  79902. +}
  79903. diff -Nur uClibc-0.9.33.2/libm/metag/feenablxcpt.c uClibc-git/libm/metag/feenablxcpt.c
  79904. --- uClibc-0.9.33.2/libm/metag/feenablxcpt.c 1970-01-01 01:00:00.000000000 +0100
  79905. +++ uClibc-git/libm/metag/feenablxcpt.c 2014-02-03 12:32:56.000000000 +0100
  79906. @@ -0,0 +1,40 @@
  79907. +/* Enable floating-point exceptions.
  79908. + Copyright (C) 2013 Imagination Technologies Ltd.
  79909. + This file is part of the GNU C Library.
  79910. +
  79911. + The GNU C Library is free software; you can redistribute it and/or
  79912. + modify it under the terms of the GNU Lesser General Public
  79913. + License as published by the Free Software Foundation; either
  79914. + version 2.1 of the License, or (at your option) any later version.
  79915. +
  79916. + The GNU C Library is distributed in the hope that it will be useful,
  79917. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  79918. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  79919. + Lesser General Public License for more details.
  79920. +
  79921. + You should have received a copy of the GNU Lesser General Public
  79922. + License along with the GNU C Library; if not, write to the Free
  79923. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79924. + 02111-1307 USA. */
  79925. +
  79926. +#include <fenv.h>
  79927. +#include <unistd.h>
  79928. +
  79929. +#include "internal.h"
  79930. +
  79931. +int
  79932. +feenableexcept (int excepts)
  79933. +{
  79934. + unsigned int old_exc;
  79935. +
  79936. + /* Get the current control word. */
  79937. + __asm__ ("MOV %0,TXDEFR" : "=r" (old_exc));
  79938. +
  79939. + old_exc &= FE_ALL_EXCEPT;
  79940. +
  79941. + excepts |= old_exc;
  79942. +
  79943. + metag_set_fpu_flags(excepts);
  79944. +
  79945. + return old_exc;
  79946. +}
  79947. diff -Nur uClibc-0.9.33.2/libm/metag/fegetenv.c uClibc-git/libm/metag/fegetenv.c
  79948. --- uClibc-0.9.33.2/libm/metag/fegetenv.c 1970-01-01 01:00:00.000000000 +0100
  79949. +++ uClibc-git/libm/metag/fegetenv.c 2014-02-03 12:32:56.000000000 +0100
  79950. @@ -0,0 +1,36 @@
  79951. +/* Store current floating-point environment.
  79952. + Copyright (C) 2013 Imagination Technologies Ltd.
  79953. + This file is part of the GNU C Library.
  79954. +
  79955. + The GNU C Library is free software; you can redistribute it and/or
  79956. + modify it under the terms of the GNU Lesser General Public
  79957. + License as published by the Free Software Foundation; either
  79958. + version 2.1 of the License, or (at your option) any later version.
  79959. +
  79960. + The GNU C Library is distributed in the hope that it will be useful,
  79961. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  79962. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  79963. + Lesser General Public License for more details.
  79964. +
  79965. + You should have received a copy of the GNU Lesser General Public
  79966. + License along with the GNU C Library; if not, write to the Free
  79967. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  79968. + 02111-1307 USA. */
  79969. +
  79970. +#include <fenv.h>
  79971. +
  79972. +int
  79973. +fegetenv (fenv_t *envp)
  79974. +{
  79975. + unsigned int txdefr;
  79976. + unsigned int txmode;
  79977. +
  79978. + __asm__ ("MOV %0,TXDEFR" : "=r" (txdefr));
  79979. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  79980. +
  79981. + envp->txdefr = txdefr;
  79982. + envp->txmode = txmode;
  79983. +
  79984. + /* Success. */
  79985. + return 0;
  79986. +}
  79987. diff -Nur uClibc-0.9.33.2/libm/metag/fegetexcept.c uClibc-git/libm/metag/fegetexcept.c
  79988. --- uClibc-0.9.33.2/libm/metag/fegetexcept.c 1970-01-01 01:00:00.000000000 +0100
  79989. +++ uClibc-git/libm/metag/fegetexcept.c 2014-02-03 12:32:56.000000000 +0100
  79990. @@ -0,0 +1,31 @@
  79991. +/* Get enabled floating-point exceptions.
  79992. + Copyright (C) 2013 Imagination Technologies Ltd.
  79993. + This file is part of the GNU C Library.
  79994. +
  79995. + The GNU C Library is free software; you can redistribute it and/or
  79996. + modify it under the terms of the GNU Lesser General Public
  79997. + License as published by the Free Software Foundation; either
  79998. + version 2.1 of the License, or (at your option) any later version.
  79999. +
  80000. + The GNU C Library is distributed in the hope that it will be useful,
  80001. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80002. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80003. + Lesser General Public License for more details.
  80004. +
  80005. + You should have received a copy of the GNU Lesser General Public
  80006. + License along with the GNU C Library; if not, write to the Free
  80007. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80008. + 02111-1307 USA. */
  80009. +
  80010. +#include <fenv.h>
  80011. +
  80012. +int
  80013. +fegetexcept (void)
  80014. +{
  80015. + unsigned int exc;
  80016. +
  80017. + /* Get the current control word. */
  80018. + __asm__ ("MOV %0,TXDEFR" : "=r" (exc));
  80019. +
  80020. + return exc & FE_ALL_EXCEPT;
  80021. +}
  80022. diff -Nur uClibc-0.9.33.2/libm/metag/fegetround.c uClibc-git/libm/metag/fegetround.c
  80023. --- uClibc-0.9.33.2/libm/metag/fegetround.c 1970-01-01 01:00:00.000000000 +0100
  80024. +++ uClibc-git/libm/metag/fegetround.c 2014-02-03 12:32:56.000000000 +0100
  80025. @@ -0,0 +1,30 @@
  80026. +/* Return current rounding direction.
  80027. + Copyright (C) 2013 Imagination Technologies Ltd.
  80028. + This file is part of the GNU C Library.
  80029. +
  80030. + The GNU C Library is free software; you can redistribute it and/or
  80031. + modify it under the terms of the GNU Lesser General Public
  80032. + License as published by the Free Software Foundation; either
  80033. + version 2.1 of the License, or (at your option) any later version.
  80034. +
  80035. + The GNU C Library is distributed in the hope that it will be useful,
  80036. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80037. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80038. + Lesser General Public License for more details.
  80039. +
  80040. + You should have received a copy of the GNU Lesser General Public
  80041. + License along with the GNU C Library; if not, write to the Free
  80042. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80043. + 02111-1307 USA. */
  80044. +
  80045. +#include <fenv.h>
  80046. +
  80047. +int
  80048. +fegetround (void)
  80049. +{
  80050. + unsigned int txmode;
  80051. +
  80052. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80053. +
  80054. + return (txmode >> 16) & 0x3;
  80055. +}
  80056. diff -Nur uClibc-0.9.33.2/libm/metag/feholdexcpt.c uClibc-git/libm/metag/feholdexcpt.c
  80057. --- uClibc-0.9.33.2/libm/metag/feholdexcpt.c 1970-01-01 01:00:00.000000000 +0100
  80058. +++ uClibc-git/libm/metag/feholdexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80059. @@ -0,0 +1,41 @@
  80060. +/* Store current floating-point environment and clear exceptions.
  80061. + Copyright (C) 2013 Imagination Technologies Ltd.
  80062. + Free Software Foundation, Inc.
  80063. + This file is part of the GNU C Library.
  80064. +
  80065. + The GNU C Library is free software; you can redistribute it and/or
  80066. + modify it under the terms of the GNU Lesser General Public
  80067. + License as published by the Free Software Foundation; either
  80068. + version 2.1 of the License, or (at your option) any later version.
  80069. +
  80070. + The GNU C Library is distributed in the hope that it will be useful,
  80071. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80072. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80073. + Lesser General Public License for more details.
  80074. +
  80075. + You should have received a copy of the GNU Lesser General Public
  80076. + License along with the GNU C Library; if not, write to the Free
  80077. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80078. + 02111-1307 USA. */
  80079. +
  80080. +#include <fenv.h>
  80081. +#include <unistd.h>
  80082. +
  80083. +#include "internal.h"
  80084. +
  80085. +int
  80086. +feholdexcept (fenv_t *envp)
  80087. +{
  80088. + unsigned int txdefr;
  80089. + unsigned int txmode;
  80090. +
  80091. + __asm__ ("MOV %0,TXDEFR" : "=r" (txdefr));
  80092. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80093. +
  80094. + envp->txdefr = txdefr;
  80095. + envp->txmode = txmode;
  80096. +
  80097. + metag_set_fpu_flags(0);
  80098. +
  80099. + return 0;
  80100. +}
  80101. diff -Nur uClibc-0.9.33.2/libm/metag/fesetenv.c uClibc-git/libm/metag/fesetenv.c
  80102. --- uClibc-0.9.33.2/libm/metag/fesetenv.c 1970-01-01 01:00:00.000000000 +0100
  80103. +++ uClibc-git/libm/metag/fesetenv.c 2014-02-03 12:32:56.000000000 +0100
  80104. @@ -0,0 +1,60 @@
  80105. +/* Install given floating-point environment.
  80106. + Copyright (C) 2013 Imagination Technologies Ltd.
  80107. + This file is part of the GNU C Library.
  80108. +
  80109. + The GNU C Library is free software; you can redistribute it and/or
  80110. + modify it under the terms of the GNU Lesser General Public
  80111. + License as published by the Free Software Foundation; either
  80112. + version 2.1 of the License, or (at your option) any later version.
  80113. +
  80114. + The GNU C Library is distributed in the hope that it will be useful,
  80115. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80116. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80117. + Lesser General Public License for more details.
  80118. +
  80119. + You should have received a copy of the GNU Lesser General Public
  80120. + License along with the GNU C Library; if not, write to the Free
  80121. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80122. + 02111-1307 USA. */
  80123. +
  80124. +#include <fenv.h>
  80125. +#include <assert.h>
  80126. +
  80127. +#include "internal.h"
  80128. +
  80129. +libm_hidden_proto(fesetenv)
  80130. +
  80131. +int
  80132. +fesetenv (const fenv_t *envp)
  80133. +{
  80134. + unsigned int exc;
  80135. + unsigned int txmode;
  80136. +
  80137. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80138. +
  80139. + /* Clear rounding mode bits (round to nearest). */
  80140. + txmode &= ~(0x3 << 16);
  80141. +
  80142. + if (envp == FE_DFL_ENV)
  80143. + {
  80144. + exc = 0;
  80145. + }
  80146. + else if (envp == FE_NOMASK_ENV)
  80147. + {
  80148. + exc = 0x1f;
  80149. + }
  80150. + else
  80151. + {
  80152. + exc = envp->txdefr & (FE_ALL_EXCEPT | (FE_ALL_EXCEPT << 16));
  80153. + /* Write rounding mode and guard bit. */
  80154. + txmode |= (0x1 << 18 ) | (envp->txmode & (0x3 << 16));
  80155. + }
  80156. +
  80157. + __asm__ ("MOV TXMODE,%0" : : "r" (txmode));
  80158. +
  80159. + metag_set_fpu_flags(exc);
  80160. +
  80161. + /* Success. */
  80162. + return 0;
  80163. +}
  80164. +libm_hidden_def(fesetenv)
  80165. diff -Nur uClibc-0.9.33.2/libm/metag/fesetround.c uClibc-git/libm/metag/fesetround.c
  80166. --- uClibc-0.9.33.2/libm/metag/fesetround.c 1970-01-01 01:00:00.000000000 +0100
  80167. +++ uClibc-git/libm/metag/fesetround.c 2014-02-03 12:32:56.000000000 +0100
  80168. @@ -0,0 +1,41 @@
  80169. +/* Set current rounding direction.
  80170. + Copyright (C) 2013 Imagination Technologies Ltd.
  80171. + This file is part of the GNU C Library.
  80172. +
  80173. + The GNU C Library is free software; you can redistribute it and/or
  80174. + modify it under the terms of the GNU Lesser General Public
  80175. + License as published by the Free Software Foundation; either
  80176. + version 2.1 of the License, or (at your option) any later version.
  80177. +
  80178. + The GNU C Library is distributed in the hope that it will be useful,
  80179. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80180. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80181. + Lesser General Public License for more details.
  80182. +
  80183. + You should have received a copy of the GNU Lesser General Public
  80184. + License along with the GNU C Library; if not, write to the Free
  80185. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80186. + 02111-1307 USA. */
  80187. +
  80188. +#include <fenv.h>
  80189. +#include <unistd.h>
  80190. +
  80191. +int
  80192. +fesetround (int round)
  80193. +{
  80194. + unsigned int txmode;
  80195. +
  80196. + if ((round & ~0x3) != 0)
  80197. + /* ROUND is no valid rounding mode. */
  80198. + return 1;
  80199. +
  80200. + __asm__ ("MOV %0,TXMODE" : "=r" (txmode));
  80201. +
  80202. + txmode &= ~(0x3 << 16);
  80203. + /* Write rounding mode and guard bit. */
  80204. + txmode |= (0x1 << 18 ) | (round << 16);
  80205. +
  80206. + __asm__ ("MOV TXMODE,%0" : : "r" (txmode));
  80207. +
  80208. + return 0;
  80209. +}
  80210. diff -Nur uClibc-0.9.33.2/libm/metag/feupdateenv.c uClibc-git/libm/metag/feupdateenv.c
  80211. --- uClibc-0.9.33.2/libm/metag/feupdateenv.c 1970-01-01 01:00:00.000000000 +0100
  80212. +++ uClibc-git/libm/metag/feupdateenv.c 2014-02-03 12:32:56.000000000 +0100
  80213. @@ -0,0 +1,45 @@
  80214. +/* Install given floating-point environment and raise exceptions.
  80215. + Copyright (C) 2013 Imagination Technologies Ltd.
  80216. + This file is part of the GNU C Library.
  80217. +
  80218. + The GNU C Library is free software; you can redistribute it and/or
  80219. + modify it under the terms of the GNU Lesser General Public
  80220. + License as published by the Free Software Foundation; either
  80221. + version 2.1 of the License, or (at your option) any later version.
  80222. +
  80223. + The GNU C Library is distributed in the hope that it will be useful,
  80224. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80225. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80226. + Lesser General Public License for more details.
  80227. +
  80228. + You should have received a copy of the GNU Lesser General Public
  80229. + License along with the GNU C Library; if not, write to the Free
  80230. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80231. + 02111-1307 USA. */
  80232. +
  80233. +#include <fenv.h>
  80234. +#include <unistd.h>
  80235. +
  80236. +libm_hidden_proto(fesetenv)
  80237. +libm_hidden_proto(feraiseexcept)
  80238. +
  80239. +int
  80240. +feupdateenv (const fenv_t *envp)
  80241. +{
  80242. + unsigned int temp;
  80243. +
  80244. + /* Save current exceptions. */
  80245. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  80246. +
  80247. + temp >>= 16;
  80248. + temp &= FE_ALL_EXCEPT;
  80249. +
  80250. + /* Install new environment. */
  80251. + fesetenv (envp);
  80252. +
  80253. + /* Raise the saved exception. */
  80254. + feraiseexcept ((int) temp);
  80255. +
  80256. + /* Success. */
  80257. + return 0;
  80258. +}
  80259. diff -Nur uClibc-0.9.33.2/libm/metag/fgetexcptflg.c uClibc-git/libm/metag/fgetexcptflg.c
  80260. --- uClibc-0.9.33.2/libm/metag/fgetexcptflg.c 1970-01-01 01:00:00.000000000 +0100
  80261. +++ uClibc-git/libm/metag/fgetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80262. @@ -0,0 +1,34 @@
  80263. +/* Store current representation for exceptions.
  80264. + Copyright (C) 2013 Imagination Technologies Ltd.
  80265. + This file is part of the GNU C Library.
  80266. +
  80267. + The GNU C Library is free software; you can redistribute it and/or
  80268. + modify it under the terms of the GNU Lesser General Public
  80269. + License as published by the Free Software Foundation; either
  80270. + version 2.1 of the License, or (at your option) any later version.
  80271. +
  80272. + The GNU C Library is distributed in the hope that it will be useful,
  80273. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80274. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80275. + Lesser General Public License for more details.
  80276. +
  80277. + You should have received a copy of the GNU Lesser General Public
  80278. + License along with the GNU C Library; if not, write to the Free
  80279. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80280. + 02111-1307 USA. */
  80281. +
  80282. +#include <fenv.h>
  80283. +
  80284. +int
  80285. +fegetexceptflag (fexcept_t *flagp, int excepts)
  80286. +{
  80287. + unsigned int temp;
  80288. +
  80289. + /* Get the current exceptions. */
  80290. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  80291. +
  80292. + *flagp = temp & excepts & FE_ALL_EXCEPT;
  80293. +
  80294. + /* Success. */
  80295. + return 0;
  80296. +}
  80297. diff -Nur uClibc-0.9.33.2/libm/metag/fraiseexcpt.c uClibc-git/libm/metag/fraiseexcpt.c
  80298. --- uClibc-0.9.33.2/libm/metag/fraiseexcpt.c 1970-01-01 01:00:00.000000000 +0100
  80299. +++ uClibc-git/libm/metag/fraiseexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80300. @@ -0,0 +1,92 @@
  80301. +/* Raise given exceptions.
  80302. + Copyright (C) 2013 Imagination Technologies Ltd.
  80303. + This file is part of the GNU C Library.
  80304. +
  80305. + The GNU C Library is free software; you can redistribute it and/or
  80306. + modify it under the terms of the GNU Lesser General Public
  80307. + License as published by the Free Software Foundation; either
  80308. + version 2.1 of the License, or (at your option) any later version.
  80309. +
  80310. + The GNU C Library is distributed in the hope that it will be useful,
  80311. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80312. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80313. + Lesser General Public License for more details.
  80314. +
  80315. + You should have received a copy of the GNU Lesser General Public
  80316. + License along with the GNU C Library; if not, write to the Free
  80317. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80318. + 02111-1307 USA. */
  80319. +
  80320. +#include <fenv.h>
  80321. +#include <math.h>
  80322. +
  80323. +libm_hidden_proto(feraiseexcept)
  80324. +
  80325. +int
  80326. +feraiseexcept (int excepts)
  80327. +{
  80328. + /* Raise exceptions represented by EXPECTS. But we must raise only
  80329. + one signal at a time. It is important that if the overflow/underflow
  80330. + exception and the inexact exception are given at the same time,
  80331. + the overflow/underflow exception follows the inexact exception. */
  80332. +
  80333. + /* First: invalid exception. */
  80334. + if ((FE_INVALID & excepts) != 0)
  80335. + {
  80336. + /* Reciprocal square root of a negative number is invalid. */
  80337. + __asm__ volatile(
  80338. + "F MOV FX.0,#0xc000 ! -2\n"
  80339. + "F RSQ FX.1,FX.0\n"
  80340. + );
  80341. + }
  80342. +
  80343. + /* Next: division by zero. */
  80344. + if ((FE_DIVBYZERO & excepts) != 0)
  80345. + {
  80346. + __asm__ volatile(
  80347. + "F MOV FX.0,#0\n"
  80348. + "F RCP FX.1,FX.0\n"
  80349. + );
  80350. + }
  80351. +
  80352. + /* Next: overflow. */
  80353. + if ((FE_OVERFLOW & excepts) != 0)
  80354. + {
  80355. + /* Adding a large number in single precision can cause overflow. */
  80356. + __asm__ volatile(
  80357. + " MOVT D0.0,#0x7f7f\n"
  80358. + " ADD D0.0,D0.0,#0xffff\n"
  80359. + "F MOV FX.0,D0.0\n"
  80360. + "F ADD FX.1,FX.0,FX.0\n"
  80361. + );
  80362. + }
  80363. +
  80364. + /* Next: underflow. */
  80365. + if ((FE_UNDERFLOW & excepts) != 0)
  80366. + {
  80367. + /* Multiplying a small value by 0.5 will cause an underflow. */
  80368. + __asm__ volatile(
  80369. + " MOV D0.0,#1\n"
  80370. + "F MOV FX.0,D0.0\n"
  80371. + " MOVT D0.0,#0x3f00\n"
  80372. + "F MOV FX.1,D0.0\n"
  80373. + "F MUL FX.2,FX.1,FX.0\n"
  80374. + );
  80375. + }
  80376. +
  80377. + /* Last: inexact. */
  80378. + if ((FE_INEXACT & excepts) != 0)
  80379. + {
  80380. + /* Converting a small single precision value to half precision
  80381. + can cause an inexact exception. */
  80382. + __asm__ volatile(
  80383. + " MOV D0.0,#0x0001\n"
  80384. + "F MOV FX.0,D0.0\n"
  80385. + "F FTOH FX.1,FX.0\n"
  80386. + );
  80387. + }
  80388. +
  80389. + /* Success. */
  80390. + return 0;
  80391. +}
  80392. +libm_hidden_def(feraiseexcept)
  80393. diff -Nur uClibc-0.9.33.2/libm/metag/fsetexcptflg.c uClibc-git/libm/metag/fsetexcptflg.c
  80394. --- uClibc-0.9.33.2/libm/metag/fsetexcptflg.c 1970-01-01 01:00:00.000000000 +0100
  80395. +++ uClibc-git/libm/metag/fsetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80396. @@ -0,0 +1,44 @@
  80397. +/* Set floating-point environment exception handling.
  80398. + Copyright (C) 2013 Imagination Technologies Ltd.
  80399. + This file is part of the GNU C Library.
  80400. +
  80401. + The GNU C Library is free software; you can redistribute it and/or
  80402. + modify it under the terms of the GNU Lesser General Public
  80403. + License as published by the Free Software Foundation; either
  80404. + version 2.1 of the License, or (at your option) any later version.
  80405. +
  80406. + The GNU C Library is distributed in the hope that it will be useful,
  80407. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80408. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80409. + Lesser General Public License for more details.
  80410. +
  80411. + You should have received a copy of the GNU Lesser General Public
  80412. + License along with the GNU C Library; if not, write to the Free
  80413. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80414. + 02111-1307 USA. */
  80415. +
  80416. +#include <fenv.h>
  80417. +#include <math.h>
  80418. +#include <unistd.h>
  80419. +
  80420. +#include "internal.h"
  80421. +
  80422. +int
  80423. +fesetexceptflag (const fexcept_t *flagp, int excepts)
  80424. +{
  80425. + unsigned int temp;
  80426. +
  80427. + /* Get the current exceptions. */
  80428. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  80429. +
  80430. + excepts &= FE_ALL_EXCEPT;
  80431. + excepts <<= 16;
  80432. +
  80433. + temp &= ~excepts;
  80434. + temp |= *flagp & excepts;
  80435. +
  80436. + metag_set_fpu_flags(temp);
  80437. +
  80438. + /* Success. */
  80439. + return 0;
  80440. +}
  80441. diff -Nur uClibc-0.9.33.2/libm/metag/ftestexcept.c uClibc-git/libm/metag/ftestexcept.c
  80442. --- uClibc-0.9.33.2/libm/metag/ftestexcept.c 1970-01-01 01:00:00.000000000 +0100
  80443. +++ uClibc-git/libm/metag/ftestexcept.c 2014-02-03 12:32:56.000000000 +0100
  80444. @@ -0,0 +1,32 @@
  80445. +/* Test exception in current environment.
  80446. + Copyright (C) 2013 Imagination Technologies Ltd.
  80447. + This file is part of the GNU C Library.
  80448. +
  80449. + The GNU C Library is free software; you can redistribute it and/or
  80450. + modify it under the terms of the GNU Lesser General Public
  80451. + License as published by the Free Software Foundation; either
  80452. + version 2.1 of the License, or (at your option) any later version.
  80453. +
  80454. + The GNU C Library is distributed in the hope that it will be useful,
  80455. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  80456. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  80457. + Lesser General Public License for more details.
  80458. +
  80459. + You should have received a copy of the GNU Lesser General Public
  80460. + License along with the GNU C Library; if not, write to the Free
  80461. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80462. + 02111-1307 USA. */
  80463. +
  80464. +#include <fenv.h>
  80465. +#include <unistd.h>
  80466. +
  80467. +int
  80468. +fetestexcept (int excepts)
  80469. +{
  80470. + unsigned int temp;
  80471. +
  80472. + /* Get the current exceptions. */
  80473. + __asm__ ("MOV %0,TXDEFR" : "=r" (temp));
  80474. +
  80475. + return (temp >> 16) & excepts & FE_ALL_EXCEPT;
  80476. +}
  80477. diff -Nur uClibc-0.9.33.2/libm/metag/internal.h uClibc-git/libm/metag/internal.h
  80478. --- uClibc-0.9.33.2/libm/metag/internal.h 1970-01-01 01:00:00.000000000 +0100
  80479. +++ uClibc-git/libm/metag/internal.h 2014-02-03 12:32:56.000000000 +0100
  80480. @@ -0,0 +1,7 @@
  80481. +/*
  80482. + * Copyright (C) 2013 Imagination Technologies Ltd.
  80483. + *
  80484. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  80485. + */
  80486. +
  80487. +void metag_set_fpu_flags(unsigned int flags);
  80488. diff -Nur uClibc-0.9.33.2/libm/metag/Makefile.arch uClibc-git/libm/metag/Makefile.arch
  80489. --- uClibc-0.9.33.2/libm/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  80490. +++ uClibc-git/libm/metag/Makefile.arch 2014-02-03 12:32:56.000000000 +0100
  80491. @@ -0,0 +1,23 @@
  80492. +# Makefile for uClibc
  80493. +#
  80494. +# Copyright (c) 2013 Imagination Technologies Ltd.
  80495. +#
  80496. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  80497. +#
  80498. +
  80499. +ifeq ($(UCLIBC_HAS_FENV),y)
  80500. +ifeq ($(CONFIG_META_2_1),y)
  80501. +libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
  80502. +libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
  80503. +CFLAGS-libm += -Wa,-mfpu=metac21
  80504. +endif
  80505. +endif
  80506. +
  80507. +libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
  80508. +
  80509. +ifeq ($(DOPIC),y)
  80510. +libm-a-y+=$(libm_ARCH_OBJS:.o=.os)
  80511. +else
  80512. +libm-a-y+=$(libm_ARCH_OBJS)
  80513. +endif
  80514. +libm-so-y+=$(libm_ARCH_OBJS:.o=.os)
  80515. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fclrexcpt.c uClibc-git/libm/powerpc/e500/fpu/fclrexcpt.c
  80516. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fclrexcpt.c 2012-05-15 09:20:09.000000000 +0200
  80517. +++ uClibc-git/libm/powerpc/e500/fpu/fclrexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80518. @@ -13,9 +13,8 @@
  80519. Lesser General Public License for more details.
  80520. You should have received a copy of the GNU Lesser General Public
  80521. - License along with the GNU C Library; if not, write to the Free
  80522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80523. - 02111-1307 USA. */
  80524. + License along with the GNU C Library; if not, see
  80525. + <http://www.gnu.org/licenses/>. */
  80526. #include "fenv_libc.h"
  80527. #undef feclearexcept
  80528. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fedisblxcpt.c uClibc-git/libm/powerpc/e500/fpu/fedisblxcpt.c
  80529. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fedisblxcpt.c 2012-05-15 09:20:09.000000000 +0200
  80530. +++ uClibc-git/libm/powerpc/e500/fpu/fedisblxcpt.c 2014-02-03 12:32:56.000000000 +0100
  80531. @@ -14,9 +14,8 @@
  80532. Lesser General Public License for more details.
  80533. You should have received a copy of the GNU Lesser General Public
  80534. - License along with the GNU C Library; if not, write to the Free
  80535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80536. - 02111-1307 USA. */
  80537. + License along with the GNU C Library; if not, see
  80538. + <http://www.gnu.org/licenses/>. */
  80539. #include "fenv_libc.h"
  80540. #include <syscall.h>
  80541. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/feenablxcpt.c uClibc-git/libm/powerpc/e500/fpu/feenablxcpt.c
  80542. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/feenablxcpt.c 2012-05-15 09:20:09.000000000 +0200
  80543. +++ uClibc-git/libm/powerpc/e500/fpu/feenablxcpt.c 2014-02-03 12:32:56.000000000 +0100
  80544. @@ -14,9 +14,8 @@
  80545. Lesser General Public License for more details.
  80546. You should have received a copy of the GNU Lesser General Public
  80547. - License along with the GNU C Library; if not, write to the Free
  80548. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80549. - 02111-1307 USA. */
  80550. + License along with the GNU C Library; if not, see
  80551. + <http://www.gnu.org/licenses/>. */
  80552. #include "fenv_libc.h"
  80553. #include <syscall.h>
  80554. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetenv.c uClibc-git/libm/powerpc/e500/fpu/fegetenv.c
  80555. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetenv.c 2012-05-15 09:20:09.000000000 +0200
  80556. +++ uClibc-git/libm/powerpc/e500/fpu/fegetenv.c 2014-02-03 12:32:56.000000000 +0100
  80557. @@ -14,9 +14,8 @@
  80558. Lesser General Public License for more details.
  80559. You should have received a copy of the GNU Lesser General Public
  80560. - License along with the GNU C Library; if not, write to the Free
  80561. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80562. - 02111-1307 USA. */
  80563. + License along with the GNU C Library; if not, see
  80564. + <http://www.gnu.org/licenses/>. */
  80565. #include "fenv_libc.h"
  80566. #include <syscall.h>
  80567. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetexcept.c uClibc-git/libm/powerpc/e500/fpu/fegetexcept.c
  80568. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetexcept.c 2012-05-15 09:20:09.000000000 +0200
  80569. +++ uClibc-git/libm/powerpc/e500/fpu/fegetexcept.c 2014-02-03 12:32:56.000000000 +0100
  80570. @@ -14,9 +14,8 @@
  80571. Lesser General Public License for more details.
  80572. You should have received a copy of the GNU Lesser General Public
  80573. - License along with the GNU C Library; if not, write to the Free
  80574. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80575. - 02111-1307 USA. */
  80576. + License along with the GNU C Library; if not, see
  80577. + <http://www.gnu.org/licenses/>. */
  80578. #include "fenv_libc.h"
  80579. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetround.c uClibc-git/libm/powerpc/e500/fpu/fegetround.c
  80580. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fegetround.c 2012-05-15 09:20:09.000000000 +0200
  80581. +++ uClibc-git/libm/powerpc/e500/fpu/fegetround.c 2014-02-03 12:32:56.000000000 +0100
  80582. @@ -14,9 +14,8 @@
  80583. Lesser General Public License for more details.
  80584. You should have received a copy of the GNU Lesser General Public
  80585. - License along with the GNU C Library; if not, write to the Free
  80586. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80587. - 02111-1307 USA. */
  80588. + License along with the GNU C Library; if not, see
  80589. + <http://www.gnu.org/licenses/>. */
  80590. #include "fenv_libc.h"
  80591. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/feholdexcpt.c uClibc-git/libm/powerpc/e500/fpu/feholdexcpt.c
  80592. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/feholdexcpt.c 2012-05-15 09:20:09.000000000 +0200
  80593. +++ uClibc-git/libm/powerpc/e500/fpu/feholdexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80594. @@ -14,9 +14,8 @@
  80595. Lesser General Public License for more details.
  80596. You should have received a copy of the GNU Lesser General Public
  80597. - License along with the GNU C Library; if not, write to the Free
  80598. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80599. - 02111-1307 USA. */
  80600. + License along with the GNU C Library; if not, see
  80601. + <http://www.gnu.org/licenses/>. */
  80602. #include "fenv_libc.h"
  80603. #include <syscall.h>
  80604. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fe_nomask.c uClibc-git/libm/powerpc/e500/fpu/fe_nomask.c
  80605. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fe_nomask.c 2012-05-15 09:20:09.000000000 +0200
  80606. +++ uClibc-git/libm/powerpc/e500/fpu/fe_nomask.c 2014-02-03 12:32:56.000000000 +0100
  80607. @@ -13,9 +13,8 @@
  80608. Lesser General Public License for more details.
  80609. You should have received a copy of the GNU Lesser General Public
  80610. - License along with the GNU C Library; if not, write to the Free
  80611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80612. - 02111-1307 USA. */
  80613. + License along with the GNU C Library; if not, see
  80614. + <http://www.gnu.org/licenses/>. */
  80615. #include <fenv.h>
  80616. #include <errno.h>
  80617. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_const.c uClibc-git/libm/powerpc/e500/fpu/fenv_const.c
  80618. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_const.c 2012-05-15 09:20:09.000000000 +0200
  80619. +++ uClibc-git/libm/powerpc/e500/fpu/fenv_const.c 2014-02-03 12:32:56.000000000 +0100
  80620. @@ -14,9 +14,8 @@
  80621. Lesser General Public License for more details.
  80622. You should have received a copy of the GNU Lesser General Public
  80623. - License along with the GNU C Library; if not, write to the Free
  80624. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80625. - 02111-1307 USA. */
  80626. + License along with the GNU C Library; if not, see
  80627. + <http://www.gnu.org/licenses/>. */
  80628. /* If the default argument is used we use this value. */
  80629. const unsigned long long __fe_dfl_env __attribute__ ((aligned (8))) =
  80630. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_libc.h uClibc-git/libm/powerpc/e500/fpu/fenv_libc.h
  80631. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fenv_libc.h 2012-05-15 09:20:09.000000000 +0200
  80632. +++ uClibc-git/libm/powerpc/e500/fpu/fenv_libc.h 2014-02-03 12:32:56.000000000 +0100
  80633. @@ -14,9 +14,8 @@
  80634. Lesser General Public License for more details.
  80635. You should have received a copy of the GNU Lesser General Public
  80636. - License along with the GNU C Library; if not, write to the Free
  80637. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80638. - 02111-1307 USA. */
  80639. + License along with the GNU C Library; if not, see
  80640. + <http://www.gnu.org/licenses/>. */
  80641. #ifndef _FENV_LIBC_H
  80642. #define _FENV_LIBC_H 1
  80643. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetenv.c uClibc-git/libm/powerpc/e500/fpu/fesetenv.c
  80644. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetenv.c 2012-05-15 09:20:09.000000000 +0200
  80645. +++ uClibc-git/libm/powerpc/e500/fpu/fesetenv.c 2014-02-03 12:32:56.000000000 +0100
  80646. @@ -13,9 +13,8 @@
  80647. Lesser General Public License for more details.
  80648. You should have received a copy of the GNU Lesser General Public
  80649. - License along with the GNU C Library; if not, write to the Free
  80650. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80651. - 02111-1307 USA. */
  80652. + License along with the GNU C Library; if not, see
  80653. + <http://www.gnu.org/licenses/>. */
  80654. #include "fenv_libc.h"
  80655. #include <syscall.h>
  80656. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetround.c uClibc-git/libm/powerpc/e500/fpu/fesetround.c
  80657. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fesetround.c 2012-05-15 09:20:09.000000000 +0200
  80658. +++ uClibc-git/libm/powerpc/e500/fpu/fesetround.c 2014-02-03 12:32:56.000000000 +0100
  80659. @@ -14,9 +14,8 @@
  80660. Lesser General Public License for more details.
  80661. You should have received a copy of the GNU Lesser General Public
  80662. - License along with the GNU C Library; if not, write to the Free
  80663. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80664. - 02111-1307 USA. */
  80665. + License along with the GNU C Library; if not, see
  80666. + <http://www.gnu.org/licenses/>. */
  80667. #include "fenv_libc.h"
  80668. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/feupdateenv.c uClibc-git/libm/powerpc/e500/fpu/feupdateenv.c
  80669. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/feupdateenv.c 2012-05-15 09:20:09.000000000 +0200
  80670. +++ uClibc-git/libm/powerpc/e500/fpu/feupdateenv.c 2014-02-03 12:32:56.000000000 +0100
  80671. @@ -14,9 +14,8 @@
  80672. Lesser General Public License for more details.
  80673. You should have received a copy of the GNU Lesser General Public
  80674. - License along with the GNU C Library; if not, write to the Free
  80675. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80676. - 02111-1307 USA. */
  80677. + License along with the GNU C Library; if not, see
  80678. + <http://www.gnu.org/licenses/>. */
  80679. #include "fenv_libc.h"
  80680. #include <syscall.h>
  80681. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fgetexcptflg.c uClibc-git/libm/powerpc/e500/fpu/fgetexcptflg.c
  80682. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fgetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  80683. +++ uClibc-git/libm/powerpc/e500/fpu/fgetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80684. @@ -14,9 +14,8 @@
  80685. Lesser General Public License for more details.
  80686. You should have received a copy of the GNU Lesser General Public
  80687. - License along with the GNU C Library; if not, write to the Free
  80688. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80689. - 02111-1307 USA. */
  80690. + License along with the GNU C Library; if not, see
  80691. + <http://www.gnu.org/licenses/>. */
  80692. #include "fenv_libc.h"
  80693. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fraiseexcpt.c uClibc-git/libm/powerpc/e500/fpu/fraiseexcpt.c
  80694. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fraiseexcpt.c 2012-05-15 09:20:09.000000000 +0200
  80695. +++ uClibc-git/libm/powerpc/e500/fpu/fraiseexcpt.c 2014-02-03 12:32:56.000000000 +0100
  80696. @@ -14,9 +14,8 @@
  80697. Lesser General Public License for more details.
  80698. You should have received a copy of the GNU Lesser General Public
  80699. - License along with the GNU C Library; if not, write to the Free
  80700. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80701. - 02111-1307 USA. */
  80702. + License along with the GNU C Library; if not, see
  80703. + <http://www.gnu.org/licenses/>. */
  80704. #include "fenv_libc.h"
  80705. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/fsetexcptflg.c uClibc-git/libm/powerpc/e500/fpu/fsetexcptflg.c
  80706. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/fsetexcptflg.c 2012-05-15 09:20:09.000000000 +0200
  80707. +++ uClibc-git/libm/powerpc/e500/fpu/fsetexcptflg.c 2014-02-03 12:32:56.000000000 +0100
  80708. @@ -13,9 +13,8 @@
  80709. Lesser General Public License for more details.
  80710. You should have received a copy of the GNU Lesser General Public
  80711. - License along with the GNU C Library; if not, write to the Free
  80712. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80713. - 02111-1307 USA. */
  80714. + License along with the GNU C Library; if not, see
  80715. + <http://www.gnu.org/licenses/>. */
  80716. #include "fenv_libc.h"
  80717. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/fpu/ftestexcept.c uClibc-git/libm/powerpc/e500/fpu/ftestexcept.c
  80718. --- uClibc-0.9.33.2/libm/powerpc/e500/fpu/ftestexcept.c 2012-05-15 09:20:09.000000000 +0200
  80719. +++ uClibc-git/libm/powerpc/e500/fpu/ftestexcept.c 2014-02-03 12:32:56.000000000 +0100
  80720. @@ -14,9 +14,8 @@
  80721. Lesser General Public License for more details.
  80722. You should have received a copy of the GNU Lesser General Public
  80723. - License along with the GNU C Library; if not, write to the Free
  80724. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80725. - 02111-1307 USA. */
  80726. + License along with the GNU C Library; if not, see
  80727. + <http://www.gnu.org/licenses/>. */
  80728. #include "fenv_libc.h"
  80729. diff -Nur uClibc-0.9.33.2/libm/powerpc/e500/spe-raise.c uClibc-git/libm/powerpc/e500/spe-raise.c
  80730. --- uClibc-0.9.33.2/libm/powerpc/e500/spe-raise.c 2012-05-15 09:20:09.000000000 +0200
  80731. +++ uClibc-git/libm/powerpc/e500/spe-raise.c 2014-02-03 12:32:56.000000000 +0100
  80732. @@ -13,9 +13,8 @@
  80733. Lesser General Public License for more details.
  80734. You should have received a copy of the GNU Lesser General Public
  80735. - License along with the GNU C Library; if not, write to the Free
  80736. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80737. - 02111-1307 USA. */
  80738. + License along with the GNU C Library; if not, see
  80739. + <http://www.gnu.org/licenses/>. */
  80740. #include "fpu/fenv_libc.h"
  80741. diff -Nur uClibc-0.9.33.2/libm/s_ceil.c uClibc-git/libm/s_ceil.c
  80742. --- uClibc-0.9.33.2/libm/s_ceil.c 2012-05-15 09:20:09.000000000 +0200
  80743. +++ uClibc-git/libm/s_ceil.c 2014-02-03 12:32:56.000000000 +0100
  80744. @@ -28,35 +28,35 @@
  80745. double ceil(double x)
  80746. {
  80747. - int32_t i0,i1,j0;
  80748. + int32_t i0,i1,_j0;
  80749. u_int32_t i,j;
  80750. EXTRACT_WORDS(i0,i1,x);
  80751. - j0 = ((i0>>20)&0x7ff)-0x3ff;
  80752. - if(j0<20) {
  80753. - if(j0<0) { /* raise inexact if x != 0 */
  80754. + _j0 = ((i0>>20)&0x7ff)-0x3ff;
  80755. + if(_j0<20) {
  80756. + if(_j0<0) { /* raise inexact if x != 0 */
  80757. if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
  80758. if(i0<0) {i0=0x80000000;i1=0;}
  80759. else if((i0|i1)!=0) { i0=0x3ff00000;i1=0;}
  80760. }
  80761. } else {
  80762. - i = (0x000fffff)>>j0;
  80763. + i = (0x000fffff)>>_j0;
  80764. if(((i0&i)|i1)==0) return x; /* x is integral */
  80765. if(huge+x>0.0) { /* raise inexact flag */
  80766. - if(i0>0) i0 += (0x00100000)>>j0;
  80767. + if(i0>0) i0 += (0x00100000)>>_j0;
  80768. i0 &= (~i); i1=0;
  80769. }
  80770. }
  80771. - } else if (j0>51) {
  80772. - if(j0==0x400) return x+x; /* inf or NaN */
  80773. + } else if (_j0>51) {
  80774. + if(_j0==0x400) return x+x; /* inf or NaN */
  80775. else return x; /* x is integral */
  80776. } else {
  80777. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  80778. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  80779. if((i1&i)==0) return x; /* x is integral */
  80780. if(huge+x>0.0) { /* raise inexact flag */
  80781. if(i0>0) {
  80782. - if(j0==20) i0+=1;
  80783. + if(_j0==20) i0+=1;
  80784. else {
  80785. - j = i1 + (1<<(52-j0));
  80786. + j = i1 + (1<<(52-_j0));
  80787. if(j<i1) i0+=1; /* got a carry */
  80788. i1 = j;
  80789. }
  80790. diff -Nur uClibc-0.9.33.2/libm/s_floor.c uClibc-git/libm/s_floor.c
  80791. --- uClibc-0.9.33.2/libm/s_floor.c 2012-05-15 09:20:09.000000000 +0200
  80792. +++ uClibc-git/libm/s_floor.c 2014-02-03 12:32:56.000000000 +0100
  80793. @@ -28,36 +28,36 @@
  80794. double floor(double x)
  80795. {
  80796. - int32_t i0,i1,j0;
  80797. + int32_t i0,i1,_j0;
  80798. u_int32_t i,j;
  80799. EXTRACT_WORDS(i0,i1,x);
  80800. - j0 = ((i0>>20)&0x7ff)-0x3ff;
  80801. - if(j0<20) {
  80802. - if(j0<0) { /* raise inexact if x != 0 */
  80803. + _j0 = ((i0>>20)&0x7ff)-0x3ff;
  80804. + if(_j0<20) {
  80805. + if(_j0<0) { /* raise inexact if x != 0 */
  80806. if(huge+x>0.0) {/* return 0*sign(x) if |x|<1 */
  80807. if(i0>=0) {i0=i1=0;}
  80808. else if(((i0&0x7fffffff)|i1)!=0)
  80809. { i0=0xbff00000;i1=0;}
  80810. }
  80811. } else {
  80812. - i = (0x000fffff)>>j0;
  80813. + i = (0x000fffff)>>_j0;
  80814. if(((i0&i)|i1)==0) return x; /* x is integral */
  80815. if(huge+x>0.0) { /* raise inexact flag */
  80816. - if(i0<0) i0 += (0x00100000)>>j0;
  80817. + if(i0<0) i0 += (0x00100000)>>_j0;
  80818. i0 &= (~i); i1=0;
  80819. }
  80820. }
  80821. - } else if (j0>51) {
  80822. - if(j0==0x400) return x+x; /* inf or NaN */
  80823. + } else if (_j0>51) {
  80824. + if(_j0==0x400) return x+x; /* inf or NaN */
  80825. else return x; /* x is integral */
  80826. } else {
  80827. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  80828. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  80829. if((i1&i)==0) return x; /* x is integral */
  80830. if(huge+x>0.0) { /* raise inexact flag */
  80831. if(i0<0) {
  80832. - if(j0==20) i0+=1;
  80833. + if(_j0==20) i0+=1;
  80834. else {
  80835. - j = i1+(1<<(52-j0));
  80836. + j = i1+(1<<(52-_j0));
  80837. if(j<i1) i0 +=1 ; /* got a carry */
  80838. i1=j;
  80839. }
  80840. diff -Nur uClibc-0.9.33.2/libm/s_fma.c uClibc-git/libm/s_fma.c
  80841. --- uClibc-0.9.33.2/libm/s_fma.c 2012-05-15 09:20:09.000000000 +0200
  80842. +++ uClibc-git/libm/s_fma.c 2014-02-03 12:32:56.000000000 +0100
  80843. @@ -14,9 +14,8 @@
  80844. Lesser General Public License for more details.
  80845. You should have received a copy of the GNU Lesser General Public
  80846. - License along with the GNU C Library; if not, write to the Free
  80847. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80848. - 02111-1307 USA. */
  80849. + License along with the GNU C Library; if not, see
  80850. + <http://www.gnu.org/licenses/>. */
  80851. #include <math.h>
  80852. diff -Nur uClibc-0.9.33.2/libm/s_fpclassify.c uClibc-git/libm/s_fpclassify.c
  80853. --- uClibc-0.9.33.2/libm/s_fpclassify.c 2012-05-15 09:20:09.000000000 +0200
  80854. +++ uClibc-git/libm/s_fpclassify.c 2014-02-03 12:32:56.000000000 +0100
  80855. @@ -14,9 +14,8 @@
  80856. Lesser General Public License for more details.
  80857. You should have received a copy of the GNU Lesser General Public
  80858. - License along with the GNU C Library; if not, write to the Free
  80859. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80860. - 02111-1307 USA. */
  80861. + License along with the GNU C Library; if not, see
  80862. + <http://www.gnu.org/licenses/>. */
  80863. #include <math.h>
  80864. diff -Nur uClibc-0.9.33.2/libm/s_fpclassifyf.c uClibc-git/libm/s_fpclassifyf.c
  80865. --- uClibc-0.9.33.2/libm/s_fpclassifyf.c 2012-05-15 09:20:09.000000000 +0200
  80866. +++ uClibc-git/libm/s_fpclassifyf.c 2014-02-03 12:32:56.000000000 +0100
  80867. @@ -14,9 +14,8 @@
  80868. Lesser General Public License for more details.
  80869. You should have received a copy of the GNU Lesser General Public
  80870. - License along with the GNU C Library; if not, write to the Free
  80871. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80872. - 02111-1307 USA. */
  80873. + License along with the GNU C Library; if not, see
  80874. + <http://www.gnu.org/licenses/>. */
  80875. #include <math.h>
  80876. #include "math_private.h"
  80877. diff -Nur uClibc-0.9.33.2/libm/s_llrint.c uClibc-git/libm/s_llrint.c
  80878. --- uClibc-0.9.33.2/libm/s_llrint.c 2012-05-15 09:20:09.000000000 +0200
  80879. +++ uClibc-git/libm/s_llrint.c 2014-02-03 12:32:56.000000000 +0100
  80880. @@ -15,9 +15,8 @@
  80881. Lesser General Public License for more details.
  80882. You should have received a copy of the GNU Lesser General Public
  80883. - License along with the GNU C Library; if not, write to the Free
  80884. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80885. - 02111-1307 USA. */
  80886. + License along with the GNU C Library; if not, see
  80887. + <http://www.gnu.org/licenses/>. */
  80888. #include <features.h>
  80889. /* Prevent math.h from defining a colliding inline */
  80890. @@ -34,7 +33,7 @@
  80891. long long int
  80892. llrint (double x)
  80893. {
  80894. - int32_t j0;
  80895. + int32_t _j0;
  80896. u_int32_t i1, i0;
  80897. long long int result;
  80898. volatile double w;
  80899. @@ -42,39 +41,39 @@
  80900. int sx;
  80901. EXTRACT_WORDS (i0, i1, x);
  80902. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80903. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80904. sx = i0 >> 31;
  80905. i0 &= 0xfffff;
  80906. i0 |= 0x100000;
  80907. - if (j0 < 20)
  80908. + if (_j0 < 20)
  80909. {
  80910. w = two52[sx] + x;
  80911. t = w - two52[sx];
  80912. EXTRACT_WORDS (i0, i1, t);
  80913. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80914. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80915. i0 &= 0xfffff;
  80916. i0 |= 0x100000;
  80917. - result = (j0 < 0 ? 0 : i0 >> (20 - j0));
  80918. + result = (_j0 < 0 ? 0 : i0 >> (20 - _j0));
  80919. }
  80920. - else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  80921. + else if (_j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  80922. {
  80923. - if (j0 >= 52)
  80924. - result = (((long long int) i0 << 32) | i1) << (j0 - 52);
  80925. + if (_j0 >= 52)
  80926. + result = (((long long int) i0 << 32) | i1) << (_j0 - 52);
  80927. else
  80928. {
  80929. w = two52[sx] + x;
  80930. t = w - two52[sx];
  80931. EXTRACT_WORDS (i0, i1, t);
  80932. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80933. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80934. i0 &= 0xfffff;
  80935. i0 |= 0x100000;
  80936. - if (j0 == 20)
  80937. + if (_j0 == 20)
  80938. result = (long long int) i0;
  80939. else
  80940. - result = ((long long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
  80941. + result = ((long long int) i0 << (_j0 - 20)) | (i1 >> (52 - _j0));
  80942. }
  80943. }
  80944. else
  80945. diff -Nur uClibc-0.9.33.2/libm/s_llround.c uClibc-git/libm/s_llround.c
  80946. --- uClibc-0.9.33.2/libm/s_llround.c 2012-05-15 09:20:09.000000000 +0200
  80947. +++ uClibc-git/libm/s_llround.c 2014-02-03 12:32:56.000000000 +0100
  80948. @@ -14,9 +14,8 @@
  80949. Lesser General Public License for more details.
  80950. You should have received a copy of the GNU Lesser General Public
  80951. - License along with the GNU C Library; if not, write to the Free
  80952. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  80953. - 02111-1307 USA. */
  80954. + License along with the GNU C Library; if not, see
  80955. + <http://www.gnu.org/licenses/>. */
  80956. #include <math.h>
  80957. #include "math_private.h"
  80958. @@ -24,42 +23,42 @@
  80959. long long int
  80960. llround (double x)
  80961. {
  80962. - int32_t j0;
  80963. + int32_t _j0;
  80964. u_int32_t i1, i0;
  80965. long long int result;
  80966. int sign;
  80967. EXTRACT_WORDS (i0, i1, x);
  80968. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80969. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  80970. sign = (i0 & 0x80000000) != 0 ? -1 : 1;
  80971. i0 &= 0xfffff;
  80972. i0 |= 0x100000;
  80973. - if (j0 < 20)
  80974. + if (_j0 < 20)
  80975. {
  80976. - if (j0 < 0)
  80977. - return j0 < -1 ? 0 : sign;
  80978. + if (_j0 < 0)
  80979. + return _j0 < -1 ? 0 : sign;
  80980. else
  80981. {
  80982. - i0 += 0x80000 >> j0;
  80983. + i0 += 0x80000 >> _j0;
  80984. - result = i0 >> (20 - j0);
  80985. + result = i0 >> (20 - _j0);
  80986. }
  80987. }
  80988. - else if (j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  80989. + else if (_j0 < (int32_t) (8 * sizeof (long long int)) - 1)
  80990. {
  80991. - if (j0 >= 52)
  80992. - result = (((long long int) i0 << 32) | i1) << (j0 - 52);
  80993. + if (_j0 >= 52)
  80994. + result = (((long long int) i0 << 32) | i1) << (_j0 - 52);
  80995. else
  80996. {
  80997. - u_int32_t j = i1 + (0x80000000 >> (j0 - 20));
  80998. + u_int32_t j = i1 + (0x80000000 >> (_j0 - 20));
  80999. if (j < i1)
  81000. ++i0;
  81001. - if (j0 == 20)
  81002. + if (_j0 == 20)
  81003. result = (long long int) i0;
  81004. else
  81005. - result = ((long long int) i0 << (j0 - 20)) | (j >> (52 - j0));
  81006. + result = ((long long int) i0 << (_j0 - 20)) | (j >> (52 - _j0));
  81007. }
  81008. }
  81009. else
  81010. diff -Nur uClibc-0.9.33.2/libm/s_lrint.c uClibc-git/libm/s_lrint.c
  81011. --- uClibc-0.9.33.2/libm/s_lrint.c 2012-05-15 09:20:09.000000000 +0200
  81012. +++ uClibc-git/libm/s_lrint.c 2014-02-03 12:32:56.000000000 +0100
  81013. @@ -15,9 +15,8 @@
  81014. Lesser General Public License for more details.
  81015. You should have received a copy of the GNU Lesser General Public
  81016. - License along with the GNU C Library; if not, write to the Free
  81017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81018. - 02111-1307 USA. */
  81019. + License along with the GNU C Library; if not, see
  81020. + <http://www.gnu.org/licenses/>. */
  81021. #include <features.h>
  81022. /* Prevent math.h from defining a colliding inline */
  81023. @@ -35,7 +34,7 @@
  81024. long int
  81025. lrint (double x)
  81026. {
  81027. - int32_t j0;
  81028. + int32_t _j0;
  81029. u_int32_t i0,i1;
  81030. volatile double w;
  81031. double t;
  81032. @@ -43,44 +42,44 @@
  81033. int sx;
  81034. EXTRACT_WORDS (i0, i1, x);
  81035. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81036. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81037. sx = i0 >> 31;
  81038. i0 &= 0xfffff;
  81039. i0 |= 0x100000;
  81040. - if (j0 < 20)
  81041. + if (_j0 < 20)
  81042. {
  81043. - if (j0 < -1)
  81044. + if (_j0 < -1)
  81045. return 0;
  81046. else
  81047. {
  81048. w = two52[sx] + x;
  81049. t = w - two52[sx];
  81050. EXTRACT_WORDS (i0, i1, t);
  81051. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81052. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81053. i0 &= 0xfffff;
  81054. i0 |= 0x100000;
  81055. - result = i0 >> (20 - j0);
  81056. + result = i0 >> (20 - _j0);
  81057. }
  81058. }
  81059. - else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81060. + else if (_j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81061. {
  81062. - if (j0 >= 52)
  81063. - result = ((long int) i0 << (j0 - 20)) | (i1 << (j0 - 52));
  81064. + if (_j0 >= 52)
  81065. + result = ((long int) i0 << (_j0 - 20)) | (i1 << (_j0 - 52));
  81066. else
  81067. {
  81068. w = two52[sx] + x;
  81069. t = w - two52[sx];
  81070. EXTRACT_WORDS (i0, i1, t);
  81071. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81072. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81073. i0 &= 0xfffff;
  81074. i0 |= 0x100000;
  81075. - if (j0 == 20)
  81076. + if (_j0 == 20)
  81077. result = (long int) i0;
  81078. else
  81079. - result = ((long int) i0 << (j0 - 20)) | (i1 >> (52 - j0));
  81080. + result = ((long int) i0 << (_j0 - 20)) | (i1 >> (52 - _j0));
  81081. }
  81082. }
  81083. else
  81084. diff -Nur uClibc-0.9.33.2/libm/s_lround.c uClibc-git/libm/s_lround.c
  81085. --- uClibc-0.9.33.2/libm/s_lround.c 2012-05-15 09:20:09.000000000 +0200
  81086. +++ uClibc-git/libm/s_lround.c 2014-02-03 12:32:56.000000000 +0100
  81087. @@ -14,9 +14,8 @@
  81088. Lesser General Public License for more details.
  81089. You should have received a copy of the GNU Lesser General Public
  81090. - License along with the GNU C Library; if not, write to the Free
  81091. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81092. - 02111-1307 USA. */
  81093. + License along with the GNU C Library; if not, see
  81094. + <http://www.gnu.org/licenses/>. */
  81095. #include <math.h>
  81096. #include "math_private.h"
  81097. @@ -24,42 +23,42 @@
  81098. long int
  81099. lround (double x)
  81100. {
  81101. - int32_t j0;
  81102. + int32_t _j0;
  81103. u_int32_t i1, i0;
  81104. long int result;
  81105. int sign;
  81106. EXTRACT_WORDS (i0, i1, x);
  81107. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81108. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81109. sign = (i0 & 0x80000000) != 0 ? -1 : 1;
  81110. i0 &= 0xfffff;
  81111. i0 |= 0x100000;
  81112. - if (j0 < 20)
  81113. + if (_j0 < 20)
  81114. {
  81115. - if (j0 < 0)
  81116. - return j0 < -1 ? 0 : sign;
  81117. + if (_j0 < 0)
  81118. + return _j0 < -1 ? 0 : sign;
  81119. else
  81120. {
  81121. - i0 += 0x80000 >> j0;
  81122. + i0 += 0x80000 >> _j0;
  81123. - result = i0 >> (20 - j0);
  81124. + result = i0 >> (20 - _j0);
  81125. }
  81126. }
  81127. - else if (j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81128. + else if (_j0 < (int32_t) (8 * sizeof (long int)) - 1)
  81129. {
  81130. - if (j0 >= 52)
  81131. - result = ((long int) i0 << (j0 - 20)) | (i1 << (j0 - 52));
  81132. + if (_j0 >= 52)
  81133. + result = ((long int) i0 << (_j0 - 20)) | (i1 << (_j0 - 52));
  81134. else
  81135. {
  81136. - u_int32_t j = i1 + (0x80000000 >> (j0 - 20));
  81137. + u_int32_t j = i1 + (0x80000000 >> (_j0 - 20));
  81138. if (j < i1)
  81139. ++i0;
  81140. - if (j0 == 20)
  81141. + if (_j0 == 20)
  81142. result = (long int) i0;
  81143. else
  81144. - result = ((long int) i0 << (j0 - 20)) | (j >> (52 - j0));
  81145. + result = ((long int) i0 << (_j0 - 20)) | (j >> (52 - _j0));
  81146. }
  81147. }
  81148. else
  81149. diff -Nur uClibc-0.9.33.2/libm/s_modf.c uClibc-git/libm/s_modf.c
  81150. --- uClibc-0.9.33.2/libm/s_modf.c 2012-05-15 09:20:09.000000000 +0200
  81151. +++ uClibc-git/libm/s_modf.c 2014-02-03 12:32:56.000000000 +0100
  81152. @@ -26,16 +26,16 @@
  81153. double modf(double x, double *iptr)
  81154. {
  81155. - int32_t i0,i1,j0;
  81156. + int32_t i0,i1,_j0;
  81157. u_int32_t i;
  81158. EXTRACT_WORDS(i0,i1,x);
  81159. - j0 = ((i0>>20)&0x7ff)-0x3ff; /* exponent of x */
  81160. - if(j0<20) { /* integer part in high x */
  81161. - if(j0<0) { /* |x|<1 */
  81162. + _j0 = ((i0>>20)&0x7ff)-0x3ff; /* exponent of x */
  81163. + if(_j0<20) { /* integer part in high x */
  81164. + if(_j0<0) { /* |x|<1 */
  81165. INSERT_WORDS(*iptr,i0&0x80000000,0); /* *iptr = +-0 */
  81166. return x;
  81167. } else {
  81168. - i = (0x000fffff)>>j0;
  81169. + i = (0x000fffff)>>_j0;
  81170. if(((i0&i)|i1)==0) { /* x is integral */
  81171. *iptr = x;
  81172. INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */
  81173. @@ -45,15 +45,15 @@
  81174. return x - *iptr;
  81175. }
  81176. }
  81177. - } else if (j0>51) { /* no fraction part */
  81178. + } else if (_j0>51) { /* no fraction part */
  81179. *iptr = x*one;
  81180. /* We must handle NaNs separately. */
  81181. - if (j0 == 0x400 && ((i0 & 0xfffff) | i1))
  81182. + if (_j0 == 0x400 && ((i0 & 0xfffff) | i1))
  81183. return x*one;
  81184. INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */
  81185. return x;
  81186. } else { /* fraction part in low x */
  81187. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  81188. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  81189. if((i1&i)==0) { /* x is integral */
  81190. *iptr = x;
  81191. INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */
  81192. diff -Nur uClibc-0.9.33.2/libm/s_rint.c uClibc-git/libm/s_rint.c
  81193. --- uClibc-0.9.33.2/libm/s_rint.c 2012-05-15 09:20:09.000000000 +0200
  81194. +++ uClibc-git/libm/s_rint.c 2014-02-03 12:32:56.000000000 +0100
  81195. @@ -30,7 +30,7 @@
  81196. double rint(double x)
  81197. {
  81198. - int32_t i0, j0, sx;
  81199. + int32_t i0, _j0, sx;
  81200. u_int32_t i,i1;
  81201. double t;
  81202. /* We use w = x + 2^52; t = w - 2^52; trick to round x to integer.
  81203. @@ -43,11 +43,11 @@
  81204. EXTRACT_WORDS(i0,i1,x);
  81205. /* Unbiased exponent */
  81206. - j0 = ((((u_int32_t)i0) >> 20)&0x7ff)-0x3ff;
  81207. + _j0 = ((((u_int32_t)i0) >> 20)&0x7ff)-0x3ff;
  81208. - if (j0 > 51) {
  81209. + if (_j0 > 51) {
  81210. //Why bother? Just returning x works too
  81211. - //if (j0 == 0x400) /* inf or NaN */
  81212. + //if (_j0 == 0x400) /* inf or NaN */
  81213. // return x+x;
  81214. return x; /* x is integral */
  81215. }
  81216. @@ -55,8 +55,8 @@
  81217. /* Sign */
  81218. sx = ((u_int32_t)i0) >> 31;
  81219. - if (j0<20) {
  81220. - if (j0<0) { /* |x| < 1 */
  81221. + if (_j0<20) {
  81222. + if (_j0<0) { /* |x| < 1 */
  81223. if (((i0&0x7fffffff)|i1)==0) return x;
  81224. i1 |= (i0&0x0fffff);
  81225. i0 &= 0xfffe0000;
  81226. @@ -68,19 +68,19 @@
  81227. SET_HIGH_WORD(t,(i0&0x7fffffff)|(sx<<31));
  81228. return t;
  81229. } else {
  81230. - i = (0x000fffff)>>j0;
  81231. + i = (0x000fffff)>>_j0;
  81232. if (((i0&i)|i1)==0) return x; /* x is integral */
  81233. i>>=1;
  81234. if (((i0&i)|i1)!=0) {
  81235. - if (j0==19) i1 = 0x40000000;
  81236. - else i0 = (i0&(~i))|((0x20000)>>j0);
  81237. + if (_j0==19) i1 = 0x40000000;
  81238. + else i0 = (i0&(~i))|((0x20000)>>_j0);
  81239. }
  81240. }
  81241. } else {
  81242. - i = ((u_int32_t)(0xffffffff))>>(j0-20);
  81243. + i = ((u_int32_t)(0xffffffff))>>(_j0-20);
  81244. if ((i1&i)==0) return x; /* x is integral */
  81245. i>>=1;
  81246. - if ((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(j0-20));
  81247. + if ((i1&i)!=0) i1 = (i1&(~i))|((0x40000000)>>(_j0-20));
  81248. }
  81249. INSERT_WORDS(x,i0,i1);
  81250. w = TWO52[sx]+x;
  81251. diff -Nur uClibc-0.9.33.2/libm/s_round.c uClibc-git/libm/s_round.c
  81252. --- uClibc-0.9.33.2/libm/s_round.c 2012-05-15 09:20:09.000000000 +0200
  81253. +++ uClibc-git/libm/s_round.c 2014-02-03 12:32:56.000000000 +0100
  81254. @@ -14,9 +14,8 @@
  81255. Lesser General Public License for more details.
  81256. You should have received a copy of the GNU Lesser General Public
  81257. - License along with the GNU C Library; if not, write to the Free
  81258. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81259. - 02111-1307 USA. */
  81260. + License along with the GNU C Library; if not, see
  81261. + <http://www.gnu.org/licenses/>. */
  81262. #include <math.h>
  81263. #include "math_private.h"
  81264. @@ -26,41 +25,41 @@
  81265. double
  81266. round (double x)
  81267. {
  81268. - int32_t i0, j0;
  81269. + int32_t i0, _j0;
  81270. u_int32_t i1;
  81271. EXTRACT_WORDS (i0, i1, x);
  81272. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81273. - if (j0 < 20)
  81274. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81275. + if (_j0 < 20)
  81276. {
  81277. - if (j0 < 0)
  81278. + if (_j0 < 0)
  81279. {
  81280. if (huge + x > 0.0)
  81281. {
  81282. i0 &= 0x80000000;
  81283. - if (j0 == -1)
  81284. + if (_j0 == -1)
  81285. i0 |= 0x3ff00000;
  81286. i1 = 0;
  81287. }
  81288. }
  81289. else
  81290. {
  81291. - u_int32_t i = 0x000fffff >> j0;
  81292. + u_int32_t i = 0x000fffff >> _j0;
  81293. if (((i0 & i) | i1) == 0)
  81294. /* X is integral. */
  81295. return x;
  81296. if (huge + x > 0.0)
  81297. {
  81298. /* Raise inexact if x != 0. */
  81299. - i0 += 0x00080000 >> j0;
  81300. + i0 += 0x00080000 >> _j0;
  81301. i0 &= ~i;
  81302. i1 = 0;
  81303. }
  81304. }
  81305. }
  81306. - else if (j0 > 51)
  81307. + else if (_j0 > 51)
  81308. {
  81309. - if (j0 == 0x400)
  81310. + if (_j0 == 0x400)
  81311. /* Inf or NaN. */
  81312. return x + x;
  81313. else
  81314. @@ -68,7 +67,7 @@
  81315. }
  81316. else
  81317. {
  81318. - u_int32_t i = 0xffffffff >> (j0 - 20);
  81319. + u_int32_t i = 0xffffffff >> (_j0 - 20);
  81320. if ((i1 & i) == 0)
  81321. /* X is integral. */
  81322. return x;
  81323. @@ -76,7 +75,7 @@
  81324. if (huge + x > 0.0)
  81325. {
  81326. /* Raise inexact if x != 0. */
  81327. - u_int32_t j = i1 + (1 << (51 - j0));
  81328. + u_int32_t j = i1 + (1 << (51 - _j0));
  81329. if (j < i1)
  81330. i0 += 1;
  81331. i1 = j;
  81332. diff -Nur uClibc-0.9.33.2/libm/s_scalbn.c uClibc-git/libm/s_scalbn.c
  81333. --- uClibc-0.9.33.2/libm/s_scalbn.c 2012-05-15 09:20:09.000000000 +0200
  81334. +++ uClibc-git/libm/s_scalbn.c 2014-02-03 12:32:56.000000000 +0100
  81335. @@ -62,12 +62,7 @@
  81336. libm_hidden_def(scalbln)
  81337. #if LONG_MAX == INT_MAX
  81338. -/* strong_alias(scalbln, scalbn) - "error: conflicting types for 'scalbn'"
  81339. - * because it tries to declare "typeof(scalbln) scalbn;"
  81340. - * which tries to give "long" parameter to scalbn.
  81341. - * Doing it by hand:
  81342. - */
  81343. -__typeof(scalbn) scalbn __attribute__((alias("scalbln")));
  81344. +strong_alias_untyped(scalbln,scalbn)
  81345. #else
  81346. double scalbn(double x, int n)
  81347. {
  81348. diff -Nur uClibc-0.9.33.2/libm/s_signbit.c uClibc-git/libm/s_signbit.c
  81349. --- uClibc-0.9.33.2/libm/s_signbit.c 2012-05-15 09:20:09.000000000 +0200
  81350. +++ uClibc-git/libm/s_signbit.c 2014-02-03 12:32:56.000000000 +0100
  81351. @@ -14,9 +14,8 @@
  81352. Lesser General Public License for more details.
  81353. You should have received a copy of the GNU Lesser General Public
  81354. - License along with the GNU C Library; if not, write to the Free
  81355. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81356. - 02111-1307 USA. */
  81357. + License along with the GNU C Library; if not, see
  81358. + <http://www.gnu.org/licenses/>. */
  81359. #include <features.h>
  81360. /* Prevent math.h from defining a colliding inline */
  81361. diff -Nur uClibc-0.9.33.2/libm/s_signbitf.c uClibc-git/libm/s_signbitf.c
  81362. --- uClibc-0.9.33.2/libm/s_signbitf.c 2012-05-15 09:20:09.000000000 +0200
  81363. +++ uClibc-git/libm/s_signbitf.c 2014-02-03 12:32:56.000000000 +0100
  81364. @@ -14,9 +14,8 @@
  81365. Lesser General Public License for more details.
  81366. You should have received a copy of the GNU Lesser General Public
  81367. - License along with the GNU C Library; if not, write to the Free
  81368. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81369. - 02111-1307 USA. */
  81370. + License along with the GNU C Library; if not, see
  81371. + <http://www.gnu.org/licenses/>. */
  81372. #include <features.h>
  81373. /* Prevent math.h from defining a colliding inline */
  81374. diff -Nur uClibc-0.9.33.2/libm/s_significand.c uClibc-git/libm/s_significand.c
  81375. --- uClibc-0.9.33.2/libm/s_significand.c 2012-05-15 09:20:09.000000000 +0200
  81376. +++ uClibc-git/libm/s_significand.c 2014-02-03 12:32:56.000000000 +0100
  81377. @@ -22,3 +22,4 @@
  81378. {
  81379. return __ieee754_scalb(x,(double) -ilogb(x));
  81380. }
  81381. +libm_hidden_def(significand)
  81382. diff -Nur uClibc-0.9.33.2/libm/s_trunc.c uClibc-git/libm/s_trunc.c
  81383. --- uClibc-0.9.33.2/libm/s_trunc.c 2012-05-15 09:20:09.000000000 +0200
  81384. +++ uClibc-git/libm/s_trunc.c 2014-02-03 12:32:56.000000000 +0100
  81385. @@ -14,9 +14,8 @@
  81386. Lesser General Public License for more details.
  81387. You should have received a copy of the GNU Lesser General Public
  81388. - License along with the GNU C Library; if not, write to the Free
  81389. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81390. - 02111-1307 USA. */
  81391. + License along with the GNU C Library; if not, see
  81392. + <http://www.gnu.org/licenses/>. */
  81393. #include <math.h>
  81394. #include "math_private.h"
  81395. @@ -24,30 +23,30 @@
  81396. double
  81397. trunc (double x)
  81398. {
  81399. - int32_t i0, j0;
  81400. + int32_t i0, _j0;
  81401. u_int32_t i1;
  81402. int sx;
  81403. EXTRACT_WORDS (i0, i1, x);
  81404. sx = i0 & 0x80000000;
  81405. - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81406. - if (j0 < 20)
  81407. + _j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
  81408. + if (_j0 < 20)
  81409. {
  81410. - if (j0 < 0)
  81411. + if (_j0 < 0)
  81412. /* The magnitude of the number is < 1 so the result is +-0. */
  81413. INSERT_WORDS (x, sx, 0);
  81414. else
  81415. - INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> j0)), 0);
  81416. + INSERT_WORDS (x, sx | (i0 & ~(0x000fffff >> _j0)), 0);
  81417. }
  81418. - else if (j0 > 51)
  81419. + else if (_j0 > 51)
  81420. {
  81421. - if (j0 == 0x400)
  81422. + if (_j0 == 0x400)
  81423. /* x is inf or NaN. */
  81424. return x + x;
  81425. }
  81426. else
  81427. {
  81428. - INSERT_WORDS (x, i0, i1 & ~(0xffffffffu >> (j0 - 20)));
  81429. + INSERT_WORDS (x, i0, i1 & ~(0xffffffffu >> (_j0 - 20)));
  81430. }
  81431. return x;
  81432. diff -Nur uClibc-0.9.33.2/libnsl/nsl.c uClibc-git/libnsl/nsl.c
  81433. --- uClibc-0.9.33.2/libnsl/nsl.c 2012-05-15 09:20:09.000000000 +0200
  81434. +++ uClibc-git/libnsl/nsl.c 2014-02-03 12:32:56.000000000 +0100
  81435. @@ -7,8 +7,6 @@
  81436. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  81437. */
  81438. -#include <features.h>
  81439. -
  81440. void __stub2(void);
  81441. void __stub2(void)
  81442. {
  81443. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/alloca_cutoff.c uClibc-git/libpthread/linuxthreads/alloca_cutoff.c
  81444. --- uClibc-0.9.33.2/libpthread/linuxthreads/alloca_cutoff.c 2012-05-15 09:20:09.000000000 +0200
  81445. +++ uClibc-git/libpthread/linuxthreads/alloca_cutoff.c 2014-02-03 12:32:56.000000000 +0100
  81446. @@ -13,9 +13,8 @@
  81447. Lesser General Public License for more details.
  81448. You should have received a copy of the GNU Lesser General Public
  81449. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  81450. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  81451. - Boston, MA 02111-1307, USA. */
  81452. + License along with the GNU C Library; see the file COPYING.LIB. If
  81453. + not, see <http://www.gnu.org/licenses/>. */
  81454. #include <alloca.h>
  81455. #include <stdlib.h>
  81456. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/attr.c uClibc-git/libpthread/linuxthreads/attr.c
  81457. --- uClibc-0.9.33.2/libpthread/linuxthreads/attr.c 2012-05-15 09:20:09.000000000 +0200
  81458. +++ uClibc-git/libpthread/linuxthreads/attr.c 2014-02-03 12:32:56.000000000 +0100
  81459. @@ -361,7 +361,7 @@
  81460. attr->__scope = PTHREAD_SCOPE_SYSTEM;
  81461. #ifdef _STACK_GROWS_DOWN
  81462. -# ifdef USE_TLS
  81463. +# ifdef __UCLIBC_HAS_TLS__
  81464. attr->__stacksize = descr->p_stackaddr - (char *)descr->p_guardaddr
  81465. - descr->p_guardsize;
  81466. # else
  81467. @@ -369,7 +369,7 @@
  81468. - descr->p_guardsize;
  81469. # endif
  81470. #else
  81471. -# ifdef USE_TLS
  81472. +# ifdef __UCLIBC_HAS_TLS__
  81473. attr->__stacksize = (char *)descr->p_guardaddr - descr->p_stackaddr;
  81474. # else
  81475. attr->__stacksize = (char *)descr->p_guardaddr - (char *)descr;
  81476. @@ -385,7 +385,7 @@
  81477. otherwise the range of the stack area cannot be computed. */
  81478. attr->__stacksize += attr->__guardsize;
  81479. #endif
  81480. -#ifdef USE_TLS
  81481. +#ifdef __UCLIBC_HAS_TLS__
  81482. attr->__stackaddr = descr->p_stackaddr;
  81483. #else
  81484. # ifndef _STACK_GROWS_UP
  81485. @@ -395,7 +395,7 @@
  81486. # endif
  81487. #endif
  81488. -#ifdef USE_TLS
  81489. +#ifdef __UCLIBC_HAS_TLS__
  81490. if (attr->__stackaddr == NULL)
  81491. #else
  81492. if (descr == &__pthread_initial_thread)
  81493. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/barrier.c uClibc-git/libpthread/linuxthreads/barrier.c
  81494. --- uClibc-0.9.33.2/libpthread/linuxthreads/barrier.c 2012-05-15 09:20:09.000000000 +0200
  81495. +++ uClibc-git/libpthread/linuxthreads/barrier.c 2014-02-03 12:32:56.000000000 +0100
  81496. @@ -14,9 +14,8 @@
  81497. Lesser General Public License for more details.
  81498. You should have received a copy of the GNU Lesser General Public
  81499. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  81500. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  81501. - Boston, MA 02111-1307, USA. */
  81502. + License along with the GNU C Library; see the file COPYING.LIB. If
  81503. + not, see <http://www.gnu.org/licenses/>. */
  81504. #include <errno.h>
  81505. #include "pthread.h"
  81506. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/cancel.c uClibc-git/libpthread/linuxthreads/cancel.c
  81507. --- uClibc-0.9.33.2/libpthread/linuxthreads/cancel.c 2012-05-15 09:20:09.000000000 +0200
  81508. +++ uClibc-git/libpthread/linuxthreads/cancel.c 2014-02-03 12:32:56.000000000 +0100
  81509. @@ -15,7 +15,6 @@
  81510. /* Thread cancellation */
  81511. #include <errno.h>
  81512. -#include <libc-internal.h>
  81513. #include "pthread.h"
  81514. #include "internals.h"
  81515. #include "spinlock.h"
  81516. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/.cvsignore uClibc-git/libpthread/linuxthreads/.cvsignore
  81517. --- uClibc-0.9.33.2/libpthread/linuxthreads/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  81518. +++ uClibc-git/libpthread/linuxthreads/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  81519. @@ -1,3 +0,0 @@
  81520. -.cvsignore
  81521. -*.os
  81522. -Makefile.in
  81523. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/descr.h uClibc-git/libpthread/linuxthreads/descr.h
  81524. --- uClibc-0.9.33.2/libpthread/linuxthreads/descr.h 2012-05-15 09:20:09.000000000 +0200
  81525. +++ uClibc-git/libpthread/linuxthreads/descr.h 2014-02-03 12:32:56.000000000 +0100
  81526. @@ -23,7 +23,7 @@
  81527. #include <stdint.h>
  81528. #include <sys/types.h>
  81529. #include <hp-timing.h>
  81530. -#ifdef USE_TLS
  81531. +#ifdef __UCLIBC_HAS_TLS__
  81532. #include <tls.h>
  81533. #endif
  81534. #include "uClibc-glue.h"
  81535. @@ -112,7 +112,7 @@
  81536. struct _pthread_descr_struct
  81537. {
  81538. -#if !defined USE_TLS || !TLS_DTV_AT_TP || INCLUDE_TLS_PADDING
  81539. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP || INCLUDE_TLS_PADDING
  81540. /* This overlaps tcbhead_t (see tls.h), as used for TLS without threads. */
  81541. union
  81542. {
  81543. @@ -157,7 +157,7 @@
  81544. char p_sigwaiting; /* true if a sigwait() is in progress */
  81545. struct pthread_start_args p_start_args; /* arguments for thread creation */
  81546. void ** p_specific[PTHREAD_KEY_1STLEVEL_SIZE]; /* thread-specific data */
  81547. -#if !(USE_TLS && HAVE___THREAD)
  81548. +#ifndef __UCLIBC_HAS_TLS__
  81549. void * p_libc_specific[_LIBC_TSD_KEY_N]; /* thread-specific data for libc */
  81550. int * p_errnop; /* pointer to used errno variable */
  81551. int p_errno; /* error returned by last system call */
  81552. @@ -185,7 +185,7 @@
  81553. #if HP_TIMING_AVAIL
  81554. hp_timing_t p_cpuclock_offset; /* Initial CPU clock for thread. */
  81555. #endif
  81556. -#ifdef USE_TLS
  81557. +#ifdef __UCLIBC_HAS_TLS__
  81558. char *p_stackaddr; /* Stack address. */
  81559. #endif
  81560. size_t p_alloca_cutoff; /* Maximum size which should be allocated
  81561. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/errno.c uClibc-git/libpthread/linuxthreads/errno.c
  81562. --- uClibc-0.9.33.2/libpthread/linuxthreads/errno.c 2012-05-15 09:20:09.000000000 +0200
  81563. +++ uClibc-git/libpthread/linuxthreads/errno.c 2014-02-03 12:32:56.000000000 +0100
  81564. @@ -20,7 +20,7 @@
  81565. #include "pthread.h"
  81566. #include "internals.h"
  81567. -#if !USE_TLS || !HAVE___THREAD
  81568. +#ifndef __UCLIBC_HAS_TLS__
  81569. /* The definition in libc is sufficient if we use TLS. */
  81570. int *
  81571. __errno_location (void)
  81572. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/events.c uClibc-git/libpthread/linuxthreads/events.c
  81573. --- uClibc-0.9.33.2/libpthread/linuxthreads/events.c 2012-05-15 09:20:09.000000000 +0200
  81574. +++ uClibc-git/libpthread/linuxthreads/events.c 2014-02-03 12:32:56.000000000 +0100
  81575. @@ -13,9 +13,8 @@
  81576. Lesser General Public License for more details.
  81577. You should have received a copy of the GNU Lesser General Public
  81578. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  81579. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  81580. - Boston, MA 02111-1307, USA. */
  81581. + License along with the GNU C Library; see the file COPYING.LIB. If
  81582. + not, see <http://www.gnu.org/licenses/>. */
  81583. /* The functions contained here do nothing, they just return. */
  81584. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/forward.c uClibc-git/libpthread/linuxthreads/forward.c
  81585. --- uClibc-0.9.33.2/libpthread/linuxthreads/forward.c 2012-05-15 09:20:09.000000000 +0200
  81586. +++ uClibc-git/libpthread/linuxthreads/forward.c 2014-02-03 12:32:56.000000000 +0100
  81587. @@ -13,9 +13,8 @@
  81588. Lesser General Public License for more details.
  81589. You should have received a copy of the GNU Lesser General Public
  81590. - License along with the GNU C Library; if not, write to the Free
  81591. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81592. - 02111-1307 USA. */
  81593. + License along with the GNU C Library; if not, see
  81594. + <http://www.gnu.org/licenses/>. */
  81595. #include <features.h>
  81596. #include <stdlib.h>
  81597. @@ -26,7 +25,7 @@
  81598. #include "internals.h"
  81599. /* Pointers to the libc functions. */
  81600. -struct pthread_functions __libc_pthread_functions attribute_hidden;
  81601. +struct pthread_functions __libc_pthread_functions;
  81602. # define FORWARD2(name, rettype, decl, params, defaction) \
  81603. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/internals.h uClibc-git/libpthread/linuxthreads/internals.h
  81604. --- uClibc-0.9.33.2/libpthread/linuxthreads/internals.h 2012-05-15 09:20:09.000000000 +0200
  81605. +++ uClibc-git/libpthread/linuxthreads/internals.h 2014-02-03 12:32:56.000000000 +0100
  81606. @@ -30,7 +30,7 @@
  81607. #include <bits/sigcontextinfo.h>
  81608. #include <bits/pthreadtypes.h>
  81609. -#ifdef USE_TLS
  81610. +#ifdef __UCLIBC_HAS_TLS__
  81611. #include <tls.h>
  81612. #endif
  81613. #include "descr.h"
  81614. @@ -200,19 +200,17 @@
  81615. /* The page size we can get from the system. This should likely not be
  81616. changed by the machine file but, you never know. */
  81617. -#ifndef PAGE_SIZE
  81618. -#define PAGE_SIZE (sysconf (_SC_PAGE_SIZE))
  81619. -#endif
  81620. +#define __PAGE_SIZE (sysconf (_SC_PAGESIZE))
  81621. -/* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */
  81622. +/* The initial size of the thread stack. Must be a multiple of __PAGE_SIZE. */
  81623. #ifndef INITIAL_STACK_SIZE
  81624. -#define INITIAL_STACK_SIZE (4 * PAGE_SIZE)
  81625. +#define INITIAL_STACK_SIZE (4 * __PAGE_SIZE)
  81626. #endif
  81627. /* Size of the thread manager stack. The "- 32" avoids wasting space
  81628. with some malloc() implementations. */
  81629. #ifndef THREAD_MANAGER_STACK_SIZE
  81630. -#define THREAD_MANAGER_STACK_SIZE (2 * PAGE_SIZE - 32)
  81631. +#define THREAD_MANAGER_STACK_SIZE (2 * __PAGE_SIZE - 32)
  81632. #endif
  81633. /* The base of the "array" of thread stacks. The array will grow down from
  81634. @@ -285,7 +283,7 @@
  81635. extern void __pthread_perform_cleanup (char *currentframe);
  81636. extern void __pthread_init_max_stacksize (void);
  81637. extern int __pthread_initialize_manager (void);
  81638. -extern void __pthread_message (const char * fmt, ...);
  81639. +extern void __pthread_message (const char * fmt, ...) attribute_hidden;
  81640. extern int __pthread_manager (void *reqfd);
  81641. extern int __pthread_manager_event (void *reqfd);
  81642. extern void __pthread_manager_sighandler (int sig);
  81643. @@ -347,7 +345,7 @@
  81644. int *__kind);
  81645. extern void __pthread_kill_other_threads_np (void);
  81646. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  81647. - __const pthread_mutexattr_t *__mutex_attr);
  81648. + const pthread_mutexattr_t *__mutex_attr);
  81649. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  81650. extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
  81651. extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);
  81652. @@ -393,14 +391,14 @@
  81653. extern void __pthread_sigsuspend (const sigset_t *mask) attribute_hidden;
  81654. extern int __pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  81655. - __const struct timespec *__restrict
  81656. + const struct timespec *__restrict
  81657. __abstime);
  81658. extern int __pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  81659. - __const struct timespec *__restrict
  81660. + const struct timespec *__restrict
  81661. __abstime);
  81662. extern int __pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr);
  81663. -extern int __pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  81664. +extern int __pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  81665. __restrict __attr,
  81666. int *__restrict __pshared);
  81667. @@ -440,10 +438,12 @@
  81668. extern void __pthread_initialize (void);
  81669. /* TSD. */
  81670. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  81671. extern int __pthread_internal_tsd_set (int key, const void * pointer);
  81672. extern void * __pthread_internal_tsd_get (int key);
  81673. extern void ** __attribute__ ((__const__))
  81674. __pthread_internal_tsd_address (int key);
  81675. +#endif
  81676. /* Sighandler wrappers. */
  81677. extern void __pthread_sighandler(int signo, SIGCONTEXT ctx);
  81678. @@ -508,8 +508,6 @@
  81679. # define LIBC_CANCEL_HANDLED() /* Nothing. */
  81680. #endif
  81681. -extern int * __libc_pthread_init (const struct pthread_functions *functions);
  81682. -
  81683. #if !defined NOT_IN_libc && !defined FLOATING_STACKS
  81684. # ifdef SHARED
  81685. # define thread_self() \
  81686. @@ -520,7 +518,7 @@
  81687. # endif
  81688. #endif
  81689. -#ifndef USE_TLS
  81690. +#ifndef __UCLIBC_HAS_TLS__
  81691. # define __manager_thread (&__pthread_manager_thread)
  81692. #else
  81693. # define __manager_thread __pthread_manager_threadp
  81694. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/libc-cancellation.c uClibc-git/libpthread/linuxthreads/libc-cancellation.c
  81695. --- uClibc-0.9.33.2/libpthread/linuxthreads/libc-cancellation.c 2012-05-15 09:20:09.000000000 +0200
  81696. +++ uClibc-git/libpthread/linuxthreads/libc-cancellation.c 2014-02-03 12:32:56.000000000 +0100
  81697. @@ -13,9 +13,8 @@
  81698. Lesser General Public License for more details.
  81699. You should have received a copy of the GNU Lesser General Public
  81700. - License along with the GNU C Library; if not, write to the Free
  81701. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81702. - 02111-1307 USA. */
  81703. + License along with the GNU C Library; if not, see
  81704. + <http://www.gnu.org/licenses/>. */
  81705. #include <errno.h>
  81706. #include <rpc/rpc.h>
  81707. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/libc_pthread_init.c uClibc-git/libpthread/linuxthreads/libc_pthread_init.c
  81708. --- uClibc-0.9.33.2/libpthread/linuxthreads/libc_pthread_init.c 2012-05-15 09:20:09.000000000 +0200
  81709. +++ uClibc-git/libpthread/linuxthreads/libc_pthread_init.c 2014-02-03 12:32:56.000000000 +0100
  81710. @@ -13,14 +13,13 @@
  81711. Lesser General Public License for more details.
  81712. You should have received a copy of the GNU Lesser General Public
  81713. - License along with the GNU C Library; if not, write to the Free
  81714. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  81715. - 02111-1307 USA. */
  81716. + License along with the GNU C Library; if not, see
  81717. + <http://www.gnu.org/licenses/>. */
  81718. #include <locale.h>
  81719. #include <stdlib.h>
  81720. #include <string.h>
  81721. -#ifdef USE_TLS
  81722. +#ifdef __UCLIBC_HAS_TLS__
  81723. #include <tls.h>
  81724. #endif
  81725. #include "internals.h"
  81726. @@ -31,8 +30,7 @@
  81727. int *
  81728. -__libc_pthread_init (functions)
  81729. - const struct pthread_functions *functions;
  81730. +__libc_pthread_init(const struct pthread_functions *functions)
  81731. {
  81732. #ifdef SHARED
  81733. /* We copy the content of the variable pointed to by the FUNCTIONS
  81734. @@ -42,7 +40,7 @@
  81735. sizeof (__libc_pthread_functions));
  81736. #endif
  81737. -#if !(USE_TLS && HAVE___THREAD)
  81738. +#ifndef __UCLIBC_HAS_TLS__
  81739. /* Initialize thread-locale current locale to point to the global one.
  81740. With __thread support, the variable's initializer takes care of this. */
  81741. __uselocale (LC_GLOBAL_LOCALE);
  81742. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/lockfile.c uClibc-git/libpthread/linuxthreads/lockfile.c
  81743. --- uClibc-0.9.33.2/libpthread/linuxthreads/lockfile.c 2012-05-15 09:20:09.000000000 +0200
  81744. +++ uClibc-git/libpthread/linuxthreads/lockfile.c 2014-02-03 12:32:56.000000000 +0100
  81745. @@ -13,9 +13,8 @@
  81746. Lesser General Public License for more details.
  81747. You should have received a copy of the GNU Lesser General Public
  81748. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  81749. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  81750. - Boston, MA 02111-1307, USA. */
  81751. + License along with the GNU C Library; see the file COPYING.LIB. If
  81752. + not, see <http://www.gnu.org/licenses/>. */
  81753. #include <bits/libc-lock.h>
  81754. #include <stdio.h>
  81755. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/manager.c uClibc-git/libpthread/linuxthreads/manager.c
  81756. --- uClibc-0.9.33.2/libpthread/linuxthreads/manager.c 2012-05-15 09:20:09.000000000 +0200
  81757. +++ uClibc-git/libpthread/linuxthreads/manager.c 2014-02-03 12:32:56.000000000 +0100
  81758. @@ -126,7 +126,7 @@
  81759. #ifdef INIT_THREAD_SELF
  81760. INIT_THREAD_SELF(self, 1);
  81761. #endif
  81762. -#if !(USE_TLS && HAVE___THREAD)
  81763. +#ifndef __UCLIBC_HAS_TLS__
  81764. /* Set the error variable. */
  81765. self->p_errnop = &self->p_errno;
  81766. self->p_h_errnop = &self->p_h_errno;
  81767. @@ -289,7 +289,7 @@
  81768. __sched_setscheduler(THREAD_GETMEM(self, p_pid),
  81769. SCHED_OTHER, &default_params);
  81770. }
  81771. -#if !(USE_TLS && HAVE___THREAD)
  81772. +#ifndef __UCLIBC_HAS_TLS__
  81773. /* Initialize thread-locale current locale to point to the global one.
  81774. With __thread support, the variable's initializer takes care of this. */
  81775. __uselocale (LC_GLOBAL_LOCALE);
  81776. @@ -333,7 +333,7 @@
  81777. pthread_start_thread (arg);
  81778. }
  81779. -#if defined USE_TLS && !FLOATING_STACKS
  81780. +#if defined __UCLIBC_HAS_TLS__ && !FLOATING_STACKS
  81781. # error "TLS can only work with floating stacks"
  81782. #endif
  81783. @@ -351,7 +351,7 @@
  81784. char * guardaddr;
  81785. size_t stacksize, guardsize;
  81786. -#ifdef USE_TLS
  81787. +#ifdef __UCLIBC_HAS_TLS__
  81788. /* TLS cannot work with fixed thread descriptor addresses. */
  81789. assert (default_new_thread == NULL);
  81790. #endif
  81791. @@ -360,7 +360,7 @@
  81792. {
  81793. #ifdef _STACK_GROWS_UP
  81794. /* The user provided a stack. */
  81795. -# ifdef USE_TLS
  81796. +# ifdef __UCLIBC_HAS_TLS__
  81797. /* This value is not needed. */
  81798. new_thread = (pthread_descr) attr->__stackaddr;
  81799. new_thread_bottom = (char *) new_thread;
  81800. @@ -381,7 +381,7 @@
  81801. addresses, stackaddr would be the lowest address in the stack
  81802. segment, so that it is consistently close to the initial sp
  81803. value. */
  81804. -# ifdef USE_TLS
  81805. +# ifdef __UCLIBC_HAS_TLS__
  81806. new_thread = (pthread_descr) attr->__stackaddr;
  81807. # else
  81808. new_thread =
  81809. @@ -394,7 +394,7 @@
  81810. #ifndef THREAD_SELF
  81811. __pthread_nonstandard_stacks = 1;
  81812. #endif
  81813. -#ifndef USE_TLS
  81814. +#ifndef __UCLIBC_HAS_TLS__
  81815. /* Clear the thread data structure. */
  81816. memset (new_thread, '\0', sizeof (*new_thread));
  81817. #endif
  81818. @@ -438,7 +438,7 @@
  81819. mprotect (guardaddr, guardsize, PROT_NONE);
  81820. new_thread_bottom = (char *) map_addr;
  81821. -# ifdef USE_TLS
  81822. +# ifdef __UCLIBC_HAS_TLS__
  81823. new_thread = ((pthread_descr) (new_thread_bottom + stacksize
  81824. + guardsize));
  81825. # else
  81826. @@ -451,7 +451,7 @@
  81827. mprotect (guardaddr, guardsize, PROT_NONE);
  81828. new_thread_bottom = (char *) map_addr + guardsize;
  81829. -# ifdef USE_TLS
  81830. +# ifdef __UCLIBC_HAS_TLS__
  81831. new_thread = ((pthread_descr) (new_thread_bottom + stacksize));
  81832. # else
  81833. new_thread = ((pthread_descr) (new_thread_bottom + stacksize)) - 1;
  81834. @@ -462,7 +462,7 @@
  81835. mprotect (guardaddr, guardsize, PROT_NONE);
  81836. new_thread = (pthread_descr) map_addr;
  81837. -# ifdef USE_TLS
  81838. +# ifdef __UCLIBC_HAS_TLS__
  81839. new_thread_bottom = (char *) new_thread;
  81840. # else
  81841. new_thread_bottom = (char *) (new_thread + 1);
  81842. @@ -597,7 +597,7 @@
  81843. int pagesize = __getpagesize();
  81844. int saved_errno = 0;
  81845. -#ifdef USE_TLS
  81846. +#ifdef __UCLIBC_HAS_TLS__
  81847. new_thread = _dl_allocate_tls (NULL);
  81848. if (new_thread == NULL)
  81849. return EAGAIN;
  81850. @@ -621,7 +621,7 @@
  81851. {
  81852. if (sseg >= PTHREAD_THREADS_MAX)
  81853. {
  81854. -#ifdef USE_TLS
  81855. +#ifdef __UCLIBC_HAS_TLS__
  81856. # if defined(TLS_DTV_AT_TP)
  81857. new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
  81858. # endif
  81859. @@ -635,7 +635,7 @@
  81860. pagesize, &stack_addr, &new_thread_bottom,
  81861. &guardaddr, &guardsize, &stksize) == 0)
  81862. {
  81863. -#ifdef USE_TLS
  81864. +#ifdef __UCLIBC_HAS_TLS__
  81865. new_thread->p_stackaddr = stack_addr;
  81866. #else
  81867. new_thread = (pthread_descr) stack_addr;
  81868. @@ -657,18 +657,18 @@
  81869. new_thread_id = sseg + pthread_threads_counter;
  81870. /* Initialize the thread descriptor. Elements which have to be
  81871. initialized to zero already have this value. */
  81872. -#if !defined USE_TLS || !TLS_DTV_AT_TP
  81873. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  81874. new_thread->p_header.data.tcb = new_thread;
  81875. new_thread->p_header.data.self = new_thread;
  81876. #endif
  81877. -#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
  81878. +#if TLS_MULTIPLE_THREADS_IN_TCB || !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  81879. new_thread->p_multiple_threads = 1;
  81880. #endif
  81881. new_thread->p_tid = new_thread_id;
  81882. new_thread->p_lock = &(__pthread_handles[sseg].h_lock);
  81883. new_thread->p_cancelstate = PTHREAD_CANCEL_ENABLE;
  81884. new_thread->p_canceltype = PTHREAD_CANCEL_DEFERRED;
  81885. -#if !(USE_TLS && HAVE___THREAD)
  81886. +#ifndef __UCLIBC_HAS_TLS__
  81887. new_thread->p_errnop = &new_thread->p_errno;
  81888. new_thread->p_h_errnop = &new_thread->p_h_errno;
  81889. new_thread->p_resp = &new_thread->p_res;
  81890. @@ -807,7 +807,7 @@
  81891. munmap((caddr_t)new_thread_bottom,
  81892. 2 * stacksize + new_thread->p_guardsize);
  81893. #elif defined _STACK_GROWS_UP
  81894. -# ifdef USE_TLS
  81895. +# ifdef __UCLIBC_HAS_TLS__
  81896. size_t stacksize = guardaddr - stack_addr;
  81897. munmap(stack_addr, stacksize + guardsize);
  81898. # else
  81899. @@ -815,7 +815,7 @@
  81900. munmap(new_thread, stacksize + guardsize);
  81901. # endif
  81902. #else
  81903. -# ifdef USE_TLS
  81904. +# ifdef __UCLIBC_HAS_TLS__
  81905. size_t stacksize = stack_addr - new_thread_bottom;
  81906. # else
  81907. size_t stacksize = (char *)(new_thread+1) - new_thread_bottom;
  81908. @@ -823,7 +823,7 @@
  81909. munmap(new_thread_bottom - guardsize, guardsize + stacksize);
  81910. #endif
  81911. }
  81912. -#ifdef USE_TLS
  81913. +#ifdef __UCLIBC_HAS_TLS__
  81914. # if defined(TLS_DTV_AT_TP)
  81915. new_thread = (pthread_descr) ((char *) new_thread + TLS_PRE_TCB_SIZE);
  81916. # endif
  81917. @@ -890,7 +890,7 @@
  81918. /* Free the stack and thread descriptor area */
  81919. char *guardaddr = th->p_guardaddr;
  81920. #ifdef _STACK_GROWS_UP
  81921. -# ifdef USE_TLS
  81922. +# ifdef __UCLIBC_HAS_TLS__
  81923. size_t stacksize = guardaddr - th->p_stackaddr;
  81924. guardaddr = th->p_stackaddr;
  81925. # else
  81926. @@ -900,7 +900,7 @@
  81927. #else
  81928. /* Guardaddr is always set, even if guardsize is 0. This allows
  81929. us to compute everything else. */
  81930. -# ifdef USE_TLS
  81931. +# ifdef __UCLIBC_HAS_TLS__
  81932. size_t stacksize = th->p_stackaddr - guardaddr - guardsize;
  81933. # else
  81934. size_t stacksize = (char *)(th+1) - guardaddr - guardsize;
  81935. @@ -916,7 +916,7 @@
  81936. }
  81937. -#ifdef USE_TLS
  81938. +#ifdef __UCLIBC_HAS_TLS__
  81939. # if defined(TLS_DTV_AT_TP)
  81940. th = (pthread_descr) ((char *) th + TLS_PRE_TCB_SIZE);
  81941. # endif
  81942. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptcleanup.c uClibc-git/libpthread/linuxthreads/ptcleanup.c
  81943. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptcleanup.c 2012-05-15 09:20:09.000000000 +0200
  81944. +++ uClibc-git/libpthread/linuxthreads/ptcleanup.c 2014-02-03 12:32:56.000000000 +0100
  81945. @@ -20,8 +20,8 @@
  81946. #include <setjmp.h>
  81947. #include "pthread.h"
  81948. #include "internals.h"
  81949. -#ifndef NO_PTR_DEMANGLE
  81950. #include <jmpbuf-unwind.h>
  81951. +#ifndef NO_PTR_DEMANGLE
  81952. #define __JMPBUF_UNWINDS(a,b,c) _JMPBUF_UNWINDS(a,b,c)
  81953. #else
  81954. #define __JMPBUF_UNWINDS(a,b,c) _JMPBUF_UNWINDS(a,b)
  81955. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_gettime.c uClibc-git/libpthread/linuxthreads/ptclock_gettime.c
  81956. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  81957. +++ uClibc-git/libpthread/linuxthreads/ptclock_gettime.c 2014-02-03 12:32:56.000000000 +0100
  81958. @@ -12,13 +12,11 @@
  81959. Lesser General Public License for more details.
  81960. You should have received a copy of the GNU Lesser General Public
  81961. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  81962. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  81963. - Boston, MA 02111-1307, USA. */
  81964. + License along with the GNU C Library; see the file COPYING.LIB. If
  81965. + not, see <http://www.gnu.org/licenses/>. */
  81966. #include <errno.h>
  81967. #include <time.h>
  81968. -#include <libc-internal.h>
  81969. #include "internals.h"
  81970. #include "spinlock.h"
  81971. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_settime.c uClibc-git/libpthread/linuxthreads/ptclock_settime.c
  81972. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptclock_settime.c 2012-05-15 09:20:09.000000000 +0200
  81973. +++ uClibc-git/libpthread/linuxthreads/ptclock_settime.c 2014-02-03 12:32:56.000000000 +0100
  81974. @@ -12,13 +12,11 @@
  81975. Lesser General Public License for more details.
  81976. You should have received a copy of the GNU Lesser General Public
  81977. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  81978. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  81979. - Boston, MA 02111-1307, USA. */
  81980. + License along with the GNU C Library; see the file COPYING.LIB. If
  81981. + not, see <http://www.gnu.org/licenses/>. */
  81982. #include <errno.h>
  81983. #include <time.h>
  81984. -#include <libc-internal.h>
  81985. #include "internals.h"
  81986. #include "spinlock.h"
  81987. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/ptfork.c uClibc-git/libpthread/linuxthreads/ptfork.c
  81988. --- uClibc-0.9.33.2/libpthread/linuxthreads/ptfork.c 2012-05-15 09:20:09.000000000 +0200
  81989. +++ uClibc-git/libpthread/linuxthreads/ptfork.c 2014-02-03 12:32:56.000000000 +0100
  81990. @@ -23,8 +23,6 @@
  81991. #include <bits/libc-lock.h>
  81992. #include "fork.h"
  81993. -extern int __libc_fork (void);
  81994. -
  81995. pid_t __pthread_fork (struct fork_block *b)
  81996. {
  81997. pid_t pid;
  81998. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_atfork.c uClibc-git/libpthread/linuxthreads/pthread_atfork.c
  81999. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_atfork.c 2012-05-15 09:20:09.000000000 +0200
  82000. +++ uClibc-git/libpthread/linuxthreads/pthread_atfork.c 2014-02-03 12:32:57.000000000 +0100
  82001. @@ -30,9 +30,8 @@
  82002. Lesser General Public License for more details.
  82003. You should have received a copy of the GNU Lesser General Public
  82004. - License along with the GNU C Library; if not, write to the Free
  82005. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82006. - 02111-1307 USA. */
  82007. + License along with the GNU C Library; if not, see
  82008. + <http://www.gnu.org/licenses/>. */
  82009. #include "internals.h"
  82010. #include <fork.h>
  82011. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread.c uClibc-git/libpthread/linuxthreads/pthread.c
  82012. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread.c 2012-05-15 09:20:09.000000000 +0200
  82013. +++ uClibc-git/libpthread/linuxthreads/pthread.c 2014-02-03 12:32:56.000000000 +0100
  82014. @@ -37,10 +37,7 @@
  82015. # error "This must not happen"
  82016. #endif
  82017. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  82018. -extern __typeof(sigaction) __libc_sigaction;
  82019. -
  82020. -#if !(USE_TLS && HAVE___THREAD)
  82021. +#ifndef __UCLIBC_HAS_TLS__
  82022. /* These variables are used by the setup code. */
  82023. extern int _errno;
  82024. extern int _h_errno;
  82025. @@ -53,7 +50,7 @@
  82026. # endif
  82027. #endif
  82028. -#ifdef USE_TLS
  82029. +#ifdef __UCLIBC_HAS_TLS__
  82030. /* We need only a few variables. */
  82031. #define manager_thread __pthread_manager_threadp
  82032. @@ -70,7 +67,7 @@
  82033. .p_tid = PTHREAD_THREADS_MAX,
  82034. .p_lock = &__pthread_handles[0].h_lock,
  82035. .p_start_args = PTHREAD_START_ARGS_INITIALIZER(NULL),
  82036. -#if !(USE_TLS && HAVE___THREAD)
  82037. +#ifndef __UCLIBC_HAS_TLS__
  82038. .p_errnop = &_errno,
  82039. .p_h_errnop = &_h_errno,
  82040. #endif
  82041. @@ -89,7 +86,7 @@
  82042. .p_header.data.multiple_threads = 1,
  82043. .p_lock = &__pthread_handles[1].h_lock,
  82044. .p_start_args = PTHREAD_START_ARGS_INITIALIZER(__pthread_manager),
  82045. -#if !(USE_TLS && HAVE___THREAD)
  82046. +#ifndef __UCLIBC_HAS_TLS__
  82047. .p_errnop = &__pthread_manager_thread.p_errno,
  82048. #endif
  82049. .p_nr = 1,
  82050. @@ -101,7 +98,7 @@
  82051. /* Pointer to the main thread (the father of the thread manager thread) */
  82052. /* Originally, this is the initial thread, but this changes after fork() */
  82053. -#ifdef USE_TLS
  82054. +#ifdef __UCLIBC_HAS_TLS__
  82055. pthread_descr __pthread_main_thread;
  82056. #else
  82057. pthread_descr __pthread_main_thread = &__pthread_initial_thread;
  82058. @@ -227,13 +224,13 @@
  82059. #endif
  82060. -#if defined USE_TLS && !defined SHARED
  82061. +#if defined __UCLIBC_HAS_TLS__ && !defined SHARED
  82062. extern void __libc_setup_tls (size_t tcbsize, size_t tcbalign);
  82063. #endif
  82064. struct pthread_functions __pthread_functions =
  82065. {
  82066. -#if !(USE_TLS && HAVE___THREAD)
  82067. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  82068. .ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set,
  82069. .ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get,
  82070. .ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address,
  82071. @@ -295,7 +292,7 @@
  82072. void
  82073. __pthread_initialize_minimal(void)
  82074. {
  82075. -#ifdef USE_TLS
  82076. +#ifdef __UCLIBC_HAS_TLS__
  82077. pthread_descr self;
  82078. /* First of all init __pthread_handles[0] and [1] if needed. */
  82079. @@ -307,7 +304,7 @@
  82080. /* Unlike in the dynamically linked case the dynamic linker has not
  82081. taken care of initializing the TLS data structures. */
  82082. __libc_setup_tls (TLS_TCB_SIZE, TLS_TCB_ALIGN);
  82083. -# elif !USE___THREAD
  82084. +# elif !defined __UCLIBC_HAS_TLS__
  82085. if (__builtin_expect (GL(dl_tls_dtv_slotinfo_list) == NULL, 0))
  82086. {
  82087. tcbhead_t *tcbp;
  82088. @@ -363,7 +360,7 @@
  82089. self->p_nextlive = self->p_prevlive = self;
  82090. self->p_tid = PTHREAD_THREADS_MAX;
  82091. self->p_lock = &__pthread_handles[0].h_lock;
  82092. -# ifndef HAVE___THREAD
  82093. +# ifndef __UCLIBC_HAS_TLS__
  82094. self->p_errnop = &_errno;
  82095. self->p_h_errnop = &_h_errno;
  82096. # endif
  82097. @@ -380,7 +377,7 @@
  82098. /* And fill in the pointer the the thread __pthread_handles array. */
  82099. __pthread_handles[0].h_descr = self;
  82100. -#else /* USE_TLS */
  82101. +#else /* __UCLIBC_HAS_TLS__ */
  82102. /* First of all init __pthread_handles[0] and [1]. */
  82103. # if __LT_SPINLOCK_INIT != 0
  82104. @@ -398,7 +395,7 @@
  82105. #endif
  82106. #if HP_TIMING_AVAIL
  82107. -# ifdef USE_TLS
  82108. +# ifdef __UCLIBC_HAS_TLS__
  82109. self->p_cpuclock_offset = GL(dl_cpuclock_offset);
  82110. # else
  82111. __pthread_initial_thread.p_cpuclock_offset = GL(dl_cpuclock_offset);
  82112. @@ -442,7 +439,7 @@
  82113. __pthread_max_stacksize = max_stack;
  82114. if (max_stack / 4 < __MAX_ALLOCA_CUTOFF)
  82115. {
  82116. -#ifdef USE_TLS
  82117. +#ifdef __UCLIBC_HAS_TLS__
  82118. pthread_descr self = THREAD_SELF;
  82119. self->p_alloca_cutoff = max_stack / 4;
  82120. #else
  82121. @@ -451,10 +448,8 @@
  82122. }
  82123. }
  82124. -/* psm: we do not have any ld.so support yet
  82125. - * remove the USE_TLS guard if nptl is added */
  82126. -#if defined SHARED && defined USE_TLS
  82127. -# if USE___THREAD
  82128. +#if defined SHARED && defined __UCLIBC_HAS_TLS__
  82129. +# ifdef __UCLIBC_HAS_TLS__
  82130. /* When using __thread for this, we do it in libc so as not
  82131. to give libpthread its own TLS segment just for this. */
  82132. extern void **__libc_dl_error_tsd (void) __attribute__ ((const));
  82133. @@ -467,7 +462,7 @@
  82134. # endif
  82135. #endif
  82136. -#ifdef USE_TLS
  82137. +#ifdef __UCLIBC_HAS_TLS__
  82138. static __inline__ void __attribute__((always_inline))
  82139. init_one_static_tls (pthread_descr descr, struct link_map *map)
  82140. {
  82141. @@ -486,7 +481,7 @@
  82142. dtv[map->l_tls_modid].pointer.is_static = true;
  82143. /* Initialize the memory. */
  82144. - memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
  82145. + memset (mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size),
  82146. '\0', map->l_tls_blocksize - map->l_tls_initimage_size);
  82147. }
  82148. @@ -536,10 +531,10 @@
  82149. (char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1));
  82150. # endif
  82151. #endif
  82152. -#ifdef USE_TLS
  82153. +#ifdef __UCLIBC_HAS_TLS__
  82154. /* Update the descriptor for the initial thread. */
  82155. THREAD_SETMEM (((pthread_descr) NULL), p_pid, __getpid());
  82156. -# if !defined HAVE___THREAD && defined __UCLIBC_HAS_RESOLVER_SUPPORT__
  82157. +# if defined __UCLIBC_HAS_RESOLVER_SUPPORT__
  82158. /* Likewise for the resolver state _res. */
  82159. THREAD_SETMEM (((pthread_descr) NULL), p_resp, __resp);
  82160. # endif
  82161. @@ -590,9 +585,7 @@
  82162. /* How many processors. */
  82163. __pthread_smp_kernel = is_smp_system ();
  82164. -/* psm: we do not have any ld.so support yet
  82165. - * remove the USE_TLS guard if nptl is added */
  82166. -#if defined SHARED && defined USE_TLS
  82167. +#if defined SHARED && defined __UCLIBC_HAS_TLS__
  82168. /* Transfer the old value from the dynamic linker's internal location. */
  82169. *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
  82170. GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;
  82171. @@ -607,7 +600,7 @@
  82172. __pthread_mutex_lock (&GL(dl_load_lock).mutex);
  82173. #endif
  82174. -#ifdef USE_TLS
  82175. +#ifdef __UCLIBC_HAS_TLS__
  82176. GL(dl_init_static_tls) = &__pthread_init_static_tls;
  82177. #endif
  82178. @@ -635,12 +628,12 @@
  82179. struct pthread_request request;
  82180. int report_events;
  82181. pthread_descr mgr;
  82182. -#ifdef USE_TLS
  82183. +#ifdef __UCLIBC_HAS_TLS__
  82184. tcbhead_t *tcbp;
  82185. #endif
  82186. __pthread_multiple_threads = 1;
  82187. -#if TLS_MULTIPLE_THREADS_IN_TCB || !defined USE_TLS || !TLS_DTV_AT_TP
  82188. +#if TLS_MULTIPLE_THREADS_IN_TCB || !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  82189. __pthread_main_thread->p_multiple_threads = 1;
  82190. #endif
  82191. *__libc_multiple_threads_ptr = 1;
  82192. @@ -667,7 +660,7 @@
  82193. return -1;
  82194. }
  82195. -#ifdef USE_TLS
  82196. +#ifdef __UCLIBC_HAS_TLS__
  82197. /* Allocate memory for the thread descriptor and the dtv. */
  82198. tcbp = _dl_allocate_tls (NULL);
  82199. if (tcbp == NULL) {
  82200. @@ -687,7 +680,7 @@
  82201. __pthread_handles[1].h_descr = manager_thread = mgr;
  82202. /* Initialize the descriptor. */
  82203. -#if !defined USE_TLS || !TLS_DTV_AT_TP
  82204. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  82205. mgr->p_header.data.tcb = tcbp;
  82206. mgr->p_header.data.self = mgr;
  82207. mgr->p_header.data.multiple_threads = 1;
  82208. @@ -695,7 +688,7 @@
  82209. mgr->p_multiple_threads = 1;
  82210. #endif
  82211. mgr->p_lock = &__pthread_handles[1].h_lock;
  82212. -# ifndef HAVE___THREAD
  82213. +# ifndef __UCLIBC_HAS_TLS__
  82214. mgr->p_errnop = &mgr->p_errno;
  82215. # endif
  82216. mgr->p_start_args = (struct pthread_start_args) PTHREAD_START_ARGS_INITIALIZER(__pthread_manager);
  82217. @@ -713,7 +706,7 @@
  82218. /* Start the thread manager */
  82219. pid = 0;
  82220. -#ifdef USE_TLS
  82221. +#ifdef __UCLIBC_HAS_TLS__
  82222. if (__linuxthreads_initial_report_events != 0)
  82223. THREAD_SETMEM (((pthread_descr) NULL), p_report_events,
  82224. __linuxthreads_initial_report_events);
  82225. @@ -732,7 +725,7 @@
  82226. uint32_t mask = __td_eventmask (TD_CREATE);
  82227. uint32_t event_bits;
  82228. -#ifdef USE_TLS
  82229. +#ifdef __UCLIBC_HAS_TLS__
  82230. event_bits = THREAD_GETMEM_NC (((pthread_descr) NULL),
  82231. p_eventbuf.eventmask.event_bits[idx]);
  82232. #else
  82233. @@ -798,7 +791,7 @@
  82234. #endif
  82235. }
  82236. if (__builtin_expect (pid, 0) == -1) {
  82237. -#ifdef USE_TLS
  82238. +#ifdef __UCLIBC_HAS_TLS__
  82239. _dl_deallocate_tls (tcbp, true);
  82240. #endif
  82241. free(__pthread_manager_thread_bos);
  82242. @@ -900,7 +893,7 @@
  82243. if (sp >= __pthread_manager_thread_bos && sp < __pthread_manager_thread_tos)
  82244. return manager_thread;
  82245. h = __pthread_handles + 2;
  82246. -# ifdef USE_TLS
  82247. +# ifdef __UCLIBC_HAS_TLS__
  82248. # ifdef _STACK_GROWS_UP
  82249. while (h->h_descr == NULL
  82250. || ! (sp >= h->h_descr->p_stackaddr && sp < h->h_descr->p_guardaddr))
  82251. @@ -994,7 +987,7 @@
  82252. children, so that timings for main thread account for all threads. */
  82253. if (self == __pthread_main_thread)
  82254. {
  82255. -#ifdef USE_TLS
  82256. +#ifdef __UCLIBC_HAS_TLS__
  82257. waitpid(manager_thread->p_pid, NULL, __WCLONE);
  82258. #else
  82259. waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
  82260. @@ -1002,7 +995,7 @@
  82261. /* Since all threads have been asynchronously terminated
  82262. (possibly holding locks), free cannot be used any more.
  82263. For mtrace, we'd like to print something though. */
  82264. - /* #ifdef USE_TLS
  82265. + /* #ifdef __UCLIBC_HAS_TLS__
  82266. tcbhead_t *tcbp = (tcbhead_t *) manager_thread;
  82267. # if defined(TLS_DTV_AT_TP)
  82268. tcbp = (tcbhead_t) ((char *) tcbp + TLS_PRE_TCB_SIZE);
  82269. @@ -1060,7 +1053,7 @@
  82270. /* Main thread should accumulate times for thread manager and its
  82271. children, so that timings for main thread account for all threads. */
  82272. if (self == __pthread_main_thread) {
  82273. -#ifdef USE_TLS
  82274. +#ifdef __UCLIBC_HAS_TLS__
  82275. waitpid(manager_thread->p_pid, NULL, __WCLONE);
  82276. #else
  82277. waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
  82278. @@ -1121,7 +1114,7 @@
  82279. __pthread_main_thread = self;
  82280. THREAD_SETMEM(self, p_nextlive, self);
  82281. THREAD_SETMEM(self, p_prevlive, self);
  82282. -#if !(USE_TLS && HAVE___THREAD)
  82283. +#ifndef __UCLIBC_HAS_TLS__
  82284. /* Now this thread modifies the global variables. */
  82285. THREAD_SETMEM(self, p_errnop, &_errno);
  82286. THREAD_SETMEM(self, p_h_errnop, &_h_errno);
  82287. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setegid.c uClibc-git/libpthread/linuxthreads/pthread_setegid.c
  82288. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setegid.c 2012-05-15 09:20:09.000000000 +0200
  82289. +++ uClibc-git/libpthread/linuxthreads/pthread_setegid.c 2014-02-03 12:32:57.000000000 +0100
  82290. @@ -12,9 +12,8 @@
  82291. Lesser General Public License for more details.
  82292. You should have received a copy of the GNU Lesser General Public
  82293. - License along with the GNU C Library; if not, write to the Free
  82294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82295. - 02111-1307 USA. */
  82296. + License along with the GNU C Library; if not, see
  82297. + <http://www.gnu.org/licenses/>. */
  82298. #include <pthread.h>
  82299. #include <unistd.h>
  82300. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_seteuid.c uClibc-git/libpthread/linuxthreads/pthread_seteuid.c
  82301. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_seteuid.c 2012-05-15 09:20:09.000000000 +0200
  82302. +++ uClibc-git/libpthread/linuxthreads/pthread_seteuid.c 2014-02-03 12:32:57.000000000 +0100
  82303. @@ -12,9 +12,8 @@
  82304. Lesser General Public License for more details.
  82305. You should have received a copy of the GNU Lesser General Public
  82306. - License along with the GNU C Library; if not, write to the Free
  82307. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82308. - 02111-1307 USA. */
  82309. + License along with the GNU C Library; if not, see
  82310. + <http://www.gnu.org/licenses/>. */
  82311. #include <pthread.h>
  82312. #include <unistd.h>
  82313. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setgid.c uClibc-git/libpthread/linuxthreads/pthread_setgid.c
  82314. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setgid.c 2012-05-15 09:20:09.000000000 +0200
  82315. +++ uClibc-git/libpthread/linuxthreads/pthread_setgid.c 2014-02-03 12:32:57.000000000 +0100
  82316. @@ -12,9 +12,8 @@
  82317. Lesser General Public License for more details.
  82318. You should have received a copy of the GNU Lesser General Public
  82319. - License along with the GNU C Library; if not, write to the Free
  82320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82321. - 02111-1307 USA. */
  82322. + License along with the GNU C Library; if not, see
  82323. + <http://www.gnu.org/licenses/>. */
  82324. #include <pthread.h>
  82325. #include <unistd.h>
  82326. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setregid.c uClibc-git/libpthread/linuxthreads/pthread_setregid.c
  82327. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setregid.c 2012-05-15 09:20:09.000000000 +0200
  82328. +++ uClibc-git/libpthread/linuxthreads/pthread_setregid.c 2014-02-03 12:32:57.000000000 +0100
  82329. @@ -12,9 +12,8 @@
  82330. Lesser General Public License for more details.
  82331. You should have received a copy of the GNU Lesser General Public
  82332. - License along with the GNU C Library; if not, write to the Free
  82333. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82334. - 02111-1307 USA. */
  82335. + License along with the GNU C Library; if not, see
  82336. + <http://www.gnu.org/licenses/>. */
  82337. #include <pthread.h>
  82338. #include <unistd.h>
  82339. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresgid.c uClibc-git/libpthread/linuxthreads/pthread_setresgid.c
  82340. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresgid.c 2012-05-15 09:20:09.000000000 +0200
  82341. +++ uClibc-git/libpthread/linuxthreads/pthread_setresgid.c 2014-02-03 12:32:57.000000000 +0100
  82342. @@ -12,9 +12,8 @@
  82343. Lesser General Public License for more details.
  82344. You should have received a copy of the GNU Lesser General Public
  82345. - License along with the GNU C Library; if not, write to the Free
  82346. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82347. - 02111-1307 USA. */
  82348. + License along with the GNU C Library; if not, see
  82349. + <http://www.gnu.org/licenses/>. */
  82350. #include <pthread.h>
  82351. #include <unistd.h>
  82352. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresuid.c uClibc-git/libpthread/linuxthreads/pthread_setresuid.c
  82353. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setresuid.c 2012-05-15 09:20:09.000000000 +0200
  82354. +++ uClibc-git/libpthread/linuxthreads/pthread_setresuid.c 2014-02-03 12:32:57.000000000 +0100
  82355. @@ -12,9 +12,8 @@
  82356. Lesser General Public License for more details.
  82357. You should have received a copy of the GNU Lesser General Public
  82358. - License along with the GNU C Library; if not, write to the Free
  82359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82360. - 02111-1307 USA. */
  82361. + License along with the GNU C Library; if not, see
  82362. + <http://www.gnu.org/licenses/>. */
  82363. #include <pthread.h>
  82364. #include <unistd.h>
  82365. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setreuid.c uClibc-git/libpthread/linuxthreads/pthread_setreuid.c
  82366. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setreuid.c 2012-05-15 09:20:09.000000000 +0200
  82367. +++ uClibc-git/libpthread/linuxthreads/pthread_setreuid.c 2014-02-03 12:32:57.000000000 +0100
  82368. @@ -12,9 +12,8 @@
  82369. Lesser General Public License for more details.
  82370. You should have received a copy of the GNU Lesser General Public
  82371. - License along with the GNU C Library; if not, write to the Free
  82372. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82373. - 02111-1307 USA. */
  82374. + License along with the GNU C Library; if not, see
  82375. + <http://www.gnu.org/licenses/>. */
  82376. #include <pthread.h>
  82377. #include <unistd.h>
  82378. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setuid.c uClibc-git/libpthread/linuxthreads/pthread_setuid.c
  82379. --- uClibc-0.9.33.2/libpthread/linuxthreads/pthread_setuid.c 2012-05-15 09:20:09.000000000 +0200
  82380. +++ uClibc-git/libpthread/linuxthreads/pthread_setuid.c 2014-02-03 12:32:57.000000000 +0100
  82381. @@ -12,9 +12,8 @@
  82382. Lesser General Public License for more details.
  82383. You should have received a copy of the GNU Lesser General Public
  82384. - License along with the GNU C Library; if not, write to the Free
  82385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82386. - 02111-1307 USA. */
  82387. + License along with the GNU C Library; if not, see
  82388. + <http://www.gnu.org/licenses/>. */
  82389. #include <pthread.h>
  82390. #include <unistd.h>
  82391. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/pt-machine.c uClibc-git/libpthread/linuxthreads/pt-machine.c
  82392. --- uClibc-0.9.33.2/libpthread/linuxthreads/pt-machine.c 2012-05-15 09:20:09.000000000 +0200
  82393. +++ uClibc-git/libpthread/linuxthreads/pt-machine.c 2014-02-03 12:32:56.000000000 +0100
  82394. @@ -13,9 +13,8 @@
  82395. Lesser General Public License for more details.
  82396. You should have received a copy of the GNU Lesser General Public
  82397. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82398. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82399. - Boston, MA 02111-1307, USA. */
  82400. + License along with the GNU C Library; see the file COPYING.LIB. If
  82401. + not, see <http://www.gnu.org/licenses/>. */
  82402. #define PT_EI
  82403. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/rwlock.c uClibc-git/libpthread/linuxthreads/rwlock.c
  82404. --- uClibc-0.9.33.2/libpthread/linuxthreads/rwlock.c 2012-05-15 09:20:09.000000000 +0200
  82405. +++ uClibc-git/libpthread/linuxthreads/rwlock.c 2014-02-03 12:32:57.000000000 +0100
  82406. @@ -15,9 +15,8 @@
  82407. Lesser General Public License for more details.
  82408. You should have received a copy of the GNU Lesser General Public
  82409. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82410. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82411. - Boston, MA 02111-1307, USA. */
  82412. + License along with the GNU C Library; see the file COPYING.LIB. If
  82413. + not, see <http://www.gnu.org/licenses/>. */
  82414. #include <bits/libc-lock.h>
  82415. #include <errno.h>
  82416. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.c uClibc-git/libpthread/linuxthreads/semaphore.c
  82417. --- uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.c 2012-05-15 09:20:09.000000000 +0200
  82418. +++ uClibc-git/libpthread/linuxthreads/semaphore.c 2014-02-03 12:32:57.000000000 +0100
  82419. @@ -15,6 +15,7 @@
  82420. /* Semaphores a la POSIX 1003.1b */
  82421. #include <errno.h>
  82422. +#include <limits.h>
  82423. #include "pthread.h"
  82424. #include "semaphore.h"
  82425. #include "internals.h"
  82426. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.h uClibc-git/libpthread/linuxthreads/semaphore.h
  82427. --- uClibc-0.9.33.2/libpthread/linuxthreads/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  82428. +++ uClibc-git/libpthread/linuxthreads/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  82429. @@ -17,6 +17,7 @@
  82430. #include <features.h>
  82431. #include <sys/types.h>
  82432. +#include <limits.h>
  82433. #ifdef __USE_XOPEN2K
  82434. # define __need_timespec
  82435. # include <time.h>
  82436. @@ -42,7 +43,9 @@
  82437. #define SEM_FAILED ((sem_t *) 0)
  82438. /* Maximum value the semaphore can have. */
  82439. +#ifndef SEM_VALUE_MAX
  82440. #define SEM_VALUE_MAX (2147483647)
  82441. +#endif
  82442. __BEGIN_DECLS
  82443. @@ -55,13 +58,13 @@
  82444. extern int sem_destroy (sem_t *__sem) __THROW;
  82445. /* Open a named semaphore NAME with open flags OFLAG. */
  82446. -extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  82447. +extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
  82448. /* Close descriptor for named semaphore SEM. */
  82449. extern int sem_close (sem_t *__sem) __THROW;
  82450. /* Remove named semaphore NAME. */
  82451. -extern int sem_unlink (__const char *__name) __THROW;
  82452. +extern int sem_unlink (const char *__name) __THROW;
  82453. /* Wait for SEM being posted.
  82454. @@ -75,7 +78,7 @@
  82455. This function is a cancellation point and therefore not marked with
  82456. __THROW. */
  82457. extern int sem_timedwait (sem_t *__restrict __sem,
  82458. - __const struct timespec *__restrict __abstime);
  82459. + const struct timespec *__restrict __abstime);
  82460. #endif
  82461. /* Test whether SEM is posted. */
  82462. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/signals.c uClibc-git/libpthread/linuxthreads/signals.c
  82463. --- uClibc-0.9.33.2/libpthread/linuxthreads/signals.c 2012-05-15 09:20:09.000000000 +0200
  82464. +++ uClibc-git/libpthread/linuxthreads/signals.c 2014-02-03 12:32:57.000000000 +0100
  82465. @@ -20,9 +20,6 @@
  82466. #include "internals.h"
  82467. #include "spinlock.h"
  82468. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  82469. -extern __typeof(sigaction) __libc_sigaction;
  82470. -
  82471. int pthread_sigmask(int how, const sigset_t * newmask, sigset_t * oldmask)
  82472. {
  82473. sigset_t mask;
  82474. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/specific.c uClibc-git/libpthread/linuxthreads/specific.c
  82475. --- uClibc-0.9.33.2/libpthread/linuxthreads/specific.c 2012-05-15 09:20:09.000000000 +0200
  82476. +++ uClibc-git/libpthread/linuxthreads/specific.c 2014-02-03 12:32:57.000000000 +0100
  82477. @@ -212,7 +212,7 @@
  82478. __pthread_unlock(THREAD_GETMEM(self, p_lock));
  82479. }
  82480. -#if !(USE_TLS && HAVE___THREAD)
  82481. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  82482. /* Thread-specific data for libc. */
  82483. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c
  82484. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  82485. +++ uClibc-git/libpthread/linuxthreads/sysdeps/alpha/elf/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  82486. @@ -13,9 +13,8 @@
  82487. Lesser General Public License for more details.
  82488. You should have received a copy of the GNU Lesser General Public
  82489. - License along with the GNU C Library; if not, write to the Free
  82490. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82491. - 02111-1307 USA. */
  82492. + License along with the GNU C Library; if not, see
  82493. + <http://www.gnu.org/licenses/>. */
  82494. /* This file is compiled into assembly code which is then munged by a sed
  82495. script into two files: crti.s and crtn.s.
  82496. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c
  82497. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82498. +++ uClibc-git/libpthread/linuxthreads/sysdeps/alpha/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82499. @@ -13,9 +13,8 @@
  82500. Lesser General Public License for more details.
  82501. You should have received a copy of the GNU Lesser General Public
  82502. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82503. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82504. - Boston, MA 02111-1307, USA. */
  82505. + License along with the GNU C Library; see the file COPYING.LIB. If
  82506. + not, see <http://www.gnu.org/licenses/>. */
  82507. #include <errno.h>
  82508. #include <pthread.h>
  82509. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h
  82510. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82511. +++ uClibc-git/libpthread/linuxthreads/sysdeps/alpha/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82512. @@ -17,8 +17,7 @@
  82513. You should have received a copy of the GNU Lesser General Public
  82514. License along with the GNU C Library; see the file COPYING.LIB. If not,
  82515. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82516. - Boston, MA 02111-1307, USA. */
  82517. + see <http://www.gnu.org/licenses/>. */
  82518. #ifndef _PT_MACHINE_H
  82519. #define _PT_MACHINE_H 1
  82520. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/alpha/tls.h
  82521. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/alpha/tls.h 2012-05-15 09:20:09.000000000 +0200
  82522. +++ uClibc-git/libpthread/linuxthreads/sysdeps/alpha/tls.h 2014-02-03 12:32:57.000000000 +0100
  82523. @@ -13,9 +13,8 @@
  82524. Lesser General Public License for more details.
  82525. You should have received a copy of the GNU Lesser General Public
  82526. - License along with the GNU C Library; if not, write to the Free
  82527. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82528. - 02111-1307 USA. */
  82529. + License along with the GNU C Library; if not, see
  82530. + <http://www.gnu.org/licenses/>. */
  82531. #ifndef _TLS_H
  82532. #define _TLS_H
  82533. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/arm/pspinlock.c
  82534. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82535. +++ uClibc-git/libpthread/linuxthreads/sysdeps/arm/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82536. @@ -13,9 +13,8 @@
  82537. Lesser General Public License for more details.
  82538. You should have received a copy of the GNU Lesser General Public
  82539. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82540. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82541. - Boston, MA 02111-1307, USA. */
  82542. + License along with the GNU C Library; see the file COPYING.LIB. If
  82543. + not, see <http://www.gnu.org/licenses/>. */
  82544. #include <errno.h>
  82545. #include <pthread.h>
  82546. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/arm/pt-machine.h
  82547. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82548. +++ uClibc-git/libpthread/linuxthreads/sysdeps/arm/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82549. @@ -15,9 +15,8 @@
  82550. Lesser General Public License for more details.
  82551. You should have received a copy of the GNU Lesser General Public
  82552. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82553. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82554. - Boston, MA 02111-1307, USA. */
  82555. + License along with the GNU C Library; see the file COPYING.LIB. If
  82556. + not, see <http://www.gnu.org/licenses/>. */
  82557. #ifndef _PT_MACHINE_H
  82558. #define _PT_MACHINE_H 1
  82559. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/sysdep.h uClibc-git/libpthread/linuxthreads/sysdeps/arm/sysdep.h
  82560. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/sysdep.h 2012-05-15 09:20:09.000000000 +0200
  82561. +++ uClibc-git/libpthread/linuxthreads/sysdeps/arm/sysdep.h 1970-01-01 01:00:00.000000000 +0100
  82562. @@ -1,137 +0,0 @@
  82563. -/* Generic asm macros used on many machines.
  82564. - Copyright (C) 1991,92,93,96,98,2002,2003 Free Software Foundation, Inc.
  82565. - This file is part of the GNU C Library.
  82566. -
  82567. - The GNU C Library is free software; you can redistribute it and/or
  82568. - modify it under the terms of the GNU Lesser General Public
  82569. - License as published by the Free Software Foundation; either
  82570. - version 2.1 of the License, or (at your option) any later version.
  82571. -
  82572. - The GNU C Library is distributed in the hope that it will be useful,
  82573. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  82574. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  82575. - Lesser General Public License for more details.
  82576. -
  82577. - You should have received a copy of the GNU Lesser General Public
  82578. - License along with the GNU C Library; if not, write to the Free
  82579. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82580. - 02111-1307 USA. */
  82581. -
  82582. -#ifndef C_LABEL
  82583. -
  82584. -/* Define a macro we can use to construct the asm name for a C symbol. */
  82585. -#ifdef NO_UNDERSCORES
  82586. -#ifdef __STDC__
  82587. -#define C_LABEL(name) name##:
  82588. -#else
  82589. -#define C_LABEL(name) name/**/:
  82590. -#endif
  82591. -#else
  82592. -#ifdef __STDC__
  82593. -#define C_LABEL(name) _##name##:
  82594. -#else
  82595. -#define C_LABEL(name) _/**/name/**/:
  82596. -#endif
  82597. -#endif
  82598. -
  82599. -#endif
  82600. -
  82601. -#ifdef __ASSEMBLER__
  82602. -/* Mark the end of function named SYM. This is used on some platforms
  82603. - to generate correct debugging information. */
  82604. -#ifndef END
  82605. -#define END(sym)
  82606. -#endif
  82607. -
  82608. -#ifndef JUMPTARGET
  82609. -#define JUMPTARGET(sym) sym
  82610. -#endif
  82611. -
  82612. -/* Makros to generate eh_frame unwind information. */
  82613. -# ifdef HAVE_ASM_CFI_DIRECTIVES
  82614. -# define cfi_startproc .cfi_startproc
  82615. -# define cfi_endproc .cfi_endproc
  82616. -# define cfi_def_cfa(reg, off) .cfi_def_cfa reg, off
  82617. -# define cfi_def_cfa_register(reg) .cfi_def_cfa_register reg
  82618. -# define cfi_def_cfa_offset(off) .cfi_def_cfa_offset off
  82619. -# define cfi_adjust_cfa_offset(off) .cfi_adjust_cfa_offset off
  82620. -# define cfi_offset(reg, off) .cfi_offset reg, off
  82621. -# define cfi_rel_offset(reg, off) .cfi_rel_offset reg, off
  82622. -# define cfi_register(r1, r2) .cfi_register r1, r2
  82623. -# define cfi_return_column(reg) .cfi_return_column reg
  82624. -# define cfi_restore(reg) .cfi_restore reg
  82625. -# define cfi_same_value(reg) .cfi_same_value reg
  82626. -# define cfi_undefined(reg) .cfi_undefined reg
  82627. -# define cfi_remember_state .cfi_remember_state
  82628. -# define cfi_restore_state .cfi_restore_state
  82629. -# define cfi_window_save .cfi_window_save
  82630. -# else
  82631. -# define cfi_startproc
  82632. -# define cfi_endproc
  82633. -# define cfi_def_cfa(reg, off)
  82634. -# define cfi_def_cfa_register(reg)
  82635. -# define cfi_def_cfa_offset(off)
  82636. -# define cfi_adjust_cfa_offset(off)
  82637. -# define cfi_offset(reg, off)
  82638. -# define cfi_rel_offset(reg, off)
  82639. -# define cfi_register(r1, r2)
  82640. -# define cfi_return_column(reg)
  82641. -# define cfi_restore(reg)
  82642. -# define cfi_same_value(reg)
  82643. -# define cfi_undefined(reg)
  82644. -# define cfi_remember_state
  82645. -# define cfi_restore_state
  82646. -# define cfi_window_save
  82647. -# endif
  82648. -
  82649. -#else /* ! ASSEMBLER */
  82650. -# ifdef HAVE_ASM_CFI_DIRECTIVES
  82651. -# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
  82652. -# define CFI_STRINGIFY2(Name) #Name
  82653. -# define CFI_STARTPROC ".cfi_startproc"
  82654. -# define CFI_ENDPROC ".cfi_endproc"
  82655. -# define CFI_DEF_CFA(reg, off) \
  82656. - ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
  82657. -# define CFI_DEF_CFA_REGISTER(reg) \
  82658. - ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
  82659. -# define CFI_DEF_CFA_OFFSET(off) \
  82660. - ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
  82661. -# define CFI_ADJUST_CFA_OFFSET(off) \
  82662. - ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
  82663. -# define CFI_OFFSET(reg, off) \
  82664. - ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
  82665. -# define CFI_REL_OFFSET(reg, off) \
  82666. - ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
  82667. -# define CFI_REGISTER(r1, r2) \
  82668. - ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
  82669. -# define CFI_RETURN_COLUMN(reg) \
  82670. - ".cfi_return_column " CFI_STRINGIFY(reg)
  82671. -# define CFI_RESTORE(reg) \
  82672. - ".cfi_restore " CFI_STRINGIFY(reg)
  82673. -# define CFI_UNDEFINED(reg) \
  82674. - ".cfi_undefined " CFI_STRINGIFY(reg)
  82675. -# define CFI_REMEMBER_STATE \
  82676. - ".cfi_remember_state"
  82677. -# define CFI_RESTORE_STATE \
  82678. - ".cfi_restore_state"
  82679. -# define CFI_WINDOW_SAVE \
  82680. - ".cfi_window_save"
  82681. -# else
  82682. -# define CFI_STARTPROC
  82683. -# define CFI_ENDPROC
  82684. -# define CFI_DEF_CFA(reg, off)
  82685. -# define CFI_DEF_CFA_REGISTER(reg)
  82686. -# define CFI_DEF_CFA_OFFSET(off)
  82687. -# define CFI_ADJUST_CFA_OFFSET(off)
  82688. -# define CFI_OFFSET(reg, off)
  82689. -# define CFI_REL_OFFSET(reg, off)
  82690. -# define CFI_REGISTER(r1, r2)
  82691. -# define CFI_RETURN_COLUMN(reg)
  82692. -# define CFI_RESTORE(reg)
  82693. -# define CFI_UNDEFINED(reg)
  82694. -# define CFI_REMEMBER_STATE
  82695. -# define CFI_RESTORE_STATE
  82696. -# define CFI_WINDOW_SAVE
  82697. -# endif
  82698. -
  82699. -#endif /* __ASSEMBLER__ */
  82700. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/arm/tls.h
  82701. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/arm/tls.h 2012-05-15 09:20:09.000000000 +0200
  82702. +++ uClibc-git/libpthread/linuxthreads/sysdeps/arm/tls.h 2014-02-03 12:32:57.000000000 +0100
  82703. @@ -13,9 +13,8 @@
  82704. Lesser General Public License for more details.
  82705. You should have received a copy of the GNU Lesser General Public
  82706. - License along with the GNU C Library; if not, write to the Free
  82707. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82708. - 02111-1307 USA. */
  82709. + License along with the GNU C Library; if not, see
  82710. + <http://www.gnu.org/licenses/>. */
  82711. #ifndef _TLS_H
  82712. #define _TLS_H
  82713. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/cris/pspinlock.c
  82714. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82715. +++ uClibc-git/libpthread/linuxthreads/sysdeps/cris/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82716. @@ -13,9 +13,8 @@
  82717. Lesser General Public License for more details.
  82718. You should have received a copy of the GNU Lesser General Public
  82719. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82720. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82721. - Boston, MA 02111-1307, USA. */
  82722. + License along with the GNU C Library; see the file COPYING.LIB. If
  82723. + not, see <http://www.gnu.org/licenses/>. */
  82724. #include <errno.h>
  82725. #include <pthread.h>
  82726. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/cris/pt-machine.h
  82727. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/cris/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82728. +++ uClibc-git/libpthread/linuxthreads/sysdeps/cris/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82729. @@ -14,9 +14,8 @@
  82730. Lesser General Public License for more details.
  82731. You should have received a copy of the GNU Lesser General Public
  82732. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82733. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82734. - Boston, MA 02111-1307, USA. */
  82735. + License along with the GNU C Library; see the file COPYING.LIB. If
  82736. + not, see <http://www.gnu.org/licenses/>. */
  82737. #ifndef _PT_MACHINE_H
  82738. #define _PT_MACHINE_H 1
  82739. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c
  82740. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82741. +++ uClibc-git/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82742. @@ -13,9 +13,8 @@
  82743. Lesser General Public License for more details.
  82744. You should have received a copy of the GNU Lesser General Public
  82745. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82746. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82747. - Boston, MA 02111-1307, USA. */
  82748. + License along with the GNU C Library; see the file COPYING.LIB. If
  82749. + not, see <http://www.gnu.org/licenses/>. */
  82750. #include <errno.h>
  82751. #include <pthread.h>
  82752. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h
  82753. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82754. +++ uClibc-git/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82755. @@ -15,9 +15,8 @@
  82756. Lesser General Public License for more details.
  82757. You should have received a copy of the GNU Lesser General Public
  82758. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82759. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82760. - Boston, MA 02111-1307, USA. */
  82761. + License along with the GNU C Library; see the file COPYING.LIB. If
  82762. + not, see <http://www.gnu.org/licenses/>. */
  82763. #ifndef _PT_MACHINE_H
  82764. #define _PT_MACHINE_H 1
  82765. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h
  82766. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82767. +++ uClibc-git/libpthread/linuxthreads/sysdeps/i386/i686/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82768. @@ -15,9 +15,8 @@
  82769. Lesser General Public License for more details.
  82770. You should have received a copy of the GNU Lesser General Public
  82771. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82772. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82773. - Boston, MA 02111-1307, USA. */
  82774. + License along with the GNU C Library; see the file COPYING.LIB. If
  82775. + not, see <http://www.gnu.org/licenses/>. */
  82776. #ifndef _PT_MACHINE_H
  82777. #define _PT_MACHINE_H 1
  82778. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/i386/pspinlock.c
  82779. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82780. +++ uClibc-git/libpthread/linuxthreads/sysdeps/i386/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82781. @@ -13,9 +13,8 @@
  82782. Lesser General Public License for more details.
  82783. You should have received a copy of the GNU Lesser General Public
  82784. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82785. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82786. - Boston, MA 02111-1307, USA. */
  82787. + License along with the GNU C Library; see the file COPYING.LIB. If
  82788. + not, see <http://www.gnu.org/licenses/>. */
  82789. #include <errno.h>
  82790. #include <pthread.h>
  82791. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/i386/pt-machine.h
  82792. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82793. +++ uClibc-git/libpthread/linuxthreads/sysdeps/i386/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82794. @@ -15,9 +15,8 @@
  82795. Lesser General Public License for more details.
  82796. You should have received a copy of the GNU Lesser General Public
  82797. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82798. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82799. - Boston, MA 02111-1307, USA. */
  82800. + License along with the GNU C Library; see the file COPYING.LIB. If
  82801. + not, see <http://www.gnu.org/licenses/>. */
  82802. #if defined __pentiumpro__ || defined __pentium4__ || defined __athlon__ || \
  82803. defined __k8__
  82804. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/i386/tls.h
  82805. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/tls.h 2012-05-15 09:20:09.000000000 +0200
  82806. +++ uClibc-git/libpthread/linuxthreads/sysdeps/i386/tls.h 2014-02-03 12:32:57.000000000 +0100
  82807. @@ -13,9 +13,8 @@
  82808. Lesser General Public License for more details.
  82809. You should have received a copy of the GNU Lesser General Public
  82810. - License along with the GNU C Library; if not, write to the Free
  82811. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82812. - 02111-1307 USA. */
  82813. + License along with the GNU C Library; if not, see
  82814. + <http://www.gnu.org/licenses/>. */
  82815. #ifndef _TLS_H
  82816. #define _TLS_H
  82817. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/useldt.h uClibc-git/libpthread/linuxthreads/sysdeps/i386/useldt.h
  82818. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/i386/useldt.h 2012-05-15 09:20:09.000000000 +0200
  82819. +++ uClibc-git/libpthread/linuxthreads/sysdeps/i386/useldt.h 2014-02-03 12:32:57.000000000 +0100
  82820. @@ -16,8 +16,7 @@
  82821. You should have received a copy of the GNU Lesser General Public
  82822. License along with the GNU C Library; see the file COPYING.LIB. If not,
  82823. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82824. - Boston, MA 02111-1307, USA. */
  82825. + see <http://www.gnu.org/licenses/>. */
  82826. #ifndef __ASSEMBLER__
  82827. #include <stddef.h> /* For offsetof. */
  82828. @@ -87,7 +86,7 @@
  82829. because we inherited the value set up in the main thread by TLS setup.
  82830. We need to extract that value and set up the same segment in this
  82831. thread. */
  82832. -#if defined (USE_TLS) && USE_TLS
  82833. +#ifdef __UCLIBC_HAS_TLS__
  82834. # define DO_SET_THREAD_AREA_REUSE(nr) 1
  82835. #else
  82836. /* Without TLS, we do the initialization of the main thread, where NR == 0. */
  82837. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c
  82838. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82839. +++ uClibc-git/libpthread/linuxthreads/sysdeps/ia64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82840. @@ -14,9 +14,8 @@
  82841. Lesser General Public License for more details.
  82842. You should have received a copy of the GNU Lesser General Public
  82843. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82844. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82845. - Boston, MA 02111-1307, USA. */
  82846. + License along with the GNU C Library; see the file COPYING.LIB. If
  82847. + not, see <http://www.gnu.org/licenses/>. */
  82848. #include <errno.h>
  82849. #include <pthread.h>
  82850. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h
  82851. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82852. +++ uClibc-git/libpthread/linuxthreads/sysdeps/ia64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82853. @@ -14,9 +14,8 @@
  82854. Lesser General Public License for more details.
  82855. You should have received a copy of the GNU Lesser General Public
  82856. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82857. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82858. - Boston, MA 02111-1307, USA. */
  82859. + License along with the GNU C Library; see the file COPYING.LIB. If
  82860. + not, see <http://www.gnu.org/licenses/>. */
  82861. #ifndef _PT_MACHINE_H
  82862. #define _PT_MACHINE_H 1
  82863. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym uClibc-git/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym
  82864. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2012-05-15 09:20:09.000000000 +0200
  82865. +++ uClibc-git/libpthread/linuxthreads/sysdeps/ia64/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  82866. @@ -2,7 +2,7 @@
  82867. #include <tls.h>
  82868. --
  82869. -#ifdef USE_TLS
  82870. +#ifdef __UCLIBC_HAS_TLS__
  82871. MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads) - sizeof (struct _pthread_descr_struct)
  82872. #else
  82873. MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
  82874. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/ia64/tls.h
  82875. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/ia64/tls.h 2012-05-15 09:20:09.000000000 +0200
  82876. +++ uClibc-git/libpthread/linuxthreads/sysdeps/ia64/tls.h 2014-02-03 12:32:57.000000000 +0100
  82877. @@ -13,9 +13,8 @@
  82878. Lesser General Public License for more details.
  82879. You should have received a copy of the GNU Lesser General Public
  82880. - License along with the GNU C Library; if not, write to the Free
  82881. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82882. - 02111-1307 USA. */
  82883. + License along with the GNU C Library; if not, see
  82884. + <http://www.gnu.org/licenses/>. */
  82885. #ifndef _TLS_H
  82886. #define _TLS_H
  82887. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c
  82888. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82889. +++ uClibc-git/libpthread/linuxthreads/sysdeps/m68k/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82890. @@ -13,9 +13,8 @@
  82891. Lesser General Public License for more details.
  82892. You should have received a copy of the GNU Lesser General Public
  82893. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82894. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82895. - Boston, MA 02111-1307, USA. */
  82896. + License along with the GNU C Library; see the file COPYING.LIB. If
  82897. + not, see <http://www.gnu.org/licenses/>. */
  82898. #include <errno.h>
  82899. #include <pthread.h>
  82900. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h
  82901. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82902. +++ uClibc-git/libpthread/linuxthreads/sysdeps/m68k/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82903. @@ -16,8 +16,7 @@
  82904. You should have received a copy of the GNU Lesser General Public
  82905. License along with the GNU C Library; see the file COPYING.LIB. If
  82906. - not, write to the Free Software Foundation, Inc.,
  82907. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  82908. + not, see <http://www.gnu.org/licenses/>. */
  82909. #ifndef _PT_MACHINE_H
  82910. #define _PT_MACHINE_H 1
  82911. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/mips/pspinlock.c
  82912. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82913. +++ uClibc-git/libpthread/linuxthreads/sysdeps/mips/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82914. @@ -13,9 +13,8 @@
  82915. Lesser General Public License for more details.
  82916. You should have received a copy of the GNU Lesser General Public
  82917. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82918. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82919. - Boston, MA 02111-1307, USA. */
  82920. + License along with the GNU C Library; see the file COPYING.LIB. If
  82921. + not, see <http://www.gnu.org/licenses/>. */
  82922. #include <errno.h>
  82923. #include <pthread.h>
  82924. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/mips/pt-machine.h
  82925. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82926. +++ uClibc-git/libpthread/linuxthreads/sysdeps/mips/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82927. @@ -18,8 +18,7 @@
  82928. You should have received a copy of the GNU Lesser General Public
  82929. License along with the GNU C Library; see the file COPYING.LIB. If
  82930. - not, write to the Free Software Foundation, Inc.,
  82931. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  82932. + not, see <http://www.gnu.org/licenses/>. */
  82933. #ifndef _PT_MACHINE_H
  82934. #define _PT_MACHINE_H 1
  82935. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/mips/tls.h
  82936. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/mips/tls.h 2012-05-15 09:20:09.000000000 +0200
  82937. +++ uClibc-git/libpthread/linuxthreads/sysdeps/mips/tls.h 2014-02-03 12:32:57.000000000 +0100
  82938. @@ -13,9 +13,8 @@
  82939. Lesser General Public License for more details.
  82940. You should have received a copy of the GNU Lesser General Public
  82941. - License along with the GNU C Library; if not, write to the Free
  82942. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  82943. - 02111-1307 USA. */
  82944. + License along with the GNU C Library; if not, see
  82945. + <http://www.gnu.org/licenses/>. */
  82946. #ifndef _TLS_H
  82947. #define _TLS_H
  82948. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c
  82949. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82950. +++ uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82951. @@ -13,9 +13,8 @@
  82952. Lesser General Public License for more details.
  82953. You should have received a copy of the GNU Lesser General Public
  82954. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82955. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82956. - Boston, MA 02111-1307, USA. */
  82957. + License along with the GNU C Library; see the file COPYING.LIB. If
  82958. + not, see <http://www.gnu.org/licenses/>. */
  82959. #include <errno.h>
  82960. #include <pthread.h>
  82961. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h
  82962. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82963. +++ uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc32/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82964. @@ -16,8 +16,7 @@
  82965. You should have received a copy of the GNU Lesser General Public
  82966. License along with the GNU C Library; see the file COPYING.LIB. If
  82967. - not, write to the Free Software Foundation, Inc.,
  82968. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  82969. + not, see <http://www.gnu.org/licenses/>. */
  82970. /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor
  82971. User's Manual', by IBM and Motorola. */
  82972. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c
  82973. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  82974. +++ uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  82975. @@ -13,9 +13,8 @@
  82976. Lesser General Public License for more details.
  82977. You should have received a copy of the GNU Lesser General Public
  82978. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  82979. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  82980. - Boston, MA 02111-1307, USA. */
  82981. + License along with the GNU C Library; see the file COPYING.LIB. If
  82982. + not, see <http://www.gnu.org/licenses/>. */
  82983. #include <errno.h>
  82984. #include <pthread.h>
  82985. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h
  82986. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  82987. +++ uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/powerpc64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  82988. @@ -15,8 +15,7 @@
  82989. You should have received a copy of the GNU Library General Public
  82990. License along with the GNU C Library; see the file COPYING.LIB. If
  82991. - not, write to the Free Software Foundation, Inc.,
  82992. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  82993. + not, see <http://www.gnu.org/licenses/>. */
  82994. /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor
  82995. User's Manual', by IBM and Motorola. */
  82996. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym
  82997. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2012-05-15 09:20:09.000000000 +0200
  82998. +++ uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  82999. @@ -3,7 +3,7 @@
  83000. -- This line separates the #include lines from conditionals.
  83001. -# ifdef USE_TLS
  83002. +# ifdef __UCLIBC_HAS_TLS__
  83003. -- Abuse tls.h macros to derive offsets relative to the thread register.
  83004. # undef __thread_register
  83005. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/tls.h
  83006. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/powerpc/tls.h 2012-05-15 09:20:09.000000000 +0200
  83007. +++ uClibc-git/libpthread/linuxthreads/sysdeps/powerpc/tls.h 2014-02-03 12:32:57.000000000 +0100
  83008. @@ -13,9 +13,8 @@
  83009. Lesser General Public License for more details.
  83010. You should have received a copy of the GNU Lesser General Public
  83011. - License along with the GNU C Library; if not, write to the Free
  83012. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83013. - 02111-1307 USA. */
  83014. + License along with the GNU C Library; if not, see
  83015. + <http://www.gnu.org/licenses/>. */
  83016. #ifndef _TLS_H
  83017. #define _TLS_H
  83018. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h
  83019. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h 2012-05-15 09:20:09.000000000 +0200
  83020. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/initspin.h 2014-02-03 12:32:57.000000000 +0100
  83021. @@ -13,9 +13,8 @@
  83022. Lesser General Public License for more details.
  83023. You should have received a copy of the GNU Lesser General Public
  83024. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83025. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83026. - Boston, MA 02111-1307, USA. */
  83027. + License along with the GNU C Library; see the file COPYING.LIB. If
  83028. + not, see <http://www.gnu.org/licenses/>. */
  83029. /* Initial value of a spinlock. Most platforms should use zero,
  83030. unless they only implement a "test and clear" operation instead of
  83031. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h
  83032. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2012-05-15 09:20:09.000000000 +0200
  83033. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/libc-lock.h 2014-02-03 12:32:57.000000000 +0100
  83034. @@ -14,9 +14,8 @@
  83035. Lesser General Public License for more details.
  83036. You should have received a copy of the GNU Lesser General Public
  83037. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83038. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83039. - Boston, MA 02111-1307, USA. */
  83040. + License along with the GNU C Library; see the file COPYING.LIB. If
  83041. + not, see <http://www.gnu.org/licenses/>. */
  83042. #ifndef _BITS_LIBC_LOCK_H
  83043. #define _BITS_LIBC_LOCK_H 1
  83044. @@ -293,7 +292,7 @@
  83045. library. */
  83046. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  83047. - __const pthread_mutexattr_t *__mutex_attr);
  83048. + const pthread_mutexattr_t *__mutex_attr);
  83049. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  83050. @@ -312,7 +311,7 @@
  83051. #ifdef __USE_UNIX98
  83052. extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
  83053. - __const pthread_rwlockattr_t *__attr);
  83054. + const pthread_rwlockattr_t *__attr);
  83055. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  83056. @@ -331,7 +330,7 @@
  83057. void (*__destr_function) (void *));
  83058. extern int __pthread_setspecific (pthread_key_t __key,
  83059. - __const void *__pointer);
  83060. + const void *__pointer);
  83061. extern void *__pthread_getspecific (pthread_key_t __key);
  83062. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h
  83063. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h 2012-05-15 09:20:09.000000000 +0200
  83064. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/libc-tsd.h 2014-02-03 12:32:57.000000000 +0100
  83065. @@ -13,18 +13,16 @@
  83066. Lesser General Public License for more details.
  83067. You should have received a copy of the GNU Lesser General Public
  83068. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83069. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83070. - Boston, MA 02111-1307, USA. */
  83071. + License along with the GNU C Library; see the file COPYING.LIB. If
  83072. + not, see <http://www.gnu.org/licenses/>. */
  83073. #ifndef _BITS_LIBC_TSD_H
  83074. #define _BITS_LIBC_TSD_H 1
  83075. #include <linuxthreads/descr.h>
  83076. +#ifdef __UCLIBC_HAS_TLS__
  83077. #include <tls.h>
  83078. -#if USE_TLS && HAVE___THREAD
  83079. -
  83080. /* When __thread works, the generic definition is what we want. */
  83081. # include <sysdeps/generic/bits/libc-tsd.h>
  83082. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h
  83083. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  83084. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  83085. @@ -19,6 +19,9 @@
  83086. #ifndef _BITS_PTHREADTYPES_H
  83087. #define _BITS_PTHREADTYPES_H 1
  83088. +#define __need_size_t
  83089. +#include <stddef.h>
  83090. +
  83091. #define __need_schedparam
  83092. #include <bits/sched.h>
  83093. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h
  83094. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  83095. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  83096. @@ -13,9 +13,8 @@
  83097. Lesser General Public License for more details.
  83098. You should have received a copy of the GNU Lesser General Public
  83099. - License along with the GNU C Library; if not, write to the Free
  83100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83101. - 02111-1307 USA. */
  83102. + License along with the GNU C Library; if not, see
  83103. + <http://www.gnu.org/licenses/>. */
  83104. #ifndef _BITS_TYPES_H
  83105. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  83106. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/.cvsignore uClibc-git/libpthread/linuxthreads/sysdeps/pthread/.cvsignore
  83107. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  83108. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  83109. @@ -1,2 +0,0 @@
  83110. -.cvsignore
  83111. -*.os
  83112. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c
  83113. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c 2012-05-15 09:20:09.000000000 +0200
  83114. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/errno-loc.c 2014-02-03 12:32:57.000000000 +0100
  83115. @@ -14,26 +14,25 @@
  83116. Lesser General Public License for more details.
  83117. You should have received a copy of the GNU Lesser General Public
  83118. - License along with the GNU C Library; if not, write to the Free
  83119. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83120. - 02111-1307 USA. */
  83121. + License along with the GNU C Library; if not, see
  83122. + <http://www.gnu.org/licenses/>. */
  83123. #include <errno.h>
  83124. #include <linuxthreads/internals.h>
  83125. #include <sysdep-cancel.h>
  83126. -#if ! USE___THREAD && !RTLD_PRIVATE_ERRNO
  83127. +#if !defined __UCLIBC_HAS_TLS__ && !RTLD_PRIVATE_ERRNO
  83128. #undef errno
  83129. extern int errno;
  83130. #endif
  83131. int *
  83132. -#if ! USE___THREAD
  83133. +#ifndef __UCLIBC_HAS_TLS__
  83134. weak_const_function
  83135. #endif
  83136. __errno_location (void)
  83137. {
  83138. -#if ! USE___THREAD && !defined NOT_IN_libc
  83139. +#if !defined __UCLIBC_HAS_TLS__ && !defined NOT_IN_libc
  83140. if (! SINGLE_THREAD_P)
  83141. {
  83142. pthread_descr self = thread_self();
  83143. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/flockfile.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/flockfile.c
  83144. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/flockfile.c 2012-05-15 09:20:09.000000000 +0200
  83145. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/flockfile.c 2014-02-03 12:32:57.000000000 +0100
  83146. @@ -13,9 +13,8 @@
  83147. Lesser General Public License for more details.
  83148. You should have received a copy of the GNU Lesser General Public
  83149. - License along with the GNU C Library; if not, write to the Free
  83150. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83151. - 02111-1307 USA. */
  83152. + License along with the GNU C Library; if not, see
  83153. + <http://www.gnu.org/licenses/>. */
  83154. #include <pthread.h>
  83155. #include <stdio.h>
  83156. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c
  83157. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c 2012-05-15 09:20:09.000000000 +0200
  83158. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/ftrylockfile.c 2014-02-03 12:32:57.000000000 +0100
  83159. @@ -13,9 +13,8 @@
  83160. Lesser General Public License for more details.
  83161. You should have received a copy of the GNU Lesser General Public
  83162. - License along with the GNU C Library; if not, write to the Free
  83163. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83164. - 02111-1307 USA. */
  83165. + License along with the GNU C Library; if not, see
  83166. + <http://www.gnu.org/licenses/>. */
  83167. #include <errno.h>
  83168. #include <pthread.h>
  83169. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c
  83170. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c 2012-05-15 09:20:09.000000000 +0200
  83171. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/funlockfile.c 2014-02-03 12:32:57.000000000 +0100
  83172. @@ -13,9 +13,8 @@
  83173. Lesser General Public License for more details.
  83174. You should have received a copy of the GNU Lesser General Public
  83175. - License along with the GNU C Library; if not, write to the Free
  83176. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83177. - 02111-1307 USA. */
  83178. + License along with the GNU C Library; if not, see
  83179. + <http://www.gnu.org/licenses/>. */
  83180. #include <pthread.h>
  83181. #include <stdio.h>
  83182. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c
  83183. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c 2012-05-15 09:20:09.000000000 +0200
  83184. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/getcpuclockid.c 2014-02-03 12:32:57.000000000 +0100
  83185. @@ -13,9 +13,8 @@
  83186. Lesser General Public License for more details.
  83187. You should have received a copy of the GNU Lesser General Public
  83188. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83189. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83190. - Boston, MA 02111-1307, USA. */
  83191. + License along with the GNU C Library; see the file COPYING.LIB. If
  83192. + not, see <http://www.gnu.org/licenses/>. */
  83193. #include <errno.h>
  83194. #include <pthread.h>
  83195. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c
  83196. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c 2012-05-15 09:20:09.000000000 +0200
  83197. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/herrno-loc.c 2014-02-03 12:32:57.000000000 +0100
  83198. @@ -12,16 +12,15 @@
  83199. Lesser General Public License for more details.
  83200. You should have received a copy of the GNU Lesser General Public
  83201. - License along with the GNU C Library; if not, write to the Free
  83202. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83203. - 02111-1307 USA. */
  83204. + License along with the GNU C Library; if not, see
  83205. + <http://www.gnu.org/licenses/>. */
  83206. #include <netdb.h>
  83207. #include <tls.h>
  83208. #include <linuxthreads/internals.h>
  83209. #include <sysdep-cancel.h>
  83210. -#if ! USE___THREAD
  83211. +#ifndef __UCLIBC_HAS_TLS__
  83212. # undef h_errno
  83213. extern int h_errno;
  83214. #endif
  83215. @@ -31,7 +30,7 @@
  83216. weak_const_function
  83217. __h_errno_location (void)
  83218. {
  83219. -#if ! USE___THREAD
  83220. +#ifndef __UCLIBC_HAS_TLS__
  83221. if (! SINGLE_THREAD_P)
  83222. {
  83223. pthread_descr self = thread_self();
  83224. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/list.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/list.h
  83225. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/list.h 2012-05-15 09:20:09.000000000 +0200
  83226. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/list.h 2014-02-03 12:32:57.000000000 +0100
  83227. @@ -13,9 +13,8 @@
  83228. Lesser General Public License for more details.
  83229. You should have received a copy of the GNU Lesser General Public
  83230. - License along with the GNU C Library; if not, write to the Free
  83231. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83232. - 02111-1307 USA. */
  83233. + License along with the GNU C Library; if not, see
  83234. + <http://www.gnu.org/licenses/>. */
  83235. #ifndef _LIST_H
  83236. #define _LIST_H 1
  83237. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h
  83238. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h 2012-05-15 09:20:09.000000000 +0200
  83239. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/malloc-machine.h 2014-02-03 12:32:57.000000000 +0100
  83240. @@ -14,9 +14,8 @@
  83241. Lesser General Public License for more details.
  83242. You should have received a copy of the GNU Lesser General Public
  83243. - License along with the GNU C Library; if not, write to the Free
  83244. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83245. - 02111-1307 USA. */
  83246. + License along with the GNU C Library; if not, see
  83247. + <http://www.gnu.org/licenses/>. */
  83248. #ifndef _MALLOC_MACHINE_H
  83249. #define _MALLOC_MACHINE_H
  83250. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h
  83251. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  83252. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/not-cancel.h 2014-02-03 12:32:57.000000000 +0100
  83253. @@ -14,18 +14,26 @@
  83254. Lesser General Public License for more details.
  83255. You should have received a copy of the GNU Lesser General Public
  83256. - License along with the GNU C Library; if not, write to the Free
  83257. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83258. - 02111-1307 USA. */
  83259. + License along with the GNU C Library; if not, see
  83260. + <http://www.gnu.org/licenses/>. */
  83261. #include <sys/types.h>
  83262. #include <sysdep.h>
  83263. /* Uncancelable open. */
  83264. +#if defined __NR_openat && !defined __NR_open
  83265. +#define open_not_cancel(name, flags, mode) \
  83266. + INLINE_SYSCALL (openat, 4, (int) (AT_FDCWD), (const char *) (name), \
  83267. + (flags), (mode))
  83268. +#define open_not_cancel_2(name, flags) \
  83269. + INLINE_SYSCALL (openat, 3, (int) (AT_FDCWD), (const char *) (name), \
  83270. + (flags))
  83271. +#else
  83272. #define open_not_cancel(name, flags, mode) \
  83273. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  83274. #define open_not_cancel_2(name, flags) \
  83275. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  83276. +#endif
  83277. /* Uncancelable openat. */
  83278. #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  83279. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h
  83280. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h 2012-05-15 09:20:09.000000000 +0200
  83281. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/posix-timer.h 2014-02-03 12:32:57.000000000 +0100
  83282. @@ -14,9 +14,8 @@
  83283. Lesser General Public License for more details.
  83284. You should have received a copy of the GNU Lesser General Public
  83285. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83286. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83287. - Boston, MA 02111-1307, USA. */
  83288. + License along with the GNU C Library; see the file COPYING.LIB. If
  83289. + not, see <http://www.gnu.org/licenses/>. */
  83290. #include <limits.h>
  83291. #include <signal.h>
  83292. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h
  83293. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h 2012-05-15 09:20:09.000000000 +0200
  83294. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/pthread-functions.h 2014-02-03 12:32:57.000000000 +0100
  83295. @@ -13,9 +13,8 @@
  83296. Lesser General Public License for more details.
  83297. You should have received a copy of the GNU Lesser General Public
  83298. - License along with the GNU C Library; if not, write to the Free
  83299. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83300. - 02111-1307 USA. */
  83301. + License along with the GNU C Library; if not, see
  83302. + <http://www.gnu.org/licenses/>. */
  83303. #ifndef _PTHREAD_FUNCTIONS_H
  83304. #define _PTHREAD_FUNCTIONS_H 1
  83305. @@ -72,10 +71,12 @@
  83306. void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
  83307. char *targetframe);
  83308. pthread_descr (*ptr_pthread_thread_self) (void);
  83309. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  83310. int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
  83311. void * (*ptr_pthread_internal_tsd_get) (int key);
  83312. void ** __attribute__ ((__const__))
  83313. (*ptr_pthread_internal_tsd_address) (int key);
  83314. +#endif
  83315. int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
  83316. struct sigaction *oact);
  83317. int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
  83318. @@ -95,4 +96,6 @@
  83319. /* Variable in libc.so. */
  83320. extern struct pthread_functions __libc_pthread_functions attribute_hidden;
  83321. +extern int * __libc_pthread_init (const struct pthread_functions *functions);
  83322. +
  83323. #endif /* pthread-functions.h */
  83324. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread.h uClibc-git/libpthread/linuxthreads/sysdeps/pthread/pthread.h
  83325. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pthread.h 2012-05-15 09:20:09.000000000 +0200
  83326. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/pthread.h 2014-02-03 12:32:57.000000000 +0100
  83327. @@ -161,7 +161,7 @@
  83328. if ATTR is NULL), and call function START_ROUTINE with given
  83329. arguments ARG. */
  83330. extern int pthread_create (pthread_t *__restrict __threadp,
  83331. - __const pthread_attr_t *__restrict __attr,
  83332. + const pthread_attr_t *__restrict __attr,
  83333. void *(*__start_routine) (void *),
  83334. void *__restrict __arg) __THROW;
  83335. @@ -201,16 +201,16 @@
  83336. int __detachstate) __THROW;
  83337. /* Return in *DETACHSTATE the `detachstate' attribute in *ATTR. */
  83338. -extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  83339. +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  83340. int *__detachstate) __THROW;
  83341. /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */
  83342. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  83343. - __const struct sched_param *__restrict
  83344. + const struct sched_param *__restrict
  83345. __param) __THROW;
  83346. /* Return in *PARAM the scheduling parameters of *ATTR. */
  83347. -extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  83348. +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
  83349. __attr,
  83350. struct sched_param *__restrict __param)
  83351. __THROW;
  83352. @@ -220,7 +220,7 @@
  83353. __THROW;
  83354. /* Return in *POLICY the scheduling policy of *ATTR. */
  83355. -extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  83356. +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  83357. __attr, int *__restrict __policy)
  83358. __THROW;
  83359. @@ -229,7 +229,7 @@
  83360. int __inherit) __THROW;
  83361. /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */
  83362. -extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  83363. +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  83364. __attr, int *__restrict __inherit)
  83365. __THROW;
  83366. @@ -238,7 +238,7 @@
  83367. __THROW;
  83368. /* Return in *SCOPE the scheduling contention scope of *ATTR. */
  83369. -extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  83370. +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  83371. int *__restrict __scope) __THROW;
  83372. #ifdef __USE_UNIX98
  83373. @@ -247,7 +247,7 @@
  83374. size_t __guardsize) __THROW;
  83375. /* Get the size of the guard area at the bottom of the thread. */
  83376. -extern int pthread_attr_getguardsize (__const pthread_attr_t *__restrict
  83377. +extern int pthread_attr_getguardsize (const pthread_attr_t *__restrict
  83378. __attr, size_t *__restrict __guardsize)
  83379. __THROW;
  83380. #endif
  83381. @@ -261,7 +261,7 @@
  83382. void *__stackaddr) __THROW;
  83383. /* Return the previously set address for the stack. */
  83384. -extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  83385. +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  83386. __attr, void **__restrict __stackaddr)
  83387. __THROW;
  83388. #endif
  83389. @@ -274,7 +274,7 @@
  83390. size_t __stacksize) __THROW;
  83391. /* Return the previously set address for the stack. */
  83392. -extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  83393. +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  83394. void **__restrict __stackaddr,
  83395. size_t *__restrict __stacksize) __THROW;
  83396. #endif
  83397. @@ -286,7 +286,7 @@
  83398. size_t __stacksize) __THROW;
  83399. /* Return the currently used minimal stack size. */
  83400. -extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  83401. +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  83402. __attr, size_t *__restrict __stacksize)
  83403. __THROW;
  83404. @@ -302,7 +302,7 @@
  83405. /* Set the scheduling parameters for TARGET_THREAD according to POLICY
  83406. and *PARAM. */
  83407. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  83408. - __const struct sched_param *__param)
  83409. + const struct sched_param *__param)
  83410. __THROW;
  83411. /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */
  83412. @@ -324,7 +324,7 @@
  83413. /* Initialize MUTEX using attributes in *MUTEX_ATTR, or use the
  83414. default values if later is NULL. */
  83415. extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
  83416. - __const pthread_mutexattr_t *__restrict
  83417. + const pthread_mutexattr_t *__restrict
  83418. __mutex_attr) __THROW;
  83419. /* Destroy MUTEX. */
  83420. @@ -339,7 +339,7 @@
  83421. #ifdef __USE_XOPEN2K
  83422. /* Wait until lock becomes available, or specified time passes. */
  83423. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  83424. - __const struct timespec *__restrict
  83425. + const struct timespec *__restrict
  83426. __abstime) __THROW;
  83427. #endif
  83428. @@ -357,7 +357,7 @@
  83429. extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __THROW;
  83430. /* Get the process-shared flag of the mutex attribute ATTR. */
  83431. -extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  83432. +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  83433. __restrict __attr,
  83434. int *__restrict __pshared) __THROW;
  83435. @@ -373,7 +373,7 @@
  83436. __THROW;
  83437. /* Return in *KIND the mutex kind attribute in *ATTR. */
  83438. -extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  83439. +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  83440. __attr, int *__restrict __kind) __THROW;
  83441. #endif
  83442. @@ -383,7 +383,7 @@
  83443. /* Initialize condition variable COND using attributes ATTR, or use
  83444. the default values if later is NULL. */
  83445. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  83446. - __const pthread_condattr_t *__restrict
  83447. + const pthread_condattr_t *__restrict
  83448. __cond_attr) __THROW;
  83449. /* Destroy condition variable COND. */
  83450. @@ -406,7 +406,7 @@
  83451. (00:00:00 GMT, January 1, 1970). */
  83452. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  83453. pthread_mutex_t *__restrict __mutex,
  83454. - __const struct timespec *__restrict
  83455. + const struct timespec *__restrict
  83456. __abstime);
  83457. /* Functions for handling condition variable attributes. */
  83458. @@ -418,7 +418,7 @@
  83459. extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __THROW;
  83460. /* Get the process-shared flag of the condition variable attribute ATTR. */
  83461. -extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  83462. +extern int pthread_condattr_getpshared (const pthread_condattr_t *
  83463. __restrict __attr,
  83464. int *__restrict __pshared) __THROW;
  83465. @@ -433,7 +433,7 @@
  83466. /* Initialize read-write lock RWLOCK using attributes ATTR, or use
  83467. the default values if later is NULL. */
  83468. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  83469. - __const pthread_rwlockattr_t *__restrict
  83470. + const pthread_rwlockattr_t *__restrict
  83471. __attr) __THROW;
  83472. /* Destroy read-write lock RWLOCK. */
  83473. @@ -448,7 +448,7 @@
  83474. # ifdef __USE_XOPEN2K
  83475. /* Try to acquire read lock for RWLOCK or return after specfied time. */
  83476. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  83477. - __const struct timespec *__restrict
  83478. + const struct timespec *__restrict
  83479. __abstime) __THROW;
  83480. # endif
  83481. @@ -461,7 +461,7 @@
  83482. # ifdef __USE_XOPEN2K
  83483. /* Try to acquire write lock for RWLOCK or return after specfied time. */
  83484. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  83485. - __const struct timespec *__restrict
  83486. + const struct timespec *__restrict
  83487. __abstime) __THROW;
  83488. # endif
  83489. @@ -478,7 +478,7 @@
  83490. extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __THROW;
  83491. /* Return current setting of process-shared attribute of ATTR in PSHARED. */
  83492. -extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  83493. +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  83494. __restrict __attr,
  83495. int *__restrict __pshared) __THROW;
  83496. @@ -487,7 +487,7 @@
  83497. int __pshared) __THROW;
  83498. /* Return current setting of reader/writer preference. */
  83499. -extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr,
  83500. +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *__attr,
  83501. int *__pref) __THROW;
  83502. /* Set reader/write preference. */
  83503. @@ -520,7 +520,7 @@
  83504. /* Barriers are a also a new feature in 1003.1j-2000. */
  83505. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  83506. - __const pthread_barrierattr_t *__restrict
  83507. + const pthread_barrierattr_t *__restrict
  83508. __attr, unsigned int __count) __THROW;
  83509. extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __THROW;
  83510. @@ -529,7 +529,7 @@
  83511. extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __THROW;
  83512. -extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  83513. +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  83514. __restrict __attr,
  83515. int *__restrict __pshared) __THROW;
  83516. @@ -556,7 +556,7 @@
  83517. /* Store POINTER in the thread-specific data slot identified by KEY. */
  83518. extern int pthread_setspecific (pthread_key_t __key,
  83519. - __const void *__pointer) __THROW;
  83520. + const void *__pointer) __THROW;
  83521. /* Return current value of the thread-specific data slot identified by KEY. */
  83522. extern void *pthread_getspecific (pthread_key_t __key) __THROW;
  83523. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c
  83524. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  83525. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  83526. @@ -23,8 +23,7 @@
  83527. You should have received a copy of the GNU Lesser General Public
  83528. License along with the GNU C Library; see the file COPYING.LIB. If not,
  83529. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  83530. - Boston, MA 02111-1307, USA. */
  83531. + see <http://www.gnu.org/licenses/>. */
  83532. /* This file is compiled into assembly code which is then munged by a sed
  83533. script into two files: crti.s and crtn.s.
  83534. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c
  83535. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c 2012-05-15 09:20:09.000000000 +0200
  83536. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/ptlongjmp.c 2014-02-03 12:32:57.000000000 +0100
  83537. @@ -19,13 +19,6 @@
  83538. #include "pthread.h"
  83539. #include "internals.h"
  83540. -/* These functions are not declared anywhere since they shouldn't be
  83541. - used at another place but here. */
  83542. -extern void __libc_siglongjmp (sigjmp_buf env, int val)
  83543. - __attribute__ ((noreturn));
  83544. -extern void __libc_longjmp (sigjmp_buf env, int val)
  83545. - __attribute__ ((noreturn));
  83546. -
  83547. #ifdef SHARED
  83548. void siglongjmp (sigjmp_buf env, int val)
  83549. {
  83550. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/res-state.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/res-state.c
  83551. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/res-state.c 2012-05-15 09:20:09.000000000 +0200
  83552. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/res-state.c 2014-02-03 12:32:57.000000000 +0100
  83553. @@ -12,28 +12,27 @@
  83554. Lesser General Public License for more details.
  83555. You should have received a copy of the GNU Lesser General Public
  83556. - License along with the GNU C Library; if not, write to the Free
  83557. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83558. - 02111-1307 USA. */
  83559. + License along with the GNU C Library; if not, see
  83560. + <http://www.gnu.org/licenses/>. */
  83561. #include <resolv.h>
  83562. #include <tls.h>
  83563. #include <linuxthreads/internals.h>
  83564. #include <sysdep-cancel.h>
  83565. -#if ! USE___THREAD
  83566. +#ifndef __UCLIBC_HAS_TLS__
  83567. # undef _res
  83568. extern struct __res_state _res;
  83569. #endif
  83570. /* When threaded, _res may be a per-thread variable. */
  83571. struct __res_state *
  83572. -#if ! USE___THREAD
  83573. +#ifndef __UCLIBC_HAS_TLS__
  83574. weak_const_function
  83575. #endif
  83576. __res_state (void)
  83577. {
  83578. -#if ! USE___THREAD
  83579. +#ifndef __UCLIBC_HAS_TLS__
  83580. if (! SINGLE_THREAD_P)
  83581. {
  83582. pthread_descr self = thread_self();
  83583. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/sigaction.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/sigaction.c
  83584. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/sigaction.c 2012-05-15 09:20:09.000000000 +0200
  83585. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/sigaction.c 2014-02-03 12:32:57.000000000 +0100
  83586. @@ -13,9 +13,8 @@
  83587. Lesser General Public License for more details.
  83588. You should have received a copy of the GNU Lesser General Public
  83589. - License along with the GNU C Library; if not, write to the Free
  83590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83591. - 02111-1307 USA. */
  83592. + License along with the GNU C Library; if not, see
  83593. + <http://www.gnu.org/licenses/>. */
  83594. /* Somebody please explain what's going on here. --vda */
  83595. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_create.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_create.c
  83596. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  83597. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  83598. @@ -13,9 +13,8 @@
  83599. Lesser General Public License for more details.
  83600. You should have received a copy of the GNU Lesser General Public
  83601. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83602. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83603. - Boston, MA 02111-1307, USA. */
  83604. + License along with the GNU C Library; see the file COPYING.LIB. If
  83605. + not, see <http://www.gnu.org/licenses/>. */
  83606. #include <errno.h>
  83607. #include <signal.h>
  83608. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c
  83609. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c 2012-05-15 09:20:09.000000000 +0200
  83610. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_delete.c 2014-02-03 12:32:57.000000000 +0100
  83611. @@ -13,9 +13,8 @@
  83612. Lesser General Public License for more details.
  83613. You should have received a copy of the GNU Lesser General Public
  83614. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83615. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83616. - Boston, MA 02111-1307, USA. */
  83617. + License along with the GNU C Library; see the file COPYING.LIB. If
  83618. + not, see <http://www.gnu.org/licenses/>. */
  83619. #include <assert.h>
  83620. #include <errno.h>
  83621. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c
  83622. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c 2012-05-15 09:20:09.000000000 +0200
  83623. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_getoverr.c 2014-02-03 12:32:57.000000000 +0100
  83624. @@ -13,9 +13,8 @@
  83625. Lesser General Public License for more details.
  83626. You should have received a copy of the GNU Lesser General Public
  83627. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83628. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83629. - Boston, MA 02111-1307, USA. */
  83630. + License along with the GNU C Library; see the file COPYING.LIB. If
  83631. + not, see <http://www.gnu.org/licenses/>. */
  83632. #include <errno.h>
  83633. #include <pthread.h>
  83634. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c
  83635. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c 2012-05-15 09:20:09.000000000 +0200
  83636. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_gettime.c 2014-02-03 12:32:57.000000000 +0100
  83637. @@ -13,9 +13,8 @@
  83638. Lesser General Public License for more details.
  83639. You should have received a copy of the GNU Lesser General Public
  83640. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83641. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83642. - Boston, MA 02111-1307, USA. */
  83643. + License along with the GNU C Library; see the file COPYING.LIB. If
  83644. + not, see <http://www.gnu.org/licenses/>. */
  83645. #include <errno.h>
  83646. #include <pthread.h>
  83647. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c
  83648. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c 2012-05-15 09:20:09.000000000 +0200
  83649. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_routines.c 2014-02-03 12:32:57.000000000 +0100
  83650. @@ -14,9 +14,8 @@
  83651. Lesser General Public License for more details.
  83652. You should have received a copy of the GNU Lesser General Public
  83653. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83654. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83655. - Boston, MA 02111-1307, USA. */
  83656. + License along with the GNU C Library; see the file COPYING.LIB. If
  83657. + not, see <http://www.gnu.org/licenses/>. */
  83658. #include <assert.h>
  83659. #include <errno.h>
  83660. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c
  83661. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c 2012-05-15 09:20:09.000000000 +0200
  83662. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/timer_settime.c 2014-02-03 12:32:57.000000000 +0100
  83663. @@ -13,9 +13,8 @@
  83664. Lesser General Public License for more details.
  83665. You should have received a copy of the GNU Lesser General Public
  83666. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83667. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83668. - Boston, MA 02111-1307, USA. */
  83669. + License along with the GNU C Library; see the file COPYING.LIB. If
  83670. + not, see <http://www.gnu.org/licenses/>. */
  83671. #include <errno.h>
  83672. #include <pthread.h>
  83673. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c uClibc-git/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c
  83674. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c 2012-05-15 09:20:09.000000000 +0200
  83675. +++ uClibc-git/libpthread/linuxthreads/sysdeps/pthread/tst-timer.c 2014-02-03 12:32:57.000000000 +0100
  83676. @@ -14,9 +14,8 @@
  83677. Lesser General Public License for more details.
  83678. You should have received a copy of the GNU Lesser General Public
  83679. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83680. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83681. - Boston, MA 02111-1307, USA. */
  83682. + License along with the GNU C Library; see the file COPYING.LIB. If
  83683. + not, see <http://www.gnu.org/licenses/>. */
  83684. #include <errno.h>
  83685. #include <signal.h>
  83686. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/s390/pspinlock.c
  83687. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83688. +++ uClibc-git/libpthread/linuxthreads/sysdeps/s390/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83689. @@ -14,9 +14,8 @@
  83690. Lesser General Public License for more details.
  83691. You should have received a copy of the GNU Lesser General Public
  83692. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83693. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83694. - Boston, MA 02111-1307, USA. */
  83695. + License along with the GNU C Library; see the file COPYING.LIB. If
  83696. + not, see <http://www.gnu.org/licenses/>. */
  83697. #include <errno.h>
  83698. #include <pthread.h>
  83699. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h
  83700. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83701. +++ uClibc-git/libpthread/linuxthreads/sysdeps/s390/s390-32/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83702. @@ -15,9 +15,8 @@
  83703. Lesser General Public License for more details.
  83704. You should have received a copy of the GNU Lesser General Public
  83705. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83706. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83707. - Boston, MA 02111-1307, USA. */
  83708. + License along with the GNU C Library; see the file COPYING.LIB. If
  83709. + not, see <http://www.gnu.org/licenses/>. */
  83710. #ifndef _PT_MACHINE_H
  83711. #define _PT_MACHINE_H 1
  83712. @@ -58,7 +57,7 @@
  83713. #define CURRENT_STACK_FRAME stack_pointer
  83714. register char * stack_pointer __asm__ ("15");
  83715. -#ifdef USE_TLS
  83716. +#ifdef __UCLIBC_HAS_TLS__
  83717. /* Return the thread descriptor for the current thread. */
  83718. # define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ())
  83719. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h
  83720. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83721. +++ uClibc-git/libpthread/linuxthreads/sysdeps/s390/s390-64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83722. @@ -15,9 +15,8 @@
  83723. Lesser General Public License for more details.
  83724. You should have received a copy of the GNU Lesser General Public
  83725. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83726. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83727. - Boston, MA 02111-1307, USA. */
  83728. + License along with the GNU C Library; see the file COPYING.LIB. If
  83729. + not, see <http://www.gnu.org/licenses/>. */
  83730. #ifndef _PT_MACHINE_H
  83731. #define _PT_MACHINE_H 1
  83732. @@ -58,7 +57,7 @@
  83733. #define CURRENT_STACK_FRAME stack_pointer
  83734. register char * stack_pointer __asm__ ("15");
  83735. -#ifdef USE_TLS
  83736. +#ifdef __UCLIBC_HAS_TLS__
  83737. /* Return the thread descriptor for the current thread. */
  83738. # define THREAD_SELF ((pthread_descr) __builtin_thread_pointer ())
  83739. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/s390/tls.h
  83740. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/s390/tls.h 2012-05-15 09:20:09.000000000 +0200
  83741. +++ uClibc-git/libpthread/linuxthreads/sysdeps/s390/tls.h 2014-02-03 12:32:57.000000000 +0100
  83742. @@ -13,9 +13,8 @@
  83743. Lesser General Public License for more details.
  83744. You should have received a copy of the GNU Lesser General Public
  83745. - License along with the GNU C Library; if not, write to the Free
  83746. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83747. - 02111-1307 USA. */
  83748. + License along with the GNU C Library; if not, see
  83749. + <http://www.gnu.org/licenses/>. */
  83750. #ifndef _TLS_H
  83751. #define _TLS_H
  83752. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/sh/pspinlock.c
  83753. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83754. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sh/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83755. @@ -13,9 +13,8 @@
  83756. Lesser General Public License for more details.
  83757. You should have received a copy of the GNU Lesser General Public
  83758. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83759. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83760. - Boston, MA 02111-1307, USA. */
  83761. + License along with the GNU C Library; see the file COPYING.LIB. If
  83762. + not, see <http://www.gnu.org/licenses/>. */
  83763. #include <errno.h>
  83764. #include <pthread.h>
  83765. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/sh/pt-machine.h
  83766. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83767. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sh/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83768. @@ -15,9 +15,8 @@
  83769. Lesser General Public License for more details.
  83770. You should have received a copy of the GNU Lesser General Public
  83771. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83772. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83773. - Boston, MA 02111-1307, USA. */
  83774. + License along with the GNU C Library; see the file COPYING.LIB. If
  83775. + not, see <http://www.gnu.org/licenses/>. */
  83776. #ifndef _PT_MACHINE_H
  83777. #define _PT_MACHINE_H 1
  83778. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym uClibc-git/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym
  83779. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym 2012-05-15 09:20:09.000000000 +0200
  83780. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sh/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  83781. @@ -2,7 +2,7 @@
  83782. #include <tls.h>
  83783. --
  83784. -#ifdef USE_TLS
  83785. +#ifdef __UCLIBC_HAS_TLS__
  83786. MULTIPLE_THREADS_OFFSET offsetof (struct _pthread_descr_struct, p_multiple_threads)
  83787. TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
  83788. #else
  83789. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/sh/tls.h
  83790. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sh/tls.h 2012-05-15 09:20:09.000000000 +0200
  83791. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sh/tls.h 2014-02-03 12:32:57.000000000 +0100
  83792. @@ -13,9 +13,8 @@
  83793. Lesser General Public License for more details.
  83794. You should have received a copy of the GNU Lesser General Public
  83795. - License along with the GNU C Library; if not, write to the Free
  83796. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83797. - 02111-1307 USA. */
  83798. + License along with the GNU C Library; if not, see
  83799. + <http://www.gnu.org/licenses/>. */
  83800. #ifndef _TLS_H
  83801. #define _TLS_H
  83802. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c
  83803. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83804. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc32/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83805. @@ -13,9 +13,8 @@
  83806. Lesser General Public License for more details.
  83807. You should have received a copy of the GNU Lesser General Public
  83808. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83809. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83810. - Boston, MA 02111-1307, USA. */
  83811. + License along with the GNU C Library; see the file COPYING.LIB. If
  83812. + not, see <http://www.gnu.org/licenses/>. */
  83813. #include <errno.h>
  83814. #include <pthread.h>
  83815. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h
  83816. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83817. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83818. @@ -15,9 +15,8 @@
  83819. Lesser General Public License for more details.
  83820. You should have received a copy of the GNU Lesser General Public
  83821. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83822. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83823. - Boston, MA 02111-1307, USA. */
  83824. + License along with the GNU C Library; see the file COPYING.LIB. If
  83825. + not, see <http://www.gnu.org/licenses/>. */
  83826. #ifndef _PT_MACHINE_H
  83827. #define _PT_MACHINE_H 1
  83828. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c
  83829. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83830. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc32/sparcv9/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83831. @@ -13,9 +13,8 @@
  83832. Lesser General Public License for more details.
  83833. You should have received a copy of the GNU Lesser General Public
  83834. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83835. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83836. - Boston, MA 02111-1307, USA. */
  83837. + License along with the GNU C Library; see the file COPYING.LIB. If
  83838. + not, see <http://www.gnu.org/licenses/>. */
  83839. #include <errno.h>
  83840. #include <pthread.h>
  83841. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c
  83842. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  83843. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  83844. @@ -13,9 +13,8 @@
  83845. Lesser General Public License for more details.
  83846. You should have received a copy of the GNU Lesser General Public
  83847. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83848. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83849. - Boston, MA 02111-1307, USA. */
  83850. + License along with the GNU C Library; see the file COPYING.LIB. If
  83851. + not, see <http://www.gnu.org/licenses/>. */
  83852. #include <errno.h>
  83853. #include <pthread.h>
  83854. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
  83855. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  83856. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  83857. @@ -16,8 +16,7 @@
  83858. You should have received a copy of the GNU Lesser General Public
  83859. License along with the GNU C Library; see the file COPYING.LIB. If
  83860. - not, write to the Free Software Foundation, Inc.,
  83861. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  83862. + not, see <http://www.gnu.org/licenses/>. */
  83863. #ifndef _PT_MACHINE_H
  83864. #define _PT_MACHINE_H 1
  83865. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/sparc/tls.h
  83866. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/sparc/tls.h 2012-05-15 09:20:09.000000000 +0200
  83867. +++ uClibc-git/libpthread/linuxthreads/sysdeps/sparc/tls.h 2014-02-03 12:32:57.000000000 +0100
  83868. @@ -13,9 +13,8 @@
  83869. Lesser General Public License for more details.
  83870. You should have received a copy of the GNU Lesser General Public
  83871. - License along with the GNU C Library; if not, write to the Free
  83872. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83873. - 02111-1307 USA. */
  83874. + License along with the GNU C Library; if not, see
  83875. + <http://www.gnu.org/licenses/>. */
  83876. #ifndef _TLS_H
  83877. #define _TLS_H
  83878. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h
  83879. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h 2012-05-15 09:20:09.000000000 +0200
  83880. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocalim.h 2014-02-03 12:32:57.000000000 +0100
  83881. @@ -14,8 +14,7 @@
  83882. You should have received a copy of the GNU Library General Public
  83883. License along with the GNU C Library; see the file COPYING.LIB. If not,
  83884. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83885. - Boston, MA 02111-1307, USA. */
  83886. + see <http://www.gnu.org/licenses/>. */
  83887. #include <limits.h>
  83888. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c
  83889. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c 2012-05-15 09:20:09.000000000 +0200
  83890. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/allocrtsig.c 2014-02-03 12:32:57.000000000 +0100
  83891. @@ -14,9 +14,8 @@
  83892. Lesser General Public License for more details.
  83893. You should have received a copy of the GNU Lesser General Public
  83894. - License along with the GNU C Library; if not, write to the Free
  83895. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83896. - 02111-1307 USA. */
  83897. + License along with the GNU C Library; if not, see
  83898. + <http://www.gnu.org/licenses/>. */
  83899. #include <signal.h>
  83900. @@ -70,6 +69,7 @@
  83901. strong_alias (__libc_current_sigrtmax, __libc_current_sigrtmax_private)
  83902. libc_hidden_def (__libc_current_sigrtmax)
  83903. +#if 0
  83904. /* Allocate real-time signal with highest/lowest available
  83905. priority. Please note that we don't use a lock since we assume
  83906. this function to be called at program start. */
  83907. @@ -85,3 +85,4 @@
  83908. return high ? current_rtmin++ : current_rtmax--;
  83909. }
  83910. strong_alias (__libc_allocate_rtsig, __libc_allocate_rtsig_private)
  83911. +#endif
  83912. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
  83913. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  83914. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  83915. @@ -13,9 +13,8 @@
  83916. Lesser General Public License for more details.
  83917. You should have received a copy of the GNU Lesser General Public
  83918. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  83919. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  83920. - Boston, MA 02111-1307, USA. */
  83921. + License along with the GNU C Library; see the file COPYING.LIB. If
  83922. + not, see <http://www.gnu.org/licenses/>. */
  83923. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  83924. and defines LINK_MAX although filesystems have different maxima. A
  83925. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
  83926. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  83927. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  83928. @@ -13,9 +13,8 @@
  83929. Lesser General Public License for more details.
  83930. You should have received a copy of the GNU Lesser General Public
  83931. - License along with the GNU C Library; if not, write to the Free
  83932. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83933. - 02111-1307 USA. */
  83934. + License along with the GNU C Library; if not, see
  83935. + <http://www.gnu.org/licenses/>. */
  83936. #ifndef _BITS_TYPES_H
  83937. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  83938. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S
  83939. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2012-05-15 09:20:09.000000000 +0200
  83940. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/pt-sigsuspend.S 2014-02-03 12:32:57.000000000 +0100
  83941. @@ -13,9 +13,8 @@
  83942. Lesser General Public License for more details.
  83943. You should have received a copy of the GNU Lesser General Public
  83944. - License along with the GNU C Library; if not, write to the Free
  83945. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83946. - 02111-1307 USA. */
  83947. + License along with the GNU C Library; if not, see
  83948. + <http://www.gnu.org/licenses/>. */
  83949. #include <sysdep.h>
  83950. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
  83951. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  83952. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  83953. @@ -12,9 +12,8 @@
  83954. Lesser General Public License for more details.
  83955. You should have received a copy of the GNU Lesser General Public
  83956. - License along with the GNU C Library; if not, write to the Free
  83957. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83958. - 02111-1307 USA. */
  83959. + License along with the GNU C Library; if not, see
  83960. + <http://www.gnu.org/licenses/>. */
  83961. #include <sysdep.h>
  83962. #ifndef __ASSEMBLER__
  83963. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S
  83964. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2012-05-15 09:20:09.000000000 +0200
  83965. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/alpha/vfork.S 2014-02-03 12:32:57.000000000 +0100
  83966. @@ -12,9 +12,8 @@
  83967. Lesser General Public License for more details.
  83968. You should have received a copy of the GNU Lesser General Public
  83969. - License along with the GNU C Library; if not, write to the Free
  83970. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  83971. - 02111-1307 USA. */
  83972. + License along with the GNU C Library; if not, see
  83973. + <http://www.gnu.org/licenses/>. */
  83974. #include <sysdep-cancel.h>
  83975. @@ -30,7 +29,7 @@
  83976. #ifdef SHARED
  83977. ldq t0, __libc_pthread_functions(gp) !gprel
  83978. - bne t0, HIDDEN_JUMPTARGET (__fork) !samegp
  83979. + bne t0, HIDDEN_JUMPTARGET (fork) !samegp
  83980. #else
  83981. .weak pthread_create
  83982. ldq t0, pthread_create(gp) !literal
  83983. @@ -50,7 +49,7 @@
  83984. cfi_adjust_cfa_offset(16)
  83985. stq ra, 0(sp)
  83986. cfi_offset(ra, -16)
  83987. - jsr ra, HIDDEN_JUMPTARGET (__fork)
  83988. + jsr ra, HIDDEN_JUMPTARGET (fork)
  83989. ldgp gp, 0(ra)
  83990. ldq ra, 0(sp)
  83991. addq sp, 16, sp
  83992. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
  83993. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  83994. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  83995. @@ -13,9 +13,8 @@
  83996. Lesser General Public License for more details.
  83997. You should have received a copy of the GNU Lesser General Public
  83998. - License along with the GNU C Library; if not, write to the Free
  83999. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84000. - 02111-1307 USA. */
  84001. + License along with the GNU C Library; if not, see
  84002. + <http://www.gnu.org/licenses/>. */
  84003. #include <tls.h>
  84004. #include <pt-machine.h>
  84005. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S
  84006. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84007. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/arm/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84008. @@ -13,9 +13,8 @@
  84009. Lesser General Public License for more details.
  84010. You should have received a copy of the GNU Lesser General Public
  84011. - License along with the GNU C Library; if not, write to the Free
  84012. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84013. - 02111-1307 USA. */
  84014. + License along with the GNU C Library; if not, see
  84015. + <http://www.gnu.org/licenses/>. */
  84016. #include <sysdep-cancel.h>
  84017. #define _ERRNO_H 1
  84018. @@ -40,7 +39,7 @@
  84019. ldr r0, 1f
  84020. #endif
  84021. movs r0, r0
  84022. - bne HIDDEN_JUMPTARGET (__fork)
  84023. + bne HIDDEN_JUMPTARGET (fork)
  84024. DO_CALL (vfork, 0)
  84025. cmn a1, #4096
  84026. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore
  84027. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  84028. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  84029. @@ -1,2 +0,0 @@
  84030. -.cvsignore
  84031. -*.os
  84032. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c
  84033. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c 2012-05-15 09:20:09.000000000 +0200
  84034. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/execve.c 2014-02-03 12:32:57.000000000 +0100
  84035. @@ -12,9 +12,8 @@
  84036. Lesser General Public License for more details.
  84037. You should have received a copy of the GNU Lesser General Public
  84038. - License along with the GNU C Library; if not, write to the Free
  84039. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84040. - 02111-1307 USA. */
  84041. + License along with the GNU C Library; if not, see
  84042. + <http://www.gnu.org/licenses/>. */
  84043. #include <errno.h>
  84044. #include <unistd.h>
  84045. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c
  84046. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2012-05-15 09:20:09.000000000 +0200
  84047. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.c 2014-02-03 12:32:57.000000000 +0100
  84048. @@ -13,9 +13,8 @@
  84049. Lesser General Public License for more details.
  84050. You should have received a copy of the GNU Lesser General Public
  84051. - License along with the GNU C Library; if not, write to the Free
  84052. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84053. - 02111-1307 USA. */
  84054. + License along with the GNU C Library; if not, see
  84055. + <http://www.gnu.org/licenses/>. */
  84056. #include <errno.h>
  84057. #include <fork.h>
  84058. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h
  84059. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h 2012-05-15 09:20:09.000000000 +0200
  84060. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/fork.h 2014-02-03 12:32:57.000000000 +0100
  84061. @@ -13,9 +13,8 @@
  84062. Lesser General Public License for more details.
  84063. You should have received a copy of the GNU Lesser General Public
  84064. - License along with the GNU C Library; if not, write to the Free
  84065. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84066. - 02111-1307 USA. */
  84067. + License along with the GNU C Library; if not, see
  84068. + <http://www.gnu.org/licenses/>. */
  84069. #include <list.h>
  84070. #include <bits/libc-lock.h>
  84071. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h
  84072. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2012-05-15 09:20:09.000000000 +0200
  84073. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/bits/initspin.h 2014-02-03 12:32:57.000000000 +0100
  84074. @@ -13,9 +13,8 @@
  84075. Lesser General Public License for more details.
  84076. You should have received a copy of the GNU Lesser General Public
  84077. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84078. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84079. - Boston, MA 02111-1307, USA. */
  84080. + License along with the GNU C Library; see the file COPYING.LIB. If
  84081. + not, see <http://www.gnu.org/licenses/>. */
  84082. /* Initial value of a spinlock. PA-RISC only implements atomic load
  84083. and clear so this must be non-zero. */
  84084. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h
  84085. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 2012-05-15 09:20:09.000000000 +0200
  84086. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/malloc-machine.h 2014-02-03 12:32:57.000000000 +0100
  84087. @@ -15,9 +15,8 @@
  84088. Lesser General Public License for more details.
  84089. You should have received a copy of the GNU Lesser General Public
  84090. - License along with the GNU C Library; if not, write to the Free
  84091. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84092. - 02111-1307 USA. */
  84093. + License along with the GNU C Library; if not, see
  84094. + <http://www.gnu.org/licenses/>. */
  84095. #ifndef _MALLOC_MACHINE_H
  84096. #define _MALLOC_MACHINE_H
  84097. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c
  84098. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84099. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84100. @@ -23,8 +23,7 @@
  84101. You should have received a copy of the GNU Lesser General Public
  84102. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84103. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84104. - Boston, MA 02111-1307, USA. */
  84105. + see <http://www.gnu.org/licenses/>. */
  84106. /* This file is compiled into assembly code which is then munged by a sed
  84107. script into two files: crti.s and crtn.s.
  84108. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h
  84109. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84110. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/hppa/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84111. @@ -14,9 +14,8 @@
  84112. Lesser General Public License for more details.
  84113. You should have received a copy of the GNU Lesser General Public
  84114. - License along with the GNU C Library; if not, write to the Free
  84115. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84116. - 02111-1307 USA. */
  84117. + License along with the GNU C Library; if not, see
  84118. + <http://www.gnu.org/licenses/>. */
  84119. #include <sysdep.h>
  84120. #ifndef __ASSEMBLER__
  84121. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
  84122. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84123. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84124. @@ -13,9 +13,8 @@
  84125. Lesser General Public License for more details.
  84126. You should have received a copy of the GNU Lesser General Public
  84127. - License along with the GNU C Library; if not, write to the Free
  84128. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84129. - 02111-1307 USA. */
  84130. + License along with the GNU C Library; if not, see
  84131. + <http://www.gnu.org/licenses/>. */
  84132. #include <tls.h>
  84133. #include <pt-machine.h>
  84134. @@ -139,7 +138,7 @@
  84135. #endif
  84136. # ifndef __ASSEMBLER__
  84137. -# if defined FLOATING_STACKS && USE___THREAD && defined __PIC__
  84138. +# if defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__ && defined __PIC__
  84139. # define SINGLE_THREAD_P \
  84140. __builtin_expect (THREAD_GETMEM (THREAD_SELF, \
  84141. p_header.data.multiple_threads) == 0, 1)
  84142. @@ -155,7 +154,7 @@
  84143. # else
  84144. # if !defined __PIC__
  84145. # define SINGLE_THREAD_P cmpl $0, __local_multiple_threads
  84146. -# elif defined FLOATING_STACKS && USE___THREAD
  84147. +# elif defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__
  84148. # define SINGLE_THREAD_P cmpl $0, %gs:MULTIPLE_THREADS_OFFSET
  84149. # else
  84150. # if !defined NOT_IN_libc || defined IS_IN_libpthread
  84151. @@ -165,7 +164,7 @@
  84152. movl __local_multiple_threads@GOT(%ecx), %ecx;\
  84153. cmpl $0, (%ecx)
  84154. # endif
  84155. -# if !defined HAVE_HIDDEN || !USE___THREAD
  84156. +# if !defined HAVE_HIDDEN || !defined __UCLIBC_HAS_TLS__
  84157. # define SINGLE_THREAD_P \
  84158. SETUP_PIC_REG (cx); \
  84159. addl $_GLOBAL_OFFSET_TABLE_, %ecx; \
  84160. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S
  84161. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84162. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/i386/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84163. @@ -13,9 +13,8 @@
  84164. Lesser General Public License for more details.
  84165. You should have received a copy of the GNU Lesser General Public
  84166. - License along with the GNU C Library; if not, write to the Free
  84167. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84168. - 02111-1307 USA. */
  84169. + License along with the GNU C Library; if not, see
  84170. + <http://www.gnu.org/licenses/>. */
  84171. #include <sysdep-cancel.h>
  84172. #define _ERRNO_H 1
  84173. @@ -32,7 +31,7 @@
  84174. #ifdef __NR_vfork
  84175. # ifdef SHARED
  84176. -# if !defined HAVE_HIDDEN || !USE___THREAD
  84177. +# if !defined HAVE_HIDDEN || !defined __UCLIBC_HAS_TLS__
  84178. SETUP_PIC_REG (cx)
  84179. # else
  84180. call __i686.get_pc_thunk.cx
  84181. @@ -44,7 +43,7 @@
  84182. movl $pthread_create, %eax
  84183. testl %eax, %eax
  84184. # endif
  84185. - jne HIDDEN_JUMPTARGET (__fork)
  84186. + jne HIDDEN_JUMPTARGET (fork)
  84187. /* Pop the return PC value into ECX. */
  84188. popl %ecx
  84189. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h
  84190. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  84191. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  84192. @@ -13,9 +13,8 @@
  84193. Lesser General Public License for more details.
  84194. You should have received a copy of the GNU Lesser General Public
  84195. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84196. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84197. - Boston, MA 02111-1307, USA. */
  84198. + License along with the GNU C Library; see the file COPYING.LIB. If
  84199. + not, see <http://www.gnu.org/licenses/>. */
  84200. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  84201. and defines LINK_MAX although filesystems have different maxima. A
  84202. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h
  84203. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h 2012-05-15 09:20:09.000000000 +0200
  84204. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/fork.h 2014-02-03 12:32:57.000000000 +0100
  84205. @@ -13,9 +13,8 @@
  84206. Lesser General Public License for more details.
  84207. You should have received a copy of the GNU Lesser General Public
  84208. - License along with the GNU C Library; if not, write to the Free
  84209. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84210. - 02111-1307 USA. */
  84211. + License along with the GNU C Library; if not, see
  84212. + <http://www.gnu.org/licenses/>. */
  84213. #include <signal.h>
  84214. #include <sysdep.h>
  84215. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
  84216. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84217. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84218. @@ -23,8 +23,7 @@
  84219. You should have received a copy of the GNU Lesser General Public
  84220. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84221. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84222. - Boston, MA 02111-1307, USA. */
  84223. + see <http://www.gnu.org/licenses/>. */
  84224. /* This file is compiled into assembly code which is then munged by a sed
  84225. script into two files: crti.s and crtn.s.
  84226. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c
  84227. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2012-05-15 09:20:09.000000000 +0200
  84228. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-sigsuspend.c 2014-02-03 12:32:57.000000000 +0100
  84229. @@ -13,9 +13,8 @@
  84230. Lesser General Public License for more details.
  84231. You should have received a copy of the GNU Lesser General Public
  84232. - License along with the GNU C Library; if not, write to the Free
  84233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84234. - 02111-1307 USA. */
  84235. + License along with the GNU C Library; if not, see
  84236. + <http://www.gnu.org/licenses/>. */
  84237. #include <errno.h>
  84238. #include <signal.h>
  84239. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h
  84240. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84241. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84242. @@ -13,9 +13,8 @@
  84243. Lesser General Public License for more details.
  84244. You should have received a copy of the GNU Lesser General Public
  84245. - License along with the GNU C Library; if not, write to the Free
  84246. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84247. - 02111-1307 USA. */
  84248. + License along with the GNU C Library; if not, see
  84249. + <http://www.gnu.org/licenses/>. */
  84250. #include <sysdep.h>
  84251. #include <tls.h>
  84252. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S
  84253. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84254. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/ia64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84255. @@ -12,9 +12,8 @@
  84256. Lesser General Public License for more details.
  84257. You should have received a copy of the GNU Lesser General Public
  84258. - License along with the GNU C Library; if not, write to the Free
  84259. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84260. - 02111-1307 USA. */
  84261. + License along with the GNU C Library; if not, see
  84262. + <http://www.gnu.org/licenses/>. */
  84263. #include <sysdep-cancel.h>
  84264. @@ -38,7 +37,7 @@
  84265. #endif
  84266. ld8 r14 = [r14];;
  84267. cmp.ne p6, p7 = 0, r14
  84268. -(p6) br.cond.spnt.few HIDDEN_JUMPTARGET (__fork);;
  84269. +(p6) br.cond.spnt.few HIDDEN_JUMPTARGET (fork);;
  84270. alloc r2=ar.pfs,0,0,2,0
  84271. mov out0=CLONE_VM+CLONE_VFORK+SIGCHLD
  84272. mov out1=0 /* Standard sp value. */
  84273. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c
  84274. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c 2012-05-15 09:20:09.000000000 +0200
  84275. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/jmp-unwind.c 2014-02-03 12:32:57.000000000 +0100
  84276. @@ -13,9 +13,8 @@
  84277. Lesser General Public License for more details.
  84278. You should have received a copy of the GNU Lesser General Public
  84279. - License along with the GNU C Library; if not, write to the Free
  84280. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84281. - 02111-1307 USA. */
  84282. + License along with the GNU C Library; if not, see
  84283. + <http://www.gnu.org/licenses/>. */
  84284. #include <setjmp.h>
  84285. #include <stddef.h>
  84286. @@ -32,3 +31,4 @@
  84287. (env->__jmpbuf, __builtin_frame_address (0)),
  84288. (void) 0);
  84289. }
  84290. +libc_hidden_def(_longjmp_unwind)
  84291. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h
  84292. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84293. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84294. @@ -13,9 +13,8 @@
  84295. Lesser General Public License for more details.
  84296. You should have received a copy of the GNU Lesser General Public
  84297. - License along with the GNU C Library; if not, write to the Free
  84298. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84299. - 02111-1307 USA. */
  84300. + License along with the GNU C Library; if not, see
  84301. + <http://www.gnu.org/licenses/>. */
  84302. #include <sysdep.h>
  84303. #ifndef __ASSEMBLER__
  84304. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S
  84305. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84306. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/m68k/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84307. @@ -13,9 +13,8 @@
  84308. Lesser General Public License for more details.
  84309. You should have received a copy of the GNU Lesser General Public
  84310. - License along with the GNU C Library; if not, write to the Free
  84311. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84312. - 02111-1307 USA. */
  84313. + License along with the GNU C Library; if not, see
  84314. + <http://www.gnu.org/licenses/>. */
  84315. #include <sysdep-cancel.h>
  84316. #define _ERRNO_H 1
  84317. @@ -35,7 +34,7 @@
  84318. .weak pthread_create
  84319. movel #pthread_create, %d0
  84320. #endif
  84321. - jbne HIDDEN_JUMPTARGET (__fork)
  84322. + jbne HIDDEN_JUMPTARGET (fork)
  84323. #ifdef __NR_vfork
  84324. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h
  84325. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84326. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/mips64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84327. @@ -15,9 +15,8 @@
  84328. Lesser General Public License for more details.
  84329. You should have received a copy of the GNU Lesser General Public
  84330. - License along with the GNU C Library; if not, write to the Free
  84331. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84332. - 02111-1307 USA. */
  84333. + License along with the GNU C Library; if not, see
  84334. + <http://www.gnu.org/licenses/>. */
  84335. #include <sysdep.h>
  84336. #ifndef __ASSEMBLER__
  84337. @@ -31,7 +30,7 @@
  84338. # undef PSEUDO
  84339. # define PSEUDO(name, syscall_name, args) \
  84340. .align 2; \
  84341. - 99: \
  84342. + 99: move a0, v0; \
  84343. PTR_LA t9,__syscall_error; \
  84344. /* manual cpreturn. */ \
  84345. REG_L gp, STKOFF_GP(sp); \
  84346. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
  84347. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84348. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84349. @@ -13,9 +13,8 @@
  84350. Lesser General Public License for more details.
  84351. You should have received a copy of the GNU Lesser General Public
  84352. - License along with the GNU C Library; if not, write to the Free
  84353. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84354. - 02111-1307 USA. */
  84355. + License along with the GNU C Library; if not, see
  84356. + <http://www.gnu.org/licenses/>. */
  84357. #include <sysdep.h>
  84358. #ifndef __ASSEMBLER__
  84359. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S
  84360. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84361. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mips/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84362. @@ -12,9 +12,8 @@
  84363. Lesser General Public License for more details.
  84364. You should have received a copy of the GNU Lesser General Public
  84365. - License along with the GNU C Library; if not, write to the Free
  84366. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84367. - 02111-1307 USA. */
  84368. + License along with the GNU C Library; if not, see
  84369. + <http://www.gnu.org/licenses/>. */
  84370. /* vfork() is just a special case of clone(). */
  84371. @@ -80,6 +79,7 @@
  84372. /* Something bad happened -- no child created. */
  84373. L(error):
  84374. + move a0, v0
  84375. #ifdef __PIC__
  84376. PTR_LA t9, __syscall_error
  84377. RESTORE_GP64
  84378. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c
  84379. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c 2012-05-15 09:20:09.000000000 +0200
  84380. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/mq_notify.c 2014-02-03 12:32:57.000000000 +0100
  84381. @@ -13,9 +13,8 @@
  84382. Lesser General Public License for more details.
  84383. You should have received a copy of the GNU Lesser General Public
  84384. - License along with the GNU C Library; if not, write to the Free
  84385. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84386. - 02111-1307 USA. */
  84387. + License along with the GNU C Library; if not, see
  84388. + <http://www.gnu.org/licenses/>. */
  84389. #include <assert.h>
  84390. #include <errno.h>
  84391. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
  84392. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84393. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84394. @@ -13,9 +13,8 @@
  84395. Lesser General Public License for more details.
  84396. You should have received a copy of the GNU Lesser General Public
  84397. - License along with the GNU C Library; if not, write to the Free
  84398. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84399. - 02111-1307 USA. */
  84400. + License along with the GNU C Library; if not, see
  84401. + <http://www.gnu.org/licenses/>. */
  84402. #include <sysdep.h>
  84403. #include <tls.h>
  84404. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
  84405. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84406. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84407. @@ -12,9 +12,8 @@
  84408. Lesser General Public License for more details.
  84409. You should have received a copy of the GNU Lesser General Public
  84410. - License along with the GNU C Library; if not, write to the Free
  84411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84412. - 02111-1307 USA. */
  84413. + License along with the GNU C Library; if not, see
  84414. + <http://www.gnu.org/licenses/>. */
  84415. #include <sysdep-cancel.h>
  84416. #define _ERRNO_H 1
  84417. @@ -66,7 +65,7 @@
  84418. # endif
  84419. .Lhidden_fork:
  84420. - b HIDDEN_JUMPTARGET(__fork)
  84421. + b HIDDEN_JUMPTARGET(fork)
  84422. #endif
  84423. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
  84424. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84425. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84426. @@ -13,9 +13,8 @@
  84427. Lesser General Public License for more details.
  84428. You should have received a copy of the GNU Lesser General Public
  84429. - License along with the GNU C Library; if not, write to the Free
  84430. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84431. - 02111-1307 USA. */
  84432. + License along with the GNU C Library; if not, see
  84433. + <http://www.gnu.org/licenses/>. */
  84434. #include <sysdep.h>
  84435. #include <tls.h>
  84436. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
  84437. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84438. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84439. @@ -12,9 +12,8 @@
  84440. Lesser General Public License for more details.
  84441. You should have received a copy of the GNU Lesser General Public
  84442. - License along with the GNU C Library; if not, write to the Free
  84443. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84444. - 02111-1307 USA. */
  84445. + License along with the GNU C Library; if not, see
  84446. + <http://www.gnu.org/licenses/>. */
  84447. #include <sysdep-cancel.h>
  84448. #define _ERRNO_H 1
  84449. @@ -42,7 +41,7 @@
  84450. ld 10,.LC0@toc(2)
  84451. ld 10,0(10)
  84452. cmpwi 10,0
  84453. - bne- HIDDEN_JUMPTARGET(__fork)
  84454. + bne- HIDDEN_JUMPTARGET(fork)
  84455. # else
  84456. .weak pthread_create
  84457. lis 10,pthread_create@highest
  84458. @@ -80,7 +79,7 @@
  84459. # ifndef SHARED
  84460. .Lhidden_fork:
  84461. - b HIDDEN_JUMPTARGET(__fork)
  84462. + b HIDDEN_JUMPTARGET(fork)
  84463. .Lsyscall_error:
  84464. b JUMPTARGET(__syscall_error)
  84465. # endif
  84466. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c
  84467. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2012-05-15 09:20:09.000000000 +0200
  84468. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/pt-sigsuspend.c 2014-02-03 12:32:57.000000000 +0100
  84469. @@ -13,9 +13,8 @@
  84470. Lesser General Public License for more details.
  84471. You should have received a copy of the GNU Lesser General Public
  84472. - License along with the GNU C Library; if not, write to the Free
  84473. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84474. - 02111-1307 USA. */
  84475. + License along with the GNU C Library; if not, see
  84476. + <http://www.gnu.org/licenses/>. */
  84477. #include <errno.h>
  84478. #include <signal.h>
  84479. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c
  84480. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2012-05-15 09:20:09.000000000 +0200
  84481. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/raise.c 2014-02-03 12:32:57.000000000 +0100
  84482. @@ -12,9 +12,8 @@
  84483. Lesser General Public License for more details.
  84484. You should have received a copy of the GNU Lesser General Public
  84485. - License along with the GNU C Library; if not, write to the Free
  84486. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84487. - 02111-1307 USA. */
  84488. + License along with the GNU C Library; if not, see
  84489. + <http://www.gnu.org/licenses/>. */
  84490. #include <signal.h>
  84491. #include <unistd.h>
  84492. @@ -40,4 +39,3 @@
  84493. #endif
  84494. }
  84495. libc_hidden_def (raise)
  84496. -weak_alias (raise, gsignal)
  84497. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c
  84498. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c 2012-05-15 09:20:09.000000000 +0200
  84499. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/register-atfork.c 2014-02-03 12:32:57.000000000 +0100
  84500. @@ -13,9 +13,8 @@
  84501. Lesser General Public License for more details.
  84502. You should have received a copy of the GNU Lesser General Public
  84503. - License along with the GNU C Library; if not, write to the Free
  84504. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84505. - 02111-1307 USA. */
  84506. + License along with the GNU C Library; if not, see
  84507. + <http://www.gnu.org/licenses/>. */
  84508. #include <errno.h>
  84509. #include <stdlib.h>
  84510. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h
  84511. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  84512. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  84513. @@ -13,9 +13,8 @@
  84514. Lesser General Public License for more details.
  84515. You should have received a copy of the GNU Lesser General Public
  84516. - License along with the GNU C Library; if not, write to the Free
  84517. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84518. - 02111-1307 USA. */
  84519. + License along with the GNU C Library; if not, see
  84520. + <http://www.gnu.org/licenses/>. */
  84521. #ifndef _BITS_TYPES_H
  84522. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  84523. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c
  84524. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84525. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84526. @@ -23,8 +23,7 @@
  84527. You should have received a copy of the GNU Lesser General Public
  84528. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84529. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84530. - Boston, MA 02111-1307, USA. */
  84531. + see <http://www.gnu.org/licenses/>. */
  84532. /* This file is compiled into assembly code which is then munged by a sed
  84533. script into two files: crti.s and crtn.s.
  84534. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
  84535. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84536. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84537. @@ -13,9 +13,8 @@
  84538. Lesser General Public License for more details.
  84539. You should have received a copy of the GNU Lesser General Public
  84540. - License along with the GNU C Library; if not, write to the Free
  84541. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84542. - 02111-1307 USA. */
  84543. + License along with the GNU C Library; if not, see
  84544. + <http://www.gnu.org/licenses/>. */
  84545. #include <sysdep.h>
  84546. #include <tls.h>
  84547. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S
  84548. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84549. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84550. @@ -13,9 +13,8 @@
  84551. Lesser General Public License for more details.
  84552. You should have received a copy of the GNU Lesser General Public
  84553. - License along with the GNU C Library; if not, write to the Free
  84554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84555. - 02111-1307 USA. */
  84556. + License along with the GNU C Library; if not, see
  84557. + <http://www.gnu.org/licenses/>. */
  84558. #include <sysdep-cancel.h>
  84559. #define _ERRNO_H 1
  84560. @@ -54,7 +53,7 @@
  84561. al %r1,3f-2b(%r1)
  84562. br %r1
  84563. 3:
  84564. - .long HIDDEN_JUMPTARGET(__fork)-2b
  84565. + .long HIDDEN_JUMPTARGET(fork)-2b
  84566. 4:
  84567. #ifdef SHARED
  84568. .long __libc_pthread_functions-0b
  84569. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c
  84570. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84571. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84572. @@ -24,8 +24,7 @@
  84573. You should have received a copy of the GNU Lesser General Public
  84574. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84575. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84576. - Boston, MA 02111-1307, USA. */
  84577. + see <http://www.gnu.org/licenses/>. */
  84578. /* This file is compiled into assembly code which is then munged by a sed
  84579. script into two files: crti.s and crtn.s.
  84580. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
  84581. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84582. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84583. @@ -13,9 +13,8 @@
  84584. Lesser General Public License for more details.
  84585. You should have received a copy of the GNU Lesser General Public
  84586. - License along with the GNU C Library; if not, write to the Free
  84587. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84588. - 02111-1307 USA. */
  84589. + License along with the GNU C Library; if not, see
  84590. + <http://www.gnu.org/licenses/>. */
  84591. #include <sysdep.h>
  84592. #include <tls.h>
  84593. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
  84594. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84595. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84596. @@ -13,9 +13,8 @@
  84597. Lesser General Public License for more details.
  84598. You should have received a copy of the GNU Lesser General Public
  84599. - License along with the GNU C Library; if not, write to the Free
  84600. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84601. - 02111-1307 USA. */
  84602. + License along with the GNU C Library; if not, see
  84603. + <http://www.gnu.org/licenses/>. */
  84604. #include <sysdep-cancel.h>
  84605. #define _ERRNO_H 1
  84606. @@ -35,7 +34,7 @@
  84607. larl %r1,pthread_create
  84608. #endif
  84609. ltgr %r1,%r1
  84610. - jgne HIDDEN_JUMPTARGET(__fork)
  84611. + jgne HIDDEN_JUMPTARGET(fork)
  84612. /* Do vfork system call. */
  84613. svc SYS_ify (vfork)
  84614. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c
  84615. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  84616. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  84617. @@ -23,8 +23,7 @@
  84618. You should have received a copy of the GNU Lesser General Public
  84619. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84620. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  84621. - Boston, MA 02111-1307, USA. */
  84622. + see <http://www.gnu.org/licenses/>. */
  84623. /* This file is compiled into assembly code which is then munged by a sed
  84624. script into two files: crti.s and crtn.s.
  84625. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h
  84626. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h 2012-05-15 09:20:09.000000000 +0200
  84627. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/smp.h 2014-02-03 12:32:57.000000000 +0100
  84628. @@ -14,8 +14,7 @@
  84629. You should have received a copy of the GNU Library General Public
  84630. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84631. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84632. - Boston, MA 02111-1307, USA. */
  84633. + see <http://www.gnu.org/licenses/>. */
  84634. static __inline__ int
  84635. is_smp_system (void)
  84636. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
  84637. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84638. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84639. @@ -12,9 +12,8 @@
  84640. Lesser General Public License for more details.
  84641. You should have received a copy of the GNU Lesser General Public
  84642. - License along with the GNU C Library; if not, write to the Free
  84643. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84644. - 02111-1307 USA. */
  84645. + License along with the GNU C Library; if not, see
  84646. + <http://www.gnu.org/licenses/>. */
  84647. #include <sysdep.h>
  84648. #include <tls.h>
  84649. @@ -155,7 +154,7 @@
  84650. # endif
  84651. # ifndef __ASSEMBLER__
  84652. -# if defined FLOATING_STACKS && USE___THREAD && defined __PIC__
  84653. +# if defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__ && defined __PIC__
  84654. # define SINGLE_THREAD_P \
  84655. __builtin_expect (THREAD_GETMEM (THREAD_SELF, p_multiple_threads) == 0, 1)
  84656. # else
  84657. @@ -172,7 +171,7 @@
  84658. .align 2; \
  84659. 1: .long __local_multiple_threads; \
  84660. 2:
  84661. -# elif defined FLOATING_STACKS && USE___THREAD
  84662. +# elif defined FLOATING_STACKS && defined __UCLIBC_HAS_TLS__
  84663. # define SINGLE_THREAD_P \
  84664. stc gbr,r0; \
  84665. mov.w 0f,r1; \
  84666. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S
  84667. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84668. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sh/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84669. @@ -12,9 +12,8 @@
  84670. Lesser General Public License for more details.
  84671. You should have received a copy of the GNU Lesser General Public
  84672. - License along with the GNU C Library; if not, write to the Free
  84673. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84674. - 02111-1307 USA. */
  84675. + License along with the GNU C Library; if not, see
  84676. + <http://www.gnu.org/licenses/>. */
  84677. #include <sysdep-cancel.h>
  84678. #define _ERRNO_H 1
  84679. @@ -70,7 +69,7 @@
  84680. nop
  84681. 1:
  84682. .align 2
  84683. -.L2: .long HIDDEN_JUMPTARGET(__fork)-1b
  84684. +.L2: .long HIDDEN_JUMPTARGET(fork)-1b
  84685. PSEUDO_END (__vfork)
  84686. libc_hidden_def (__vfork)
  84687. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c
  84688. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c 2012-05-15 09:20:09.000000000 +0200
  84689. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sigwait.c 2014-02-03 12:32:57.000000000 +0100
  84690. @@ -12,9 +12,8 @@
  84691. Lesser General Public License for more details.
  84692. You should have received a copy of the GNU Lesser General Public
  84693. - License along with the GNU C Library; if not, write to the Free
  84694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84695. - 02111-1307 USA. */
  84696. + License along with the GNU C Library; if not, see
  84697. + <http://www.gnu.org/licenses/>. */
  84698. #include <errno.h>
  84699. #include <signal.h>
  84700. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h
  84701. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h 2012-05-15 09:20:09.000000000 +0200
  84702. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/smp.h 2014-02-03 12:32:57.000000000 +0100
  84703. @@ -14,8 +14,7 @@
  84704. You should have received a copy of the GNU Library General Public
  84705. License along with the GNU C Library; see the file COPYING.LIB. If not,
  84706. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84707. - Boston, MA 02111-1307, USA. */
  84708. + see <http://www.gnu.org/licenses/>. */
  84709. #include <sys/sysctl.h>
  84710. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
  84711. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  84712. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  84713. @@ -13,9 +13,8 @@
  84714. Lesser General Public License for more details.
  84715. You should have received a copy of the GNU Lesser General Public
  84716. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  84717. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  84718. - Boston, MA 02111-1307, USA. */
  84719. + License along with the GNU C Library; see the file COPYING.LIB. If
  84720. + not, see <http://www.gnu.org/licenses/>. */
  84721. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  84722. and defines LINK_MAX although filesystems have different maxima. A
  84723. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
  84724. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2012-05-15 09:20:09.000000000 +0200
  84725. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h 2014-02-03 12:32:57.000000000 +0100
  84726. @@ -13,9 +13,8 @@
  84727. Lesser General Public License for more details.
  84728. You should have received a copy of the GNU Lesser General Public
  84729. - License along with the GNU C Library; if not, write to the Free
  84730. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84731. - 02111-1307 USA. */
  84732. + License along with the GNU C Library; if not, see
  84733. + <http://www.gnu.org/licenses/>. */
  84734. #ifndef _BITS_TYPES_H
  84735. # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
  84736. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h
  84737. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h 2012-05-15 09:20:09.000000000 +0200
  84738. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/fork.h 2014-02-03 12:32:57.000000000 +0100
  84739. @@ -13,9 +13,8 @@
  84740. Lesser General Public License for more details.
  84741. You should have received a copy of the GNU Lesser General Public
  84742. - License along with the GNU C Library; if not, write to the Free
  84743. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84744. - 02111-1307 USA. */
  84745. + License along with the GNU C Library; if not, see
  84746. + <http://www.gnu.org/licenses/>. */
  84747. #include_next <fork.h>
  84748. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
  84749. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84750. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84751. @@ -13,9 +13,8 @@
  84752. Lesser General Public License for more details.
  84753. You should have received a copy of the GNU Lesser General Public
  84754. - License along with the GNU C Library; if not, write to the Free
  84755. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84756. - 02111-1307 USA. */
  84757. + License along with the GNU C Library; if not, see
  84758. + <http://www.gnu.org/licenses/>. */
  84759. #include <tls.h>
  84760. #ifndef __ASSEMBLER__
  84761. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
  84762. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84763. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84764. @@ -13,9 +13,8 @@
  84765. Lesser General Public License for more details.
  84766. You should have received a copy of the GNU Lesser General Public
  84767. - License along with the GNU C Library; if not, write to the Free
  84768. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84769. - 02111-1307 USA. */
  84770. + License along with the GNU C Library; if not, see
  84771. + <http://www.gnu.org/licenses/>. */
  84772. #include <sysdep-cancel.h>
  84773. @@ -43,7 +42,7 @@
  84774. orcc %o0, %lo(pthread_create), %o0
  84775. #endif
  84776. #if defined SHARED && !defined BROKEN_SPARC_WDISP22
  84777. - bne HIDDEN_JUMPTARGET(__fork)
  84778. + bne HIDDEN_JUMPTARGET(fork)
  84779. #else
  84780. bne 1f
  84781. #endif
  84782. @@ -56,7 +55,7 @@
  84783. and %o0, %o1, %o0
  84784. #if !defined SHARED || defined BROKEN_SPARC_WDISP22
  84785. 1: mov %o7, %g1
  84786. - call HIDDEN_JUMPTARGET(__fork)
  84787. + call HIDDEN_JUMPTARGET(fork)
  84788. mov %g1, %o7
  84789. #endif
  84790. SYSCALL_ERROR_HANDLER
  84791. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
  84792. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84793. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84794. @@ -13,9 +13,8 @@
  84795. Lesser General Public License for more details.
  84796. You should have received a copy of the GNU Lesser General Public
  84797. - License along with the GNU C Library; if not, write to the Free
  84798. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84799. - 02111-1307 USA. */
  84800. + License along with the GNU C Library; if not, see
  84801. + <http://www.gnu.org/licenses/>. */
  84802. #include <tls.h>
  84803. #ifndef __ASSEMBLER__
  84804. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
  84805. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84806. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84807. @@ -13,9 +13,8 @@
  84808. Lesser General Public License for more details.
  84809. You should have received a copy of the GNU Lesser General Public
  84810. - License along with the GNU C Library; if not, write to the Free
  84811. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84812. - 02111-1307 USA. */
  84813. + License along with the GNU C Library; if not, see
  84814. + <http://www.gnu.org/licenses/>. */
  84815. #include <sysdep-cancel.h>
  84816. @@ -42,7 +41,7 @@
  84817. #endif
  84818. #if defined SHARED && !defined BROKEN_SPARC_WDISP22
  84819. cmp %o0, 0
  84820. - bne HIDDEN_JUMPTARGET(__fork)
  84821. + bne HIDDEN_JUMPTARGET(fork)
  84822. #else
  84823. brnz,pn %o0, 1f
  84824. #endif
  84825. @@ -55,7 +54,7 @@
  84826. and %o0, %o1, %o0
  84827. #if !defined SHARED || defined BROKEN_SPARC_WDISP22
  84828. 1: mov %o7, %g1
  84829. - call HIDDEN_JUMPTARGET(__fork)
  84830. + call HIDDEN_JUMPTARGET(fork)
  84831. mov %g1, %o7
  84832. #endif
  84833. SYSCALL_ERROR_HANDLER
  84834. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c
  84835. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c 2012-05-15 09:20:09.000000000 +0200
  84836. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/unregister-atfork.c 2014-02-03 12:32:57.000000000 +0100
  84837. @@ -13,9 +13,8 @@
  84838. Lesser General Public License for more details.
  84839. You should have received a copy of the GNU Lesser General Public
  84840. - License along with the GNU C Library; if not, write to the Free
  84841. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84842. - 02111-1307 USA. */
  84843. + License along with the GNU C Library; if not, see
  84844. + <http://www.gnu.org/licenses/>. */
  84845. #include <errno.h>
  84846. #include <stdlib.h>
  84847. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
  84848. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  84849. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  84850. @@ -13,9 +13,8 @@
  84851. Lesser General Public License for more details.
  84852. You should have received a copy of the GNU Lesser General Public
  84853. - License along with the GNU C Library; if not, write to the Free
  84854. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84855. - 02111-1307 USA. */
  84856. + License along with the GNU C Library; if not, see
  84857. + <http://www.gnu.org/licenses/>. */
  84858. #include <sysdep.h>
  84859. #include <tls.h>
  84860. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S
  84861. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  84862. +++ uClibc-git/libpthread/linuxthreads/sysdeps/unix/sysv/linux/x86_64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  84863. @@ -12,9 +12,8 @@
  84864. Lesser General Public License for more details.
  84865. You should have received a copy of the GNU Lesser General Public
  84866. - License along with the GNU C Library; if not, write to the Free
  84867. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84868. - 02111-1307 USA. */
  84869. + License along with the GNU C Library; if not, see
  84870. + <http://www.gnu.org/licenses/>. */
  84871. #include <sysdep-cancel.h>
  84872. #define _ERRNO_H 1
  84873. @@ -34,7 +33,7 @@
  84874. movq $pthread_create, %rax
  84875. testq %rax, %rax
  84876. #endif
  84877. - jne HIDDEN_JUMPTARGET (__fork)
  84878. + jne HIDDEN_JUMPTARGET (fork)
  84879. /* Pop the return PC value into RDI. We need a register that
  84880. is preserved by the syscall and that we're allowed to destroy. */
  84881. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c uClibc-git/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c
  84882. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c 2012-05-15 09:20:09.000000000 +0200
  84883. +++ uClibc-git/libpthread/linuxthreads/sysdeps/x86_64/pspinlock.c 2014-02-03 12:32:57.000000000 +0100
  84884. @@ -13,9 +13,8 @@
  84885. Lesser General Public License for more details.
  84886. You should have received a copy of the GNU Lesser General Public
  84887. - License along with the GNU C Library; if not, write to the Free
  84888. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84889. - 02111-1307 USA. */
  84890. + License along with the GNU C Library; if not, see
  84891. + <http://www.gnu.org/licenses/>. */
  84892. #include <errno.h>
  84893. #include <pthread.h>
  84894. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h uClibc-git/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h
  84895. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  84896. +++ uClibc-git/libpthread/linuxthreads/sysdeps/x86_64/pt-machine.h 2014-02-03 12:32:57.000000000 +0100
  84897. @@ -14,9 +14,8 @@
  84898. Lesser General Public License for more details.
  84899. You should have received a copy of the GNU Lesser General Public
  84900. - License along with the GNU C Library; if not, write to the Free
  84901. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84902. - 02111-1307 USA. */
  84903. + License along with the GNU C Library; if not, see
  84904. + <http://www.gnu.org/licenses/>. */
  84905. #ifndef _PT_MACHINE_H
  84906. #define _PT_MACHINE_H 1
  84907. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/tls.h uClibc-git/libpthread/linuxthreads/sysdeps/x86_64/tls.h
  84908. --- uClibc-0.9.33.2/libpthread/linuxthreads/sysdeps/x86_64/tls.h 2012-05-15 09:20:09.000000000 +0200
  84909. +++ uClibc-git/libpthread/linuxthreads/sysdeps/x86_64/tls.h 2014-02-03 12:32:57.000000000 +0100
  84910. @@ -13,9 +13,8 @@
  84911. Lesser General Public License for more details.
  84912. You should have received a copy of the GNU Lesser General Public
  84913. - License along with the GNU C Library; if not, write to the Free
  84914. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84915. - 02111-1307 USA. */
  84916. + License along with the GNU C Library; if not, see
  84917. + <http://www.gnu.org/licenses/>. */
  84918. #ifndef _TLS_H
  84919. #define _TLS_H
  84920. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/.cvsignore uClibc-git/libpthread/linuxthreads_db/.cvsignore
  84921. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/.cvsignore 2012-05-15 09:20:09.000000000 +0200
  84922. +++ uClibc-git/libpthread/linuxthreads_db/.cvsignore 1970-01-01 01:00:00.000000000 +0100
  84923. @@ -1,5 +0,0 @@
  84924. -.cvsignore
  84925. -.svn
  84926. -*.os
  84927. -Makefile
  84928. -Makefile.in
  84929. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/Makefile.old uClibc-git/libpthread/linuxthreads_db/Makefile.old
  84930. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/Makefile.old 2012-05-15 09:20:09.000000000 +0200
  84931. +++ uClibc-git/libpthread/linuxthreads_db/Makefile.old 2014-02-03 12:32:57.000000000 +0100
  84932. @@ -12,9 +12,8 @@
  84933. # Lesser General Public License for more details.
  84934. # You should have received a copy of the GNU Lesser General Public
  84935. -# License along with the GNU C Library; if not, write to the Free
  84936. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84937. -# 02111-1307 USA.
  84938. +# License along with the GNU C Library; see the file COPYING.LIB. If
  84939. +# not, see <http://www.gnu.org/licenses/>.
  84940. # Makefile for linuxthreads debug library subdirectory of GNU C Library.
  84941. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/proc_service.h uClibc-git/libpthread/linuxthreads_db/proc_service.h
  84942. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/proc_service.h 2012-05-15 09:20:09.000000000 +0200
  84943. +++ uClibc-git/libpthread/linuxthreads_db/proc_service.h 2014-02-03 12:32:57.000000000 +0100
  84944. @@ -12,9 +12,8 @@
  84945. Lesser General Public License for more details.
  84946. You should have received a copy of the GNU Lesser General Public
  84947. - License along with the GNU C Library; if not, write to the Free
  84948. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84949. - 02111-1307 USA. */
  84950. + License along with the GNU C Library; if not, see
  84951. + <http://www.gnu.org/licenses/>. */
  84952. /* The definitions in this file must correspond to those in the debugger. */
  84953. #include <sys/procfs.h>
  84954. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_init.c uClibc-git/libpthread/linuxthreads_db/td_init.c
  84955. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_init.c 2012-05-15 09:20:09.000000000 +0200
  84956. +++ uClibc-git/libpthread/linuxthreads_db/td_init.c 2014-02-03 12:32:57.000000000 +0100
  84957. @@ -14,9 +14,8 @@
  84958. Lesser General Public License for more details.
  84959. You should have received a copy of the GNU Lesser General Public
  84960. - License along with the GNU C Library; if not, write to the Free
  84961. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84962. - 02111-1307 USA. */
  84963. + License along with the GNU C Library; if not, see
  84964. + <http://www.gnu.org/licenses/>. */
  84965. #include "thread_dbP.h"
  84966. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_log.c uClibc-git/libpthread/linuxthreads_db/td_log.c
  84967. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_log.c 2012-05-15 09:20:09.000000000 +0200
  84968. +++ uClibc-git/libpthread/linuxthreads_db/td_log.c 2014-02-03 12:32:57.000000000 +0100
  84969. @@ -14,9 +14,8 @@
  84970. Lesser General Public License for more details.
  84971. You should have received a copy of the GNU Lesser General Public
  84972. - License along with the GNU C Library; if not, write to the Free
  84973. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84974. - 02111-1307 USA. */
  84975. + License along with the GNU C Library; if not, see
  84976. + <http://www.gnu.org/licenses/>. */
  84977. #include "thread_dbP.h"
  84978. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_symbol_list.c uClibc-git/libpthread/linuxthreads_db/td_symbol_list.c
  84979. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_symbol_list.c 2012-05-15 09:20:09.000000000 +0200
  84980. +++ uClibc-git/libpthread/linuxthreads_db/td_symbol_list.c 2014-02-03 12:32:57.000000000 +0100
  84981. @@ -14,9 +14,8 @@
  84982. Lesser General Public License for more details.
  84983. You should have received a copy of the GNU Lesser General Public
  84984. - License along with the GNU C Library; if not, write to the Free
  84985. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84986. - 02111-1307 USA. */
  84987. + License along with the GNU C Library; if not, see
  84988. + <http://www.gnu.org/licenses/>. */
  84989. #include <assert.h>
  84990. #include "thread_dbP.h"
  84991. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_clear_event.c uClibc-git/libpthread/linuxthreads_db/td_ta_clear_event.c
  84992. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  84993. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  84994. @@ -14,17 +14,14 @@
  84995. Lesser General Public License for more details.
  84996. You should have received a copy of the GNU Lesser General Public
  84997. - License along with the GNU C Library; if not, write to the Free
  84998. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  84999. - 02111-1307 USA. */
  85000. + License along with the GNU C Library; if not, see
  85001. + <http://www.gnu.org/licenses/>. */
  85002. #include "thread_dbP.h"
  85003. td_err_e
  85004. -td_ta_clear_event (ta, event)
  85005. - const td_thragent_t *ta;
  85006. - td_thr_events_t *event;
  85007. +td_ta_clear_event(const td_thragent_t *ta, td_thr_events_t *event)
  85008. {
  85009. td_thr_events_t old_event;
  85010. int i;
  85011. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_delete.c uClibc-git/libpthread/linuxthreads_db/td_ta_delete.c
  85012. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_delete.c 2012-05-15 09:20:09.000000000 +0200
  85013. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_delete.c 2014-02-03 12:32:57.000000000 +0100
  85014. @@ -14,9 +14,8 @@
  85015. Lesser General Public License for more details.
  85016. You should have received a copy of the GNU Lesser General Public
  85017. - License along with the GNU C Library; if not, write to the Free
  85018. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85019. - 02111-1307 USA. */
  85020. + License along with the GNU C Library; if not, see
  85021. + <http://www.gnu.org/licenses/>. */
  85022. #include <stdlib.h>
  85023. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_enable_stats.c uClibc-git/libpthread/linuxthreads_db/td_ta_enable_stats.c
  85024. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_enable_stats.c 2012-05-15 09:20:09.000000000 +0200
  85025. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_enable_stats.c 2014-02-03 12:32:57.000000000 +0100
  85026. @@ -14,9 +14,8 @@
  85027. Lesser General Public License for more details.
  85028. You should have received a copy of the GNU Lesser General Public
  85029. - License along with the GNU C Library; if not, write to the Free
  85030. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85031. - 02111-1307 USA. */
  85032. + License along with the GNU C Library; if not, see
  85033. + <http://www.gnu.org/licenses/>. */
  85034. #include "thread_dbP.h"
  85035. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_addr.c uClibc-git/libpthread/linuxthreads_db/td_ta_event_addr.c
  85036. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_addr.c 2012-05-15 09:20:09.000000000 +0200
  85037. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_event_addr.c 2014-02-03 12:32:57.000000000 +0100
  85038. @@ -14,9 +14,8 @@
  85039. Lesser General Public License for more details.
  85040. You should have received a copy of the GNU Lesser General Public
  85041. - License along with the GNU C Library; if not, write to the Free
  85042. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85043. - 02111-1307 USA. */
  85044. + License along with the GNU C Library; if not, see
  85045. + <http://www.gnu.org/licenses/>. */
  85046. #include "thread_dbP.h"
  85047. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_getmsg.c uClibc-git/libpthread/linuxthreads_db/td_ta_event_getmsg.c
  85048. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  85049. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  85050. @@ -14,9 +14,8 @@
  85051. Lesser General Public License for more details.
  85052. You should have received a copy of the GNU Lesser General Public
  85053. - License along with the GNU C Library; if not, write to the Free
  85054. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85055. - 02111-1307 USA. */
  85056. + License along with the GNU C Library; if not, see
  85057. + <http://www.gnu.org/licenses/>. */
  85058. #include <stddef.h>
  85059. #include <string.h>
  85060. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_nthreads.c uClibc-git/libpthread/linuxthreads_db/td_ta_get_nthreads.c
  85061. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_nthreads.c 2012-05-15 09:20:09.000000000 +0200
  85062. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_get_nthreads.c 2014-02-03 12:32:57.000000000 +0100
  85063. @@ -14,9 +14,8 @@
  85064. Lesser General Public License for more details.
  85065. You should have received a copy of the GNU Lesser General Public
  85066. - License along with the GNU C Library; if not, write to the Free
  85067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85068. - 02111-1307 USA. */
  85069. + License along with the GNU C Library; if not, see
  85070. + <http://www.gnu.org/licenses/>. */
  85071. #include "thread_dbP.h"
  85072. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_ph.c uClibc-git/libpthread/linuxthreads_db/td_ta_get_ph.c
  85073. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_ph.c 2012-05-15 09:20:09.000000000 +0200
  85074. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_get_ph.c 2014-02-03 12:32:57.000000000 +0100
  85075. @@ -14,9 +14,8 @@
  85076. Lesser General Public License for more details.
  85077. You should have received a copy of the GNU Lesser General Public
  85078. - License along with the GNU C Library; if not, write to the Free
  85079. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85080. - 02111-1307 USA. */
  85081. + License along with the GNU C Library; if not, see
  85082. + <http://www.gnu.org/licenses/>. */
  85083. #include "thread_dbP.h"
  85084. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_stats.c uClibc-git/libpthread/linuxthreads_db/td_ta_get_stats.c
  85085. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_get_stats.c 2012-05-15 09:20:09.000000000 +0200
  85086. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_get_stats.c 2014-02-03 12:32:57.000000000 +0100
  85087. @@ -14,9 +14,8 @@
  85088. Lesser General Public License for more details.
  85089. You should have received a copy of the GNU Lesser General Public
  85090. - License along with the GNU C Library; if not, write to the Free
  85091. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85092. - 02111-1307 USA. */
  85093. + License along with the GNU C Library; if not, see
  85094. + <http://www.gnu.org/licenses/>. */
  85095. #include "thread_dbP.h"
  85096. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_id2thr.c uClibc-git/libpthread/linuxthreads_db/td_ta_map_id2thr.c
  85097. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_id2thr.c 2012-05-15 09:20:09.000000000 +0200
  85098. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_map_id2thr.c 2014-02-03 12:32:57.000000000 +0100
  85099. @@ -14,9 +14,8 @@
  85100. Lesser General Public License for more details.
  85101. You should have received a copy of the GNU Lesser General Public
  85102. - License along with the GNU C Library; if not, write to the Free
  85103. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85104. - 02111-1307 USA. */
  85105. + License along with the GNU C Library; if not, see
  85106. + <http://www.gnu.org/licenses/>. */
  85107. #include "thread_dbP.h"
  85108. #include <linuxthreads/internals.h>
  85109. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c uClibc-git/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c
  85110. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c 2012-05-15 09:20:09.000000000 +0200
  85111. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_map_lwp2thr.c 2014-02-03 12:32:57.000000000 +0100
  85112. @@ -14,9 +14,8 @@
  85113. Lesser General Public License for more details.
  85114. You should have received a copy of the GNU Lesser General Public
  85115. - License along with the GNU C Library; if not, write to the Free
  85116. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85117. - 02111-1307 USA. */
  85118. + License along with the GNU C Library; if not, see
  85119. + <http://www.gnu.org/licenses/>. */
  85120. #include "thread_dbP.h"
  85121. #include <linuxthreads/internals.h>
  85122. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_new.c uClibc-git/libpthread/linuxthreads_db/td_ta_new.c
  85123. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_new.c 2012-05-15 09:20:09.000000000 +0200
  85124. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_new.c 2014-02-03 12:32:57.000000000 +0100
  85125. @@ -14,9 +14,8 @@
  85126. Lesser General Public License for more details.
  85127. You should have received a copy of the GNU Lesser General Public
  85128. - License along with the GNU C Library; if not, write to the Free
  85129. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85130. - 02111-1307 USA. */
  85131. + License along with the GNU C Library; if not, see
  85132. + <http://www.gnu.org/licenses/>. */
  85133. #include <stddef.h>
  85134. #include <stdlib.h>
  85135. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_reset_stats.c uClibc-git/libpthread/linuxthreads_db/td_ta_reset_stats.c
  85136. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_reset_stats.c 2012-05-15 09:20:09.000000000 +0200
  85137. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_reset_stats.c 2014-02-03 12:32:57.000000000 +0100
  85138. @@ -14,9 +14,8 @@
  85139. Lesser General Public License for more details.
  85140. You should have received a copy of the GNU Lesser General Public
  85141. - License along with the GNU C Library; if not, write to the Free
  85142. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85143. - 02111-1307 USA. */
  85144. + License along with the GNU C Library; if not, see
  85145. + <http://www.gnu.org/licenses/>. */
  85146. #include "thread_dbP.h"
  85147. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_setconcurrency.c uClibc-git/libpthread/linuxthreads_db/td_ta_setconcurrency.c
  85148. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  85149. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_setconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  85150. @@ -14,9 +14,8 @@
  85151. Lesser General Public License for more details.
  85152. You should have received a copy of the GNU Lesser General Public
  85153. - License along with the GNU C Library; if not, write to the Free
  85154. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85155. - 02111-1307 USA. */
  85156. + License along with the GNU C Library; if not, see
  85157. + <http://www.gnu.org/licenses/>. */
  85158. #include "thread_dbP.h"
  85159. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_set_event.c uClibc-git/libpthread/linuxthreads_db/td_ta_set_event.c
  85160. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_set_event.c 2012-05-15 09:20:09.000000000 +0200
  85161. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_set_event.c 2014-02-03 12:32:57.000000000 +0100
  85162. @@ -14,17 +14,14 @@
  85163. Lesser General Public License for more details.
  85164. You should have received a copy of the GNU Lesser General Public
  85165. - License along with the GNU C Library; if not, write to the Free
  85166. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85167. - 02111-1307 USA. */
  85168. + License along with the GNU C Library; if not, see
  85169. + <http://www.gnu.org/licenses/>. */
  85170. #include "thread_dbP.h"
  85171. td_err_e
  85172. -td_ta_set_event (ta, event)
  85173. - const td_thragent_t *ta;
  85174. - td_thr_events_t *event;
  85175. +td_ta_set_event(const td_thragent_t *ta, td_thr_events_t *event)
  85176. {
  85177. td_thr_events_t old_event;
  85178. int i;
  85179. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_thr_iter.c uClibc-git/libpthread/linuxthreads_db/td_ta_thr_iter.c
  85180. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_thr_iter.c 2012-05-15 09:20:09.000000000 +0200
  85181. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_thr_iter.c 2014-02-03 12:32:57.000000000 +0100
  85182. @@ -14,9 +14,8 @@
  85183. Lesser General Public License for more details.
  85184. You should have received a copy of the GNU Lesser General Public
  85185. - License along with the GNU C Library; if not, write to the Free
  85186. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85187. - 02111-1307 USA. */
  85188. + License along with the GNU C Library; if not, see
  85189. + <http://www.gnu.org/licenses/>. */
  85190. #include "thread_dbP.h"
  85191. #include <linuxthreads/internals.h>
  85192. @@ -40,7 +39,7 @@
  85193. memset (&pds, '\0', sizeof (pds));
  85194. /* Empty thread descriptor the thread library would create. */
  85195. -#if !defined USE_TLS || !TLS_DTV_AT_TP
  85196. +#if !defined __UCLIBC_HAS_TLS__ || !TLS_DTV_AT_TP
  85197. pds.p_header.data.self = &pds;
  85198. #endif
  85199. pds.p_nextlive = pds.p_prevlive = &pds;
  85200. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_tsd_iter.c uClibc-git/libpthread/linuxthreads_db/td_ta_tsd_iter.c
  85201. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_ta_tsd_iter.c 2012-05-15 09:20:09.000000000 +0200
  85202. +++ uClibc-git/libpthread/linuxthreads_db/td_ta_tsd_iter.c 2014-02-03 12:32:57.000000000 +0100
  85203. @@ -14,9 +14,8 @@
  85204. Lesser General Public License for more details.
  85205. You should have received a copy of the GNU Lesser General Public
  85206. - License along with the GNU C Library; if not, write to the Free
  85207. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85208. - 02111-1307 USA. */
  85209. + License along with the GNU C Library; if not, see
  85210. + <http://www.gnu.org/licenses/>. */
  85211. #include "thread_dbP.h"
  85212. #include <linuxthreads/internals.h>
  85213. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_clear_event.c uClibc-git/libpthread/linuxthreads_db/td_thr_clear_event.c
  85214. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  85215. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  85216. @@ -14,9 +14,8 @@
  85217. Lesser General Public License for more details.
  85218. You should have received a copy of the GNU Lesser General Public
  85219. - License along with the GNU C Library; if not, write to the Free
  85220. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85221. - 02111-1307 USA. */
  85222. + License along with the GNU C Library; if not, see
  85223. + <http://www.gnu.org/licenses/>. */
  85224. #include <stddef.h>
  85225. @@ -24,9 +23,7 @@
  85226. td_err_e
  85227. -td_thr_clear_event (th, event)
  85228. - const td_thrhandle_t *th;
  85229. - td_thr_events_t *event;
  85230. +td_thr_clear_event(const td_thrhandle_t *th, td_thr_events_t *event)
  85231. {
  85232. td_thr_events_t old_event;
  85233. int i;
  85234. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbresume.c uClibc-git/libpthread/linuxthreads_db/td_thr_dbresume.c
  85235. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbresume.c 2012-05-15 09:20:09.000000000 +0200
  85236. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_dbresume.c 2014-02-03 12:32:57.000000000 +0100
  85237. @@ -14,9 +14,8 @@
  85238. Lesser General Public License for more details.
  85239. You should have received a copy of the GNU Lesser General Public
  85240. - License along with the GNU C Library; if not, write to the Free
  85241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85242. - 02111-1307 USA. */
  85243. + License along with the GNU C Library; if not, see
  85244. + <http://www.gnu.org/licenses/>. */
  85245. #include "thread_dbP.h"
  85246. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbsuspend.c uClibc-git/libpthread/linuxthreads_db/td_thr_dbsuspend.c
  85247. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_dbsuspend.c 2012-05-15 09:20:09.000000000 +0200
  85248. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_dbsuspend.c 2014-02-03 12:32:57.000000000 +0100
  85249. @@ -14,9 +14,8 @@
  85250. Lesser General Public License for more details.
  85251. You should have received a copy of the GNU Lesser General Public
  85252. - License along with the GNU C Library; if not, write to the Free
  85253. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85254. - 02111-1307 USA. */
  85255. + License along with the GNU C Library; if not, see
  85256. + <http://www.gnu.org/licenses/>. */
  85257. #include "thread_dbP.h"
  85258. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_enable.c uClibc-git/libpthread/linuxthreads_db/td_thr_event_enable.c
  85259. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_enable.c 2012-05-15 09:20:09.000000000 +0200
  85260. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_event_enable.c 2014-02-03 12:32:57.000000000 +0100
  85261. @@ -14,9 +14,8 @@
  85262. Lesser General Public License for more details.
  85263. You should have received a copy of the GNU Lesser General Public
  85264. - License along with the GNU C Library; if not, write to the Free
  85265. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85266. - 02111-1307 USA. */
  85267. + License along with the GNU C Library; if not, see
  85268. + <http://www.gnu.org/licenses/>. */
  85269. #include <stddef.h>
  85270. @@ -24,9 +23,7 @@
  85271. td_err_e
  85272. -td_thr_event_enable (th, onoff)
  85273. - const td_thrhandle_t *th;
  85274. - int onoff;
  85275. +td_thr_event_enable(const td_thrhandle_t *th, int onoff)
  85276. {
  85277. LOG ("td_thr_event_enable");
  85278. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_getmsg.c uClibc-git/libpthread/linuxthreads_db/td_thr_event_getmsg.c
  85279. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  85280. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  85281. @@ -14,9 +14,8 @@
  85282. Lesser General Public License for more details.
  85283. You should have received a copy of the GNU Lesser General Public
  85284. - License along with the GNU C Library; if not, write to the Free
  85285. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85286. - 02111-1307 USA. */
  85287. + License along with the GNU C Library; if not, see
  85288. + <http://www.gnu.org/licenses/>. */
  85289. #include <stddef.h>
  85290. #include <string.h>
  85291. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getfpregs.c uClibc-git/libpthread/linuxthreads_db/td_thr_getfpregs.c
  85292. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getfpregs.c 2012-05-15 09:20:09.000000000 +0200
  85293. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_getfpregs.c 2014-02-03 12:32:57.000000000 +0100
  85294. @@ -14,9 +14,8 @@
  85295. Lesser General Public License for more details.
  85296. You should have received a copy of the GNU Lesser General Public
  85297. - License along with the GNU C Library; if not, write to the Free
  85298. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85299. - 02111-1307 USA. */
  85300. + License along with the GNU C Library; if not, see
  85301. + <http://www.gnu.org/licenses/>. */
  85302. #include "thread_dbP.h"
  85303. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getgregs.c uClibc-git/libpthread/linuxthreads_db/td_thr_getgregs.c
  85304. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getgregs.c 2012-05-15 09:20:09.000000000 +0200
  85305. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_getgregs.c 2014-02-03 12:32:57.000000000 +0100
  85306. @@ -14,9 +14,8 @@
  85307. Lesser General Public License for more details.
  85308. You should have received a copy of the GNU Lesser General Public
  85309. - License along with the GNU C Library; if not, write to the Free
  85310. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85311. - 02111-1307 USA. */
  85312. + License along with the GNU C Library; if not, see
  85313. + <http://www.gnu.org/licenses/>. */
  85314. #include "thread_dbP.h"
  85315. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_get_info.c uClibc-git/libpthread/linuxthreads_db/td_thr_get_info.c
  85316. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_get_info.c 2012-05-15 09:20:09.000000000 +0200
  85317. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_get_info.c 2014-02-03 12:32:57.000000000 +0100
  85318. @@ -14,9 +14,8 @@
  85319. Lesser General Public License for more details.
  85320. You should have received a copy of the GNU Lesser General Public
  85321. - License along with the GNU C Library; if not, write to the Free
  85322. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85323. - 02111-1307 USA. */
  85324. + License along with the GNU C Library; if not, see
  85325. + <http://www.gnu.org/licenses/>. */
  85326. #include <stddef.h>
  85327. #include <string.h>
  85328. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregs.c uClibc-git/libpthread/linuxthreads_db/td_thr_getxregs.c
  85329. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregs.c 2012-05-15 09:20:09.000000000 +0200
  85330. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_getxregs.c 2014-02-03 12:32:57.000000000 +0100
  85331. @@ -14,9 +14,8 @@
  85332. Lesser General Public License for more details.
  85333. You should have received a copy of the GNU Lesser General Public
  85334. - License along with the GNU C Library; if not, write to the Free
  85335. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85336. - 02111-1307 USA. */
  85337. + License along with the GNU C Library; if not, see
  85338. + <http://www.gnu.org/licenses/>. */
  85339. #include "thread_dbP.h"
  85340. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregsize.c uClibc-git/libpthread/linuxthreads_db/td_thr_getxregsize.c
  85341. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_getxregsize.c 2012-05-15 09:20:09.000000000 +0200
  85342. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_getxregsize.c 2014-02-03 12:32:57.000000000 +0100
  85343. @@ -14,9 +14,8 @@
  85344. Lesser General Public License for more details.
  85345. You should have received a copy of the GNU Lesser General Public
  85346. - License along with the GNU C Library; if not, write to the Free
  85347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85348. - 02111-1307 USA. */
  85349. + License along with the GNU C Library; if not, see
  85350. + <http://www.gnu.org/licenses/>. */
  85351. #include "thread_dbP.h"
  85352. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_set_event.c uClibc-git/libpthread/linuxthreads_db/td_thr_set_event.c
  85353. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_set_event.c 2012-05-15 09:20:09.000000000 +0200
  85354. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_set_event.c 2014-02-03 12:32:57.000000000 +0100
  85355. @@ -14,9 +14,8 @@
  85356. Lesser General Public License for more details.
  85357. You should have received a copy of the GNU Lesser General Public
  85358. - License along with the GNU C Library; if not, write to the Free
  85359. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85360. - 02111-1307 USA. */
  85361. + License along with the GNU C Library; if not, see
  85362. + <http://www.gnu.org/licenses/>. */
  85363. #include <stddef.h>
  85364. @@ -24,9 +23,7 @@
  85365. td_err_e
  85366. -td_thr_set_event (th, event)
  85367. - const td_thrhandle_t *th;
  85368. - td_thr_events_t *event;
  85369. +td_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *event)
  85370. {
  85371. td_thr_events_t old_event;
  85372. int i;
  85373. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setfpregs.c uClibc-git/libpthread/linuxthreads_db/td_thr_setfpregs.c
  85374. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setfpregs.c 2012-05-15 09:20:09.000000000 +0200
  85375. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_setfpregs.c 2014-02-03 12:32:57.000000000 +0100
  85376. @@ -14,9 +14,8 @@
  85377. Lesser General Public License for more details.
  85378. You should have received a copy of the GNU Lesser General Public
  85379. - License along with the GNU C Library; if not, write to the Free
  85380. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85381. - 02111-1307 USA. */
  85382. + License along with the GNU C Library; if not, see
  85383. + <http://www.gnu.org/licenses/>. */
  85384. #include "thread_dbP.h"
  85385. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setgregs.c uClibc-git/libpthread/linuxthreads_db/td_thr_setgregs.c
  85386. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setgregs.c 2012-05-15 09:20:09.000000000 +0200
  85387. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_setgregs.c 2014-02-03 12:32:57.000000000 +0100
  85388. @@ -14,9 +14,8 @@
  85389. Lesser General Public License for more details.
  85390. You should have received a copy of the GNU Lesser General Public
  85391. - License along with the GNU C Library; if not, write to the Free
  85392. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85393. - 02111-1307 USA. */
  85394. + License along with the GNU C Library; if not, see
  85395. + <http://www.gnu.org/licenses/>. */
  85396. #include "thread_dbP.h"
  85397. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setprio.c uClibc-git/libpthread/linuxthreads_db/td_thr_setprio.c
  85398. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setprio.c 2012-05-15 09:20:09.000000000 +0200
  85399. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_setprio.c 2014-02-03 12:32:57.000000000 +0100
  85400. @@ -14,9 +14,8 @@
  85401. Lesser General Public License for more details.
  85402. You should have received a copy of the GNU Lesser General Public
  85403. - License along with the GNU C Library; if not, write to the Free
  85404. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85405. - 02111-1307 USA. */
  85406. + License along with the GNU C Library; if not, see
  85407. + <http://www.gnu.org/licenses/>. */
  85408. #include "thread_dbP.h"
  85409. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setsigpending.c uClibc-git/libpthread/linuxthreads_db/td_thr_setsigpending.c
  85410. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setsigpending.c 2012-05-15 09:20:09.000000000 +0200
  85411. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_setsigpending.c 2014-02-03 12:32:57.000000000 +0100
  85412. @@ -14,9 +14,8 @@
  85413. Lesser General Public License for more details.
  85414. You should have received a copy of the GNU Lesser General Public
  85415. - License along with the GNU C Library; if not, write to the Free
  85416. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85417. - 02111-1307 USA. */
  85418. + License along with the GNU C Library; if not, see
  85419. + <http://www.gnu.org/licenses/>. */
  85420. #include "thread_dbP.h"
  85421. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setxregs.c uClibc-git/libpthread/linuxthreads_db/td_thr_setxregs.c
  85422. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_setxregs.c 2012-05-15 09:20:09.000000000 +0200
  85423. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_setxregs.c 2014-02-03 12:32:57.000000000 +0100
  85424. @@ -14,9 +14,8 @@
  85425. Lesser General Public License for more details.
  85426. You should have received a copy of the GNU Lesser General Public
  85427. - License along with the GNU C Library; if not, write to the Free
  85428. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85429. - 02111-1307 USA. */
  85430. + License along with the GNU C Library; if not, see
  85431. + <http://www.gnu.org/licenses/>. */
  85432. #include "thread_dbP.h"
  85433. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_sigsetmask.c uClibc-git/libpthread/linuxthreads_db/td_thr_sigsetmask.c
  85434. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  85435. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_sigsetmask.c 2014-02-03 12:32:57.000000000 +0100
  85436. @@ -14,9 +14,8 @@
  85437. Lesser General Public License for more details.
  85438. You should have received a copy of the GNU Lesser General Public
  85439. - License along with the GNU C Library; if not, write to the Free
  85440. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85441. - 02111-1307 USA. */
  85442. + License along with the GNU C Library; if not, see
  85443. + <http://www.gnu.org/licenses/>. */
  85444. #include "thread_dbP.h"
  85445. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tlsbase.c uClibc-git/libpthread/linuxthreads_db/td_thr_tlsbase.c
  85446. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tlsbase.c 2012-05-15 09:20:09.000000000 +0200
  85447. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_tlsbase.c 2014-02-03 12:32:57.000000000 +0100
  85448. @@ -13,9 +13,8 @@
  85449. Lesser General Public License for more details.
  85450. You should have received a copy of the GNU Lesser General Public
  85451. - License along with the GNU C Library; if not, write to the Free
  85452. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85453. - 02111-1307 USA. */
  85454. + License along with the GNU C Library; if not, see
  85455. + <http://www.gnu.org/licenses/>. */
  85456. #include "thread_dbP.h"
  85457. @@ -30,7 +29,7 @@
  85458. if (modid < 1)
  85459. return TD_NOTLS;
  85460. -#if USE_TLS
  85461. +#ifdef __UCLIBC_HAS_TLS__
  85462. union dtv pdtv, *dtvp;
  85463. LOG ("td_thr_tlsbase");
  85464. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tls_get_addr.c uClibc-git/libpthread/linuxthreads_db/td_thr_tls_get_addr.c
  85465. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tls_get_addr.c 2012-05-15 09:20:09.000000000 +0200
  85466. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_tls_get_addr.c 2014-02-03 12:32:57.000000000 +0100
  85467. @@ -14,9 +14,8 @@
  85468. Lesser General Public License for more details.
  85469. You should have received a copy of the GNU Lesser General Public
  85470. - License along with the GNU C Library; if not, write to the Free
  85471. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85472. - 02111-1307 USA. */
  85473. + License along with the GNU C Library; if not, see
  85474. + <http://www.gnu.org/licenses/>. */
  85475. #include <link.h>
  85476. #include "thread_dbP.h"
  85477. @@ -27,7 +26,7 @@
  85478. size_t offset __attribute__ ((unused)),
  85479. void **address __attribute__ ((unused)))
  85480. {
  85481. -#if USE_TLS
  85482. +#ifdef __UCLIBC_HAS_TLS__
  85483. /* Read the module ID from the link_map. */
  85484. size_t modid;
  85485. if (ps_pdread (th->th_ta_p->ph,
  85486. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tsd.c uClibc-git/libpthread/linuxthreads_db/td_thr_tsd.c
  85487. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_tsd.c 2012-05-15 09:20:09.000000000 +0200
  85488. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_tsd.c 2014-02-03 12:32:57.000000000 +0100
  85489. @@ -14,9 +14,8 @@
  85490. Lesser General Public License for more details.
  85491. You should have received a copy of the GNU Lesser General Public
  85492. - License along with the GNU C Library; if not, write to the Free
  85493. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85494. - 02111-1307 USA. */
  85495. + License along with the GNU C Library; if not, see
  85496. + <http://www.gnu.org/licenses/>. */
  85497. #include "thread_dbP.h"
  85498. #include <linuxthreads/internals.h>
  85499. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_validate.c uClibc-git/libpthread/linuxthreads_db/td_thr_validate.c
  85500. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/td_thr_validate.c 2012-05-15 09:20:09.000000000 +0200
  85501. +++ uClibc-git/libpthread/linuxthreads_db/td_thr_validate.c 2014-02-03 12:32:57.000000000 +0100
  85502. @@ -14,9 +14,8 @@
  85503. Lesser General Public License for more details.
  85504. You should have received a copy of the GNU Lesser General Public
  85505. - License along with the GNU C Library; if not, write to the Free
  85506. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85507. - 02111-1307 USA. */
  85508. + License along with the GNU C Library; if not, see
  85509. + <http://www.gnu.org/licenses/>. */
  85510. #include "thread_dbP.h"
  85511. #include <linuxthreads/internals.h>
  85512. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads_db/thread_db.h uClibc-git/libpthread/linuxthreads_db/thread_db.h
  85513. --- uClibc-0.9.33.2/libpthread/linuxthreads_db/thread_db.h 2012-05-15 09:20:09.000000000 +0200
  85514. +++ uClibc-git/libpthread/linuxthreads_db/thread_db.h 2014-02-03 12:32:57.000000000 +0100
  85515. @@ -13,9 +13,8 @@
  85516. Lesser General Public License for more details.
  85517. You should have received a copy of the GNU Lesser General Public
  85518. - License along with the GNU C Library; if not, write to the Free
  85519. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85520. - 02111-1307 USA. */
  85521. + License along with the GNU C Library; if not, see
  85522. + <http://www.gnu.org/licenses/>. */
  85523. #ifndef _THREAD_DB_H
  85524. #define _THREAD_DB_H 1
  85525. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/cancel.c uClibc-git/libpthread/linuxthreads.old/cancel.c
  85526. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/cancel.c 2012-05-15 09:20:09.000000000 +0200
  85527. +++ uClibc-git/libpthread/linuxthreads.old/cancel.c 2014-02-03 12:32:56.000000000 +0100
  85528. @@ -14,8 +14,6 @@
  85529. /* Thread cancellation */
  85530. -#define __FORCE_GLIBC
  85531. -#include <features.h>
  85532. #include <errno.h>
  85533. #include "pthread.h"
  85534. #include "internals.h"
  85535. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/condvar.c uClibc-git/libpthread/linuxthreads.old/condvar.c
  85536. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/condvar.c 2012-05-15 09:20:09.000000000 +0200
  85537. +++ uClibc-git/libpthread/linuxthreads.old/condvar.c 2014-02-03 12:32:56.000000000 +0100
  85538. @@ -25,16 +25,6 @@
  85539. #include "queue.h"
  85540. #include "restart.h"
  85541. -libpthread_hidden_proto(pthread_cond_broadcast)
  85542. -libpthread_hidden_proto(pthread_cond_destroy)
  85543. -libpthread_hidden_proto(pthread_cond_init)
  85544. -libpthread_hidden_proto(pthread_cond_signal)
  85545. -libpthread_hidden_proto(pthread_cond_wait)
  85546. -libpthread_hidden_proto(pthread_cond_timedwait)
  85547. -
  85548. -libpthread_hidden_proto(pthread_condattr_destroy)
  85549. -libpthread_hidden_proto(pthread_condattr_init)
  85550. -
  85551. int pthread_cond_init(pthread_cond_t *cond,
  85552. const pthread_condattr_t *cond_attr attribute_unused)
  85553. {
  85554. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/errno.c uClibc-git/libpthread/linuxthreads.old/errno.c
  85555. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/errno.c 2012-05-15 09:20:09.000000000 +0200
  85556. +++ uClibc-git/libpthread/linuxthreads.old/errno.c 2014-02-03 12:32:56.000000000 +0100
  85557. @@ -14,8 +14,6 @@
  85558. /* Define the location of errno for the remainder of the C library */
  85559. -#define __FORCE_GLIBC
  85560. -#include <features.h>
  85561. #include <errno.h>
  85562. #include <netdb.h>
  85563. #include "pthread.h"
  85564. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/events.c uClibc-git/libpthread/linuxthreads.old/events.c
  85565. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/events.c 2012-05-15 09:20:09.000000000 +0200
  85566. +++ uClibc-git/libpthread/linuxthreads.old/events.c 2014-02-03 12:32:56.000000000 +0100
  85567. @@ -14,8 +14,7 @@
  85568. You should have received a copy of the GNU Library General Public
  85569. License along with the GNU C Library; see the file COPYING.LIB. If not,
  85570. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  85571. - Boston, MA 02111-1307, USA. */
  85572. + see <http://www.gnu.org/licenses/>. */
  85573. /* The functions contained here do nothing, they just return. */
  85574. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/forward.c uClibc-git/libpthread/linuxthreads.old/forward.c
  85575. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/forward.c 2012-05-15 09:20:09.000000000 +0200
  85576. +++ uClibc-git/libpthread/linuxthreads.old/forward.c 2014-02-03 12:32:56.000000000 +0100
  85577. @@ -13,9 +13,8 @@
  85578. Lesser General Public License for more details.
  85579. You should have received a copy of the GNU Lesser General Public
  85580. - License along with the GNU C Library; if not, write to the Free
  85581. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85582. - 02111-1307 USA. */
  85583. + License along with the GNU C Library; if not, see
  85584. + <http://www.gnu.org/licenses/>. */
  85585. #include <features.h>
  85586. #include <stdlib.h>
  85587. @@ -163,8 +162,12 @@
  85588. FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
  85589. +#if 0
  85590. FORWARD2 (_pthread_cleanup_push, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
  85591. +#endif
  85592. FORWARD2 (_pthread_cleanup_push_defer, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
  85593. +#if 0
  85594. FORWARD2 (_pthread_cleanup_pop, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
  85595. +#endif
  85596. FORWARD2 (_pthread_cleanup_pop_restore, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
  85597. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/internals.h uClibc-git/libpthread/linuxthreads.old/internals.h
  85598. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/internals.h 2012-05-15 09:20:09.000000000 +0200
  85599. +++ uClibc-git/libpthread/linuxthreads.old/internals.h 2014-02-03 12:32:56.000000000 +0100
  85600. @@ -327,32 +327,28 @@
  85601. /* The page size we can get from the system. This should likely not be
  85602. changed by the machine file but, you never know. */
  85603. -extern size_t __pagesize;
  85604. -#include <bits/uClibc_page.h>
  85605. -#ifndef PAGE_SIZE
  85606. -#define PAGE_SIZE (sysconf (_SC_PAGESIZE))
  85607. -#endif
  85608. +#define __PAGE_SIZE (sysconf (_SC_PAGESIZE))
  85609. /* The max size of the thread stack segments. If the default
  85610. THREAD_SELF implementation is used, this must be a power of two and
  85611. - a multiple of PAGE_SIZE. */
  85612. + a multiple of __PAGE_SIZE. */
  85613. #ifndef STACK_SIZE
  85614. #ifdef __ARCH_USE_MMU__
  85615. #define STACK_SIZE (2 * 1024 * 1024)
  85616. #else
  85617. -#define STACK_SIZE (4 * __pagesize)
  85618. +#define STACK_SIZE (4 * __PAGE_SIZE)
  85619. #endif
  85620. #endif
  85621. -/* The initial size of the thread stack. Must be a multiple of PAGE_SIZE. */
  85622. +/* The initial size of the thread stack. Must be a multiple of __PAGE_SIZE. */
  85623. #ifndef INITIAL_STACK_SIZE
  85624. -#define INITIAL_STACK_SIZE (4 * __pagesize)
  85625. +#define INITIAL_STACK_SIZE (4 * __PAGE_SIZE)
  85626. #endif
  85627. /* Size of the thread manager stack. The "- 32" avoids wasting space
  85628. with some malloc() implementations. */
  85629. #ifndef THREAD_MANAGER_STACK_SIZE
  85630. -#define THREAD_MANAGER_STACK_SIZE (2 * __pagesize - 32)
  85631. +#define THREAD_MANAGER_STACK_SIZE (2 * __PAGE_SIZE - 32)
  85632. #endif
  85633. /* The base of the "array" of thread stacks. The array will grow down from
  85634. @@ -385,7 +381,7 @@
  85635. /* Recover thread descriptor for the current thread */
  85636. -extern pthread_descr __pthread_find_self (void) __attribute__ ((const));
  85637. +extern pthread_descr __pthread_find_self (void) __attribute__ ((const)) attribute_hidden;
  85638. static __inline__ pthread_descr thread_self (void) __attribute__ ((const));
  85639. static __inline__ pthread_descr thread_self (void)
  85640. @@ -455,18 +451,18 @@
  85641. /* Internal global functions */
  85642. void __pthread_do_exit (void *retval, char *currentframe)
  85643. - __attribute__ ((__noreturn__));
  85644. -void __pthread_destroy_specifics(void);
  85645. -void __pthread_perform_cleanup(char *currentframe);
  85646. -int __pthread_initialize_manager(void);
  85647. + __attribute__ ((__noreturn__)) attribute_hidden;
  85648. +void __pthread_destroy_specifics(void) attribute_hidden;
  85649. +void __pthread_perform_cleanup(char *currentframe) attribute_hidden;
  85650. +int __pthread_initialize_manager(void) attribute_hidden;
  85651. void __pthread_message(char * fmt, ...)
  85652. - __attribute__ ((__format__ (printf, 1, 2)));
  85653. -int __pthread_manager(void *reqfd);
  85654. -int __pthread_manager_event(void *reqfd);
  85655. -void __pthread_manager_sighandler(int sig);
  85656. -void __pthread_reset_main_thread(void);
  85657. -void __fresetlockfiles(void);
  85658. -void __pthread_manager_adjust_prio(int thread_prio);
  85659. + __attribute__ ((__format__ (printf, 1, 2))) attribute_hidden;
  85660. +int __pthread_manager(void *reqfd) attribute_hidden;
  85661. +int __pthread_manager_event(void *reqfd) attribute_hidden;
  85662. +void __pthread_manager_sighandler(int sig) attribute_hidden;
  85663. +void __pthread_reset_main_thread(void) attribute_hidden;
  85664. +void __fresetlockfiles(void) attribute_hidden;
  85665. +void __pthread_manager_adjust_prio(int thread_prio) attribute_hidden;
  85666. void __pthread_initialize_minimal (void);
  85667. extern void __pthread_exit (void *retval)
  85668. @@ -475,36 +471,36 @@
  85669. #endif
  85670. ;
  85671. -extern int __pthread_attr_setguardsize __P ((pthread_attr_t *__attr,
  85672. - size_t __guardsize));
  85673. -extern int __pthread_attr_getguardsize __P ((__const pthread_attr_t *__attr,
  85674. - size_t *__guardsize));
  85675. -extern int __pthread_attr_setstackaddr __P ((pthread_attr_t *__attr,
  85676. - void *__stackaddr));
  85677. -extern int __pthread_attr_getstackaddr __P ((__const pthread_attr_t *__attr,
  85678. - void **__stackaddr));
  85679. -extern int __pthread_attr_setstacksize __P ((pthread_attr_t *__attr,
  85680. - size_t __stacksize));
  85681. -extern int __pthread_attr_getstacksize __P ((__const pthread_attr_t *__attr,
  85682. - size_t *__stacksize));
  85683. -extern int __pthread_getconcurrency __P ((void));
  85684. -extern int __pthread_setconcurrency __P ((int __level));
  85685. -extern void __pthread_kill_other_threads_np __P ((void));
  85686. -
  85687. -extern void __pthread_restart_old(pthread_descr th);
  85688. -extern void __pthread_suspend_old(pthread_descr self);
  85689. -extern int __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime);
  85690. -
  85691. -extern void __pthread_restart_new(pthread_descr th);
  85692. -extern void __pthread_suspend_new(pthread_descr self);
  85693. -extern int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstime);
  85694. +extern int __pthread_attr_setguardsize(pthread_attr_t *__attr,
  85695. + size_t __guardsize) attribute_hidden;
  85696. +extern int __pthread_attr_getguardsize(const pthread_attr_t *__attr,
  85697. + size_t *__guardsize) attribute_hidden;
  85698. +extern int __pthread_attr_setstackaddr(pthread_attr_t *__attr,
  85699. + void *__stackaddr) attribute_hidden;
  85700. +extern int __pthread_attr_getstackaddr(const pthread_attr_t *__attr,
  85701. + void **__stackaddr) attribute_hidden;
  85702. +extern int __pthread_attr_setstacksize(pthread_attr_t *__attr,
  85703. + size_t __stacksize) attribute_hidden;
  85704. +extern int __pthread_attr_getstacksize(const pthread_attr_t *__attr,
  85705. + size_t *__stacksize) attribute_hidden;
  85706. +extern int __pthread_getconcurrency(void) attribute_hidden;
  85707. +extern int __pthread_setconcurrency(int __level) attribute_hidden;
  85708. +extern void __pthread_kill_other_threads_np(void) attribute_hidden;
  85709. +
  85710. +extern void __pthread_restart_old(pthread_descr th) attribute_hidden;
  85711. +extern void __pthread_suspend_old(pthread_descr self) attribute_hidden;
  85712. +extern int __pthread_timedsuspend_old(pthread_descr self, const struct timespec *abstime) attribute_hidden;
  85713. +
  85714. +extern void __pthread_restart_new(pthread_descr th) attribute_hidden;
  85715. +extern void __pthread_suspend_new(pthread_descr self) attribute_hidden;
  85716. +extern int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abstime) attribute_hidden;
  85717. -extern void __pthread_wait_for_restart_signal(pthread_descr self);
  85718. +extern void __pthread_wait_for_restart_signal(pthread_descr self) attribute_hidden;
  85719. /* Global pointers to old or new suspend functions */
  85720. -extern void (*__pthread_restart)(pthread_descr);
  85721. -extern void (*__pthread_suspend)(pthread_descr);
  85722. +extern void (*__pthread_restart)(pthread_descr) attribute_hidden;
  85723. +extern void (*__pthread_suspend)(pthread_descr) attribute_hidden;
  85724. #if defined NOT_IN_libc && defined IS_IN_libpthread
  85725. extern __typeof(pthread_mutex_init) __pthread_mutex_init attribute_hidden;
  85726. @@ -515,7 +511,7 @@
  85727. #endif
  85728. /* Prototypes for some of the new semaphore functions. */
  85729. -extern int __new_sem_post (sem_t * sem);
  85730. +/*extern int __new_sem_post (sem_t * sem);*/
  85731. /* TSD. */
  85732. extern int __pthread_internal_tsd_set (int key, const void * pointer);
  85733. @@ -524,12 +520,10 @@
  85734. __pthread_internal_tsd_address (int key);
  85735. /* The functions called the signal events. */
  85736. -extern void __linuxthreads_create_event (void);
  85737. -extern void __linuxthreads_death_event (void);
  85738. -extern void __linuxthreads_reap_event (void);
  85739. +extern void __linuxthreads_create_event (void) attribute_hidden;
  85740. +extern void __linuxthreads_death_event (void) attribute_hidden;
  85741. +extern void __linuxthreads_reap_event (void) attribute_hidden;
  85742. #include <pthread-functions.h>
  85743. -extern int * __libc_pthread_init (const struct pthread_functions *functions);
  85744. -
  85745. #endif /* internals.h */
  85746. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/libc_pthread_init.c uClibc-git/libpthread/linuxthreads.old/libc_pthread_init.c
  85747. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/libc_pthread_init.c 2012-05-15 09:20:09.000000000 +0200
  85748. +++ uClibc-git/libpthread/linuxthreads.old/libc_pthread_init.c 2014-02-03 12:32:56.000000000 +0100
  85749. @@ -13,27 +13,12 @@
  85750. Lesser General Public License for more details.
  85751. You should have received a copy of the GNU Lesser General Public
  85752. - License along with the GNU C Library; if not, write to the Free
  85753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  85754. - 02111-1307 USA. */
  85755. + License along with the GNU C Library; if not, see
  85756. + <http://www.gnu.org/licenses/>. */
  85757. -#include <features.h>
  85758. #include <locale.h>
  85759. -#include <stdlib.h>
  85760. #include <string.h>
  85761. -
  85762. -/* see comment in forward.c */
  85763. -#define GCC_RENAME_BUG 1
  85764. -#ifdef GCC_RENAME_BUG
  85765. -# include <ctype.h>
  85766. -# include <signal.h>
  85767. -# include <unistd.h>
  85768. -# include <sys/time.h>
  85769. -# include <sys/wait.h>
  85770. -#endif
  85771. -
  85772. -#include "internals.h"
  85773. -#include "sysdeps/pthread/pthread-functions.h"
  85774. +#include <linuxthreads.old/sysdeps/pthread/pthread-functions.h>
  85775. int __libc_multiple_threads attribute_hidden __attribute__((nocommon));
  85776. @@ -48,7 +33,7 @@
  85777. sizeof (__libc_pthread_functions));
  85778. #endif
  85779. -#if ! defined USE___THREAD && defined __UCLIBC_HAS_XLOCALE__
  85780. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_XLOCALE__
  85781. /* Initialize thread-locale current locale to point to the global one.
  85782. With __thread support, the variable's initializer takes care of this. */
  85783. uselocale (LC_GLOBAL_LOCALE);
  85784. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/locale.c uClibc-git/libpthread/linuxthreads.old/locale.c
  85785. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/locale.c 2012-05-15 09:20:09.000000000 +0200
  85786. +++ uClibc-git/libpthread/linuxthreads.old/locale.c 2014-02-03 12:32:56.000000000 +0100
  85787. @@ -11,8 +11,8 @@
  85788. * Library General Public License for more details.
  85789. *
  85790. * You should have received a copy of the GNU Library General Public
  85791. - * License along with this library; if not, write to the Free
  85792. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  85793. + * License along with this library; if not, see
  85794. + * <http://www.gnu.org/licenses/>.
  85795. */
  85796. #include <features.h>
  85797. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/lockfile.c uClibc-git/libpthread/linuxthreads.old/lockfile.c
  85798. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/lockfile.c 2012-05-15 09:20:09.000000000 +0200
  85799. +++ uClibc-git/libpthread/linuxthreads.old/lockfile.c 2014-02-03 12:32:56.000000000 +0100
  85800. @@ -13,9 +13,8 @@
  85801. Lesser General Public License for more details.
  85802. You should have received a copy of the GNU Lesser General Public
  85803. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  85804. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  85805. - Boston, MA 02111-1307, USA. */
  85806. + License along with the GNU C Library; see the file COPYING.LIB. If
  85807. + not, see <http://www.gnu.org/licenses/>. */
  85808. #include <stdio.h>
  85809. #include <pthread.h>
  85810. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/Makefile.in uClibc-git/libpthread/linuxthreads.old/Makefile.in
  85811. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  85812. +++ uClibc-git/libpthread/linuxthreads.old/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  85813. @@ -34,15 +34,12 @@
  85814. libpthread_SRC := \
  85815. attr.c cancel.c condvar.c errno.c events.c join.c lockfile.c manager.c \
  85816. - mutex.c oldsemaphore.c pt-machine.c ptfork.c ptlongjmp.c \
  85817. + mutex.c pt-machine.c ptfork.c pthread.c ptlongjmp.c \
  85818. rwlock.c semaphore.c signals.c specific.c spinlock.c wrapsyscall.c
  85819. ifeq ($(UCLIBC_HAS_XLOCALE),y)
  85820. libpthread_SRC += locale.c
  85821. endif
  85822. -libpthread_SPEC_SRC := pthread.c
  85823. -libpthread_SPEC_SRC := $(patsubst %.c,$(libpthread_DIR)/%.c,$(libpthread_SPEC_SRC))
  85824. -
  85825. # remove generic sources, if arch specific version is present
  85826. ifneq ($(strip $(libpthread_ARCH_SRC)),)
  85827. libpthread_SRC := $(filter-out $(patsubst %.c,$(libpthread_DIR)/%.c,$(notdir $(libpthread_ARCH_SRC))),$(libpthread_SRC))
  85828. @@ -62,15 +59,12 @@
  85829. libc-static-y += $(libpthread_OUT)/libc_pthread_init.o
  85830. libc-shared-y += $(libpthread_libc_OBJ:.o=.oS)
  85831. -libpthread-static-y += $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.o,$(libpthread_SPEC_SRC))
  85832. -libpthread-shared-y += $(patsubst $(libpthread_DIR)/%.c,$(libpthread_OUT)/%.oS,$(libpthread_SPEC_SRC))
  85833. -
  85834. ifeq ($(DOPIC),y)
  85835. -libpthread-a-y += $(libpthread_OBJ:.o=.os) $(libpthread-static-y:.o=.os)
  85836. +libpthread-a-y += $(libpthread_OBJ:.o=.os)
  85837. else
  85838. -libpthread-a-y += $(libpthread_OBJ) $(libpthread-static-y)
  85839. +libpthread-a-y += $(libpthread_OBJ)
  85840. endif
  85841. -libpthread-so-y += $(libpthread_OBJ:.o=.os) $(libpthread-shared-y)
  85842. +libpthread-so-y += $(libpthread_OBJ:.o=.oS)
  85843. lib-a-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.a
  85844. lib-so-$(UCLIBC_HAS_THREADS) += $(top_builddir)lib/libpthread.so
  85845. @@ -93,7 +87,7 @@
  85846. ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
  85847. $(libpthread_OUT)/libpthread.oS: STRIP_FLAGS:=$(STRIP_FLAGS:-x=-X --strip-debug)
  85848. endif
  85849. -$(libpthread_OUT)/libpthread.oS: $(libpthread_SRC) $(libpthread_SPEC_SRC)
  85850. +$(libpthread_OUT)/libpthread.oS: $(libpthread_SRC)
  85851. $(Q)$(RM) $@
  85852. $(compile-m)
  85853. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/manager.c uClibc-git/libpthread/linuxthreads.old/manager.c
  85854. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/manager.c 2012-05-15 09:20:09.000000000 +0200
  85855. +++ uClibc-git/libpthread/linuxthreads.old/manager.c 2014-02-03 12:32:56.000000000 +0100
  85856. @@ -232,7 +232,7 @@
  85857. break;
  85858. case REQ_POST:
  85859. PDEBUG("got REQ_POST\n");
  85860. - __new_sem_post(request.req_args.post);
  85861. + sem_post(request.req_args.post);
  85862. break;
  85863. case REQ_DEBUG:
  85864. PDEBUG("got REQ_DEBUG\n");
  85865. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/oldsemaphore.c uClibc-git/libpthread/linuxthreads.old/oldsemaphore.c
  85866. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/oldsemaphore.c 2012-05-15 09:20:09.000000000 +0200
  85867. +++ uClibc-git/libpthread/linuxthreads.old/oldsemaphore.c 1970-01-01 01:00:00.000000000 +0100
  85868. @@ -1,241 +0,0 @@
  85869. -/*
  85870. - * This file contains the old semaphore code that we need to
  85871. - * preserve for glibc-2.0 backwards compatibility. Port to glibc 2.1
  85872. - * done by Cristian Gafton.
  85873. - */
  85874. -
  85875. -/* Linuxthreads - a simple clone()-based implementation of Posix */
  85876. -/* threads for Linux. */
  85877. -/* Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) */
  85878. -/* */
  85879. -/* This program is free software; you can redistribute it and/or */
  85880. -/* modify it under the terms of the GNU Library General Public License */
  85881. -/* as published by the Free Software Foundation; either version 2 */
  85882. -/* of the License, or (at your option) any later version. */
  85883. -/* */
  85884. -/* This program is distributed in the hope that it will be useful, */
  85885. -/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
  85886. -/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
  85887. -/* GNU Library General Public License for more details. */
  85888. -
  85889. -/* Semaphores a la POSIX 1003.1b */
  85890. -
  85891. -#include <errno.h>
  85892. -#include "pthread.h"
  85893. -#include "internals.h"
  85894. -#include "spinlock.h"
  85895. -#include "restart.h"
  85896. -#include "queue.h"
  85897. -
  85898. -typedef struct {
  85899. - long int sem_status;
  85900. - int sem_spinlock;
  85901. -} old_sem_t;
  85902. -
  85903. -/* Maximum value the semaphore can have. */
  85904. -#define SEM_VALUE_MAX ((int) ((~0u) >> 1))
  85905. -
  85906. -static __inline__ int sem_compare_and_swap(old_sem_t *sem, long oldval, long newval)
  85907. -{
  85908. - return compare_and_swap(&sem->sem_status, oldval, newval, &sem->sem_spinlock);
  85909. -}
  85910. -
  85911. -/* The state of a semaphore is represented by a long int encoding
  85912. - either the semaphore count if >= 0 and no thread is waiting on it,
  85913. - or the head of the list of threads waiting for the semaphore.
  85914. - To distinguish the two cases, we encode the semaphore count N
  85915. - as 2N+1, so that it has the lowest bit set.
  85916. -
  85917. - A sequence of sem_wait operations on a semaphore initialized to N
  85918. - result in the following successive states:
  85919. - 2N+1, 2N-1, ..., 3, 1, &first_waiting_thread, &second_waiting_thread, ...
  85920. -*/
  85921. -
  85922. -static void sem_restart_list(pthread_descr waiting);
  85923. -
  85924. -int __old_sem_init(old_sem_t *sem, int pshared, unsigned int value);
  85925. -int __old_sem_init(old_sem_t *sem, int pshared, unsigned int value)
  85926. -{
  85927. - if (value > SEM_VALUE_MAX) {
  85928. - errno = EINVAL;
  85929. - return -1;
  85930. - }
  85931. - if (pshared) {
  85932. - errno = ENOSYS;
  85933. - return -1;
  85934. - }
  85935. - sem->sem_spinlock = 0;
  85936. - sem->sem_status = ((long)value << 1) + 1;
  85937. - return 0;
  85938. -}
  85939. -
  85940. -/* Function called by pthread_cancel to remove the thread from
  85941. - waiting inside __old_sem_wait. Here we simply unconditionally
  85942. - indicate that the thread is to be woken, by returning 1. */
  85943. -
  85944. -static int old_sem_extricate_func(void *obj attribute_unused, pthread_descr th attribute_unused)
  85945. -{
  85946. - return 1;
  85947. -}
  85948. -
  85949. -int __old_sem_wait(old_sem_t * sem);
  85950. -int __old_sem_wait(old_sem_t * sem)
  85951. -{
  85952. - long oldstatus, newstatus;
  85953. - volatile pthread_descr self = thread_self();
  85954. - pthread_descr * th;
  85955. - pthread_extricate_if extr;
  85956. -
  85957. - /* Set up extrication interface */
  85958. - extr.pu_object = 0;
  85959. - extr.pu_extricate_func = old_sem_extricate_func;
  85960. -
  85961. - while (1) {
  85962. - /* Register extrication interface */
  85963. - __pthread_set_own_extricate_if(self, &extr);
  85964. - do {
  85965. - oldstatus = sem->sem_status;
  85966. - if ((oldstatus & 1) && (oldstatus != 1))
  85967. - newstatus = oldstatus - 2;
  85968. - else {
  85969. - newstatus = (long) self;
  85970. - self->p_nextwaiting = (pthread_descr) oldstatus;
  85971. - }
  85972. - }
  85973. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  85974. - if (newstatus & 1) {
  85975. - /* We got the semaphore. */
  85976. - __pthread_set_own_extricate_if(self, 0);
  85977. - return 0;
  85978. - }
  85979. - /* Wait for sem_post or cancellation */
  85980. - suspend(self);
  85981. - __pthread_set_own_extricate_if(self, 0);
  85982. -
  85983. - /* This is a cancellation point */
  85984. - if (self->p_canceled && self->p_cancelstate == PTHREAD_CANCEL_ENABLE) {
  85985. - /* Remove ourselves from the waiting list if we're still on it */
  85986. - /* First check if we're at the head of the list. */
  85987. - do {
  85988. - oldstatus = sem->sem_status;
  85989. - if (oldstatus != (long) self) break;
  85990. - newstatus = (long) self->p_nextwaiting;
  85991. - }
  85992. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  85993. - /* Now, check if we're somewhere in the list.
  85994. - There's a race condition with sem_post here, but it does not matter:
  85995. - the net result is that at the time pthread_exit is called,
  85996. - self is no longer reachable from sem->sem_status. */
  85997. - if (oldstatus != (long) self && (oldstatus & 1) == 0) {
  85998. - for (th = &(((pthread_descr) oldstatus)->p_nextwaiting);
  85999. - *th != NULL && *th != (pthread_descr) 1;
  86000. - th = &((*th)->p_nextwaiting)) {
  86001. - if (*th == self) {
  86002. - *th = self->p_nextwaiting;
  86003. - break;
  86004. - }
  86005. - }
  86006. - }
  86007. - __pthread_do_exit(PTHREAD_CANCELED, CURRENT_STACK_FRAME);
  86008. - }
  86009. - }
  86010. -}
  86011. -
  86012. -int __old_sem_trywait(old_sem_t * sem);
  86013. -int __old_sem_trywait(old_sem_t * sem)
  86014. -{
  86015. - long oldstatus, newstatus;
  86016. -
  86017. - do {
  86018. - oldstatus = sem->sem_status;
  86019. - if ((oldstatus & 1) == 0 || (oldstatus == 1)) {
  86020. - errno = EAGAIN;
  86021. - return -1;
  86022. - }
  86023. - newstatus = oldstatus - 2;
  86024. - }
  86025. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  86026. - return 0;
  86027. -}
  86028. -
  86029. -int __old_sem_post(old_sem_t * sem);
  86030. -int __old_sem_post(old_sem_t * sem)
  86031. -{
  86032. - long oldstatus, newstatus;
  86033. -
  86034. - do {
  86035. - oldstatus = sem->sem_status;
  86036. - if ((oldstatus & 1) == 0)
  86037. - newstatus = 3;
  86038. - else {
  86039. - if (oldstatus >= SEM_VALUE_MAX) {
  86040. - /* Overflow */
  86041. - errno = ERANGE;
  86042. - return -1;
  86043. - }
  86044. - newstatus = oldstatus + 2;
  86045. - }
  86046. - }
  86047. - while (! sem_compare_and_swap(sem, oldstatus, newstatus));
  86048. - if ((oldstatus & 1) == 0)
  86049. - sem_restart_list((pthread_descr) oldstatus);
  86050. - return 0;
  86051. -}
  86052. -
  86053. -int __old_sem_getvalue(old_sem_t * sem, int * sval);
  86054. -int __old_sem_getvalue(old_sem_t * sem, int * sval)
  86055. -{
  86056. - long status = sem->sem_status;
  86057. - if (status & 1)
  86058. - *sval = (int)((unsigned long) status >> 1);
  86059. - else
  86060. - *sval = 0;
  86061. - return 0;
  86062. -}
  86063. -
  86064. -int __old_sem_destroy(old_sem_t * sem);
  86065. -int __old_sem_destroy(old_sem_t * sem)
  86066. -{
  86067. - if ((sem->sem_status & 1) == 0) {
  86068. - errno = EBUSY;
  86069. - return -1;
  86070. - }
  86071. - return 0;
  86072. -}
  86073. -
  86074. -/* Auxiliary function for restarting all threads on a waiting list,
  86075. - in priority order. */
  86076. -
  86077. -static void sem_restart_list(pthread_descr waiting)
  86078. -{
  86079. - pthread_descr th, towake, *p;
  86080. -
  86081. - /* Sort list of waiting threads by decreasing priority (insertion sort) */
  86082. - towake = NULL;
  86083. - while (waiting != (pthread_descr) 1) {
  86084. - th = waiting;
  86085. - waiting = waiting->p_nextwaiting;
  86086. - p = &towake;
  86087. - while (*p != NULL && th->p_priority < (*p)->p_priority)
  86088. - p = &((*p)->p_nextwaiting);
  86089. - th->p_nextwaiting = *p;
  86090. - *p = th;
  86091. - }
  86092. - /* Wake up threads in priority order */
  86093. - while (towake != NULL) {
  86094. - th = towake;
  86095. - towake = towake->p_nextwaiting;
  86096. - th->p_nextwaiting = NULL;
  86097. - restart(th);
  86098. - }
  86099. -}
  86100. -
  86101. -#if defined __PIC__ && defined DO_VERSIONING
  86102. -symbol_version (__old_sem_init, sem_init, GLIBC_2.0);
  86103. -symbol_version (__old_sem_wait, sem_wait, GLIBC_2.0);
  86104. -symbol_version (__old_sem_trywait, sem_trywait, GLIBC_2.0);
  86105. -symbol_version (__old_sem_post, sem_post, GLIBC_2.0);
  86106. -symbol_version (__old_sem_getvalue, sem_getvalue, GLIBC_2.0);
  86107. -symbol_version (__old_sem_destroy, sem_destroy, GLIBC_2.0);
  86108. -#endif
  86109. -
  86110. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/ptfork.c uClibc-git/libpthread/linuxthreads.old/ptfork.c
  86111. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/ptfork.c 2012-05-15 09:20:09.000000000 +0200
  86112. +++ uClibc-git/libpthread/linuxthreads.old/ptfork.c 2014-02-03 12:32:56.000000000 +0100
  86113. @@ -93,10 +93,7 @@
  86114. void __pthread_once_fork_child(void);
  86115. void __pthread_once_fork_parent(void);
  86116. -extern __typeof(fork) __libc_fork;
  86117. -
  86118. -pid_t __fork(void) attribute_hidden;
  86119. -pid_t __fork(void)
  86120. +static pid_t __fork(void)
  86121. {
  86122. pid_t pid;
  86123. struct handler_list * prepare, * child, * parent;
  86124. @@ -151,11 +148,7 @@
  86125. return pid;
  86126. }
  86127. strong_alias(__fork,fork)
  86128. -
  86129. -pid_t vfork(void)
  86130. -{
  86131. - return __fork();
  86132. -}
  86133. +strong_alias(__fork,vfork)
  86134. #else
  86135. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/pthread.c uClibc-git/libpthread/linuxthreads.old/pthread.c
  86136. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/pthread.c 2012-05-15 09:20:09.000000000 +0200
  86137. +++ uClibc-git/libpthread/linuxthreads.old/pthread.c 2014-02-03 12:32:56.000000000 +0100
  86138. @@ -14,8 +14,6 @@
  86139. /* Thread creation, initialization, and basic low-level routines */
  86140. -#define __FORCE_GLIBC
  86141. -#include <features.h>
  86142. #include <errno.h>
  86143. #include <netdb.h> /* for h_errno */
  86144. #include <stddef.h>
  86145. @@ -38,8 +36,6 @@
  86146. #include <sys/types.h>
  86147. #include <sys/syscall.h>
  86148. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  86149. -extern __typeof(sigaction) __libc_sigaction;
  86150. libpthread_hidden_proto(waitpid)
  86151. libpthread_hidden_proto(raise)
  86152. @@ -260,6 +256,7 @@
  86153. return current_rtmax;
  86154. }
  86155. +#if 0
  86156. /* Allocate real-time signal with highest/lowest available
  86157. priority. Please note that we don't use a lock since we assume
  86158. this function to be called at program start. */
  86159. @@ -272,6 +269,7 @@
  86160. return high ? current_rtmin++ : current_rtmax--;
  86161. }
  86162. #endif
  86163. +#endif
  86164. /* Initialize the pthread library.
  86165. Initialization is split in two functions:
  86166. @@ -319,7 +317,7 @@
  86167. struct pthread_functions __pthread_functions =
  86168. {
  86169. -#ifndef USE___THREAD
  86170. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  86171. .ptr_pthread_internal_tsd_set = __pthread_internal_tsd_set,
  86172. .ptr_pthread_internal_tsd_get = __pthread_internal_tsd_get,
  86173. .ptr_pthread_internal_tsd_address = __pthread_internal_tsd_address,
  86174. @@ -367,10 +365,10 @@
  86175. .ptr_pthread_sigwait = pthread_sigwait,
  86176. .ptr_pthread_raise = pthread_raise,
  86177. .ptr__pthread_cleanup_push = _pthread_cleanup_push,
  86178. - .ptr__pthread_cleanup_pop = _pthread_cleanup_pop
  86179. + .ptr__pthread_cleanup_pop = _pthread_cleanup_pop,
  86180. */
  86181. .ptr__pthread_cleanup_push_defer = __pthread_cleanup_push_defer,
  86182. - .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore,
  86183. + .ptr__pthread_cleanup_pop_restore = __pthread_cleanup_pop_restore
  86184. };
  86185. #ifdef SHARED
  86186. # define ptr_pthread_functions &__pthread_functions
  86187. @@ -528,7 +526,7 @@
  86188. /* On non-MMU systems we make sure that the initial thread bounds don't overlap
  86189. * with the manager stack frame */
  86190. NOMMU_INITIAL_THREAD_BOUNDS(__pthread_manager_thread_tos,__pthread_manager_thread_bos);
  86191. - PDEBUG("manager stack: size=%d, bos=%p, tos=%p\n", THREAD_MANAGER_STACK_SIZE,
  86192. + PDEBUG("manager stack: size=%ld, bos=%p, tos=%p\n", THREAD_MANAGER_STACK_SIZE,
  86193. __pthread_manager_thread_bos, __pthread_manager_thread_tos);
  86194. #if 0
  86195. PDEBUG("initial stack: estimate bos=%p, tos=%p\n",
  86196. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/ptlongjmp.c uClibc-git/libpthread/linuxthreads.old/ptlongjmp.c
  86197. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/ptlongjmp.c 2012-05-15 09:20:09.000000000 +0200
  86198. +++ uClibc-git/libpthread/linuxthreads.old/ptlongjmp.c 2014-02-03 12:32:56.000000000 +0100
  86199. @@ -19,11 +19,7 @@
  86200. #include "pthread.h"
  86201. #include "internals.h"
  86202. #include <bits/stackinfo.h>
  86203. -
  86204. -/* These functions are not declared anywhere since they shouldn't be
  86205. - used at another place but here. */
  86206. -extern __typeof(siglongjmp) __libc_siglongjmp attribute_noreturn;
  86207. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  86208. +#include <jmpbuf-unwind.h>
  86209. static void pthread_cleanup_upto(__jmp_buf target)
  86210. {
  86211. @@ -58,13 +54,13 @@
  86212. THREAD_SETMEM(self, p_in_sighandler, NULL);
  86213. }
  86214. -void attribute_noreturn siglongjmp(sigjmp_buf env, int val)
  86215. +void siglongjmp(sigjmp_buf env, int val)
  86216. {
  86217. pthread_cleanup_upto(env->__jmpbuf);
  86218. __libc_siglongjmp(env, val);
  86219. }
  86220. -void attribute_noreturn longjmp(jmp_buf env, int val)
  86221. +void longjmp(jmp_buf env, int val)
  86222. {
  86223. pthread_cleanup_upto(env->__jmpbuf);
  86224. __libc_longjmp(env, val);
  86225. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/pt-machine.c uClibc-git/libpthread/linuxthreads.old/pt-machine.c
  86226. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/pt-machine.c 2012-05-15 09:20:09.000000000 +0200
  86227. +++ uClibc-git/libpthread/linuxthreads.old/pt-machine.c 2014-02-03 12:32:56.000000000 +0100
  86228. @@ -14,8 +14,7 @@
  86229. You should have received a copy of the GNU Library General Public
  86230. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86231. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86232. - Boston, MA 02111-1307, USA. */
  86233. + see <http://www.gnu.org/licenses/>. */
  86234. #define PT_EI
  86235. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/rwlock.c uClibc-git/libpthread/linuxthreads.old/rwlock.c
  86236. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/rwlock.c 2012-05-15 09:20:09.000000000 +0200
  86237. +++ uClibc-git/libpthread/linuxthreads.old/rwlock.c 2014-02-03 12:32:56.000000000 +0100
  86238. @@ -16,8 +16,7 @@
  86239. You should have received a copy of the GNU Library General Public
  86240. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86241. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86242. - Boston, MA 02111-1307, USA. */
  86243. + see <http://www.gnu.org/licenses/>. */
  86244. #include <errno.h>
  86245. #include <pthread.h>
  86246. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.c uClibc-git/libpthread/linuxthreads.old/semaphore.c
  86247. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.c 2012-05-15 09:20:09.000000000 +0200
  86248. +++ uClibc-git/libpthread/linuxthreads.old/semaphore.c 2014-02-03 12:32:56.000000000 +0100
  86249. @@ -15,6 +15,7 @@
  86250. /* Semaphores a la POSIX 1003.1b */
  86251. #include <features.h>
  86252. +#include <limits.h>
  86253. #include <errno.h>
  86254. #include "pthread.h"
  86255. #include "semaphore.h"
  86256. @@ -23,8 +24,7 @@
  86257. #include "restart.h"
  86258. #include "queue.h"
  86259. -int __new_sem_init(sem_t *sem, int pshared, unsigned int value);
  86260. -int __new_sem_init(sem_t *sem, int pshared, unsigned int value)
  86261. +int sem_init(sem_t *sem, int pshared, unsigned int value)
  86262. {
  86263. if (value > SEM_VALUE_MAX) {
  86264. errno = EINVAL;
  86265. @@ -41,7 +41,7 @@
  86266. }
  86267. /* Function called by pthread_cancel to remove the thread from
  86268. - waiting inside __new_sem_wait. */
  86269. + waiting inside sem_wait. */
  86270. static int new_sem_extricate_func(void *obj, pthread_descr th)
  86271. {
  86272. @@ -56,8 +56,7 @@
  86273. return did_remove;
  86274. }
  86275. -int __new_sem_wait(sem_t * sem);
  86276. -int __new_sem_wait(sem_t * sem)
  86277. +int sem_wait(sem_t * sem)
  86278. {
  86279. volatile pthread_descr self = thread_self();
  86280. pthread_extricate_if extr;
  86281. @@ -119,8 +118,7 @@
  86282. return 0;
  86283. }
  86284. -int __new_sem_trywait(sem_t * sem);
  86285. -int __new_sem_trywait(sem_t * sem)
  86286. +int sem_trywait(sem_t * sem)
  86287. {
  86288. int retval;
  86289. @@ -136,8 +134,7 @@
  86290. return retval;
  86291. }
  86292. -int __new_sem_post(sem_t * sem);
  86293. -int __new_sem_post(sem_t * sem)
  86294. +int sem_post(sem_t * sem)
  86295. {
  86296. pthread_descr self = thread_self();
  86297. pthread_descr th;
  86298. @@ -178,15 +175,13 @@
  86299. return 0;
  86300. }
  86301. -int __new_sem_getvalue(sem_t * sem, int * sval);
  86302. -int __new_sem_getvalue(sem_t * sem, int * sval)
  86303. +int sem_getvalue(sem_t * sem, int * sval)
  86304. {
  86305. *sval = sem->__sem_value;
  86306. return 0;
  86307. }
  86308. -int __new_sem_destroy(sem_t * sem);
  86309. -int __new_sem_destroy(sem_t * sem)
  86310. +int sem_destroy(sem_t * sem)
  86311. {
  86312. if (sem->__sem_waiting != NULL) {
  86313. __set_errno (EBUSY);
  86314. @@ -302,12 +297,3 @@
  86315. /* We got the semaphore */
  86316. return 0;
  86317. }
  86318. -
  86319. -
  86320. -weak_alias (__new_sem_init, sem_init)
  86321. -weak_alias (__new_sem_wait, sem_wait)
  86322. -weak_alias (__new_sem_trywait, sem_trywait)
  86323. -weak_alias (__new_sem_post, sem_post)
  86324. -weak_alias (__new_sem_getvalue, sem_getvalue)
  86325. -weak_alias (__new_sem_destroy, sem_destroy)
  86326. -
  86327. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.h uClibc-git/libpthread/linuxthreads.old/semaphore.h
  86328. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  86329. +++ uClibc-git/libpthread/linuxthreads.old/semaphore.h 2014-02-03 12:32:56.000000000 +0100
  86330. @@ -17,6 +17,7 @@
  86331. #include <features.h>
  86332. #include <sys/types.h>
  86333. +#include <limits.h>
  86334. #ifdef __USE_XOPEN2K
  86335. # define __need_timespec
  86336. # include <time.h>
  86337. @@ -42,7 +43,9 @@
  86338. #define SEM_FAILED ((sem_t *) 0)
  86339. /* Maximum value the semaphore can have. */
  86340. +#ifndef SEM_VALUE_MAX
  86341. #define SEM_VALUE_MAX ((int) ((~0u) >> 1))
  86342. +#endif
  86343. __BEGIN_DECLS
  86344. @@ -55,13 +58,13 @@
  86345. extern int sem_destroy (sem_t *__sem) __THROW;
  86346. /* Open a named semaphore NAME with open flags OFLAG. */
  86347. -extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  86348. +extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
  86349. /* Close descriptor for named semaphore SEM. */
  86350. extern int sem_close (sem_t *__sem) __THROW;
  86351. /* Remove named semaphore NAME. */
  86352. -extern int sem_unlink (__const char *__name) __THROW;
  86353. +extern int sem_unlink (const char *__name) __THROW;
  86354. /* Wait for SEM being posted.
  86355. @@ -75,7 +78,7 @@
  86356. This function is a cancellation point and therefore not marked with
  86357. __THROW. */
  86358. extern int sem_timedwait (sem_t *__restrict __sem,
  86359. - __const struct timespec *__restrict __abstime);
  86360. + const struct timespec *__restrict __abstime);
  86361. #endif
  86362. /* Test whether SEM is posted. */
  86363. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/signals.c uClibc-git/libpthread/linuxthreads.old/signals.c
  86364. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/signals.c 2012-05-15 09:20:09.000000000 +0200
  86365. +++ uClibc-git/libpthread/linuxthreads.old/signals.c 2014-02-03 12:32:56.000000000 +0100
  86366. @@ -22,9 +22,6 @@
  86367. #include "spinlock.h"
  86368. #include <bits/sigcontextinfo.h>
  86369. -/* mods for uClibc: __libc_sigaction is not in any standard headers */
  86370. -extern __typeof(sigaction) __libc_sigaction;
  86371. -
  86372. int pthread_sigmask(int how, const sigset_t * newmask, sigset_t * oldmask)
  86373. {
  86374. sigset_t mask;
  86375. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/specific.c uClibc-git/libpthread/linuxthreads.old/specific.c
  86376. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/specific.c 2012-05-15 09:20:09.000000000 +0200
  86377. +++ uClibc-git/libpthread/linuxthreads.old/specific.c 2014-02-03 12:32:56.000000000 +0100
  86378. @@ -167,7 +167,7 @@
  86379. __pthread_unlock(THREAD_GETMEM(self, p_lock));
  86380. }
  86381. -#ifndef USE___THREAD
  86382. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  86383. /* Thread-specific data for libc. */
  86384. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/spinlock.c uClibc-git/libpthread/linuxthreads.old/spinlock.c
  86385. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/spinlock.c 2012-05-15 09:20:09.000000000 +0200
  86386. +++ uClibc-git/libpthread/linuxthreads.old/spinlock.c 2014-02-03 12:32:56.000000000 +0100
  86387. @@ -14,8 +14,6 @@
  86388. /* Internal locks */
  86389. -#define __FORCE_GLIBC
  86390. -#include <features.h>
  86391. #include <errno.h>
  86392. #include <sched.h>
  86393. #include <time.h>
  86394. @@ -67,7 +65,6 @@
  86395. #if defined HAS_COMPARE_AND_SWAP
  86396. long oldstatus, newstatus;
  86397. int successful_seizure, spurious_wakeup_count;
  86398. - int spin_count;
  86399. #endif
  86400. #if defined TEST_FOR_COMPARE_AND_SWAP
  86401. @@ -87,11 +84,11 @@
  86402. return;
  86403. spurious_wakeup_count = 0;
  86404. - spin_count = 0;
  86405. /* On SMP, try spinning to get the lock. */
  86406. #if 0
  86407. if (__pthread_smp_kernel) {
  86408. + int spin_count;
  86409. int max_count = lock->__spinlock * 2 + 10;
  86410. if (max_count > MAX_ADAPTIVE_SPIN_COUNT)
  86411. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h
  86412. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86413. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/alpha/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86414. @@ -17,8 +17,7 @@
  86415. You should have received a copy of the GNU Lesser General Public
  86416. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86417. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86418. - Boston, MA 02111-1307, USA. */
  86419. + see <http://www.gnu.org/licenses/>. */
  86420. #ifndef _PT_MACHINE_H
  86421. #define _PT_MACHINE_H 1
  86422. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h
  86423. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h 1970-01-01 01:00:00.000000000 +0100
  86424. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86425. @@ -0,0 +1,42 @@
  86426. +/*
  86427. + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com)
  86428. + *
  86429. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  86430. + */
  86431. +
  86432. +#ifndef _PT_MACHINE_H
  86433. +#define _PT_MACHINE_H 1
  86434. +#include <features.h>
  86435. +
  86436. +#ifndef PT_EI
  86437. +# define PT_EI __extern_always_inline
  86438. +#endif
  86439. +
  86440. +extern long int testandset (int *spinlock);
  86441. +extern int __compare_and_swap (long int *p, long int oldval, long int newval);
  86442. +
  86443. +PT_EI long int
  86444. +testandset (int *spinlock)
  86445. +{
  86446. + unsigned int old = 1;
  86447. +
  86448. + /* Atomically exchange @spinlock with 1 */
  86449. + __asm__ __volatile__(
  86450. + "ex %0, [%1]"
  86451. + : "+r" (old)
  86452. + : "r" (spinlock)
  86453. + : "memory");
  86454. +
  86455. + return old;
  86456. +
  86457. +}
  86458. +
  86459. +/* Get some notion of the current stack. Need not be exactly the top
  86460. + of the stack, just something somewhere in the current frame.
  86461. + I don't trust register variables, so let's do this the safe way. */
  86462. +#define CURRENT_STACK_FRAME \
  86463. +__extension__ ({ char *__sp; __asm__ ("mov %0,sp" : "=r" (__sp)); __sp; })
  86464. +
  86465. +#else
  86466. +#error PT_MACHINE already defined
  86467. +#endif /* pt-machine.h */
  86468. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
  86469. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86470. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86471. @@ -15,9 +15,8 @@
  86472. Lesser General Public License for more details.
  86473. You should have received a copy of the GNU Lesser General Public
  86474. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86475. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86476. - Boston, MA 02111-1307, USA. */
  86477. + License along with the GNU C Library; see the file COPYING.LIB. If
  86478. + not, see <http://www.gnu.org/licenses/>. */
  86479. #ifndef _PT_MACHINE_H
  86480. #define _PT_MACHINE_H 1
  86481. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h
  86482. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86483. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/bfin/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86484. @@ -15,8 +15,7 @@
  86485. You should have received a copy of the GNU Lesser General Public
  86486. License along with the GNU C Library; see the file COPYING.LIB. If
  86487. - not, write to the Free Software Foundation, Inc.,
  86488. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86489. + not, see <http://www.gnu.org/licenses/>. */
  86490. #ifndef _PT_MACHINE_H
  86491. #define _PT_MACHINE_H 1
  86492. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h
  86493. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86494. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/c6x/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86495. @@ -15,9 +15,8 @@
  86496. Lesser General Public License for more details.
  86497. You should have received a copy of the GNU Lesser General Public
  86498. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86499. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86500. - Boston, MA 02111-1307, USA. */
  86501. + License along with the GNU C Library; see the file COPYING.LIB. If
  86502. + not, see <http://www.gnu.org/licenses/>. */
  86503. #ifndef _PT_MACHINE_H
  86504. #define _PT_MACHINE_H 1
  86505. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h
  86506. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86507. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/cris/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86508. @@ -15,8 +15,7 @@
  86509. You should have received a copy of the GNU Lesser General Public
  86510. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86511. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86512. - Boston, MA 02111-1307, USA. */
  86513. + see <http://www.gnu.org/licenses/>. */
  86514. #ifndef _PT_MACHINE_H
  86515. #define _PT_MACHINE_H 1
  86516. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h
  86517. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86518. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/frv/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86519. @@ -16,8 +16,7 @@
  86520. You should have received a copy of the GNU Lesser General Public
  86521. License along with the GNU C Library; see the file COPYING.LIB. If
  86522. - not, write to the Free Software Foundation, Inc.,
  86523. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86524. + not, see <http://www.gnu.org/licenses/>. */
  86525. #ifndef _PT_MACHINE_H
  86526. #define _PT_MACHINE_H 1
  86527. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h
  86528. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86529. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/h8300/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86530. @@ -16,8 +16,7 @@
  86531. You should have received a copy of the GNU Lesser General Public
  86532. License along with the GNU C Library; see the file COPYING.LIB. If
  86533. - not, write to the Free Software Foundation, Inc.,
  86534. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86535. + not, see <http://www.gnu.org/licenses/>. */
  86536. #ifndef _PT_MACHINE_H
  86537. #define _PT_MACHINE_H 1
  86538. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h
  86539. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86540. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/i386/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86541. @@ -15,9 +15,8 @@
  86542. Lesser General Public License for more details.
  86543. You should have received a copy of the GNU Lesser General Public
  86544. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86545. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86546. - Boston, MA 02111-1307, USA. */
  86547. + License along with the GNU C Library; see the file COPYING.LIB. If
  86548. + not, see <http://www.gnu.org/licenses/>. */
  86549. #ifndef _PT_MACHINE_H
  86550. #define _PT_MACHINE_H 1
  86551. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/tls.h uClibc-git/libpthread/linuxthreads.old/sysdeps/i386/tls.h
  86552. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/tls.h 2012-05-15 09:20:09.000000000 +0200
  86553. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/i386/tls.h 2014-02-03 12:32:56.000000000 +0100
  86554. @@ -13,9 +13,8 @@
  86555. Lesser General Public License for more details.
  86556. You should have received a copy of the GNU Lesser General Public
  86557. - License along with the GNU C Library; if not, write to the Free
  86558. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86559. - 02111-1307 USA. */
  86560. + License along with the GNU C Library; if not, see
  86561. + <http://www.gnu.org/licenses/>. */
  86562. #ifndef _TLS_H
  86563. #define _TLS_H
  86564. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/useldt.h uClibc-git/libpthread/linuxthreads.old/sysdeps/i386/useldt.h
  86565. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/i386/useldt.h 2012-05-15 09:20:09.000000000 +0200
  86566. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/i386/useldt.h 2014-02-03 12:32:56.000000000 +0100
  86567. @@ -16,8 +16,7 @@
  86568. You should have received a copy of the GNU Lesser General Public
  86569. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86570. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86571. - Boston, MA 02111-1307, USA. */
  86572. + see <http://www.gnu.org/licenses/>. */
  86573. #ifndef __ASSEMBLER__
  86574. #include <stddef.h> /* For offsetof. */
  86575. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h
  86576. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86577. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/ia64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86578. @@ -14,9 +14,8 @@
  86579. Lesser General Public License for more details.
  86580. You should have received a copy of the GNU Lesser General Public
  86581. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86582. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86583. - Boston, MA 02111-1307, USA. */
  86584. + License along with the GNU C Library; see the file COPYING.LIB. If
  86585. + not, see <http://www.gnu.org/licenses/>. */
  86586. #ifndef _PT_MACHINE_H
  86587. #define _PT_MACHINE_H 1
  86588. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/tls.h uClibc-git/libpthread/linuxthreads.old/sysdeps/ia64/tls.h
  86589. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/ia64/tls.h 2012-05-15 09:20:09.000000000 +0200
  86590. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/ia64/tls.h 2014-02-03 12:32:56.000000000 +0100
  86591. @@ -13,9 +13,8 @@
  86592. Lesser General Public License for more details.
  86593. You should have received a copy of the GNU Lesser General Public
  86594. - License along with the GNU C Library; if not, write to the Free
  86595. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86596. - 02111-1307 USA. */
  86597. + License along with the GNU C Library; if not, see
  86598. + <http://www.gnu.org/licenses/>. */
  86599. #ifndef _TLS_H
  86600. #define _TLS_H
  86601. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h
  86602. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86603. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/m68k/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86604. @@ -16,8 +16,7 @@
  86605. You should have received a copy of the GNU Lesser General Public
  86606. License along with the GNU C Library; see the file COPYING.LIB. If
  86607. - not, write to the Free Software Foundation, Inc.,
  86608. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86609. + not, see <http://www.gnu.org/licenses/>. */
  86610. #ifndef _PT_MACHINE_H
  86611. #define _PT_MACHINE_H 1
  86612. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h
  86613. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86614. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/mips/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86615. @@ -18,8 +18,7 @@
  86616. You should have received a copy of the GNU Lesser General Public
  86617. License along with the GNU C Library; see the file COPYING.LIB. If
  86618. - not, write to the Free Software Foundation, Inc.,
  86619. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86620. + not, see <http://www.gnu.org/licenses/>. */
  86621. #ifndef _PT_MACHINE_H
  86622. #define _PT_MACHINE_H 1
  86623. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h
  86624. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86625. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/nios/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86626. @@ -16,8 +16,7 @@
  86627. You should have received a copy of the GNU Library General Public
  86628. License along with the GNU C Library; see the file COPYING.LIB. If not,
  86629. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86630. - Boston, MA 02111-1307, USA. */
  86631. + see <http://www.gnu.org/licenses/>. */
  86632. #ifndef _PT_MACHINE_H
  86633. #define _PT_MACHINE_H 1
  86634. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h
  86635. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86636. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/nios2/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86637. @@ -15,8 +15,7 @@
  86638. You should have received a copy of the GNU Lesser General Public
  86639. License along with the GNU C Library; see the file COPYING.LIB. If
  86640. - not, write to the Free Software Foundation, Inc.,
  86641. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86642. + not, see <http://www.gnu.org/licenses/>. */
  86643. #ifndef _PT_MACHINE_H
  86644. #define _PT_MACHINE_H 1
  86645. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h
  86646. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  86647. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/powerpc/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  86648. @@ -15,8 +15,7 @@
  86649. You should have received a copy of the GNU Lesser General Public
  86650. License along with the GNU C Library; see the file COPYING.LIB. If
  86651. - not, write to the Free Software Foundation, Inc.,
  86652. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  86653. + not, see <http://www.gnu.org/licenses/>. */
  86654. /* These routines are from Appendix G of the 'PowerPC 601 RISC Microprocessor
  86655. User's Manual', by IBM and Motorola. */
  86656. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h
  86657. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h 2012-05-15 09:20:09.000000000 +0200
  86658. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-lock.h 2014-02-03 12:32:56.000000000 +0100
  86659. @@ -14,9 +14,8 @@
  86660. Lesser General Public License for more details.
  86661. You should have received a copy of the GNU Lesser General Public
  86662. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86663. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86664. - Boston, MA 02111-1307, USA. */
  86665. + License along with the GNU C Library; see the file COPYING.LIB. If
  86666. + not, see <http://www.gnu.org/licenses/>. */
  86667. #ifndef _BITS_LIBC_LOCK_H
  86668. #define _BITS_LIBC_LOCK_H 1
  86669. @@ -271,6 +270,7 @@
  86670. _pthread_cleanup_pop_restore (&_buffer, (DOIT)); \
  86671. }
  86672. +#if 0
  86673. #define __libc_cleanup_push(fct, arg) \
  86674. { struct _pthread_cleanup_buffer _buffer; \
  86675. __libc_maybe_call (_pthread_cleanup_push, (&_buffer, (fct), (arg)), 0)
  86676. @@ -278,6 +278,7 @@
  86677. #define __libc_cleanup_pop(execute) \
  86678. __libc_maybe_call (_pthread_cleanup_pop, (&_buffer, execute), 0); \
  86679. }
  86680. +#endif
  86681. /* Create thread-specific key. */
  86682. #define __libc_key_create(KEY, DESTRUCTOR) \
  86683. @@ -300,7 +301,7 @@
  86684. library. */
  86685. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  86686. - __const pthread_mutexattr_t *__mutex_attr);
  86687. + const pthread_mutexattr_t *__mutex_attr);
  86688. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  86689. @@ -319,7 +320,7 @@
  86690. #ifdef __USE_UNIX98
  86691. extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
  86692. - __const pthread_rwlockattr_t *__attr);
  86693. + const pthread_rwlockattr_t *__attr);
  86694. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  86695. @@ -338,7 +339,7 @@
  86696. void (*__destr_function) (void *));
  86697. extern int __pthread_setspecific (pthread_key_t __key,
  86698. - __const void *__pointer);
  86699. + const void *__pointer);
  86700. extern void *__pthread_getspecific (pthread_key_t __key);
  86701. @@ -375,7 +376,6 @@
  86702. weak_extern (BP_SYM (__pthread_setspecific))
  86703. weak_extern (BP_SYM (__pthread_getspecific))
  86704. weak_extern (BP_SYM (__pthread_once))
  86705. -weak_extern (__pthread_initialize)
  86706. weak_extern (__pthread_atfork)
  86707. weak_extern (BP_SYM (_pthread_cleanup_push))
  86708. weak_extern (BP_SYM (_pthread_cleanup_pop))
  86709. @@ -400,7 +400,6 @@
  86710. # pragma weak __pthread_setspecific
  86711. # pragma weak __pthread_getspecific
  86712. # pragma weak __pthread_once
  86713. -# pragma weak __pthread_initialize
  86714. # pragma weak __pthread_atfork
  86715. # pragma weak _pthread_cleanup_push_defer
  86716. # pragma weak _pthread_cleanup_pop_restore
  86717. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h
  86718. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h 2012-05-15 09:20:09.000000000 +0200
  86719. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/bits/libc-tsd.h 2014-02-03 12:32:56.000000000 +0100
  86720. @@ -13,15 +13,12 @@
  86721. Lesser General Public License for more details.
  86722. You should have received a copy of the GNU Lesser General Public
  86723. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  86724. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  86725. - Boston, MA 02111-1307, USA. */
  86726. + License along with the GNU C Library; see the file COPYING.LIB. If
  86727. + not, see <http://www.gnu.org/licenses/>. */
  86728. #ifndef _BITS_LIBC_TSD_H
  86729. #define _BITS_LIBC_TSD_H 1
  86730. -#include <libc-internal.h>
  86731. -
  86732. /* Fast thread-specific data internal to libc. */
  86733. enum __libc_tsd_key_t { _LIBC_TSD_KEY_MALLOC = 0,
  86734. _LIBC_TSD_KEY_DL_ERROR,
  86735. @@ -32,12 +29,11 @@
  86736. _LIBC_TSD_KEY_CTYPE_TOUPPER,
  86737. _LIBC_TSD_KEY_N };
  86738. -#include <sys/cdefs.h>
  86739. -#include <tls.h>
  86740. -
  86741. +#include <features.h>
  86742. #include <linuxthreads.old/internals.h>
  86743. -#if defined(USE_TLS) && USE_TLS && HAVE___THREAD
  86744. +#ifdef __UCLIBC_HAS_TLS__
  86745. +#include <tls.h>
  86746. /* When __thread works, the generic definition is what we want. */
  86747. # include <sysdeps/generic/bits/libc-tsd.h>
  86748. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h
  86749. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  86750. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/bits/pthreadtypes.h 2014-02-03 12:32:56.000000000 +0100
  86751. @@ -19,6 +19,9 @@
  86752. #ifndef _BITS_PTHREADTYPES_H
  86753. #define _BITS_PTHREADTYPES_H 1
  86754. +#define __need_size_t
  86755. +#include <stddef.h>
  86756. +
  86757. #define __need_schedparam
  86758. #include <bits/sched.h>
  86759. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h
  86760. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  86761. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/not-cancel.h 2014-02-03 12:32:56.000000000 +0100
  86762. @@ -14,18 +14,26 @@
  86763. Lesser General Public License for more details.
  86764. You should have received a copy of the GNU Lesser General Public
  86765. - License along with the GNU C Library; if not, write to the Free
  86766. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86767. - 02111-1307 USA. */
  86768. + License along with the GNU C Library; if not, see
  86769. + <http://www.gnu.org/licenses/>. */
  86770. #include <sys/types.h>
  86771. #include <sysdep.h>
  86772. /* Uncancelable open. */
  86773. +#if defined __NR_openat && !defined __NR_open
  86774. +#define open_not_cancel(name, flags, mode) \
  86775. + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), \
  86776. + (flags), (mode))
  86777. +#define open_not_cancel_2(name, flags) \
  86778. + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), \
  86779. + (flags))
  86780. +#else
  86781. #define open_not_cancel(name, flags, mode) \
  86782. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  86783. #define open_not_cancel_2(name, flags) \
  86784. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  86785. +#endif
  86786. /* Uncancelable openat. */
  86787. #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  86788. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h
  86789. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h 2012-05-15 09:20:09.000000000 +0200
  86790. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/pthread-functions.h 2014-02-03 12:32:56.000000000 +0100
  86791. @@ -13,25 +13,28 @@
  86792. Lesser General Public License for more details.
  86793. You should have received a copy of the GNU Lesser General Public
  86794. - License along with the GNU C Library; if not, write to the Free
  86795. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  86796. - 02111-1307 USA. */
  86797. + License along with the GNU C Library; if not, see
  86798. + <http://www.gnu.org/licenses/>. */
  86799. #ifndef _PTHREAD_FUNCTIONS_H
  86800. #define _PTHREAD_FUNCTIONS_H 1
  86801. #include <pthread.h>
  86802. +#if 0
  86803. #include <setjmp.h>
  86804. #include <linuxthreads.old/internals.h>
  86805. struct fork_block;
  86806. +#endif
  86807. /* Data type shared with libc. The libc uses it to pass on calls to
  86808. the thread functions. Wine pokes directly into this structure,
  86809. so if possible avoid breaking it and append new hooks to the end. */
  86810. struct pthread_functions
  86811. {
  86812. +#if 0
  86813. pid_t (*ptr_pthread_fork) (struct fork_block *);
  86814. +#endif
  86815. int (*ptr_pthread_attr_destroy) (pthread_attr_t *);
  86816. int (*ptr_pthread_attr_init) (pthread_attr_t *);
  86817. int (*ptr_pthread_attr_getdetachstate) (const pthread_attr_t *, int *);
  86818. @@ -68,26 +71,36 @@
  86819. pthread_t (*ptr_pthread_self) (void);
  86820. int (*ptr_pthread_setcancelstate) (int, int *);
  86821. int (*ptr_pthread_setcanceltype) (int, int *);
  86822. +#if 0
  86823. void (*ptr_pthread_do_exit) (void *retval, char *currentframe);
  86824. void (*ptr_pthread_cleanup_upto) (__jmp_buf target,
  86825. char *targetframe);
  86826. pthread_descr (*ptr_pthread_thread_self) (void);
  86827. +#endif
  86828. +#if !defined __UCLIBC_HAS_TLS__ && defined __UCLIBC_HAS_RPC__
  86829. int (*ptr_pthread_internal_tsd_set) (int key, const void *pointer);
  86830. void * (*ptr_pthread_internal_tsd_get) (int key);
  86831. void ** __attribute__ ((__const__))
  86832. (*ptr_pthread_internal_tsd_address) (int key);
  86833. +#endif
  86834. +#if 0
  86835. int (*ptr_pthread_sigaction) (int sig, const struct sigaction * act,
  86836. struct sigaction *oact);
  86837. int (*ptr_pthread_sigwait) (const sigset_t *set, int *sig);
  86838. int (*ptr_pthread_raise) (int sig);
  86839. +#endif
  86840. int (*ptr_pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
  86841. const struct timespec *);
  86842. +#if 0
  86843. void (*ptr__pthread_cleanup_push) (struct _pthread_cleanup_buffer * buffer,
  86844. void (*routine)(void *), void * arg);
  86845. +#endif
  86846. void (*ptr__pthread_cleanup_push_defer) (struct _pthread_cleanup_buffer * buffer,
  86847. void (*routine)(void *), void * arg);
  86848. +#if 0
  86849. void (*ptr__pthread_cleanup_pop) (struct _pthread_cleanup_buffer * buffer,
  86850. int execute);
  86851. +#endif
  86852. void (*ptr__pthread_cleanup_pop_restore) (struct _pthread_cleanup_buffer * buffer,
  86853. int execute);
  86854. };
  86855. @@ -95,4 +108,6 @@
  86856. /* Variable in libc.so. */
  86857. extern struct pthread_functions __libc_pthread_functions attribute_hidden;
  86858. +extern int * __libc_pthread_init (const struct pthread_functions *functions);
  86859. +
  86860. #endif /* pthread-functions.h */
  86861. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h
  86862. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h 2012-05-15 09:20:09.000000000 +0200
  86863. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/pthread.h 2014-02-03 12:32:56.000000000 +0100
  86864. @@ -161,7 +161,7 @@
  86865. if ATTR is NULL), and call function START_ROUTINE with given
  86866. arguments ARG. */
  86867. extern int pthread_create (pthread_t *__restrict __threadp,
  86868. - __const pthread_attr_t *__restrict __attr,
  86869. + const pthread_attr_t *__restrict __attr,
  86870. void *(*__start_routine) (void *),
  86871. void *__restrict __arg) __THROW;
  86872. @@ -201,16 +201,16 @@
  86873. int __detachstate) __THROW;
  86874. /* Return in *DETACHSTATE the `detachstate' attribute in *ATTR. */
  86875. -extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  86876. +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  86877. int *__detachstate) __THROW;
  86878. /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */
  86879. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  86880. - __const struct sched_param *__restrict
  86881. + const struct sched_param *__restrict
  86882. __param) __THROW;
  86883. /* Return in *PARAM the scheduling parameters of *ATTR. */
  86884. -extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  86885. +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
  86886. __attr,
  86887. struct sched_param *__restrict __param)
  86888. __THROW;
  86889. @@ -220,7 +220,7 @@
  86890. __THROW;
  86891. /* Return in *POLICY the scheduling policy of *ATTR. */
  86892. -extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  86893. +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  86894. __attr, int *__restrict __policy)
  86895. __THROW;
  86896. @@ -229,7 +229,7 @@
  86897. int __inherit) __THROW;
  86898. /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */
  86899. -extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  86900. +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  86901. __attr, int *__restrict __inherit)
  86902. __THROW;
  86903. @@ -238,7 +238,7 @@
  86904. __THROW;
  86905. /* Return in *SCOPE the scheduling contention scope of *ATTR. */
  86906. -extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  86907. +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  86908. int *__restrict __scope) __THROW;
  86909. #ifdef __USE_UNIX98
  86910. @@ -247,7 +247,7 @@
  86911. size_t __guardsize) __THROW;
  86912. /* Get the size of the guard area at the bottom of the thread. */
  86913. -extern int pthread_attr_getguardsize (__const pthread_attr_t *__restrict
  86914. +extern int pthread_attr_getguardsize (const pthread_attr_t *__restrict
  86915. __attr, size_t *__restrict __guardsize)
  86916. __THROW;
  86917. #endif
  86918. @@ -261,7 +261,7 @@
  86919. void *__stackaddr) __THROW;
  86920. /* Return the previously set address for the stack. */
  86921. -extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  86922. +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  86923. __attr, void **__restrict __stackaddr)
  86924. __THROW;
  86925. #endif
  86926. @@ -274,7 +274,7 @@
  86927. size_t __stacksize) __THROW;
  86928. /* Return the previously set address for the stack. */
  86929. -extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  86930. +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  86931. void **__restrict __stackaddr,
  86932. size_t *__restrict __stacksize) __THROW;
  86933. #endif
  86934. @@ -286,7 +286,7 @@
  86935. size_t __stacksize) __THROW;
  86936. /* Return the currently used minimal stack size. */
  86937. -extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  86938. +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  86939. __attr, size_t *__restrict __stacksize)
  86940. __THROW;
  86941. @@ -306,7 +306,7 @@
  86942. /* Set the scheduling parameters for TARGET_THREAD according to POLICY
  86943. and *PARAM. */
  86944. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  86945. - __const struct sched_param *__param)
  86946. + const struct sched_param *__param)
  86947. __THROW;
  86948. /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */
  86949. @@ -333,7 +333,7 @@
  86950. /* Initialize MUTEX using attributes in *MUTEX_ATTR, or use the
  86951. default values if later is NULL. */
  86952. extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
  86953. - __const pthread_mutexattr_t *__restrict
  86954. + const pthread_mutexattr_t *__restrict
  86955. __mutex_attr) __THROW;
  86956. /* Destroy MUTEX. */
  86957. @@ -348,7 +348,7 @@
  86958. #ifdef __USE_XOPEN2K
  86959. /* Wait until lock becomes available, or specified time passes. */
  86960. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  86961. - __const struct timespec *__restrict
  86962. + const struct timespec *__restrict
  86963. __abstime) __THROW;
  86964. #endif
  86965. @@ -366,7 +366,7 @@
  86966. extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __THROW;
  86967. /* Get the process-shared flag of the mutex attribute ATTR. */
  86968. -extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  86969. +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  86970. __restrict __attr,
  86971. int *__restrict __pshared) __THROW;
  86972. @@ -382,7 +382,7 @@
  86973. __THROW;
  86974. /* Return in *KIND the mutex kind attribute in *ATTR. */
  86975. -extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  86976. +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  86977. __attr, int *__restrict __kind) __THROW;
  86978. #endif
  86979. @@ -392,22 +392,27 @@
  86980. /* Initialize condition variable COND using attributes ATTR, or use
  86981. the default values if later is NULL. */
  86982. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  86983. - __const pthread_condattr_t *__restrict
  86984. + const pthread_condattr_t *__restrict
  86985. __cond_attr) __THROW;
  86986. +libpthread_hidden_proto(pthread_cond_init)
  86987. /* Destroy condition variable COND. */
  86988. extern int pthread_cond_destroy (pthread_cond_t *__cond) __THROW;
  86989. +libpthread_hidden_proto(pthread_cond_destroy)
  86990. /* Wake up one thread waiting for condition variable COND. */
  86991. extern int pthread_cond_signal (pthread_cond_t *__cond) __THROW;
  86992. +libpthread_hidden_proto(pthread_cond_signal)
  86993. /* Wake up all threads waiting for condition variables COND. */
  86994. extern int pthread_cond_broadcast (pthread_cond_t *__cond) __THROW;
  86995. +libpthread_hidden_proto(pthread_cond_broadcast)
  86996. /* Wait for condition variable COND to be signaled or broadcast.
  86997. MUTEX is assumed to be locked before. */
  86998. extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
  86999. pthread_mutex_t *__restrict __mutex);
  87000. +libpthread_hidden_proto(pthread_cond_wait)
  87001. /* Wait for condition variable COND to be signaled or broadcast until
  87002. ABSTIME. MUTEX is assumed to be locked before. ABSTIME is an
  87003. @@ -415,19 +420,22 @@
  87004. (00:00:00 GMT, January 1, 1970). */
  87005. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  87006. pthread_mutex_t *__restrict __mutex,
  87007. - __const struct timespec *__restrict
  87008. + const struct timespec *__restrict
  87009. __abstime);
  87010. +libpthread_hidden_proto(pthread_cond_timedwait)
  87011. /* Functions for handling condition variable attributes. */
  87012. /* Initialize condition variable attribute ATTR. */
  87013. extern int pthread_condattr_init (pthread_condattr_t *__attr) __THROW;
  87014. +libpthread_hidden_proto(pthread_condattr_init)
  87015. /* Destroy condition variable attribute ATTR. */
  87016. extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __THROW;
  87017. +libpthread_hidden_proto(pthread_condattr_destroy)
  87018. /* Get the process-shared flag of the condition variable attribute ATTR. */
  87019. -extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  87020. +extern int pthread_condattr_getpshared (const pthread_condattr_t *
  87021. __restrict __attr,
  87022. int *__restrict __pshared) __THROW;
  87023. @@ -442,7 +450,7 @@
  87024. /* Initialize read-write lock RWLOCK using attributes ATTR, or use
  87025. the default values if later is NULL. */
  87026. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  87027. - __const pthread_rwlockattr_t *__restrict
  87028. + const pthread_rwlockattr_t *__restrict
  87029. __attr) __THROW;
  87030. /* Destroy read-write lock RWLOCK. */
  87031. @@ -457,7 +465,7 @@
  87032. # ifdef __USE_XOPEN2K
  87033. /* Try to acquire read lock for RWLOCK or return after specfied time. */
  87034. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  87035. - __const struct timespec *__restrict
  87036. + const struct timespec *__restrict
  87037. __abstime) __THROW;
  87038. # endif
  87039. @@ -470,7 +478,7 @@
  87040. # ifdef __USE_XOPEN2K
  87041. /* Try to acquire write lock for RWLOCK or return after specfied time. */
  87042. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  87043. - __const struct timespec *__restrict
  87044. + const struct timespec *__restrict
  87045. __abstime) __THROW;
  87046. # endif
  87047. @@ -487,7 +495,7 @@
  87048. extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __THROW;
  87049. /* Return current setting of process-shared attribute of ATTR in PSHARED. */
  87050. -extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  87051. +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  87052. __restrict __attr,
  87053. int *__restrict __pshared) __THROW;
  87054. @@ -496,7 +504,7 @@
  87055. int __pshared) __THROW;
  87056. /* Return current setting of reader/writer preference. */
  87057. -extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr,
  87058. +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *__attr,
  87059. int *__pref) __THROW;
  87060. /* Set reader/write preference. */
  87061. @@ -532,7 +540,7 @@
  87062. /* Barriers are a also a new feature in 1003.1j-2000. */
  87063. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  87064. - __const pthread_barrierattr_t *__restrict
  87065. + const pthread_barrierattr_t *__restrict
  87066. __attr, unsigned int __count) __THROW;
  87067. extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __THROW;
  87068. @@ -541,7 +549,7 @@
  87069. extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __THROW;
  87070. -extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  87071. +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  87072. __restrict __attr,
  87073. int *__restrict __pshared) __THROW;
  87074. @@ -569,7 +577,7 @@
  87075. /* Store POINTER in the thread-specific data slot identified by KEY. */
  87076. extern int pthread_setspecific (pthread_key_t __key,
  87077. - __const void *__pointer) __THROW;
  87078. + const void *__pointer) __THROW;
  87079. /* Return current value of the thread-specific data slot identified by KEY. */
  87080. extern void *pthread_getspecific (pthread_key_t __key) __THROW;
  87081. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/tls.h uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/tls.h
  87082. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/pthread/tls.h 2012-05-15 09:20:09.000000000 +0200
  87083. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/pthread/tls.h 2014-02-03 12:32:56.000000000 +0100
  87084. @@ -13,9 +13,8 @@
  87085. Lesser General Public License for more details.
  87086. You should have received a copy of the GNU Lesser General Public
  87087. - License along with the GNU C Library; if not, write to the Free
  87088. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87089. - 02111-1307 USA. */
  87090. + License along with the GNU C Library; if not, see
  87091. + <http://www.gnu.org/licenses/>. */
  87092. /* By default no TLS support is available. This is signaled by the
  87093. absence of the symbol USE_TLS. */
  87094. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h
  87095. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87096. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87097. @@ -15,9 +15,8 @@
  87098. Lesser General Public License for more details.
  87099. You should have received a copy of the GNU Lesser General Public
  87100. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87101. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87102. - Boston, MA 02111-1307, USA. */
  87103. + License along with the GNU C Library; see the file COPYING.LIB. If
  87104. + not, see <http://www.gnu.org/licenses/>. */
  87105. #ifndef _PT_MACHINE_H
  87106. #define _PT_MACHINE_H 1
  87107. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/tls.h uClibc-git/libpthread/linuxthreads.old/sysdeps/sh/tls.h
  87108. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh/tls.h 2012-05-15 09:20:09.000000000 +0200
  87109. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/sh/tls.h 2014-02-03 12:32:56.000000000 +0100
  87110. @@ -13,9 +13,8 @@
  87111. Lesser General Public License for more details.
  87112. You should have received a copy of the GNU Lesser General Public
  87113. - License along with the GNU C Library; if not, write to the Free
  87114. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87115. - 02111-1307 USA. */
  87116. + License along with the GNU C Library; if not, see
  87117. + <http://www.gnu.org/licenses/>. */
  87118. #ifndef _TLS_H
  87119. #define _TLS_H
  87120. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c uClibc-git/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c
  87121. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c 2012-05-15 09:20:09.000000000 +0200
  87122. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.c 2014-02-03 12:32:56.000000000 +0100
  87123. @@ -19,8 +19,7 @@
  87124. You should have received a copy of the GNU Library General Public
  87125. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87126. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87127. - Boston, MA 02111-1307, USA. */
  87128. + see <http://www.gnu.org/licenses/>. */
  87129. #include "pt-machine.h"
  87130. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h
  87131. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87132. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/sh64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87133. @@ -19,8 +19,7 @@
  87134. You should have received a copy of the GNU Library General Public
  87135. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87136. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87137. - Boston, MA 02111-1307, USA. */
  87138. + see <http://www.gnu.org/licenses/>. */
  87139. #ifndef _PT_MACHINE_H
  87140. #define _PT_MACHINE_H 1
  87141. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h
  87142. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87143. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/sparc/sparc32/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87144. @@ -15,9 +15,8 @@
  87145. Lesser General Public License for more details.
  87146. You should have received a copy of the GNU Lesser General Public
  87147. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87148. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87149. - Boston, MA 02111-1307, USA. */
  87150. + License along with the GNU C Library; see the file COPYING.LIB. If
  87151. + not, see <http://www.gnu.org/licenses/>. */
  87152. #ifndef _PT_MACHINE_H
  87153. #define _PT_MACHINE_H 1
  87154. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h
  87155. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87156. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/sparc/sparc64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87157. @@ -16,8 +16,7 @@
  87158. You should have received a copy of the GNU Lesser General Public
  87159. License along with the GNU C Library; see the file COPYING.LIB. If
  87160. - not, write to the Free Software Foundation, Inc.,
  87161. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  87162. + not, see <http://www.gnu.org/licenses/>. */
  87163. #ifndef _PT_MACHINE_H
  87164. #define _PT_MACHINE_H 1
  87165. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h
  87166. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87167. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/x86_64/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87168. @@ -14,9 +14,8 @@
  87169. Lesser General Public License for more details.
  87170. You should have received a copy of the GNU Lesser General Public
  87171. - License along with the GNU C Library; if not, write to the Free
  87172. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87173. - 02111-1307 USA. */
  87174. + License along with the GNU C Library; if not, see
  87175. + <http://www.gnu.org/licenses/>. */
  87176. #ifndef _PT_MACHINE_H
  87177. #define _PT_MACHINE_H 1
  87178. @@ -33,6 +32,9 @@
  87179. # define PT_EI __extern_always_inline
  87180. # endif
  87181. +extern long int testandset (int *);
  87182. +extern int __compare_and_swap (long int *, long int, long int);
  87183. +
  87184. /* Get some notion of the current stack. Need not be exactly the top
  87185. of the stack, just something somewhere in the current frame. */
  87186. # define CURRENT_STACK_FRAME stack_pointer
  87187. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h uClibc-git/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h
  87188. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h 2012-05-15 09:20:09.000000000 +0200
  87189. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/x86_64/tls.h 2014-02-03 12:32:56.000000000 +0100
  87190. @@ -13,9 +13,8 @@
  87191. Lesser General Public License for more details.
  87192. You should have received a copy of the GNU Lesser General Public
  87193. - License along with the GNU C Library; if not, write to the Free
  87194. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87195. - 02111-1307 USA. */
  87196. + License along with the GNU C Library; if not, see
  87197. + <http://www.gnu.org/licenses/>. */
  87198. #ifndef _TLS_H
  87199. #define _TLS_H
  87200. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h uClibc-git/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h
  87201. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h 2012-05-15 09:20:09.000000000 +0200
  87202. +++ uClibc-git/libpthread/linuxthreads.old/sysdeps/xtensa/pt-machine.h 2014-02-03 12:32:56.000000000 +0100
  87203. @@ -15,9 +15,8 @@
  87204. Lesser General Public License for more details.
  87205. You should have received a copy of the GNU Lesser General Public
  87206. - License along with the GNU C Library; if not, write to the Free
  87207. - Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
  87208. - Boston, MA 02110-1301, USA. */
  87209. + License along with the GNU C Library; if not, see
  87210. + <http://www.gnu.org/licenses/>. */
  87211. #ifndef _PT_MACHINE_H
  87212. #define _PT_MACHINE_H 1
  87213. @@ -26,19 +25,51 @@
  87214. #include <asm/unistd.h>
  87215. #ifndef PT_EI
  87216. -# define PT_EI __extern_always_inline
  87217. +# define PT_EI extern inline __attribute__ ((gnu_inline))
  87218. #endif
  87219. -/* Memory barrier. */
  87220. #define MEMORY_BARRIER() __asm__ ("memw" : : : "memory")
  87221. +#define HAS_COMPARE_AND_SWAP
  87222. +
  87223. +extern long int testandset (int *spinlock);
  87224. +extern int __compare_and_swap (long int *p, long int oldval, long int newval);
  87225. /* Spinlock implementation; required. */
  87226. PT_EI long int
  87227. testandset (int *spinlock)
  87228. {
  87229. - int unused = 0;
  87230. - return INTERNAL_SYSCALL (xtensa, , 4, SYS_XTENSA_ATOMIC_SET,
  87231. - spinlock, 1, unused);
  87232. + unsigned long tmp;
  87233. + __asm__ volatile (
  87234. +" movi %0, 0 \n"
  87235. +" wsr %0, SCOMPARE1 \n"
  87236. +" movi %0, 1 \n"
  87237. +" s32c1i %0, %1, 0 \n"
  87238. + : "=&a" (tmp)
  87239. + : "a" (spinlock)
  87240. + : "memory"
  87241. + );
  87242. + return tmp;
  87243. +}
  87244. +
  87245. +PT_EI int
  87246. +__compare_and_swap (long int *p, long int oldval, long int newval)
  87247. +{
  87248. + unsigned long tmp;
  87249. + unsigned long value;
  87250. + __asm__ volatile (
  87251. +"1: l32i %0, %2, 0 \n"
  87252. +" bne %0, %4, 2f \n"
  87253. +" wsr %0, SCOMPARE1 \n"
  87254. +" mov %1, %0 \n"
  87255. +" mov %0, %3 \n"
  87256. +" s32c1i %0, %2, 0 \n"
  87257. +" bne %1, %0, 1b \n"
  87258. +"2: \n"
  87259. + : "=&a" (tmp), "=&a" (value)
  87260. + : "a" (p), "a" (newval), "a" (oldval)
  87261. + : "memory" );
  87262. +
  87263. + return tmp == oldval;
  87264. }
  87265. /* Get some notion of the current stack. Need not be exactly the top
  87266. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old/wrapsyscall.c uClibc-git/libpthread/linuxthreads.old/wrapsyscall.c
  87267. --- uClibc-0.9.33.2/libpthread/linuxthreads.old/wrapsyscall.c 2012-05-15 09:20:09.000000000 +0200
  87268. +++ uClibc-git/libpthread/linuxthreads.old/wrapsyscall.c 2014-02-03 12:32:56.000000000 +0100
  87269. @@ -1,4 +1,4 @@
  87270. -/* Wrapper arpund system calls to provide cancellation points.
  87271. +/* Wrapper around system calls to provide cancellation points.
  87272. Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
  87273. This file is part of the GNU C Library.
  87274. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
  87275. @@ -15,11 +15,8 @@
  87276. You should have received a copy of the GNU Library General Public
  87277. License along with the GNU C Library; see the file COPYING.LIB. If not,
  87278. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87279. - Boston, MA 02111-1307, USA. */
  87280. + see <http://www.gnu.org/licenses/>. */
  87281. -#define __FORCE_GLIBC
  87282. -#include <features.h>
  87283. #include <fcntl.h>
  87284. #include <sys/mman.h>
  87285. #include <pthread.h>
  87286. @@ -83,6 +80,12 @@
  87287. CANCELABLE_SYSCALL_VA (int, fcntl, (int fd, int cmd, ...),
  87288. (fd, cmd, va_arg (ap, long int)), cmd)
  87289. +#if defined __UCLIBC_HAS_LFS__ && __WORDSIZE == 32
  87290. +/* fcntl64(2). */
  87291. +CANCELABLE_SYSCALL_VA (int, fcntl64, (int fd, int cmd, ...),
  87292. + (fd, cmd, va_arg (ap, long int)), cmd)
  87293. +#endif
  87294. +
  87295. /* fsync(2). */
  87296. CANCELABLE_SYSCALL (int, fsync, (int fd), (fd))
  87297. @@ -230,12 +233,12 @@
  87298. #endif /* __UCLIBC_HAS_SOCKET__ */
  87299. #ifdef __UCLIBC_HAS_EPOLL__
  87300. +# include <sys/epoll.h>
  87301. # ifdef __NR_epoll_wait
  87302. CANCELABLE_SYSCALL (int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout),
  87303. (epfd, events, maxevents, timeout))
  87304. # endif
  87305. # ifdef __NR_epoll_pwait
  87306. -# include <signal.h>
  87307. CANCELABLE_SYSCALL (int, epoll_pwait, (int epfd, struct epoll_event *events, int maxevents, int timeout,
  87308. const sigset_t *set),
  87309. (epfd, events, maxevents, timeout, set))
  87310. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/proc_service.h uClibc-git/libpthread/linuxthreads.old_db/proc_service.h
  87311. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/proc_service.h 2012-05-15 09:20:09.000000000 +0200
  87312. +++ uClibc-git/libpthread/linuxthreads.old_db/proc_service.h 2014-02-03 12:32:56.000000000 +0100
  87313. @@ -12,9 +12,8 @@
  87314. Lesser General Public License for more details.
  87315. You should have received a copy of the GNU Lesser General Public
  87316. - License along with the GNU C Library; if not, write to the Free
  87317. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87318. - 02111-1307 USA. */
  87319. + License along with the GNU C Library; if not, see
  87320. + <http://www.gnu.org/licenses/>. */
  87321. /* The definitions in this file must correspond to those in the debugger. */
  87322. #include <sys/procfs.h>
  87323. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_init.c uClibc-git/libpthread/linuxthreads.old_db/td_init.c
  87324. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_init.c 2012-05-15 09:20:09.000000000 +0200
  87325. +++ uClibc-git/libpthread/linuxthreads.old_db/td_init.c 2014-02-03 12:32:56.000000000 +0100
  87326. @@ -14,9 +14,8 @@
  87327. Lesser General Public License for more details.
  87328. You should have received a copy of the GNU Lesser General Public
  87329. - License along with the GNU C Library; if not, write to the Free
  87330. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87331. - 02111-1307 USA. */
  87332. + License along with the GNU C Library; if not, see
  87333. + <http://www.gnu.org/licenses/>. */
  87334. #include "thread_dbP.h"
  87335. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_log.c uClibc-git/libpthread/linuxthreads.old_db/td_log.c
  87336. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_log.c 2012-05-15 09:20:09.000000000 +0200
  87337. +++ uClibc-git/libpthread/linuxthreads.old_db/td_log.c 2014-02-03 12:32:56.000000000 +0100
  87338. @@ -14,9 +14,8 @@
  87339. Lesser General Public License for more details.
  87340. You should have received a copy of the GNU Lesser General Public
  87341. - License along with the GNU C Library; if not, write to the Free
  87342. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87343. - 02111-1307 USA. */
  87344. + License along with the GNU C Library; if not, see
  87345. + <http://www.gnu.org/licenses/>. */
  87346. #include "thread_dbP.h"
  87347. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_symbol_list.c uClibc-git/libpthread/linuxthreads.old_db/td_symbol_list.c
  87348. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_symbol_list.c 2012-05-15 09:20:09.000000000 +0200
  87349. +++ uClibc-git/libpthread/linuxthreads.old_db/td_symbol_list.c 2014-02-03 12:32:56.000000000 +0100
  87350. @@ -14,9 +14,8 @@
  87351. Lesser General Public License for more details.
  87352. You should have received a copy of the GNU Lesser General Public
  87353. - License along with the GNU C Library; if not, write to the Free
  87354. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87355. - 02111-1307 USA. */
  87356. + License along with the GNU C Library; if not, see
  87357. + <http://www.gnu.org/licenses/>. */
  87358. #include <assert.h>
  87359. #include "thread_dbP.h"
  87360. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_clear_event.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_clear_event.c
  87361. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  87362. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_clear_event.c 2014-02-03 12:32:56.000000000 +0100
  87363. @@ -14,17 +14,14 @@
  87364. Lesser General Public License for more details.
  87365. You should have received a copy of the GNU Lesser General Public
  87366. - License along with the GNU C Library; if not, write to the Free
  87367. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87368. - 02111-1307 USA. */
  87369. + License along with the GNU C Library; if not, see
  87370. + <http://www.gnu.org/licenses/>. */
  87371. #include "thread_dbP.h"
  87372. td_err_e
  87373. -td_ta_clear_event (ta, event)
  87374. - const td_thragent_t *ta;
  87375. - td_thr_events_t *event;
  87376. +td_ta_clear_event(const td_thragent_t *ta,td_thr_events_t *event)
  87377. {
  87378. td_thr_events_t old_event;
  87379. int i;
  87380. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_delete.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_delete.c
  87381. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_delete.c 2012-05-15 09:20:09.000000000 +0200
  87382. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_delete.c 2014-02-03 12:32:56.000000000 +0100
  87383. @@ -14,9 +14,8 @@
  87384. Lesser General Public License for more details.
  87385. You should have received a copy of the GNU Lesser General Public
  87386. - License along with the GNU C Library; if not, write to the Free
  87387. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87388. - 02111-1307 USA. */
  87389. + License along with the GNU C Library; if not, see
  87390. + <http://www.gnu.org/licenses/>. */
  87391. #include <stdlib.h>
  87392. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_enable_stats.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_enable_stats.c
  87393. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_enable_stats.c 2012-05-15 09:20:09.000000000 +0200
  87394. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_enable_stats.c 2014-02-03 12:32:56.000000000 +0100
  87395. @@ -14,9 +14,8 @@
  87396. Lesser General Public License for more details.
  87397. You should have received a copy of the GNU Lesser General Public
  87398. - License along with the GNU C Library; if not, write to the Free
  87399. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87400. - 02111-1307 USA. */
  87401. + License along with the GNU C Library; if not, see
  87402. + <http://www.gnu.org/licenses/>. */
  87403. #include "thread_dbP.h"
  87404. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_addr.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_event_addr.c
  87405. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_addr.c 2012-05-15 09:20:09.000000000 +0200
  87406. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_event_addr.c 2014-02-03 12:32:56.000000000 +0100
  87407. @@ -14,9 +14,8 @@
  87408. Lesser General Public License for more details.
  87409. You should have received a copy of the GNU Lesser General Public
  87410. - License along with the GNU C Library; if not, write to the Free
  87411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87412. - 02111-1307 USA. */
  87413. + License along with the GNU C Library; if not, see
  87414. + <http://www.gnu.org/licenses/>. */
  87415. #include "thread_dbP.h"
  87416. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c
  87417. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  87418. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_event_getmsg.c 2014-02-03 12:32:56.000000000 +0100
  87419. @@ -14,9 +14,8 @@
  87420. Lesser General Public License for more details.
  87421. You should have received a copy of the GNU Lesser General Public
  87422. - License along with the GNU C Library; if not, write to the Free
  87423. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87424. - 02111-1307 USA. */
  87425. + License along with the GNU C Library; if not, see
  87426. + <http://www.gnu.org/licenses/>. */
  87427. #include <stddef.h>
  87428. #include <string.h>
  87429. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c
  87430. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c 2012-05-15 09:20:09.000000000 +0200
  87431. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_get_nthreads.c 2014-02-03 12:32:56.000000000 +0100
  87432. @@ -14,9 +14,8 @@
  87433. Lesser General Public License for more details.
  87434. You should have received a copy of the GNU Lesser General Public
  87435. - License along with the GNU C Library; if not, write to the Free
  87436. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87437. - 02111-1307 USA. */
  87438. + License along with the GNU C Library; if not, see
  87439. + <http://www.gnu.org/licenses/>. */
  87440. #include "thread_dbP.h"
  87441. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_ph.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_get_ph.c
  87442. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_ph.c 2012-05-15 09:20:09.000000000 +0200
  87443. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_get_ph.c 2014-02-03 12:32:56.000000000 +0100
  87444. @@ -14,9 +14,8 @@
  87445. Lesser General Public License for more details.
  87446. You should have received a copy of the GNU Lesser General Public
  87447. - License along with the GNU C Library; if not, write to the Free
  87448. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87449. - 02111-1307 USA. */
  87450. + License along with the GNU C Library; if not, see
  87451. + <http://www.gnu.org/licenses/>. */
  87452. #include "thread_dbP.h"
  87453. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_stats.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_get_stats.c
  87454. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_get_stats.c 2012-05-15 09:20:09.000000000 +0200
  87455. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_get_stats.c 2014-02-03 12:32:56.000000000 +0100
  87456. @@ -14,9 +14,8 @@
  87457. Lesser General Public License for more details.
  87458. You should have received a copy of the GNU Lesser General Public
  87459. - License along with the GNU C Library; if not, write to the Free
  87460. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87461. - 02111-1307 USA. */
  87462. + License along with the GNU C Library; if not, see
  87463. + <http://www.gnu.org/licenses/>. */
  87464. #include "thread_dbP.h"
  87465. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c
  87466. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c 2012-05-15 09:20:09.000000000 +0200
  87467. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_map_id2thr.c 2014-02-03 12:32:56.000000000 +0100
  87468. @@ -14,9 +14,8 @@
  87469. Lesser General Public License for more details.
  87470. You should have received a copy of the GNU Lesser General Public
  87471. - License along with the GNU C Library; if not, write to the Free
  87472. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87473. - 02111-1307 USA. */
  87474. + License along with the GNU C Library; if not, see
  87475. + <http://www.gnu.org/licenses/>. */
  87476. #include "thread_dbP.h"
  87477. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c
  87478. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c 2012-05-15 09:20:09.000000000 +0200
  87479. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_map_lwp2thr.c 2014-02-03 12:32:56.000000000 +0100
  87480. @@ -14,9 +14,8 @@
  87481. Lesser General Public License for more details.
  87482. You should have received a copy of the GNU Lesser General Public
  87483. - License along with the GNU C Library; if not, write to the Free
  87484. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87485. - 02111-1307 USA. */
  87486. + License along with the GNU C Library; if not, see
  87487. + <http://www.gnu.org/licenses/>. */
  87488. #include "thread_dbP.h"
  87489. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_new.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_new.c
  87490. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_new.c 2012-05-15 09:20:09.000000000 +0200
  87491. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_new.c 2014-02-03 12:32:56.000000000 +0100
  87492. @@ -14,9 +14,8 @@
  87493. Lesser General Public License for more details.
  87494. You should have received a copy of the GNU Lesser General Public
  87495. - License along with the GNU C Library; if not, write to the Free
  87496. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87497. - 02111-1307 USA. */
  87498. + License along with the GNU C Library; if not, see
  87499. + <http://www.gnu.org/licenses/>. */
  87500. #include <stddef.h>
  87501. #include <stdlib.h>
  87502. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_reset_stats.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_reset_stats.c
  87503. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_reset_stats.c 2012-05-15 09:20:09.000000000 +0200
  87504. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_reset_stats.c 2014-02-03 12:32:56.000000000 +0100
  87505. @@ -14,9 +14,8 @@
  87506. Lesser General Public License for more details.
  87507. You should have received a copy of the GNU Lesser General Public
  87508. - License along with the GNU C Library; if not, write to the Free
  87509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87510. - 02111-1307 USA. */
  87511. + License along with the GNU C Library; if not, see
  87512. + <http://www.gnu.org/licenses/>. */
  87513. #include "thread_dbP.h"
  87514. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c
  87515. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  87516. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_setconcurrency.c 2014-02-03 12:32:56.000000000 +0100
  87517. @@ -14,9 +14,8 @@
  87518. Lesser General Public License for more details.
  87519. You should have received a copy of the GNU Lesser General Public
  87520. - License along with the GNU C Library; if not, write to the Free
  87521. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87522. - 02111-1307 USA. */
  87523. + License along with the GNU C Library; if not, see
  87524. + <http://www.gnu.org/licenses/>. */
  87525. #include "thread_dbP.h"
  87526. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_set_event.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_set_event.c
  87527. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_set_event.c 2012-05-15 09:20:09.000000000 +0200
  87528. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_set_event.c 2014-02-03 12:32:56.000000000 +0100
  87529. @@ -14,17 +14,14 @@
  87530. Lesser General Public License for more details.
  87531. You should have received a copy of the GNU Lesser General Public
  87532. - License along with the GNU C Library; if not, write to the Free
  87533. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87534. - 02111-1307 USA. */
  87535. + License along with the GNU C Library; if not, see
  87536. + <http://www.gnu.org/licenses/>. */
  87537. #include "thread_dbP.h"
  87538. td_err_e
  87539. -td_ta_set_event (ta, event)
  87540. - const td_thragent_t *ta;
  87541. - td_thr_events_t *event;
  87542. +td_ta_set_event(const td_thragent_t *ta,td_thr_events_t *event)
  87543. {
  87544. td_thr_events_t old_event;
  87545. int i;
  87546. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_thr_iter.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_thr_iter.c
  87547. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_thr_iter.c 2012-05-15 09:20:09.000000000 +0200
  87548. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_thr_iter.c 2014-02-03 12:32:56.000000000 +0100
  87549. @@ -14,9 +14,8 @@
  87550. Lesser General Public License for more details.
  87551. You should have received a copy of the GNU Lesser General Public
  87552. - License along with the GNU C Library; if not, write to the Free
  87553. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87554. - 02111-1307 USA. */
  87555. + License along with the GNU C Library; if not, see
  87556. + <http://www.gnu.org/licenses/>. */
  87557. #include "thread_dbP.h"
  87558. #include <alloca.h>
  87559. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c uClibc-git/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c
  87560. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c 2012-05-15 09:20:09.000000000 +0200
  87561. +++ uClibc-git/libpthread/linuxthreads.old_db/td_ta_tsd_iter.c 2014-02-03 12:32:56.000000000 +0100
  87562. @@ -14,9 +14,8 @@
  87563. Lesser General Public License for more details.
  87564. You should have received a copy of the GNU Lesser General Public
  87565. - License along with the GNU C Library; if not, write to the Free
  87566. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87567. - 02111-1307 USA. */
  87568. + License along with the GNU C Library; if not, see
  87569. + <http://www.gnu.org/licenses/>. */
  87570. #include "thread_dbP.h"
  87571. #include <alloca.h>
  87572. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_clear_event.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_clear_event.c
  87573. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  87574. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_clear_event.c 2014-02-03 12:32:56.000000000 +0100
  87575. @@ -14,9 +14,8 @@
  87576. Lesser General Public License for more details.
  87577. You should have received a copy of the GNU Lesser General Public
  87578. - License along with the GNU C Library; if not, write to the Free
  87579. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87580. - 02111-1307 USA. */
  87581. + License along with the GNU C Library; if not, see
  87582. + <http://www.gnu.org/licenses/>. */
  87583. #include <stddef.h>
  87584. @@ -24,9 +23,7 @@
  87585. td_err_e
  87586. -td_thr_clear_event (th, event)
  87587. - const td_thrhandle_t *th;
  87588. - td_thr_events_t *event;
  87589. +td_thr_clear_event(const td_thrhandle_t *th,td_thr_events_t *event)
  87590. {
  87591. td_thr_events_t old_event;
  87592. int i;
  87593. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbresume.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_dbresume.c
  87594. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbresume.c 2012-05-15 09:20:09.000000000 +0200
  87595. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_dbresume.c 2014-02-03 12:32:56.000000000 +0100
  87596. @@ -14,9 +14,8 @@
  87597. Lesser General Public License for more details.
  87598. You should have received a copy of the GNU Lesser General Public
  87599. - License along with the GNU C Library; if not, write to the Free
  87600. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87601. - 02111-1307 USA. */
  87602. + License along with the GNU C Library; if not, see
  87603. + <http://www.gnu.org/licenses/>. */
  87604. #include "thread_dbP.h"
  87605. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c
  87606. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c 2012-05-15 09:20:09.000000000 +0200
  87607. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_dbsuspend.c 2014-02-03 12:32:56.000000000 +0100
  87608. @@ -14,9 +14,8 @@
  87609. Lesser General Public License for more details.
  87610. You should have received a copy of the GNU Lesser General Public
  87611. - License along with the GNU C Library; if not, write to the Free
  87612. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87613. - 02111-1307 USA. */
  87614. + License along with the GNU C Library; if not, see
  87615. + <http://www.gnu.org/licenses/>. */
  87616. #include "thread_dbP.h"
  87617. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_enable.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_event_enable.c
  87618. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_enable.c 2012-05-15 09:20:09.000000000 +0200
  87619. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_event_enable.c 2014-02-03 12:32:56.000000000 +0100
  87620. @@ -14,9 +14,8 @@
  87621. Lesser General Public License for more details.
  87622. You should have received a copy of the GNU Lesser General Public
  87623. - License along with the GNU C Library; if not, write to the Free
  87624. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87625. - 02111-1307 USA. */
  87626. + License along with the GNU C Library; if not, see
  87627. + <http://www.gnu.org/licenses/>. */
  87628. #include <stddef.h>
  87629. @@ -24,9 +23,7 @@
  87630. td_err_e
  87631. -td_thr_event_enable (th, onoff)
  87632. - const td_thrhandle_t *th;
  87633. - int onoff;
  87634. +td_thr_event_enable(const td_thrhandle_t *th, int onoff)
  87635. {
  87636. LOG ("td_thr_event_enable");
  87637. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c
  87638. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  87639. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_event_getmsg.c 2014-02-03 12:32:56.000000000 +0100
  87640. @@ -14,9 +14,8 @@
  87641. Lesser General Public License for more details.
  87642. You should have received a copy of the GNU Lesser General Public
  87643. - License along with the GNU C Library; if not, write to the Free
  87644. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87645. - 02111-1307 USA. */
  87646. + License along with the GNU C Library; if not, see
  87647. + <http://www.gnu.org/licenses/>. */
  87648. #include <stddef.h>
  87649. #include <string.h>
  87650. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getfpregs.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_getfpregs.c
  87651. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getfpregs.c 2012-05-15 09:20:09.000000000 +0200
  87652. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_getfpregs.c 2014-02-03 12:32:56.000000000 +0100
  87653. @@ -14,9 +14,8 @@
  87654. Lesser General Public License for more details.
  87655. You should have received a copy of the GNU Lesser General Public
  87656. - License along with the GNU C Library; if not, write to the Free
  87657. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87658. - 02111-1307 USA. */
  87659. + License along with the GNU C Library; if not, see
  87660. + <http://www.gnu.org/licenses/>. */
  87661. #include "thread_dbP.h"
  87662. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getgregs.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_getgregs.c
  87663. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getgregs.c 2012-05-15 09:20:09.000000000 +0200
  87664. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_getgregs.c 2014-02-03 12:32:56.000000000 +0100
  87665. @@ -14,9 +14,8 @@
  87666. Lesser General Public License for more details.
  87667. You should have received a copy of the GNU Lesser General Public
  87668. - License along with the GNU C Library; if not, write to the Free
  87669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87670. - 02111-1307 USA. */
  87671. + License along with the GNU C Library; if not, see
  87672. + <http://www.gnu.org/licenses/>. */
  87673. #include "thread_dbP.h"
  87674. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_get_info.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_get_info.c
  87675. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_get_info.c 2012-05-15 09:20:09.000000000 +0200
  87676. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_get_info.c 2014-02-03 12:32:56.000000000 +0100
  87677. @@ -14,9 +14,8 @@
  87678. Lesser General Public License for more details.
  87679. You should have received a copy of the GNU Lesser General Public
  87680. - License along with the GNU C Library; if not, write to the Free
  87681. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87682. - 02111-1307 USA. */
  87683. + License along with the GNU C Library; if not, see
  87684. + <http://www.gnu.org/licenses/>. */
  87685. #include <stddef.h>
  87686. #include <string.h>
  87687. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregs.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_getxregs.c
  87688. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregs.c 2012-05-15 09:20:09.000000000 +0200
  87689. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_getxregs.c 2014-02-03 12:32:56.000000000 +0100
  87690. @@ -14,9 +14,8 @@
  87691. Lesser General Public License for more details.
  87692. You should have received a copy of the GNU Lesser General Public
  87693. - License along with the GNU C Library; if not, write to the Free
  87694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87695. - 02111-1307 USA. */
  87696. + License along with the GNU C Library; if not, see
  87697. + <http://www.gnu.org/licenses/>. */
  87698. #include "thread_dbP.h"
  87699. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregsize.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_getxregsize.c
  87700. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_getxregsize.c 2012-05-15 09:20:09.000000000 +0200
  87701. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_getxregsize.c 2014-02-03 12:32:56.000000000 +0100
  87702. @@ -14,9 +14,8 @@
  87703. Lesser General Public License for more details.
  87704. You should have received a copy of the GNU Lesser General Public
  87705. - License along with the GNU C Library; if not, write to the Free
  87706. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87707. - 02111-1307 USA. */
  87708. + License along with the GNU C Library; if not, see
  87709. + <http://www.gnu.org/licenses/>. */
  87710. #include "thread_dbP.h"
  87711. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_set_event.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_set_event.c
  87712. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_set_event.c 2012-05-15 09:20:09.000000000 +0200
  87713. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_set_event.c 2014-02-03 12:32:56.000000000 +0100
  87714. @@ -14,9 +14,8 @@
  87715. Lesser General Public License for more details.
  87716. You should have received a copy of the GNU Lesser General Public
  87717. - License along with the GNU C Library; if not, write to the Free
  87718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87719. - 02111-1307 USA. */
  87720. + License along with the GNU C Library; if not, see
  87721. + <http://www.gnu.org/licenses/>. */
  87722. #include <stddef.h>
  87723. @@ -24,9 +23,7 @@
  87724. td_err_e
  87725. -td_thr_set_event (th, event)
  87726. - const td_thrhandle_t *th;
  87727. - td_thr_events_t *event;
  87728. +td_thr_set_event(const td_thrhandle_t *th, td_thr_events_t *event)
  87729. {
  87730. td_thr_events_t old_event;
  87731. int i;
  87732. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setfpregs.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_setfpregs.c
  87733. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setfpregs.c 2012-05-15 09:20:09.000000000 +0200
  87734. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_setfpregs.c 2014-02-03 12:32:56.000000000 +0100
  87735. @@ -14,9 +14,8 @@
  87736. Lesser General Public License for more details.
  87737. You should have received a copy of the GNU Lesser General Public
  87738. - License along with the GNU C Library; if not, write to the Free
  87739. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87740. - 02111-1307 USA. */
  87741. + License along with the GNU C Library; if not, see
  87742. + <http://www.gnu.org/licenses/>. */
  87743. #include "thread_dbP.h"
  87744. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setgregs.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_setgregs.c
  87745. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setgregs.c 2012-05-15 09:20:09.000000000 +0200
  87746. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_setgregs.c 2014-02-03 12:32:56.000000000 +0100
  87747. @@ -14,9 +14,8 @@
  87748. Lesser General Public License for more details.
  87749. You should have received a copy of the GNU Lesser General Public
  87750. - License along with the GNU C Library; if not, write to the Free
  87751. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87752. - 02111-1307 USA. */
  87753. + License along with the GNU C Library; if not, see
  87754. + <http://www.gnu.org/licenses/>. */
  87755. #include "thread_dbP.h"
  87756. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setprio.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_setprio.c
  87757. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setprio.c 2012-05-15 09:20:09.000000000 +0200
  87758. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_setprio.c 2014-02-03 12:32:56.000000000 +0100
  87759. @@ -14,9 +14,8 @@
  87760. Lesser General Public License for more details.
  87761. You should have received a copy of the GNU Lesser General Public
  87762. - License along with the GNU C Library; if not, write to the Free
  87763. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87764. - 02111-1307 USA. */
  87765. + License along with the GNU C Library; if not, see
  87766. + <http://www.gnu.org/licenses/>. */
  87767. #include "thread_dbP.h"
  87768. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setsigpending.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_setsigpending.c
  87769. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setsigpending.c 2012-05-15 09:20:09.000000000 +0200
  87770. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_setsigpending.c 2014-02-03 12:32:56.000000000 +0100
  87771. @@ -14,9 +14,8 @@
  87772. Lesser General Public License for more details.
  87773. You should have received a copy of the GNU Lesser General Public
  87774. - License along with the GNU C Library; if not, write to the Free
  87775. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87776. - 02111-1307 USA. */
  87777. + License along with the GNU C Library; if not, see
  87778. + <http://www.gnu.org/licenses/>. */
  87779. #include "thread_dbP.h"
  87780. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setxregs.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_setxregs.c
  87781. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_setxregs.c 2012-05-15 09:20:09.000000000 +0200
  87782. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_setxregs.c 2014-02-03 12:32:56.000000000 +0100
  87783. @@ -14,9 +14,8 @@
  87784. Lesser General Public License for more details.
  87785. You should have received a copy of the GNU Lesser General Public
  87786. - License along with the GNU C Library; if not, write to the Free
  87787. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87788. - 02111-1307 USA. */
  87789. + License along with the GNU C Library; if not, see
  87790. + <http://www.gnu.org/licenses/>. */
  87791. #include "thread_dbP.h"
  87792. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c
  87793. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  87794. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_sigsetmask.c 2014-02-03 12:32:56.000000000 +0100
  87795. @@ -14,9 +14,8 @@
  87796. Lesser General Public License for more details.
  87797. You should have received a copy of the GNU Lesser General Public
  87798. - License along with the GNU C Library; if not, write to the Free
  87799. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87800. - 02111-1307 USA. */
  87801. + License along with the GNU C Library; if not, see
  87802. + <http://www.gnu.org/licenses/>. */
  87803. #include "thread_dbP.h"
  87804. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c
  87805. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c 2012-05-15 09:20:09.000000000 +0200
  87806. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_tls_get_addr.c 2014-02-03 12:32:56.000000000 +0100
  87807. @@ -14,9 +14,8 @@
  87808. Lesser General Public License for more details.
  87809. You should have received a copy of the GNU Lesser General Public
  87810. - License along with the GNU C Library; if not, write to the Free
  87811. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87812. - 02111-1307 USA. */
  87813. + License along with the GNU C Library; if not, see
  87814. + <http://www.gnu.org/licenses/>. */
  87815. #include <link.h>
  87816. #include "thread_dbP.h"
  87817. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tsd.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_tsd.c
  87818. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_tsd.c 2012-05-15 09:20:09.000000000 +0200
  87819. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_tsd.c 2014-02-03 12:32:56.000000000 +0100
  87820. @@ -14,9 +14,8 @@
  87821. Lesser General Public License for more details.
  87822. You should have received a copy of the GNU Lesser General Public
  87823. - License along with the GNU C Library; if not, write to the Free
  87824. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87825. - 02111-1307 USA. */
  87826. + License along with the GNU C Library; if not, see
  87827. + <http://www.gnu.org/licenses/>. */
  87828. #include "thread_dbP.h"
  87829. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_validate.c uClibc-git/libpthread/linuxthreads.old_db/td_thr_validate.c
  87830. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/td_thr_validate.c 2012-05-15 09:20:09.000000000 +0200
  87831. +++ uClibc-git/libpthread/linuxthreads.old_db/td_thr_validate.c 2014-02-03 12:32:56.000000000 +0100
  87832. @@ -14,9 +14,8 @@
  87833. Lesser General Public License for more details.
  87834. You should have received a copy of the GNU Lesser General Public
  87835. - License along with the GNU C Library; if not, write to the Free
  87836. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87837. - 02111-1307 USA. */
  87838. + License along with the GNU C Library; if not, see
  87839. + <http://www.gnu.org/licenses/>. */
  87840. #include "thread_dbP.h"
  87841. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_db.h uClibc-git/libpthread/linuxthreads.old_db/thread_db.h
  87842. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_db.h 2012-05-15 09:20:09.000000000 +0200
  87843. +++ uClibc-git/libpthread/linuxthreads.old_db/thread_db.h 2014-02-03 12:32:56.000000000 +0100
  87844. @@ -13,9 +13,8 @@
  87845. Lesser General Public License for more details.
  87846. You should have received a copy of the GNU Lesser General Public
  87847. - License along with the GNU C Library; if not, write to the Free
  87848. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87849. - 02111-1307 USA. */
  87850. + License along with the GNU C Library; if not, see
  87851. + <http://www.gnu.org/licenses/>. */
  87852. #ifndef _THREAD_DB_H
  87853. #define _THREAD_DB_H 1
  87854. diff -Nur uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_dbP.h uClibc-git/libpthread/linuxthreads.old_db/thread_dbP.h
  87855. --- uClibc-0.9.33.2/libpthread/linuxthreads.old_db/thread_dbP.h 2012-05-15 09:20:09.000000000 +0200
  87856. +++ uClibc-git/libpthread/linuxthreads.old_db/thread_dbP.h 2014-02-03 12:32:56.000000000 +0100
  87857. @@ -2,8 +2,6 @@
  87858. #ifndef _THREAD_DBP_H
  87859. #define _THREAD_DBP_H 1
  87860. -#define __FORCE_GLIBC
  87861. -#include <features.h>
  87862. #include <string.h>
  87863. #include <unistd.h>
  87864. #include "proc_service.h"
  87865. diff -Nur uClibc-0.9.33.2/libpthread/nptl/alloca_cutoff.c uClibc-git/libpthread/nptl/alloca_cutoff.c
  87866. --- uClibc-0.9.33.2/libpthread/nptl/alloca_cutoff.c 2012-05-15 09:20:09.000000000 +0200
  87867. +++ uClibc-git/libpthread/nptl/alloca_cutoff.c 2014-02-03 12:32:57.000000000 +0100
  87868. @@ -13,9 +13,8 @@
  87869. Lesser General Public License for more details.
  87870. You should have received a copy of the GNU Lesser General Public
  87871. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  87872. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  87873. - Boston, MA 02111-1307, USA. */
  87874. + License along with the GNU C Library; see the file COPYING.LIB. If
  87875. + not, see <http://www.gnu.org/licenses/>. */
  87876. #include <alloca.h>
  87877. #include <stdlib.h>
  87878. diff -Nur uClibc-0.9.33.2/libpthread/nptl/allocatestack.c uClibc-git/libpthread/nptl/allocatestack.c
  87879. --- uClibc-0.9.33.2/libpthread/nptl/allocatestack.c 2012-05-15 09:20:09.000000000 +0200
  87880. +++ uClibc-git/libpthread/nptl/allocatestack.c 2014-02-03 12:32:57.000000000 +0100
  87881. @@ -13,9 +13,8 @@
  87882. Lesser General Public License for more details.
  87883. You should have received a copy of the GNU Lesser General Public
  87884. - License along with the GNU C Library; if not, write to the Free
  87885. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87886. - 02111-1307 USA. */
  87887. + License along with the GNU C Library; if not, see
  87888. + <http://www.gnu.org/licenses/>. */
  87889. #include <assert.h>
  87890. #include <errno.h>
  87891. @@ -646,7 +645,7 @@
  87892. prot) != 0)
  87893. goto mprot_error;
  87894. #elif defined _STACK_GROWS_UP
  87895. - if (mprotect ((char *) pd - pd->guardsize,
  87896. + if (mprotect ((char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1),
  87897. pd->guardsize - guardsize, prot) != 0)
  87898. goto mprot_error;
  87899. #endif
  87900. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cancellation.c uClibc-git/libpthread/nptl/cancellation.c
  87901. --- uClibc-0.9.33.2/libpthread/nptl/cancellation.c 2012-05-15 09:20:09.000000000 +0200
  87902. +++ uClibc-git/libpthread/nptl/cancellation.c 2014-02-03 12:32:57.000000000 +0100
  87903. @@ -13,9 +13,8 @@
  87904. Lesser General Public License for more details.
  87905. You should have received a copy of the GNU Lesser General Public
  87906. - License along with the GNU C Library; if not, write to the Free
  87907. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87908. - 02111-1307 USA. */
  87909. + License along with the GNU C Library; if not, see
  87910. + <http://www.gnu.org/licenses/>. */
  87911. #include <setjmp.h>
  87912. #include <stdlib.h>
  87913. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup.c uClibc-git/libpthread/nptl/cleanup.c
  87914. --- uClibc-0.9.33.2/libpthread/nptl/cleanup.c 2012-05-15 09:20:09.000000000 +0200
  87915. +++ uClibc-git/libpthread/nptl/cleanup.c 2014-02-03 12:32:57.000000000 +0100
  87916. @@ -13,9 +13,8 @@
  87917. Lesser General Public License for more details.
  87918. You should have received a copy of the GNU Lesser General Public
  87919. - License along with the GNU C Library; if not, write to the Free
  87920. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87921. - 02111-1307 USA. */
  87922. + License along with the GNU C Library; if not, see
  87923. + <http://www.gnu.org/licenses/>. */
  87924. #include <stdlib.h>
  87925. #include "pthreadP.h"
  87926. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_compat.c uClibc-git/libpthread/nptl/cleanup_compat.c
  87927. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_compat.c 2012-05-15 09:20:09.000000000 +0200
  87928. +++ uClibc-git/libpthread/nptl/cleanup_compat.c 2014-02-03 12:32:57.000000000 +0100
  87929. @@ -13,9 +13,8 @@
  87930. Lesser General Public License for more details.
  87931. You should have received a copy of the GNU Lesser General Public
  87932. - License along with the GNU C Library; if not, write to the Free
  87933. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87934. - 02111-1307 USA. */
  87935. + License along with the GNU C Library; if not, see
  87936. + <http://www.gnu.org/licenses/>. */
  87937. #include <stdlib.h>
  87938. #include "pthreadP.h"
  87939. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_defer.c uClibc-git/libpthread/nptl/cleanup_defer.c
  87940. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_defer.c 2012-05-15 09:20:09.000000000 +0200
  87941. +++ uClibc-git/libpthread/nptl/cleanup_defer.c 2014-02-03 12:32:57.000000000 +0100
  87942. @@ -13,9 +13,8 @@
  87943. Lesser General Public License for more details.
  87944. You should have received a copy of the GNU Lesser General Public
  87945. - License along with the GNU C Library; if not, write to the Free
  87946. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87947. - 02111-1307 USA. */
  87948. + License along with the GNU C Library; if not, see
  87949. + <http://www.gnu.org/licenses/>. */
  87950. #include <stdlib.h>
  87951. #include "pthreadP.h"
  87952. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_defer_compat.c uClibc-git/libpthread/nptl/cleanup_defer_compat.c
  87953. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_defer_compat.c 2012-05-15 09:20:09.000000000 +0200
  87954. +++ uClibc-git/libpthread/nptl/cleanup_defer_compat.c 2014-02-03 12:32:57.000000000 +0100
  87955. @@ -13,9 +13,8 @@
  87956. Lesser General Public License for more details.
  87957. You should have received a copy of the GNU Lesser General Public
  87958. - License along with the GNU C Library; if not, write to the Free
  87959. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87960. - 02111-1307 USA. */
  87961. + License along with the GNU C Library; if not, see
  87962. + <http://www.gnu.org/licenses/>. */
  87963. #include "pthreadP.h"
  87964. diff -Nur uClibc-0.9.33.2/libpthread/nptl/cleanup_routine.c uClibc-git/libpthread/nptl/cleanup_routine.c
  87965. --- uClibc-0.9.33.2/libpthread/nptl/cleanup_routine.c 2012-05-15 09:20:09.000000000 +0200
  87966. +++ uClibc-git/libpthread/nptl/cleanup_routine.c 2014-02-03 12:32:57.000000000 +0100
  87967. @@ -13,13 +13,12 @@
  87968. Lesser General Public License for more details.
  87969. You should have received a copy of the GNU Lesser General Public
  87970. - License along with the GNU C Library; if not, write to the Free
  87971. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87972. - 02111-1307 USA. */
  87973. + License along with the GNU C Library; if not, see
  87974. + <http://www.gnu.org/licenses/>. */
  87975. #include <pthread.h>
  87976. -
  87977. +void __pthread_cleanup_routine (struct __pthread_cleanup_frame *f);
  87978. void
  87979. __pthread_cleanup_routine (struct __pthread_cleanup_frame *f)
  87980. {
  87981. diff -Nur uClibc-0.9.33.2/libpthread/nptl/descr.h uClibc-git/libpthread/nptl/descr.h
  87982. --- uClibc-0.9.33.2/libpthread/nptl/descr.h 2012-05-15 09:20:09.000000000 +0200
  87983. +++ uClibc-git/libpthread/nptl/descr.h 2014-02-03 12:32:57.000000000 +0100
  87984. @@ -13,9 +13,8 @@
  87985. Lesser General Public License for more details.
  87986. You should have received a copy of the GNU Lesser General Public
  87987. - License along with the GNU C Library; if not, write to the Free
  87988. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  87989. - 02111-1307 USA. */
  87990. + License along with the GNU C Library; if not, see
  87991. + <http://www.gnu.org/licenses/>. */
  87992. #ifndef _DESCR_H
  87993. #define _DESCR_H 1
  87994. diff -Nur uClibc-0.9.33.2/libpthread/nptl/events.c uClibc-git/libpthread/nptl/events.c
  87995. --- uClibc-0.9.33.2/libpthread/nptl/events.c 2012-05-15 09:20:09.000000000 +0200
  87996. +++ uClibc-git/libpthread/nptl/events.c 2014-02-03 12:32:57.000000000 +0100
  87997. @@ -13,9 +13,8 @@
  87998. Lesser General Public License for more details.
  87999. You should have received a copy of the GNU Lesser General Public
  88000. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  88001. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  88002. - Boston, MA 02111-1307, USA. */
  88003. + License along with the GNU C Library; see the file COPYING.LIB. If
  88004. + not, see <http://www.gnu.org/licenses/>. */
  88005. /* The functions contained here do nothing, they just return. */
  88006. diff -Nur uClibc-0.9.33.2/libpthread/nptl/forward.c uClibc-git/libpthread/nptl/forward.c
  88007. --- uClibc-0.9.33.2/libpthread/nptl/forward.c 2012-05-15 09:20:09.000000000 +0200
  88008. +++ uClibc-git/libpthread/nptl/forward.c 2014-02-03 12:32:57.000000000 +0100
  88009. @@ -13,9 +13,8 @@
  88010. Lesser General Public License for more details.
  88011. You should have received a copy of the GNU Lesser General Public
  88012. - License along with the GNU C Library; if not, write to the Free
  88013. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88014. - 02111-1307 USA. */
  88015. + License along with the GNU C Library; if not, see
  88016. + <http://www.gnu.org/licenses/>. */
  88017. #include <dlfcn.h>
  88018. #include <pthreadP.h>
  88019. diff -Nur uClibc-0.9.33.2/libpthread/nptl/.gitignore uClibc-git/libpthread/nptl/.gitignore
  88020. --- uClibc-0.9.33.2/libpthread/nptl/.gitignore 2012-05-15 09:20:09.000000000 +0200
  88021. +++ uClibc-git/libpthread/nptl/.gitignore 2014-02-03 12:32:57.000000000 +0100
  88022. @@ -26,3 +26,5 @@
  88023. #
  88024. # symlinks
  88025. #
  88026. +sysdeps/pthread/pt-sigfillset.c
  88027. +sysdeps/pthread/pt-sigprocmask.c
  88028. diff -Nur uClibc-0.9.33.2/libpthread/nptl/herrno.c uClibc-git/libpthread/nptl/herrno.c
  88029. --- uClibc-0.9.33.2/libpthread/nptl/herrno.c 2012-05-15 09:20:09.000000000 +0200
  88030. +++ uClibc-git/libpthread/nptl/herrno.c 2014-02-03 12:32:57.000000000 +0100
  88031. @@ -12,9 +12,8 @@
  88032. Lesser General Public License for more details.
  88033. You should have received a copy of the GNU Lesser General Public
  88034. - License along with the GNU C Library; if not, write to the Free
  88035. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88036. - 02111-1307 USA. */
  88037. + License along with the GNU C Library; if not, see
  88038. + <http://www.gnu.org/licenses/>. */
  88039. #include <features.h>
  88040. #include <netdb.h>
  88041. diff -Nur uClibc-0.9.33.2/libpthread/nptl/init.c uClibc-git/libpthread/nptl/init.c
  88042. --- uClibc-0.9.33.2/libpthread/nptl/init.c 2012-05-15 09:20:09.000000000 +0200
  88043. +++ uClibc-git/libpthread/nptl/init.c 2014-02-03 12:32:57.000000000 +0100
  88044. @@ -13,9 +13,8 @@
  88045. Lesser General Public License for more details.
  88046. You should have received a copy of the GNU Lesser General Public
  88047. - License along with the GNU C Library; if not, write to the Free
  88048. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88049. - 02111-1307 USA. */
  88050. + License along with the GNU C Library; if not, see
  88051. + <http://www.gnu.org/licenses/>. */
  88052. #include <assert.h>
  88053. #include <errno.h>
  88054. @@ -35,7 +34,6 @@
  88055. #include <lowlevellock.h>
  88056. #include <bits/kernel-features.h>
  88057. #include <stdio.h>
  88058. -extern __typeof(sigaction) __libc_sigaction;
  88059. /* Size and alignment of static TLS block. */
  88060. size_t __static_tls_size;
  88061. diff -Nur uClibc-0.9.33.2/libpthread/nptl/libc-cancellation.c uClibc-git/libpthread/nptl/libc-cancellation.c
  88062. --- uClibc-0.9.33.2/libpthread/nptl/libc-cancellation.c 2012-05-15 09:20:09.000000000 +0200
  88063. +++ uClibc-git/libpthread/nptl/libc-cancellation.c 2014-02-03 12:32:57.000000000 +0100
  88064. @@ -13,9 +13,8 @@
  88065. Lesser General Public License for more details.
  88066. You should have received a copy of the GNU Lesser General Public
  88067. - License along with the GNU C Library; if not, write to the Free
  88068. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88069. - 02111-1307 USA. */
  88070. + License along with the GNU C Library; if not, see
  88071. + <http://www.gnu.org/licenses/>. */
  88072. #include "pthreadP.h"
  88073. diff -Nur uClibc-0.9.33.2/libpthread/nptl/linux_fsinfo.h uClibc-git/libpthread/nptl/linux_fsinfo.h
  88074. --- uClibc-0.9.33.2/libpthread/nptl/linux_fsinfo.h 2012-05-15 09:20:09.000000000 +0200
  88075. +++ uClibc-git/libpthread/nptl/linux_fsinfo.h 2014-02-03 12:32:57.000000000 +0100
  88076. @@ -13,9 +13,8 @@
  88077. Lesser General Public License for more details.
  88078. You should have received a copy of the GNU Lesser General Public
  88079. - License along with the GNU C Library; if not, write to the Free
  88080. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88081. - 02111-1307 USA. */
  88082. + License along with the GNU C Library; if not, see
  88083. + <http://www.gnu.org/licenses/>. */
  88084. #ifndef _LINUX_FSINFO_H
  88085. #define _LINUX_FSINFO_H 1
  88086. diff -Nur uClibc-0.9.33.2/libpthread/nptl/Makefile.in uClibc-git/libpthread/nptl/Makefile.in
  88087. --- uClibc-0.9.33.2/libpthread/nptl/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  88088. +++ uClibc-git/libpthread/nptl/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  88089. @@ -145,7 +145,7 @@
  88090. endif
  88091. LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(top_builddir)lib/libdl-$(VERSION).so \
  88092. - -Wl,-z,nodelete,-z,initfirst,-init=__pthread_initialize_minimal_internal
  88093. + -Wl,-z,nodelete,-z,initfirst,-init=$(SYMBOL_PREFIX)__pthread_initialize_minimal_internal
  88094. LIBS-libpthread.so := $(LIBS)
  88095. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pt-cleanup.c uClibc-git/libpthread/nptl/pt-cleanup.c
  88096. --- uClibc-0.9.33.2/libpthread/nptl/pt-cleanup.c 2012-05-15 09:20:09.000000000 +0200
  88097. +++ uClibc-git/libpthread/nptl/pt-cleanup.c 2014-02-03 12:32:57.000000000 +0100
  88098. @@ -13,9 +13,8 @@
  88099. Lesser General Public License for more details.
  88100. You should have received a copy of the GNU Lesser General Public
  88101. - License along with the GNU C Library; if not, write to the Free
  88102. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88103. - 02111-1307 USA. */
  88104. + License along with the GNU C Library; if not, see
  88105. + <http://www.gnu.org/licenses/>. */
  88106. #include <setjmp.h>
  88107. #include <stdlib.h>
  88108. @@ -23,7 +22,7 @@
  88109. #include <jmpbuf-unwind.h>
  88110. void
  88111. -attribute_protected
  88112. +/*does not apply due to hidden_proto(): attribute_protected*/
  88113. __pthread_cleanup_upto (__jmp_buf target, char *targetframe)
  88114. {
  88115. struct pthread *self = THREAD_SELF;
  88116. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_atfork.c uClibc-git/libpthread/nptl/pthread_atfork.c
  88117. --- uClibc-0.9.33.2/libpthread/nptl/pthread_atfork.c 2012-05-15 09:20:09.000000000 +0200
  88118. +++ uClibc-git/libpthread/nptl/pthread_atfork.c 2014-02-03 12:32:57.000000000 +0100
  88119. @@ -30,9 +30,8 @@
  88120. Lesser General Public License for more details.
  88121. You should have received a copy of the GNU Lesser General Public
  88122. - License along with the GNU C Library; if not, write to the Free
  88123. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88124. - 02111-1307 USA. */
  88125. + License along with the GNU C Library; if not, see
  88126. + <http://www.gnu.org/licenses/>. */
  88127. #include "pthreadP.h"
  88128. #include <fork.h>
  88129. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_destroy.c uClibc-git/libpthread/nptl/pthread_attr_destroy.c
  88130. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88131. +++ uClibc-git/libpthread/nptl/pthread_attr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88132. @@ -13,9 +13,8 @@
  88133. Lesser General Public License for more details.
  88134. You should have received a copy of the GNU Lesser General Public
  88135. - License along with the GNU C Library; if not, write to the Free
  88136. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88137. - 02111-1307 USA. */
  88138. + License along with the GNU C Library; if not, see
  88139. + <http://www.gnu.org/licenses/>. */
  88140. #include <assert.h>
  88141. #include <errno.h>
  88142. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getdetachstate.c uClibc-git/libpthread/nptl/pthread_attr_getdetachstate.c
  88143. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getdetachstate.c 2012-05-15 09:20:09.000000000 +0200
  88144. +++ uClibc-git/libpthread/nptl/pthread_attr_getdetachstate.c 2014-02-03 12:32:57.000000000 +0100
  88145. @@ -13,9 +13,8 @@
  88146. Lesser General Public License for more details.
  88147. You should have received a copy of the GNU Lesser General Public
  88148. - License along with the GNU C Library; if not, write to the Free
  88149. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88150. - 02111-1307 USA. */
  88151. + License along with the GNU C Library; if not, see
  88152. + <http://www.gnu.org/licenses/>. */
  88153. #include <assert.h>
  88154. #include "pthreadP.h"
  88155. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getguardsize.c uClibc-git/libpthread/nptl/pthread_attr_getguardsize.c
  88156. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getguardsize.c 2012-05-15 09:20:09.000000000 +0200
  88157. +++ uClibc-git/libpthread/nptl/pthread_attr_getguardsize.c 2014-02-03 12:32:57.000000000 +0100
  88158. @@ -13,9 +13,8 @@
  88159. Lesser General Public License for more details.
  88160. You should have received a copy of the GNU Lesser General Public
  88161. - License along with the GNU C Library; if not, write to the Free
  88162. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88163. - 02111-1307 USA. */
  88164. + License along with the GNU C Library; if not, see
  88165. + <http://www.gnu.org/licenses/>. */
  88166. #include <assert.h>
  88167. #include "pthreadP.h"
  88168. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getinheritsched.c uClibc-git/libpthread/nptl/pthread_attr_getinheritsched.c
  88169. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getinheritsched.c 2012-05-15 09:20:09.000000000 +0200
  88170. +++ uClibc-git/libpthread/nptl/pthread_attr_getinheritsched.c 2014-02-03 12:32:57.000000000 +0100
  88171. @@ -13,9 +13,8 @@
  88172. Lesser General Public License for more details.
  88173. You should have received a copy of the GNU Lesser General Public
  88174. - License along with the GNU C Library; if not, write to the Free
  88175. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88176. - 02111-1307 USA. */
  88177. + License along with the GNU C Library; if not, see
  88178. + <http://www.gnu.org/licenses/>. */
  88179. #include <assert.h>
  88180. #include "pthreadP.h"
  88181. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedparam.c uClibc-git/libpthread/nptl/pthread_attr_getschedparam.c
  88182. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedparam.c 2012-05-15 09:20:09.000000000 +0200
  88183. +++ uClibc-git/libpthread/nptl/pthread_attr_getschedparam.c 2014-02-03 12:32:57.000000000 +0100
  88184. @@ -13,9 +13,8 @@
  88185. Lesser General Public License for more details.
  88186. You should have received a copy of the GNU Lesser General Public
  88187. - License along with the GNU C Library; if not, write to the Free
  88188. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88189. - 02111-1307 USA. */
  88190. + License along with the GNU C Library; if not, see
  88191. + <http://www.gnu.org/licenses/>. */
  88192. #include <assert.h>
  88193. #include <string.h>
  88194. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedpolicy.c uClibc-git/libpthread/nptl/pthread_attr_getschedpolicy.c
  88195. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getschedpolicy.c 2012-05-15 09:20:09.000000000 +0200
  88196. +++ uClibc-git/libpthread/nptl/pthread_attr_getschedpolicy.c 2014-02-03 12:32:57.000000000 +0100
  88197. @@ -13,9 +13,8 @@
  88198. Lesser General Public License for more details.
  88199. You should have received a copy of the GNU Lesser General Public
  88200. - License along with the GNU C Library; if not, write to the Free
  88201. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88202. - 02111-1307 USA. */
  88203. + License along with the GNU C Library; if not, see
  88204. + <http://www.gnu.org/licenses/>. */
  88205. #include <assert.h>
  88206. #include "pthreadP.h"
  88207. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getscope.c uClibc-git/libpthread/nptl/pthread_attr_getscope.c
  88208. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getscope.c 2012-05-15 09:20:09.000000000 +0200
  88209. +++ uClibc-git/libpthread/nptl/pthread_attr_getscope.c 2014-02-03 12:32:57.000000000 +0100
  88210. @@ -13,9 +13,8 @@
  88211. Lesser General Public License for more details.
  88212. You should have received a copy of the GNU Lesser General Public
  88213. - License along with the GNU C Library; if not, write to the Free
  88214. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88215. - 02111-1307 USA. */
  88216. + License along with the GNU C Library; if not, see
  88217. + <http://www.gnu.org/licenses/>. */
  88218. #include <assert.h>
  88219. #include "pthreadP.h"
  88220. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstackaddr.c uClibc-git/libpthread/nptl/pthread_attr_getstackaddr.c
  88221. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstackaddr.c 2012-05-15 09:20:09.000000000 +0200
  88222. +++ uClibc-git/libpthread/nptl/pthread_attr_getstackaddr.c 2014-02-03 12:32:57.000000000 +0100
  88223. @@ -13,9 +13,8 @@
  88224. Lesser General Public License for more details.
  88225. You should have received a copy of the GNU Lesser General Public
  88226. - License along with the GNU C Library; if not, write to the Free
  88227. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88228. - 02111-1307 USA. */
  88229. + License along with the GNU C Library; if not, see
  88230. + <http://www.gnu.org/licenses/>. */
  88231. #include <assert.h>
  88232. #include <errno.h>
  88233. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstack.c uClibc-git/libpthread/nptl/pthread_attr_getstack.c
  88234. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstack.c 2012-05-15 09:20:09.000000000 +0200
  88235. +++ uClibc-git/libpthread/nptl/pthread_attr_getstack.c 2014-02-03 12:32:57.000000000 +0100
  88236. @@ -13,9 +13,8 @@
  88237. Lesser General Public License for more details.
  88238. You should have received a copy of the GNU Lesser General Public
  88239. - License along with the GNU C Library; if not, write to the Free
  88240. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88241. - 02111-1307 USA. */
  88242. + License along with the GNU C Library; if not, see
  88243. + <http://www.gnu.org/licenses/>. */
  88244. #include <assert.h>
  88245. #include "pthreadP.h"
  88246. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstacksize.c uClibc-git/libpthread/nptl/pthread_attr_getstacksize.c
  88247. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_getstacksize.c 2012-05-15 09:20:09.000000000 +0200
  88248. +++ uClibc-git/libpthread/nptl/pthread_attr_getstacksize.c 2014-02-03 12:32:57.000000000 +0100
  88249. @@ -13,9 +13,8 @@
  88250. Lesser General Public License for more details.
  88251. You should have received a copy of the GNU Lesser General Public
  88252. - License along with the GNU C Library; if not, write to the Free
  88253. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88254. - 02111-1307 USA. */
  88255. + License along with the GNU C Library; if not, see
  88256. + <http://www.gnu.org/licenses/>. */
  88257. #include <assert.h>
  88258. #include "pthreadP.h"
  88259. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_init.c uClibc-git/libpthread/nptl/pthread_attr_init.c
  88260. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_init.c 2012-05-15 09:20:09.000000000 +0200
  88261. +++ uClibc-git/libpthread/nptl/pthread_attr_init.c 2014-02-03 12:32:57.000000000 +0100
  88262. @@ -13,9 +13,8 @@
  88263. Lesser General Public License for more details.
  88264. You should have received a copy of the GNU Lesser General Public
  88265. - License along with the GNU C Library; if not, write to the Free
  88266. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88267. - 02111-1307 USA. */
  88268. + License along with the GNU C Library; if not, see
  88269. + <http://www.gnu.org/licenses/>. */
  88270. #include <assert.h>
  88271. #include <errno.h>
  88272. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setdetachstate.c uClibc-git/libpthread/nptl/pthread_attr_setdetachstate.c
  88273. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setdetachstate.c 2012-05-15 09:20:09.000000000 +0200
  88274. +++ uClibc-git/libpthread/nptl/pthread_attr_setdetachstate.c 2014-02-03 12:32:57.000000000 +0100
  88275. @@ -13,9 +13,8 @@
  88276. Lesser General Public License for more details.
  88277. You should have received a copy of the GNU Lesser General Public
  88278. - License along with the GNU C Library; if not, write to the Free
  88279. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88280. - 02111-1307 USA. */
  88281. + License along with the GNU C Library; if not, see
  88282. + <http://www.gnu.org/licenses/>. */
  88283. #include <assert.h>
  88284. #include <errno.h>
  88285. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setguardsize.c uClibc-git/libpthread/nptl/pthread_attr_setguardsize.c
  88286. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setguardsize.c 2012-05-15 09:20:09.000000000 +0200
  88287. +++ uClibc-git/libpthread/nptl/pthread_attr_setguardsize.c 2014-02-03 12:32:57.000000000 +0100
  88288. @@ -13,9 +13,8 @@
  88289. Lesser General Public License for more details.
  88290. You should have received a copy of the GNU Lesser General Public
  88291. - License along with the GNU C Library; if not, write to the Free
  88292. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88293. - 02111-1307 USA. */
  88294. + License along with the GNU C Library; if not, see
  88295. + <http://www.gnu.org/licenses/>. */
  88296. #include <assert.h>
  88297. #include "pthreadP.h"
  88298. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setinheritsched.c uClibc-git/libpthread/nptl/pthread_attr_setinheritsched.c
  88299. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setinheritsched.c 2012-05-15 09:20:09.000000000 +0200
  88300. +++ uClibc-git/libpthread/nptl/pthread_attr_setinheritsched.c 2014-02-03 12:32:57.000000000 +0100
  88301. @@ -13,9 +13,8 @@
  88302. Lesser General Public License for more details.
  88303. You should have received a copy of the GNU Lesser General Public
  88304. - License along with the GNU C Library; if not, write to the Free
  88305. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88306. - 02111-1307 USA. */
  88307. + License along with the GNU C Library; if not, see
  88308. + <http://www.gnu.org/licenses/>. */
  88309. #include <assert.h>
  88310. #include <errno.h>
  88311. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedparam.c uClibc-git/libpthread/nptl/pthread_attr_setschedparam.c
  88312. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedparam.c 2012-05-15 09:20:09.000000000 +0200
  88313. +++ uClibc-git/libpthread/nptl/pthread_attr_setschedparam.c 2014-02-03 12:32:57.000000000 +0100
  88314. @@ -13,9 +13,8 @@
  88315. Lesser General Public License for more details.
  88316. You should have received a copy of the GNU Lesser General Public
  88317. - License along with the GNU C Library; if not, write to the Free
  88318. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88319. - 02111-1307 USA. */
  88320. + License along with the GNU C Library; if not, see
  88321. + <http://www.gnu.org/licenses/>. */
  88322. #include <assert.h>
  88323. #include <errno.h>
  88324. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedpolicy.c uClibc-git/libpthread/nptl/pthread_attr_setschedpolicy.c
  88325. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setschedpolicy.c 2012-05-15 09:20:09.000000000 +0200
  88326. +++ uClibc-git/libpthread/nptl/pthread_attr_setschedpolicy.c 2014-02-03 12:32:57.000000000 +0100
  88327. @@ -13,9 +13,8 @@
  88328. Lesser General Public License for more details.
  88329. You should have received a copy of the GNU Lesser General Public
  88330. - License along with the GNU C Library; if not, write to the Free
  88331. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88332. - 02111-1307 USA. */
  88333. + License along with the GNU C Library; if not, see
  88334. + <http://www.gnu.org/licenses/>. */
  88335. #include <assert.h>
  88336. #include <errno.h>
  88337. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setscope.c uClibc-git/libpthread/nptl/pthread_attr_setscope.c
  88338. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setscope.c 2012-05-15 09:20:09.000000000 +0200
  88339. +++ uClibc-git/libpthread/nptl/pthread_attr_setscope.c 2014-02-03 12:32:57.000000000 +0100
  88340. @@ -13,9 +13,8 @@
  88341. Lesser General Public License for more details.
  88342. You should have received a copy of the GNU Lesser General Public
  88343. - License along with the GNU C Library; if not, write to the Free
  88344. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88345. - 02111-1307 USA. */
  88346. + License along with the GNU C Library; if not, see
  88347. + <http://www.gnu.org/licenses/>. */
  88348. #include <assert.h>
  88349. #include <errno.h>
  88350. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstackaddr.c uClibc-git/libpthread/nptl/pthread_attr_setstackaddr.c
  88351. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstackaddr.c 2012-05-15 09:20:09.000000000 +0200
  88352. +++ uClibc-git/libpthread/nptl/pthread_attr_setstackaddr.c 2014-02-03 12:32:57.000000000 +0100
  88353. @@ -13,9 +13,8 @@
  88354. Lesser General Public License for more details.
  88355. You should have received a copy of the GNU Lesser General Public
  88356. - License along with the GNU C Library; if not, write to the Free
  88357. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88358. - 02111-1307 USA. */
  88359. + License along with the GNU C Library; if not, see
  88360. + <http://www.gnu.org/licenses/>. */
  88361. #include <assert.h>
  88362. #include <errno.h>
  88363. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstack.c uClibc-git/libpthread/nptl/pthread_attr_setstack.c
  88364. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstack.c 2012-05-15 09:20:09.000000000 +0200
  88365. +++ uClibc-git/libpthread/nptl/pthread_attr_setstack.c 2014-02-03 12:32:57.000000000 +0100
  88366. @@ -13,9 +13,8 @@
  88367. Lesser General Public License for more details.
  88368. You should have received a copy of the GNU Lesser General Public
  88369. - License along with the GNU C Library; if not, write to the Free
  88370. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88371. - 02111-1307 USA. */
  88372. + License along with the GNU C Library; if not, see
  88373. + <http://www.gnu.org/licenses/>. */
  88374. #include <assert.h>
  88375. #include <errno.h>
  88376. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstacksize.c uClibc-git/libpthread/nptl/pthread_attr_setstacksize.c
  88377. --- uClibc-0.9.33.2/libpthread/nptl/pthread_attr_setstacksize.c 2012-05-15 09:20:09.000000000 +0200
  88378. +++ uClibc-git/libpthread/nptl/pthread_attr_setstacksize.c 2014-02-03 12:32:57.000000000 +0100
  88379. @@ -13,9 +13,8 @@
  88380. Lesser General Public License for more details.
  88381. You should have received a copy of the GNU Lesser General Public
  88382. - License along with the GNU C Library; if not, write to the Free
  88383. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88384. - 02111-1307 USA. */
  88385. + License along with the GNU C Library; if not, see
  88386. + <http://www.gnu.org/licenses/>. */
  88387. #include <assert.h>
  88388. #include <errno.h>
  88389. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_destroy.c uClibc-git/libpthread/nptl/pthread_barrierattr_destroy.c
  88390. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88391. +++ uClibc-git/libpthread/nptl/pthread_barrierattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88392. @@ -13,9 +13,8 @@
  88393. Lesser General Public License for more details.
  88394. You should have received a copy of the GNU Lesser General Public
  88395. - License along with the GNU C Library; if not, write to the Free
  88396. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88397. - 02111-1307 USA. */
  88398. + License along with the GNU C Library; if not, see
  88399. + <http://www.gnu.org/licenses/>. */
  88400. #include "pthreadP.h"
  88401. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_getpshared.c uClibc-git/libpthread/nptl/pthread_barrierattr_getpshared.c
  88402. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  88403. +++ uClibc-git/libpthread/nptl/pthread_barrierattr_getpshared.c 2014-02-03 12:32:57.000000000 +0100
  88404. @@ -13,9 +13,8 @@
  88405. Lesser General Public License for more details.
  88406. You should have received a copy of the GNU Lesser General Public
  88407. - License along with the GNU C Library; if not, write to the Free
  88408. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88409. - 02111-1307 USA. */
  88410. + License along with the GNU C Library; if not, see
  88411. + <http://www.gnu.org/licenses/>. */
  88412. #include "pthreadP.h"
  88413. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_init.c uClibc-git/libpthread/nptl/pthread_barrierattr_init.c
  88414. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_init.c 2012-05-15 09:20:09.000000000 +0200
  88415. +++ uClibc-git/libpthread/nptl/pthread_barrierattr_init.c 2014-02-03 12:32:57.000000000 +0100
  88416. @@ -13,9 +13,8 @@
  88417. Lesser General Public License for more details.
  88418. You should have received a copy of the GNU Lesser General Public
  88419. - License along with the GNU C Library; if not, write to the Free
  88420. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88421. - 02111-1307 USA. */
  88422. + License along with the GNU C Library; if not, see
  88423. + <http://www.gnu.org/licenses/>. */
  88424. #include "pthreadP.h"
  88425. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_setpshared.c uClibc-git/libpthread/nptl/pthread_barrierattr_setpshared.c
  88426. --- uClibc-0.9.33.2/libpthread/nptl/pthread_barrierattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  88427. +++ uClibc-git/libpthread/nptl/pthread_barrierattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  88428. @@ -13,9 +13,8 @@
  88429. Lesser General Public License for more details.
  88430. You should have received a copy of the GNU Lesser General Public
  88431. - License along with the GNU C Library; if not, write to the Free
  88432. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88433. - 02111-1307 USA. */
  88434. + License along with the GNU C Library; if not, see
  88435. + <http://www.gnu.org/licenses/>. */
  88436. #include <errno.h>
  88437. #include "pthreadP.h"
  88438. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_cancel.c uClibc-git/libpthread/nptl/pthread_cancel.c
  88439. --- uClibc-0.9.33.2/libpthread/nptl/pthread_cancel.c 2012-05-15 09:20:09.000000000 +0200
  88440. +++ uClibc-git/libpthread/nptl/pthread_cancel.c 2014-02-03 12:32:57.000000000 +0100
  88441. @@ -13,9 +13,8 @@
  88442. Lesser General Public License for more details.
  88443. You should have received a copy of the GNU Lesser General Public
  88444. - License along with the GNU C Library; if not, write to the Free
  88445. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88446. - 02111-1307 USA. */
  88447. + License along with the GNU C Library; if not, see
  88448. + <http://www.gnu.org/licenses/>. */
  88449. #include <errno.h>
  88450. #include <signal.h>
  88451. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_clock_gettime.c uClibc-git/libpthread/nptl/pthread_clock_gettime.c
  88452. --- uClibc-0.9.33.2/libpthread/nptl/pthread_clock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  88453. +++ uClibc-git/libpthread/nptl/pthread_clock_gettime.c 2014-02-03 12:32:57.000000000 +0100
  88454. @@ -12,14 +12,12 @@
  88455. Lesser General Public License for more details.
  88456. You should have received a copy of the GNU Lesser General Public
  88457. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  88458. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  88459. - Boston, MA 02111-1307, USA. */
  88460. + License along with the GNU C Library; see the file COPYING.LIB. If
  88461. + not, see <http://www.gnu.org/licenses/>. */
  88462. #include <errno.h>
  88463. #include <stdlib.h>
  88464. #include <time.h>
  88465. -#include <libc-internal.h>
  88466. #include "pthreadP.h"
  88467. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_clock_settime.c uClibc-git/libpthread/nptl/pthread_clock_settime.c
  88468. --- uClibc-0.9.33.2/libpthread/nptl/pthread_clock_settime.c 2012-05-15 09:20:09.000000000 +0200
  88469. +++ uClibc-git/libpthread/nptl/pthread_clock_settime.c 2014-02-03 12:32:57.000000000 +0100
  88470. @@ -12,14 +12,12 @@
  88471. Lesser General Public License for more details.
  88472. You should have received a copy of the GNU Lesser General Public
  88473. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  88474. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  88475. - Boston, MA 02111-1307, USA. */
  88476. + License along with the GNU C Library; see the file COPYING.LIB. If
  88477. + not, see <http://www.gnu.org/licenses/>. */
  88478. #include <errno.h>
  88479. #include <stdlib.h>
  88480. #include <time.h>
  88481. -#include <libc-internal.h>
  88482. #include "pthreadP.h"
  88483. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_destroy.c uClibc-git/libpthread/nptl/pthread_condattr_destroy.c
  88484. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88485. +++ uClibc-git/libpthread/nptl/pthread_condattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88486. @@ -13,9 +13,8 @@
  88487. Lesser General Public License for more details.
  88488. You should have received a copy of the GNU Lesser General Public
  88489. - License along with the GNU C Library; if not, write to the Free
  88490. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88491. - 02111-1307 USA. */
  88492. + License along with the GNU C Library; if not, see
  88493. + <http://www.gnu.org/licenses/>. */
  88494. #include "pthreadP.h"
  88495. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getclock.c uClibc-git/libpthread/nptl/pthread_condattr_getclock.c
  88496. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getclock.c 2012-05-15 09:20:09.000000000 +0200
  88497. +++ uClibc-git/libpthread/nptl/pthread_condattr_getclock.c 2014-02-03 12:32:57.000000000 +0100
  88498. @@ -13,9 +13,8 @@
  88499. Lesser General Public License for more details.
  88500. You should have received a copy of the GNU Lesser General Public
  88501. - License along with the GNU C Library; if not, write to the Free
  88502. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88503. - 02111-1307 USA. */
  88504. + License along with the GNU C Library; if not, see
  88505. + <http://www.gnu.org/licenses/>. */
  88506. #include "pthreadP.h"
  88507. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getpshared.c uClibc-git/libpthread/nptl/pthread_condattr_getpshared.c
  88508. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  88509. +++ uClibc-git/libpthread/nptl/pthread_condattr_getpshared.c 2014-02-03 12:32:57.000000000 +0100
  88510. @@ -13,9 +13,8 @@
  88511. Lesser General Public License for more details.
  88512. You should have received a copy of the GNU Lesser General Public
  88513. - License along with the GNU C Library; if not, write to the Free
  88514. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88515. - 02111-1307 USA. */
  88516. + License along with the GNU C Library; if not, see
  88517. + <http://www.gnu.org/licenses/>. */
  88518. #include "pthreadP.h"
  88519. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_init.c uClibc-git/libpthread/nptl/pthread_condattr_init.c
  88520. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_init.c 2012-05-15 09:20:09.000000000 +0200
  88521. +++ uClibc-git/libpthread/nptl/pthread_condattr_init.c 2014-02-03 12:32:57.000000000 +0100
  88522. @@ -13,9 +13,8 @@
  88523. Lesser General Public License for more details.
  88524. You should have received a copy of the GNU Lesser General Public
  88525. - License along with the GNU C Library; if not, write to the Free
  88526. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88527. - 02111-1307 USA. */
  88528. + License along with the GNU C Library; if not, see
  88529. + <http://www.gnu.org/licenses/>. */
  88530. #include <string.h>
  88531. #include "pthreadP.h"
  88532. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setclock.c uClibc-git/libpthread/nptl/pthread_condattr_setclock.c
  88533. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setclock.c 2012-05-15 09:20:09.000000000 +0200
  88534. +++ uClibc-git/libpthread/nptl/pthread_condattr_setclock.c 2014-02-03 12:32:57.000000000 +0100
  88535. @@ -13,9 +13,8 @@
  88536. Lesser General Public License for more details.
  88537. You should have received a copy of the GNU Lesser General Public
  88538. - License along with the GNU C Library; if not, write to the Free
  88539. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88540. - 02111-1307 USA. */
  88541. + License along with the GNU C Library; if not, see
  88542. + <http://www.gnu.org/licenses/>. */
  88543. #include <assert.h>
  88544. #include <errno.h>
  88545. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setpshared.c uClibc-git/libpthread/nptl/pthread_condattr_setpshared.c
  88546. --- uClibc-0.9.33.2/libpthread/nptl/pthread_condattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  88547. +++ uClibc-git/libpthread/nptl/pthread_condattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  88548. @@ -13,9 +13,8 @@
  88549. Lesser General Public License for more details.
  88550. You should have received a copy of the GNU Lesser General Public
  88551. - License along with the GNU C Library; if not, write to the Free
  88552. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88553. - 02111-1307 USA. */
  88554. + License along with the GNU C Library; if not, see
  88555. + <http://www.gnu.org/licenses/>. */
  88556. #include <errno.h>
  88557. #include <pthreadP.h>
  88558. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_cond_destroy.c uClibc-git/libpthread/nptl/pthread_cond_destroy.c
  88559. --- uClibc-0.9.33.2/libpthread/nptl/pthread_cond_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88560. +++ uClibc-git/libpthread/nptl/pthread_cond_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88561. @@ -13,9 +13,8 @@
  88562. Lesser General Public License for more details.
  88563. You should have received a copy of the GNU Lesser General Public
  88564. - License along with the GNU C Library; if not, write to the Free
  88565. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88566. - 02111-1307 USA. */
  88567. + License along with the GNU C Library; if not, see
  88568. + <http://www.gnu.org/licenses/>. */
  88569. #include <errno.h>
  88570. #include "pthreadP.h"
  88571. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_cond_init.c uClibc-git/libpthread/nptl/pthread_cond_init.c
  88572. --- uClibc-0.9.33.2/libpthread/nptl/pthread_cond_init.c 2012-05-15 09:20:09.000000000 +0200
  88573. +++ uClibc-git/libpthread/nptl/pthread_cond_init.c 2014-02-03 12:32:57.000000000 +0100
  88574. @@ -14,9 +14,8 @@
  88575. Lesser General Public License for more details.
  88576. You should have received a copy of the GNU Lesser General Public
  88577. - License along with the GNU C Library; if not, write to the Free
  88578. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88579. - 02111-1307 USA. */
  88580. + License along with the GNU C Library; if not, see
  88581. + <http://www.gnu.org/licenses/>. */
  88582. #include "pthreadP.h"
  88583. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_create.c uClibc-git/libpthread/nptl/pthread_create.c
  88584. --- uClibc-0.9.33.2/libpthread/nptl/pthread_create.c 2012-05-15 09:20:09.000000000 +0200
  88585. +++ uClibc-git/libpthread/nptl/pthread_create.c 2014-02-03 12:32:57.000000000 +0100
  88586. @@ -13,9 +13,8 @@
  88587. Lesser General Public License for more details.
  88588. You should have received a copy of the GNU Lesser General Public
  88589. - License along with the GNU C Library; if not, write to the Free
  88590. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88591. - 02111-1307 USA. */
  88592. + License along with the GNU C Library; if not, see
  88593. + <http://www.gnu.org/licenses/>. */
  88594. #include <errno.h>
  88595. #include <stdbool.h>
  88596. @@ -25,7 +24,6 @@
  88597. #include <hp-timing.h>
  88598. #include <ldsodefs.h>
  88599. #include <atomic.h>
  88600. -#include <libc-internal.h>
  88601. #include <resolv.h>
  88602. #include <bits/kernel-features.h>
  88603. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_detach.c uClibc-git/libpthread/nptl/pthread_detach.c
  88604. --- uClibc-0.9.33.2/libpthread/nptl/pthread_detach.c 2012-05-15 09:20:09.000000000 +0200
  88605. +++ uClibc-git/libpthread/nptl/pthread_detach.c 2014-02-03 12:32:57.000000000 +0100
  88606. @@ -13,9 +13,8 @@
  88607. Lesser General Public License for more details.
  88608. You should have received a copy of the GNU Lesser General Public
  88609. - License along with the GNU C Library; if not, write to the Free
  88610. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88611. - 02111-1307 USA. */
  88612. + License along with the GNU C Library; if not, see
  88613. + <http://www.gnu.org/licenses/>. */
  88614. #include <errno.h>
  88615. #include "pthreadP.h"
  88616. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_equal.c uClibc-git/libpthread/nptl/pthread_equal.c
  88617. --- uClibc-0.9.33.2/libpthread/nptl/pthread_equal.c 2012-05-15 09:20:09.000000000 +0200
  88618. +++ uClibc-git/libpthread/nptl/pthread_equal.c 2014-02-03 12:32:57.000000000 +0100
  88619. @@ -13,9 +13,8 @@
  88620. Lesser General Public License for more details.
  88621. You should have received a copy of the GNU Lesser General Public
  88622. - License along with the GNU C Library; if not, write to the Free
  88623. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88624. - 02111-1307 USA. */
  88625. + License along with the GNU C Library; if not, see
  88626. + <http://www.gnu.org/licenses/>. */
  88627. #include "pthreadP.h"
  88628. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_exit.c uClibc-git/libpthread/nptl/pthread_exit.c
  88629. --- uClibc-0.9.33.2/libpthread/nptl/pthread_exit.c 2012-05-15 09:20:09.000000000 +0200
  88630. +++ uClibc-git/libpthread/nptl/pthread_exit.c 2014-02-03 12:32:57.000000000 +0100
  88631. @@ -13,16 +13,15 @@
  88632. Lesser General Public License for more details.
  88633. You should have received a copy of the GNU Lesser General Public
  88634. - License along with the GNU C Library; if not, write to the Free
  88635. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88636. - 02111-1307 USA. */
  88637. + License along with the GNU C Library; if not, see
  88638. + <http://www.gnu.org/licenses/>. */
  88639. #include <stdlib.h>
  88640. #include "pthreadP.h"
  88641. void
  88642. -attribute_protected
  88643. +attribute_protected attribute_noreturn
  88644. __pthread_exit (void* value)
  88645. {
  88646. THREAD_SETMEM (THREAD_SELF, result, value);
  88647. @@ -30,3 +29,9 @@
  88648. __do_cancel ();
  88649. }
  88650. strong_alias (__pthread_exit, pthread_exit)
  88651. +
  88652. +/*
  88653. + * After a thread terminates, __uClibc_main decrements __nptl_nthreads
  88654. + * defined in pthread_create.c.
  88655. + */
  88656. +PTHREAD_STATIC_FN_REQUIRE (pthread_create)
  88657. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getattr_np.c uClibc-git/libpthread/nptl/pthread_getattr_np.c
  88658. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getattr_np.c 2012-05-15 09:20:09.000000000 +0200
  88659. +++ uClibc-git/libpthread/nptl/pthread_getattr_np.c 2014-02-03 12:32:57.000000000 +0100
  88660. @@ -13,9 +13,8 @@
  88661. Lesser General Public License for more details.
  88662. You should have received a copy of the GNU Lesser General Public
  88663. - License along with the GNU C Library; if not, write to the Free
  88664. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88665. - 02111-1307 USA. */
  88666. + License along with the GNU C Library; if not, see
  88667. + <http://www.gnu.org/licenses/>. */
  88668. #include <assert.h>
  88669. #include <errno.h>
  88670. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getconcurrency.c uClibc-git/libpthread/nptl/pthread_getconcurrency.c
  88671. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  88672. +++ uClibc-git/libpthread/nptl/pthread_getconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  88673. @@ -13,9 +13,8 @@
  88674. Lesser General Public License for more details.
  88675. You should have received a copy of the GNU Lesser General Public
  88676. - License along with the GNU C Library; if not, write to the Free
  88677. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88678. - 02111-1307 USA. */
  88679. + License along with the GNU C Library; if not, see
  88680. + <http://www.gnu.org/licenses/>. */
  88681. #include "pthreadP.h"
  88682. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getschedparam.c uClibc-git/libpthread/nptl/pthread_getschedparam.c
  88683. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getschedparam.c 2012-05-15 09:20:09.000000000 +0200
  88684. +++ uClibc-git/libpthread/nptl/pthread_getschedparam.c 2014-02-03 12:32:57.000000000 +0100
  88685. @@ -13,9 +13,8 @@
  88686. Lesser General Public License for more details.
  88687. You should have received a copy of the GNU Lesser General Public
  88688. - License along with the GNU C Library; if not, write to the Free
  88689. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88690. - 02111-1307 USA. */
  88691. + License along with the GNU C Library; if not, see
  88692. + <http://www.gnu.org/licenses/>. */
  88693. #include <errno.h>
  88694. #include <string.h>
  88695. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_getspecific.c uClibc-git/libpthread/nptl/pthread_getspecific.c
  88696. --- uClibc-0.9.33.2/libpthread/nptl/pthread_getspecific.c 2012-05-15 09:20:09.000000000 +0200
  88697. +++ uClibc-git/libpthread/nptl/pthread_getspecific.c 2014-02-03 12:32:57.000000000 +0100
  88698. @@ -13,16 +13,15 @@
  88699. Lesser General Public License for more details.
  88700. You should have received a copy of the GNU Lesser General Public
  88701. - License along with the GNU C Library; if not, write to the Free
  88702. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88703. - 02111-1307 USA. */
  88704. + License along with the GNU C Library; if not, see
  88705. + <http://www.gnu.org/licenses/>. */
  88706. #include <stdlib.h>
  88707. #include "pthreadP.h"
  88708. -void *
  88709. attribute_protected
  88710. +void *
  88711. __pthread_getspecific (pthread_key_t key)
  88712. {
  88713. struct pthread_key_data *data;
  88714. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_join.c uClibc-git/libpthread/nptl/pthread_join.c
  88715. --- uClibc-0.9.33.2/libpthread/nptl/pthread_join.c 2012-05-15 09:20:09.000000000 +0200
  88716. +++ uClibc-git/libpthread/nptl/pthread_join.c 2014-02-03 12:32:57.000000000 +0100
  88717. @@ -13,9 +13,8 @@
  88718. Lesser General Public License for more details.
  88719. You should have received a copy of the GNU Lesser General Public
  88720. - License along with the GNU C Library; if not, write to the Free
  88721. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88722. - 02111-1307 USA. */
  88723. + License along with the GNU C Library; if not, see
  88724. + <http://www.gnu.org/licenses/>. */
  88725. #include <errno.h>
  88726. #include <stdlib.h>
  88727. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_key_create.c uClibc-git/libpthread/nptl/pthread_key_create.c
  88728. --- uClibc-0.9.33.2/libpthread/nptl/pthread_key_create.c 2012-05-15 09:20:09.000000000 +0200
  88729. +++ uClibc-git/libpthread/nptl/pthread_key_create.c 2014-02-03 12:32:57.000000000 +0100
  88730. @@ -13,9 +13,8 @@
  88731. Lesser General Public License for more details.
  88732. You should have received a copy of the GNU Lesser General Public
  88733. - License along with the GNU C Library; if not, write to the Free
  88734. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88735. - 02111-1307 USA. */
  88736. + License along with the GNU C Library; if not, see
  88737. + <http://www.gnu.org/licenses/>. */
  88738. #include <errno.h>
  88739. #include "pthreadP.h"
  88740. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_key_delete.c uClibc-git/libpthread/nptl/pthread_key_delete.c
  88741. --- uClibc-0.9.33.2/libpthread/nptl/pthread_key_delete.c 2012-05-15 09:20:09.000000000 +0200
  88742. +++ uClibc-git/libpthread/nptl/pthread_key_delete.c 2014-02-03 12:32:57.000000000 +0100
  88743. @@ -13,9 +13,8 @@
  88744. Lesser General Public License for more details.
  88745. You should have received a copy of the GNU Lesser General Public
  88746. - License along with the GNU C Library; if not, write to the Free
  88747. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88748. - 02111-1307 USA. */
  88749. + License along with the GNU C Library; if not, see
  88750. + <http://www.gnu.org/licenses/>. */
  88751. #include <errno.h>
  88752. #include "pthreadP.h"
  88753. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_kill_other_threads.c uClibc-git/libpthread/nptl/pthread_kill_other_threads.c
  88754. --- uClibc-0.9.33.2/libpthread/nptl/pthread_kill_other_threads.c 2012-05-15 09:20:09.000000000 +0200
  88755. +++ uClibc-git/libpthread/nptl/pthread_kill_other_threads.c 2014-02-03 12:32:57.000000000 +0100
  88756. @@ -13,11 +13,10 @@
  88757. Lesser General Public License for more details.
  88758. You should have received a copy of the GNU Lesser General Public
  88759. - License along with the GNU C Library; if not, write to the Free
  88760. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88761. - 02111-1307 USA. */
  88762. + License along with the GNU C Library; if not, see
  88763. + <http://www.gnu.org/licenses/>. */
  88764. -#ifdef SHARED
  88765. +#if 0 /*def SHARED*/
  88766. /* This function does not serve a useful purpose in the thread library
  88767. implementation anymore. It used to be necessary when then kernel
  88768. could not shut down "processes" but this is not the case anymore.
  88769. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_destroy.c uClibc-git/libpthread/nptl/pthread_mutexattr_destroy.c
  88770. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88771. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88772. @@ -13,9 +13,8 @@
  88773. Lesser General Public License for more details.
  88774. You should have received a copy of the GNU Lesser General Public
  88775. - License along with the GNU C Library; if not, write to the Free
  88776. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88777. - 02111-1307 USA. */
  88778. + License along with the GNU C Library; if not, see
  88779. + <http://www.gnu.org/licenses/>. */
  88780. #include <pthreadP.h>
  88781. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprioceiling.c uClibc-git/libpthread/nptl/pthread_mutexattr_getprioceiling.c
  88782. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  88783. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_getprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  88784. @@ -14,9 +14,8 @@
  88785. Lesser General Public License for more details.
  88786. You should have received a copy of the GNU Lesser General Public
  88787. - License along with the GNU C Library; if not, write to the Free
  88788. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88789. - 02111-1307 USA. */
  88790. + License along with the GNU C Library; if not, see
  88791. + <http://www.gnu.org/licenses/>. */
  88792. #include <pthreadP.h>
  88793. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprotocol.c uClibc-git/libpthread/nptl/pthread_mutexattr_getprotocol.c
  88794. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getprotocol.c 2012-05-15 09:20:09.000000000 +0200
  88795. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_getprotocol.c 2014-02-03 12:32:57.000000000 +0100
  88796. @@ -14,9 +14,8 @@
  88797. Lesser General Public License for more details.
  88798. You should have received a copy of the GNU Lesser General Public
  88799. - License along with the GNU C Library; if not, write to the Free
  88800. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88801. - 02111-1307 USA. */
  88802. + License along with the GNU C Library; if not, see
  88803. + <http://www.gnu.org/licenses/>. */
  88804. #include <pthreadP.h>
  88805. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getpshared.c uClibc-git/libpthread/nptl/pthread_mutexattr_getpshared.c
  88806. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  88807. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_getpshared.c 2014-02-03 12:32:57.000000000 +0100
  88808. @@ -13,9 +13,8 @@
  88809. Lesser General Public License for more details.
  88810. You should have received a copy of the GNU Lesser General Public
  88811. - License along with the GNU C Library; if not, write to the Free
  88812. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88813. - 02111-1307 USA. */
  88814. + License along with the GNU C Library; if not, see
  88815. + <http://www.gnu.org/licenses/>. */
  88816. #include <pthreadP.h>
  88817. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getrobust.c uClibc-git/libpthread/nptl/pthread_mutexattr_getrobust.c
  88818. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_getrobust.c 2012-05-15 09:20:09.000000000 +0200
  88819. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_getrobust.c 2014-02-03 12:32:57.000000000 +0100
  88820. @@ -13,9 +13,8 @@
  88821. Lesser General Public License for more details.
  88822. You should have received a copy of the GNU Lesser General Public
  88823. - License along with the GNU C Library; if not, write to the Free
  88824. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88825. - 02111-1307 USA. */
  88826. + License along with the GNU C Library; if not, see
  88827. + <http://www.gnu.org/licenses/>. */
  88828. #include <pthreadP.h>
  88829. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_gettype.c uClibc-git/libpthread/nptl/pthread_mutexattr_gettype.c
  88830. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_gettype.c 2012-05-15 09:20:09.000000000 +0200
  88831. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_gettype.c 2014-02-03 12:32:57.000000000 +0100
  88832. @@ -13,9 +13,8 @@
  88833. Lesser General Public License for more details.
  88834. You should have received a copy of the GNU Lesser General Public
  88835. - License along with the GNU C Library; if not, write to the Free
  88836. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88837. - 02111-1307 USA. */
  88838. + License along with the GNU C Library; if not, see
  88839. + <http://www.gnu.org/licenses/>. */
  88840. #include <pthreadP.h>
  88841. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_init.c uClibc-git/libpthread/nptl/pthread_mutexattr_init.c
  88842. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_init.c 2012-05-15 09:20:09.000000000 +0200
  88843. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_init.c 2014-02-03 12:32:57.000000000 +0100
  88844. @@ -13,9 +13,8 @@
  88845. Lesser General Public License for more details.
  88846. You should have received a copy of the GNU Lesser General Public
  88847. - License along with the GNU C Library; if not, write to the Free
  88848. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88849. - 02111-1307 USA. */
  88850. + License along with the GNU C Library; if not, see
  88851. + <http://www.gnu.org/licenses/>. */
  88852. #include <string.h>
  88853. #include <pthreadP.h>
  88854. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprioceiling.c uClibc-git/libpthread/nptl/pthread_mutexattr_setprioceiling.c
  88855. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  88856. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_setprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  88857. @@ -14,9 +14,8 @@
  88858. Lesser General Public License for more details.
  88859. You should have received a copy of the GNU Lesser General Public
  88860. - License along with the GNU C Library; if not, write to the Free
  88861. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88862. - 02111-1307 USA. */
  88863. + License along with the GNU C Library; if not, see
  88864. + <http://www.gnu.org/licenses/>. */
  88865. #include <errno.h>
  88866. #include <pthreadP.h>
  88867. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprotocol.c uClibc-git/libpthread/nptl/pthread_mutexattr_setprotocol.c
  88868. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setprotocol.c 2012-05-15 09:20:09.000000000 +0200
  88869. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_setprotocol.c 2014-02-03 12:32:57.000000000 +0100
  88870. @@ -14,9 +14,8 @@
  88871. Lesser General Public License for more details.
  88872. You should have received a copy of the GNU Lesser General Public
  88873. - License along with the GNU C Library; if not, write to the Free
  88874. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88875. - 02111-1307 USA. */
  88876. + License along with the GNU C Library; if not, see
  88877. + <http://www.gnu.org/licenses/>. */
  88878. #include <errno.h>
  88879. #include <pthreadP.h>
  88880. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setpshared.c uClibc-git/libpthread/nptl/pthread_mutexattr_setpshared.c
  88881. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  88882. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  88883. @@ -13,9 +13,8 @@
  88884. Lesser General Public License for more details.
  88885. You should have received a copy of the GNU Lesser General Public
  88886. - License along with the GNU C Library; if not, write to the Free
  88887. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88888. - 02111-1307 USA. */
  88889. + License along with the GNU C Library; if not, see
  88890. + <http://www.gnu.org/licenses/>. */
  88891. #include <errno.h>
  88892. #include <pthreadP.h>
  88893. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setrobust.c uClibc-git/libpthread/nptl/pthread_mutexattr_setrobust.c
  88894. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_setrobust.c 2012-05-15 09:20:09.000000000 +0200
  88895. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_setrobust.c 2014-02-03 12:32:57.000000000 +0100
  88896. @@ -13,9 +13,8 @@
  88897. Lesser General Public License for more details.
  88898. You should have received a copy of the GNU Lesser General Public
  88899. - License along with the GNU C Library; if not, write to the Free
  88900. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88901. - 02111-1307 USA. */
  88902. + License along with the GNU C Library; if not, see
  88903. + <http://www.gnu.org/licenses/>. */
  88904. #include <errno.h>
  88905. #include <pthreadP.h>
  88906. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_settype.c uClibc-git/libpthread/nptl/pthread_mutexattr_settype.c
  88907. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutexattr_settype.c 2012-05-15 09:20:09.000000000 +0200
  88908. +++ uClibc-git/libpthread/nptl/pthread_mutexattr_settype.c 2014-02-03 12:32:57.000000000 +0100
  88909. @@ -13,9 +13,8 @@
  88910. Lesser General Public License for more details.
  88911. You should have received a copy of the GNU Lesser General Public
  88912. - License along with the GNU C Library; if not, write to the Free
  88913. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88914. - 02111-1307 USA. */
  88915. + License along with the GNU C Library; if not, see
  88916. + <http://www.gnu.org/licenses/>. */
  88917. #include <errno.h>
  88918. #include <pthreadP.h>
  88919. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_consistent.c uClibc-git/libpthread/nptl/pthread_mutex_consistent.c
  88920. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_consistent.c 2012-05-15 09:20:09.000000000 +0200
  88921. +++ uClibc-git/libpthread/nptl/pthread_mutex_consistent.c 2014-02-03 12:32:57.000000000 +0100
  88922. @@ -13,9 +13,8 @@
  88923. Lesser General Public License for more details.
  88924. You should have received a copy of the GNU Lesser General Public
  88925. - License along with the GNU C Library; if not, write to the Free
  88926. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88927. - 02111-1307 USA. */
  88928. + License along with the GNU C Library; if not, see
  88929. + <http://www.gnu.org/licenses/>. */
  88930. #include <errno.h>
  88931. #include <pthreadP.h>
  88932. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_destroy.c uClibc-git/libpthread/nptl/pthread_mutex_destroy.c
  88933. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_destroy.c 2012-05-15 09:20:09.000000000 +0200
  88934. +++ uClibc-git/libpthread/nptl/pthread_mutex_destroy.c 2014-02-03 12:32:57.000000000 +0100
  88935. @@ -13,9 +13,8 @@
  88936. Lesser General Public License for more details.
  88937. You should have received a copy of the GNU Lesser General Public
  88938. - License along with the GNU C Library; if not, write to the Free
  88939. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88940. - 02111-1307 USA. */
  88941. + License along with the GNU C Library; if not, see
  88942. + <http://www.gnu.org/licenses/>. */
  88943. #include <errno.h>
  88944. #include "pthreadP.h"
  88945. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_getprioceiling.c uClibc-git/libpthread/nptl/pthread_mutex_getprioceiling.c
  88946. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_getprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  88947. +++ uClibc-git/libpthread/nptl/pthread_mutex_getprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  88948. @@ -14,9 +14,8 @@
  88949. Lesser General Public License for more details.
  88950. You should have received a copy of the GNU Lesser General Public
  88951. - License along with the GNU C Library; if not, write to the Free
  88952. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88953. - 02111-1307 USA. */
  88954. + License along with the GNU C Library; if not, see
  88955. + <http://www.gnu.org/licenses/>. */
  88956. #include <errno.h>
  88957. #include <pthreadP.h>
  88958. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_init.c uClibc-git/libpthread/nptl/pthread_mutex_init.c
  88959. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_init.c 2012-05-15 09:20:09.000000000 +0200
  88960. +++ uClibc-git/libpthread/nptl/pthread_mutex_init.c 2014-02-03 12:32:57.000000000 +0100
  88961. @@ -14,9 +14,8 @@
  88962. Lesser General Public License for more details.
  88963. You should have received a copy of the GNU Lesser General Public
  88964. - License along with the GNU C Library; if not, write to the Free
  88965. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88966. - 02111-1307 USA. */
  88967. + License along with the GNU C Library; if not, see
  88968. + <http://www.gnu.org/licenses/>. */
  88969. #include <assert.h>
  88970. #include <errno.h>
  88971. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_lock.c uClibc-git/libpthread/nptl/pthread_mutex_lock.c
  88972. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_lock.c 2012-05-15 09:20:09.000000000 +0200
  88973. +++ uClibc-git/libpthread/nptl/pthread_mutex_lock.c 2014-02-03 12:32:57.000000000 +0100
  88974. @@ -13,9 +13,8 @@
  88975. Lesser General Public License for more details.
  88976. You should have received a copy of the GNU Lesser General Public
  88977. - License along with the GNU C Library; if not, write to the Free
  88978. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88979. - 02111-1307 USA. */
  88980. + License along with the GNU C Library; if not, see
  88981. + <http://www.gnu.org/licenses/>. */
  88982. #include <assert.h>
  88983. #include <errno.h>
  88984. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_setprioceiling.c uClibc-git/libpthread/nptl/pthread_mutex_setprioceiling.c
  88985. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_setprioceiling.c 2012-05-15 09:20:09.000000000 +0200
  88986. +++ uClibc-git/libpthread/nptl/pthread_mutex_setprioceiling.c 2014-02-03 12:32:57.000000000 +0100
  88987. @@ -14,9 +14,8 @@
  88988. Lesser General Public License for more details.
  88989. You should have received a copy of the GNU Lesser General Public
  88990. - License along with the GNU C Library; if not, write to the Free
  88991. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  88992. - 02111-1307 USA. */
  88993. + License along with the GNU C Library; if not, see
  88994. + <http://www.gnu.org/licenses/>. */
  88995. #include <stdbool.h>
  88996. #include <errno.h>
  88997. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_timedlock.c uClibc-git/libpthread/nptl/pthread_mutex_timedlock.c
  88998. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_timedlock.c 2012-05-15 09:20:09.000000000 +0200
  88999. +++ uClibc-git/libpthread/nptl/pthread_mutex_timedlock.c 2014-02-03 12:32:57.000000000 +0100
  89000. @@ -13,9 +13,8 @@
  89001. Lesser General Public License for more details.
  89002. You should have received a copy of the GNU Lesser General Public
  89003. - License along with the GNU C Library; if not, write to the Free
  89004. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89005. - 02111-1307 USA. */
  89006. + License along with the GNU C Library; if not, see
  89007. + <http://www.gnu.org/licenses/>. */
  89008. #include <assert.h>
  89009. #include <errno.h>
  89010. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_trylock.c uClibc-git/libpthread/nptl/pthread_mutex_trylock.c
  89011. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_trylock.c 2012-05-15 09:20:09.000000000 +0200
  89012. +++ uClibc-git/libpthread/nptl/pthread_mutex_trylock.c 2014-02-03 12:32:57.000000000 +0100
  89013. @@ -13,9 +13,8 @@
  89014. Lesser General Public License for more details.
  89015. You should have received a copy of the GNU Lesser General Public
  89016. - License along with the GNU C Library; if not, write to the Free
  89017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89018. - 02111-1307 USA. */
  89019. + License along with the GNU C Library; if not, see
  89020. + <http://www.gnu.org/licenses/>. */
  89021. #include <assert.h>
  89022. #include <errno.h>
  89023. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_unlock.c uClibc-git/libpthread/nptl/pthread_mutex_unlock.c
  89024. --- uClibc-0.9.33.2/libpthread/nptl/pthread_mutex_unlock.c 2012-05-15 09:20:09.000000000 +0200
  89025. +++ uClibc-git/libpthread/nptl/pthread_mutex_unlock.c 2014-02-03 12:32:57.000000000 +0100
  89026. @@ -13,9 +13,8 @@
  89027. Lesser General Public License for more details.
  89028. You should have received a copy of the GNU Lesser General Public
  89029. - License along with the GNU C Library; if not, write to the Free
  89030. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89031. - 02111-1307 USA. */
  89032. + License along with the GNU C Library; if not, see
  89033. + <http://www.gnu.org/licenses/>. */
  89034. #include <assert.h>
  89035. #include <errno.h>
  89036. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthreadP.h uClibc-git/libpthread/nptl/pthreadP.h
  89037. --- uClibc-0.9.33.2/libpthread/nptl/pthreadP.h 2012-05-15 09:20:09.000000000 +0200
  89038. +++ uClibc-git/libpthread/nptl/pthreadP.h 2014-02-03 12:32:57.000000000 +0100
  89039. @@ -13,9 +13,8 @@
  89040. Lesser General Public License for more details.
  89041. You should have received a copy of the GNU Lesser General Public
  89042. - License along with the GNU C Library; if not, write to the Free
  89043. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89044. - 02111-1307 USA. */
  89045. + License along with the GNU C Library; if not, see
  89046. + <http://www.gnu.org/licenses/>. */
  89047. #ifndef _PTHREADP_H
  89048. #define _PTHREADP_H 1
  89049. @@ -221,7 +220,7 @@
  89050. /* Cancellation test. */
  89051. #define CANCELLATION_P(self) \
  89052. do { \
  89053. - int cancelhandling = THREAD_GETMEM (self, cancelhandling); \
  89054. + cancelhandling = THREAD_GETMEM (self, cancelhandling); \
  89055. if (CANCEL_ENABLED_AND_CANCELED (cancelhandling)) \
  89056. { \
  89057. THREAD_SETMEM (self, result, PTHREAD_CANCELED); \
  89058. @@ -411,9 +410,9 @@
  89059. const struct sched_param *param);
  89060. extern int __pthread_setcancelstate (int state, int *oldstate);
  89061. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  89062. - __const pthread_mutexattr_t *__mutexattr);
  89063. + const pthread_mutexattr_t *__mutexattr);
  89064. extern int __pthread_mutex_init_internal (pthread_mutex_t *__mutex,
  89065. - __const pthread_mutexattr_t *__mutexattr)
  89066. + const pthread_mutexattr_t *__mutexattr)
  89067. attribute_hidden;
  89068. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  89069. extern int __pthread_mutex_destroy_internal (pthread_mutex_t *__mutex)
  89070. @@ -452,22 +451,22 @@
  89071. extern int __pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy);
  89072. extern int __pthread_attr_getscope (const pthread_attr_t *attr, int *scope);
  89073. extern int __pthread_attr_setscope (pthread_attr_t *attr, int scope);
  89074. -extern int __pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  89075. +extern int __pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  89076. __attr, void **__restrict __stackaddr);
  89077. extern int __pthread_attr_setstackaddr (pthread_attr_t *__attr,
  89078. void *__stackaddr);
  89079. -extern int __pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  89080. +extern int __pthread_attr_getstacksize (const pthread_attr_t *__restrict
  89081. __attr,
  89082. size_t *__restrict __stacksize);
  89083. extern int __pthread_attr_setstacksize (pthread_attr_t *__attr,
  89084. size_t __stacksize);
  89085. -extern int __pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  89086. +extern int __pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  89087. void **__restrict __stackaddr,
  89088. size_t *__restrict __stacksize);
  89089. extern int __pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
  89090. size_t __stacksize);
  89091. extern int __pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  89092. - __const pthread_rwlockattr_t *__restrict
  89093. + const pthread_rwlockattr_t *__restrict
  89094. __attr);
  89095. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  89096. extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock);
  89097. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_destroy.c uClibc-git/libpthread/nptl/pthread_rwlockattr_destroy.c
  89098. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89099. +++ uClibc-git/libpthread/nptl/pthread_rwlockattr_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89100. @@ -13,9 +13,8 @@
  89101. Lesser General Public License for more details.
  89102. You should have received a copy of the GNU Lesser General Public
  89103. - License along with the GNU C Library; if not, write to the Free
  89104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89105. - 02111-1307 USA. */
  89106. + License along with the GNU C Library; if not, see
  89107. + <http://www.gnu.org/licenses/>. */
  89108. #include "pthreadP.h"
  89109. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getkind_np.c uClibc-git/libpthread/nptl/pthread_rwlockattr_getkind_np.c
  89110. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getkind_np.c 2012-05-15 09:20:09.000000000 +0200
  89111. +++ uClibc-git/libpthread/nptl/pthread_rwlockattr_getkind_np.c 2014-02-03 12:32:57.000000000 +0100
  89112. @@ -13,9 +13,8 @@
  89113. Lesser General Public License for more details.
  89114. You should have received a copy of the GNU Lesser General Public
  89115. - License along with the GNU C Library; if not, write to the Free
  89116. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89117. - 02111-1307 USA. */
  89118. + License along with the GNU C Library; if not, see
  89119. + <http://www.gnu.org/licenses/>. */
  89120. #include "pthreadP.h"
  89121. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getpshared.c uClibc-git/libpthread/nptl/pthread_rwlockattr_getpshared.c
  89122. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_getpshared.c 2012-05-15 09:20:09.000000000 +0200
  89123. +++ uClibc-git/libpthread/nptl/pthread_rwlockattr_getpshared.c 2014-02-03 12:32:57.000000000 +0100
  89124. @@ -13,9 +13,8 @@
  89125. Lesser General Public License for more details.
  89126. You should have received a copy of the GNU Lesser General Public
  89127. - License along with the GNU C Library; if not, write to the Free
  89128. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89129. - 02111-1307 USA. */
  89130. + License along with the GNU C Library; if not, see
  89131. + <http://www.gnu.org/licenses/>. */
  89132. #include "pthreadP.h"
  89133. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_init.c uClibc-git/libpthread/nptl/pthread_rwlockattr_init.c
  89134. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_init.c 2012-05-15 09:20:09.000000000 +0200
  89135. +++ uClibc-git/libpthread/nptl/pthread_rwlockattr_init.c 2014-02-03 12:32:57.000000000 +0100
  89136. @@ -13,9 +13,8 @@
  89137. Lesser General Public License for more details.
  89138. You should have received a copy of the GNU Lesser General Public
  89139. - License along with the GNU C Library; if not, write to the Free
  89140. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89141. - 02111-1307 USA. */
  89142. + License along with the GNU C Library; if not, see
  89143. + <http://www.gnu.org/licenses/>. */
  89144. #include "pthreadP.h"
  89145. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setkind_np.c uClibc-git/libpthread/nptl/pthread_rwlockattr_setkind_np.c
  89146. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setkind_np.c 2012-05-15 09:20:09.000000000 +0200
  89147. +++ uClibc-git/libpthread/nptl/pthread_rwlockattr_setkind_np.c 2014-02-03 12:32:57.000000000 +0100
  89148. @@ -13,9 +13,8 @@
  89149. Lesser General Public License for more details.
  89150. You should have received a copy of the GNU Lesser General Public
  89151. - License along with the GNU C Library; if not, write to the Free
  89152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89153. - 02111-1307 USA. */
  89154. + License along with the GNU C Library; if not, see
  89155. + <http://www.gnu.org/licenses/>. */
  89156. #include <errno.h>
  89157. #include "pthreadP.h"
  89158. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setpshared.c uClibc-git/libpthread/nptl/pthread_rwlockattr_setpshared.c
  89159. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlockattr_setpshared.c 2012-05-15 09:20:09.000000000 +0200
  89160. +++ uClibc-git/libpthread/nptl/pthread_rwlockattr_setpshared.c 2014-02-03 12:32:57.000000000 +0100
  89161. @@ -13,9 +13,8 @@
  89162. Lesser General Public License for more details.
  89163. You should have received a copy of the GNU Lesser General Public
  89164. - License along with the GNU C Library; if not, write to the Free
  89165. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89166. - 02111-1307 USA. */
  89167. + License along with the GNU C Library; if not, see
  89168. + <http://www.gnu.org/licenses/>. */
  89169. #include <errno.h>
  89170. #include "pthreadP.h"
  89171. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_destroy.c uClibc-git/libpthread/nptl/pthread_rwlock_destroy.c
  89172. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89173. +++ uClibc-git/libpthread/nptl/pthread_rwlock_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89174. @@ -13,9 +13,8 @@
  89175. Lesser General Public License for more details.
  89176. You should have received a copy of the GNU Lesser General Public
  89177. - License along with the GNU C Library; if not, write to the Free
  89178. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89179. - 02111-1307 USA. */
  89180. + License along with the GNU C Library; if not, see
  89181. + <http://www.gnu.org/licenses/>. */
  89182. #include "pthreadP.h"
  89183. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_init.c uClibc-git/libpthread/nptl/pthread_rwlock_init.c
  89184. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_init.c 2012-05-15 09:20:09.000000000 +0200
  89185. +++ uClibc-git/libpthread/nptl/pthread_rwlock_init.c 2014-02-03 12:32:57.000000000 +0100
  89186. @@ -13,9 +13,8 @@
  89187. Lesser General Public License for more details.
  89188. You should have received a copy of the GNU Lesser General Public
  89189. - License along with the GNU C Library; if not, write to the Free
  89190. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89191. - 02111-1307 USA. */
  89192. + License along with the GNU C Library; if not, see
  89193. + <http://www.gnu.org/licenses/>. */
  89194. #include "pthreadP.h"
  89195. #include <bits/kernel-features.h>
  89196. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_tryrdlock.c uClibc-git/libpthread/nptl/pthread_rwlock_tryrdlock.c
  89197. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_tryrdlock.c 2012-05-15 09:20:09.000000000 +0200
  89198. +++ uClibc-git/libpthread/nptl/pthread_rwlock_tryrdlock.c 2014-02-03 12:32:57.000000000 +0100
  89199. @@ -13,9 +13,8 @@
  89200. Lesser General Public License for more details.
  89201. You should have received a copy of the GNU Lesser General Public
  89202. - License along with the GNU C Library; if not, write to the Free
  89203. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89204. - 02111-1307 USA. */
  89205. + License along with the GNU C Library; if not, see
  89206. + <http://www.gnu.org/licenses/>. */
  89207. #include <errno.h>
  89208. #include "pthreadP.h"
  89209. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_trywrlock.c uClibc-git/libpthread/nptl/pthread_rwlock_trywrlock.c
  89210. --- uClibc-0.9.33.2/libpthread/nptl/pthread_rwlock_trywrlock.c 2012-05-15 09:20:09.000000000 +0200
  89211. +++ uClibc-git/libpthread/nptl/pthread_rwlock_trywrlock.c 2014-02-03 12:32:57.000000000 +0100
  89212. @@ -13,9 +13,8 @@
  89213. Lesser General Public License for more details.
  89214. You should have received a copy of the GNU Lesser General Public
  89215. - License along with the GNU C Library; if not, write to the Free
  89216. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89217. - 02111-1307 USA. */
  89218. + License along with the GNU C Library; if not, see
  89219. + <http://www.gnu.org/licenses/>. */
  89220. #include <errno.h>
  89221. #include "pthreadP.h"
  89222. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_self.c uClibc-git/libpthread/nptl/pthread_self.c
  89223. --- uClibc-0.9.33.2/libpthread/nptl/pthread_self.c 2012-05-15 09:20:09.000000000 +0200
  89224. +++ uClibc-git/libpthread/nptl/pthread_self.c 2014-02-03 12:32:57.000000000 +0100
  89225. @@ -13,9 +13,8 @@
  89226. Lesser General Public License for more details.
  89227. You should have received a copy of the GNU Lesser General Public
  89228. - License along with the GNU C Library; if not, write to the Free
  89229. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89230. - 02111-1307 USA. */
  89231. + License along with the GNU C Library; if not, see
  89232. + <http://www.gnu.org/licenses/>. */
  89233. #include "pthreadP.h"
  89234. #include <tls.h>
  89235. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setcancelstate.c uClibc-git/libpthread/nptl/pthread_setcancelstate.c
  89236. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setcancelstate.c 2012-05-15 09:20:09.000000000 +0200
  89237. +++ uClibc-git/libpthread/nptl/pthread_setcancelstate.c 2014-02-03 12:32:57.000000000 +0100
  89238. @@ -13,9 +13,8 @@
  89239. Lesser General Public License for more details.
  89240. You should have received a copy of the GNU Lesser General Public
  89241. - License along with the GNU C Library; if not, write to the Free
  89242. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89243. - 02111-1307 USA. */
  89244. + License along with the GNU C Library; if not, see
  89245. + <http://www.gnu.org/licenses/>. */
  89246. #include <errno.h>
  89247. #include "pthreadP.h"
  89248. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setcanceltype.c uClibc-git/libpthread/nptl/pthread_setcanceltype.c
  89249. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setcanceltype.c 2012-05-15 09:20:09.000000000 +0200
  89250. +++ uClibc-git/libpthread/nptl/pthread_setcanceltype.c 2014-02-03 12:32:57.000000000 +0100
  89251. @@ -13,9 +13,8 @@
  89252. Lesser General Public License for more details.
  89253. You should have received a copy of the GNU Lesser General Public
  89254. - License along with the GNU C Library; if not, write to the Free
  89255. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89256. - 02111-1307 USA. */
  89257. + License along with the GNU C Library; if not, see
  89258. + <http://www.gnu.org/licenses/>. */
  89259. #include <errno.h>
  89260. #include "pthreadP.h"
  89261. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setconcurrency.c uClibc-git/libpthread/nptl/pthread_setconcurrency.c
  89262. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  89263. +++ uClibc-git/libpthread/nptl/pthread_setconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  89264. @@ -13,9 +13,8 @@
  89265. Lesser General Public License for more details.
  89266. You should have received a copy of the GNU Lesser General Public
  89267. - License along with the GNU C Library; if not, write to the Free
  89268. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89269. - 02111-1307 USA. */
  89270. + License along with the GNU C Library; if not, see
  89271. + <http://www.gnu.org/licenses/>. */
  89272. #include <errno.h>
  89273. #include "pthreadP.h"
  89274. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setschedparam.c uClibc-git/libpthread/nptl/pthread_setschedparam.c
  89275. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setschedparam.c 2012-05-15 09:20:09.000000000 +0200
  89276. +++ uClibc-git/libpthread/nptl/pthread_setschedparam.c 2014-02-03 12:32:57.000000000 +0100
  89277. @@ -13,9 +13,8 @@
  89278. Lesser General Public License for more details.
  89279. You should have received a copy of the GNU Lesser General Public
  89280. - License along with the GNU C Library; if not, write to the Free
  89281. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89282. - 02111-1307 USA. */
  89283. + License along with the GNU C Library; if not, see
  89284. + <http://www.gnu.org/licenses/>. */
  89285. #include <errno.h>
  89286. #include <sched.h>
  89287. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setschedprio.c uClibc-git/libpthread/nptl/pthread_setschedprio.c
  89288. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setschedprio.c 2012-05-15 09:20:09.000000000 +0200
  89289. +++ uClibc-git/libpthread/nptl/pthread_setschedprio.c 2014-02-03 12:32:57.000000000 +0100
  89290. @@ -13,9 +13,8 @@
  89291. Lesser General Public License for more details.
  89292. You should have received a copy of the GNU Lesser General Public
  89293. - License along with the GNU C Library; if not, write to the Free
  89294. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89295. - 02111-1307 USA. */
  89296. + License along with the GNU C Library; if not, see
  89297. + <http://www.gnu.org/licenses/>. */
  89298. #include <errno.h>
  89299. #include <sched.h>
  89300. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_setspecific.c uClibc-git/libpthread/nptl/pthread_setspecific.c
  89301. --- uClibc-0.9.33.2/libpthread/nptl/pthread_setspecific.c 2012-05-15 09:20:09.000000000 +0200
  89302. +++ uClibc-git/libpthread/nptl/pthread_setspecific.c 2014-02-03 12:32:57.000000000 +0100
  89303. @@ -13,9 +13,8 @@
  89304. Lesser General Public License for more details.
  89305. You should have received a copy of the GNU Lesser General Public
  89306. - License along with the GNU C Library; if not, write to the Free
  89307. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89308. - 02111-1307 USA. */
  89309. + License along with the GNU C Library; if not, see
  89310. + <http://www.gnu.org/licenses/>. */
  89311. #include <errno.h>
  89312. #include <stdlib.h>
  89313. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_testcancel.c uClibc-git/libpthread/nptl/pthread_testcancel.c
  89314. --- uClibc-0.9.33.2/libpthread/nptl/pthread_testcancel.c 2012-05-15 09:20:09.000000000 +0200
  89315. +++ uClibc-git/libpthread/nptl/pthread_testcancel.c 2014-02-03 12:32:57.000000000 +0100
  89316. @@ -13,9 +13,8 @@
  89317. Lesser General Public License for more details.
  89318. You should have received a copy of the GNU Lesser General Public
  89319. - License along with the GNU C Library; if not, write to the Free
  89320. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89321. - 02111-1307 USA. */
  89322. + License along with the GNU C Library; if not, see
  89323. + <http://www.gnu.org/licenses/>. */
  89324. #include <stdlib.h>
  89325. #include "pthreadP.h"
  89326. @@ -24,5 +23,6 @@
  89327. void
  89328. pthread_testcancel (void)
  89329. {
  89330. + int cancelhandling;
  89331. CANCELLATION_P (THREAD_SELF);
  89332. }
  89333. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_timedjoin.c uClibc-git/libpthread/nptl/pthread_timedjoin.c
  89334. --- uClibc-0.9.33.2/libpthread/nptl/pthread_timedjoin.c 2012-05-15 09:20:09.000000000 +0200
  89335. +++ uClibc-git/libpthread/nptl/pthread_timedjoin.c 2014-02-03 12:32:57.000000000 +0100
  89336. @@ -13,9 +13,8 @@
  89337. Lesser General Public License for more details.
  89338. You should have received a copy of the GNU Lesser General Public
  89339. - License along with the GNU C Library; if not, write to the Free
  89340. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89341. - 02111-1307 USA. */
  89342. + License along with the GNU C Library; if not, see
  89343. + <http://www.gnu.org/licenses/>. */
  89344. #include <errno.h>
  89345. #include <stdlib.h>
  89346. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pthread_tryjoin.c uClibc-git/libpthread/nptl/pthread_tryjoin.c
  89347. --- uClibc-0.9.33.2/libpthread/nptl/pthread_tryjoin.c 2012-05-15 09:20:09.000000000 +0200
  89348. +++ uClibc-git/libpthread/nptl/pthread_tryjoin.c 2014-02-03 12:32:57.000000000 +0100
  89349. @@ -13,9 +13,8 @@
  89350. Lesser General Public License for more details.
  89351. You should have received a copy of the GNU Lesser General Public
  89352. - License along with the GNU C Library; if not, write to the Free
  89353. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89354. - 02111-1307 USA. */
  89355. + License along with the GNU C Library; if not, see
  89356. + <http://www.gnu.org/licenses/>. */
  89357. #include <errno.h>
  89358. #include <stdlib.h>
  89359. diff -Nur uClibc-0.9.33.2/libpthread/nptl/pt-system.c uClibc-git/libpthread/nptl/pt-system.c
  89360. --- uClibc-0.9.33.2/libpthread/nptl/pt-system.c 2012-05-15 09:20:09.000000000 +0200
  89361. +++ uClibc-git/libpthread/nptl/pt-system.c 2014-02-03 12:32:57.000000000 +0100
  89362. @@ -13,9 +13,8 @@
  89363. Lesser General Public License for more details.
  89364. You should have received a copy of the GNU Lesser General Public
  89365. - License along with the GNU C Library; if not, write to the Free
  89366. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89367. - 02111-1307 USA. */
  89368. + License along with the GNU C Library; if not, see
  89369. + <http://www.gnu.org/licenses/>. */
  89370. #include <errno.h>
  89371. #include <stdlib.h>
  89372. diff -Nur uClibc-0.9.33.2/libpthread/nptl/res.c uClibc-git/libpthread/nptl/res.c
  89373. --- uClibc-0.9.33.2/libpthread/nptl/res.c 2012-05-15 09:20:09.000000000 +0200
  89374. +++ uClibc-git/libpthread/nptl/res.c 2014-02-03 12:32:57.000000000 +0100
  89375. @@ -12,9 +12,8 @@
  89376. Lesser General Public License for more details.
  89377. You should have received a copy of the GNU Lesser General Public
  89378. - License along with the GNU C Library; if not, write to the Free
  89379. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89380. - 02111-1307 USA. */
  89381. + License along with the GNU C Library; if not, see
  89382. + <http://www.gnu.org/licenses/>. */
  89383. #include <features.h>
  89384. #include <tls.h>
  89385. diff -Nur uClibc-0.9.33.2/libpthread/nptl/semaphore.h uClibc-git/libpthread/nptl/semaphore.h
  89386. --- uClibc-0.9.33.2/libpthread/nptl/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  89387. +++ uClibc-git/libpthread/nptl/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  89388. @@ -12,9 +12,8 @@
  89389. Lesser General Public License for more details.
  89390. You should have received a copy of the GNU Lesser General Public
  89391. - License along with the GNU C Library; if not, write to the Free
  89392. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89393. - 02111-1307 USA. */
  89394. + License along with the GNU C Library; if not, see
  89395. + <http://www.gnu.org/licenses/>. */
  89396. #ifndef _SEMAPHORE_H
  89397. #define _SEMAPHORE_H 1
  89398. @@ -40,13 +39,13 @@
  89399. extern int sem_destroy (sem_t *__sem) __THROW;
  89400. /* Open a named semaphore NAME with open flags OFLAG. */
  89401. -extern sem_t *sem_open (__const char *__name, int __oflag, ...) __THROW;
  89402. +extern sem_t *sem_open (const char *__name, int __oflag, ...) __THROW;
  89403. /* Close descriptor for named semaphore SEM. */
  89404. extern int sem_close (sem_t *__sem) __THROW;
  89405. /* Remove named semaphore NAME. */
  89406. -extern int sem_unlink (__const char *__name) __THROW;
  89407. +extern int sem_unlink (const char *__name) __THROW;
  89408. /* Wait for SEM being posted.
  89409. @@ -60,7 +59,7 @@
  89410. This function is a cancellation point and therefore not marked with
  89411. __THROW. */
  89412. extern int sem_timedwait (sem_t *__restrict __sem,
  89413. - __const struct timespec *__restrict __abstime);
  89414. + const struct timespec *__restrict __abstime);
  89415. #endif
  89416. /* Test whether SEM is posted. */
  89417. diff -Nur uClibc-0.9.33.2/libpthread/nptl/semaphoreP.h uClibc-git/libpthread/nptl/semaphoreP.h
  89418. --- uClibc-0.9.33.2/libpthread/nptl/semaphoreP.h 2012-05-15 09:20:09.000000000 +0200
  89419. +++ uClibc-git/libpthread/nptl/semaphoreP.h 2014-02-03 12:32:57.000000000 +0100
  89420. @@ -13,9 +13,8 @@
  89421. Lesser General Public License for more details.
  89422. You should have received a copy of the GNU Lesser General Public
  89423. - License along with the GNU C Library; if not, write to the Free
  89424. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89425. - 02111-1307 USA. */
  89426. + License along with the GNU C Library; if not, see
  89427. + <http://www.gnu.org/licenses/>. */
  89428. #include <semaphore.h>
  89429. #include "pthreadP.h"
  89430. @@ -56,14 +55,3 @@
  89431. /* Comparison function for search in tree with existing mappings. */
  89432. extern int __sem_search (const void *a, const void *b) attribute_hidden;
  89433. -
  89434. -
  89435. -/* Prototypes of functions with multiple interfaces. */
  89436. -extern int __new_sem_init (sem_t *sem, int pshared, unsigned int value);
  89437. -extern int __old_sem_init (sem_t *sem, int pshared, unsigned int value);
  89438. -extern int __new_sem_destroy (sem_t *sem);
  89439. -extern int __new_sem_post (sem_t *sem);
  89440. -extern int __new_sem_wait (sem_t *sem);
  89441. -extern int __old_sem_wait (sem_t *sem);
  89442. -extern int __new_sem_trywait (sem_t *sem);
  89443. -extern int __new_sem_getvalue (sem_t *sem, int *sval);
  89444. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_close.c uClibc-git/libpthread/nptl/sem_close.c
  89445. --- uClibc-0.9.33.2/libpthread/nptl/sem_close.c 2012-05-15 09:20:09.000000000 +0200
  89446. +++ uClibc-git/libpthread/nptl/sem_close.c 2014-02-03 12:32:57.000000000 +0100
  89447. @@ -13,9 +13,8 @@
  89448. Lesser General Public License for more details.
  89449. You should have received a copy of the GNU Lesser General Public
  89450. - License along with the GNU C Library; if not, write to the Free
  89451. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89452. - 02111-1307 USA. */
  89453. + License along with the GNU C Library; if not, see
  89454. + <http://www.gnu.org/licenses/>. */
  89455. #include <errno.h>
  89456. #include <search.h>
  89457. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_destroy.c uClibc-git/libpthread/nptl/sem_destroy.c
  89458. --- uClibc-0.9.33.2/libpthread/nptl/sem_destroy.c 2012-05-15 09:20:09.000000000 +0200
  89459. +++ uClibc-git/libpthread/nptl/sem_destroy.c 2014-02-03 12:32:57.000000000 +0100
  89460. @@ -13,16 +13,15 @@
  89461. Lesser General Public License for more details.
  89462. You should have received a copy of the GNU Lesser General Public
  89463. - License along with the GNU C Library; if not, write to the Free
  89464. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89465. - 02111-1307 USA. */
  89466. + License along with the GNU C Library; if not, see
  89467. + <http://www.gnu.org/licenses/>. */
  89468. #include <semaphore.h>
  89469. #include "semaphoreP.h"
  89470. int
  89471. -__new_sem_destroy (
  89472. +sem_destroy (
  89473. sem_t *sem)
  89474. {
  89475. /* XXX Check for valid parameter. */
  89476. @@ -30,4 +29,3 @@
  89477. /* Nothing to do. */
  89478. return 0;
  89479. }
  89480. -weak_alias(__new_sem_destroy, sem_destroy)
  89481. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_getvalue.c uClibc-git/libpthread/nptl/sem_getvalue.c
  89482. --- uClibc-0.9.33.2/libpthread/nptl/sem_getvalue.c 2012-05-15 09:20:09.000000000 +0200
  89483. +++ uClibc-git/libpthread/nptl/sem_getvalue.c 2014-02-03 12:32:57.000000000 +0100
  89484. @@ -13,16 +13,15 @@
  89485. Lesser General Public License for more details.
  89486. You should have received a copy of the GNU Lesser General Public
  89487. - License along with the GNU C Library; if not, write to the Free
  89488. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89489. - 02111-1307 USA. */
  89490. + License along with the GNU C Library; if not, see
  89491. + <http://www.gnu.org/licenses/>. */
  89492. #include <semaphore.h>
  89493. #include "semaphoreP.h"
  89494. int
  89495. -__new_sem_getvalue (
  89496. +sem_getvalue (
  89497. sem_t *sem,
  89498. int *sval)
  89499. {
  89500. @@ -34,4 +33,3 @@
  89501. return 0;
  89502. }
  89503. -weak_alias(__new_sem_getvalue, sem_getvalue)
  89504. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_init.c uClibc-git/libpthread/nptl/sem_init.c
  89505. --- uClibc-0.9.33.2/libpthread/nptl/sem_init.c 2012-05-15 09:20:09.000000000 +0200
  89506. +++ uClibc-git/libpthread/nptl/sem_init.c 2014-02-03 12:32:57.000000000 +0100
  89507. @@ -13,9 +13,8 @@
  89508. Lesser General Public License for more details.
  89509. You should have received a copy of the GNU Lesser General Public
  89510. - License along with the GNU C Library; if not, write to the Free
  89511. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89512. - 02111-1307 USA. */
  89513. + License along with the GNU C Library; if not, see
  89514. + <http://www.gnu.org/licenses/>. */
  89515. #include <errno.h>
  89516. #include <semaphore.h>
  89517. @@ -25,7 +24,7 @@
  89518. int
  89519. -__new_sem_init (
  89520. +sem_init (
  89521. sem_t *sem,
  89522. int pshared,
  89523. unsigned int value)
  89524. @@ -53,4 +52,3 @@
  89525. return 0;
  89526. }
  89527. -weak_alias(__new_sem_init, sem_init)
  89528. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_open.c uClibc-git/libpthread/nptl/sem_open.c
  89529. --- uClibc-0.9.33.2/libpthread/nptl/sem_open.c 2012-05-15 09:20:09.000000000 +0200
  89530. +++ uClibc-git/libpthread/nptl/sem_open.c 2014-02-03 12:32:57.000000000 +0100
  89531. @@ -13,9 +13,8 @@
  89532. Lesser General Public License for more details.
  89533. You should have received a copy of the GNU Lesser General Public
  89534. - License along with the GNU C Library; if not, write to the Free
  89535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89536. - 02111-1307 USA. */
  89537. + License along with the GNU C Library; if not, see
  89538. + <http://www.gnu.org/licenses/>. */
  89539. #include <errno.h>
  89540. #include <fcntl.h>
  89541. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sem_unlink.c uClibc-git/libpthread/nptl/sem_unlink.c
  89542. --- uClibc-0.9.33.2/libpthread/nptl/sem_unlink.c 2012-05-15 09:20:09.000000000 +0200
  89543. +++ uClibc-git/libpthread/nptl/sem_unlink.c 2014-02-03 12:32:57.000000000 +0100
  89544. @@ -13,9 +13,8 @@
  89545. Lesser General Public License for more details.
  89546. You should have received a copy of the GNU Lesser General Public
  89547. - License along with the GNU C Library; if not, write to the Free
  89548. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89549. - 02111-1307 USA. */
  89550. + License along with the GNU C Library; if not, see
  89551. + <http://www.gnu.org/licenses/>. */
  89552. #include <errno.h>
  89553. #include <semaphore.h>
  89554. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/alpha/dl-tls.h
  89555. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  89556. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  89557. @@ -13,9 +13,8 @@
  89558. Lesser General Public License for more details.
  89559. You should have received a copy of the GNU Lesser General Public
  89560. - License along with the GNU C Library; if not, write to the Free
  89561. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89562. - 02111-1307 USA. */
  89563. + License along with the GNU C Library; if not, see
  89564. + <http://www.gnu.org/licenses/>. */
  89565. /* Type used for the representation of TLS information in the GOT. */
  89566. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c uClibc-git/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c
  89567. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  89568. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/elf/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  89569. @@ -13,9 +13,8 @@
  89570. Lesser General Public License for more details.
  89571. You should have received a copy of the GNU Lesser General Public
  89572. - License along with the GNU C Library; if not, write to the Free
  89573. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89574. - 02111-1307 USA. */
  89575. + License along with the GNU C Library; if not, see
  89576. + <http://www.gnu.org/licenses/>. */
  89577. /* This file is compiled into assembly code which is then munged by a sed
  89578. script into two files: crti.s and crtn.s.
  89579. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h
  89580. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  89581. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  89582. @@ -13,9 +13,8 @@
  89583. Lesser General Public License for more details.
  89584. You should have received a copy of the GNU Lesser General Public
  89585. - License along with the GNU C Library; if not, write to the Free
  89586. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89587. - 02111-1307 USA. */
  89588. + License along with the GNU C Library; if not, see
  89589. + <http://www.gnu.org/licenses/>. */
  89590. #include <setjmp.h>
  89591. #include <stdint.h>
  89592. @@ -26,6 +25,3 @@
  89593. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  89594. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  89595. -
  89596. -/* We use the normal lobngjmp for unwinding. */
  89597. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  89598. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/libc-tls.c uClibc-git/libpthread/nptl/sysdeps/alpha/libc-tls.c
  89599. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  89600. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  89601. @@ -13,9 +13,8 @@
  89602. Lesser General Public License for more details.
  89603. You should have received a copy of the GNU Lesser General Public
  89604. - License along with the GNU C Library; if not, write to the Free
  89605. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89606. - 02111-1307 USA. */
  89607. + License along with the GNU C Library; if not, see
  89608. + <http://www.gnu.org/licenses/>. */
  89609. #include <sysdeps/generic/libc-tls.c>
  89610. #include <dl-tls.h>
  89611. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/Makefile uClibc-git/libpthread/nptl/sysdeps/alpha/Makefile
  89612. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/Makefile 2012-05-15 09:20:09.000000000 +0200
  89613. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/Makefile 2014-02-03 12:32:57.000000000 +0100
  89614. @@ -12,9 +12,8 @@
  89615. # Lesser General Public License for more details.
  89616. #
  89617. # You should have received a copy of the GNU Lesser General Public
  89618. -# License along with the GNU C Library; if not, write to the Free
  89619. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89620. -# 02111-1307 USA.
  89621. +# License along with the GNU C Library; see the file COPYING.LIB. If
  89622. +# not, see <http://www.gnu.org/licenses/>.
  89623. ifeq ($(subdir),csu)
  89624. gen-as-const-headers += tcb-offsets.sym
  89625. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/alpha/pthreaddef.h
  89626. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  89627. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  89628. @@ -12,9 +12,8 @@
  89629. Lesser General Public License for more details.
  89630. You should have received a copy of the GNU Lesser General Public
  89631. - License along with the GNU C Library; if not, write to the Free
  89632. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89633. - 02111-1307 USA. */
  89634. + License along with the GNU C Library; if not, see
  89635. + <http://www.gnu.org/licenses/>. */
  89636. /* Default stack size. */
  89637. #define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
  89638. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S uClibc-git/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S
  89639. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S 2012-05-15 09:20:09.000000000 +0200
  89640. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  89641. @@ -13,9 +13,8 @@
  89642. Lesser General Public License for more details.
  89643. You should have received a copy of the GNU Lesser General Public
  89644. - License along with the GNU C Library; if not, write to the Free
  89645. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89646. - 02111-1307 USA. */
  89647. + License along with the GNU C Library; if not, see
  89648. + <http://www.gnu.org/licenses/>. */
  89649. .text
  89650. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S
  89651. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  89652. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  89653. @@ -13,9 +13,8 @@
  89654. Lesser General Public License for more details.
  89655. You should have received a copy of the GNU Lesser General Public
  89656. - License along with the GNU C Library; if not, write to the Free
  89657. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89658. - 02111-1307 USA. */
  89659. + License along with the GNU C Library; if not, see
  89660. + <http://www.gnu.org/licenses/>. */
  89661. #define _ERRNO_H 1
  89662. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/tls.h uClibc-git/libpthread/nptl/sysdeps/alpha/tls.h
  89663. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/alpha/tls.h 2012-05-15 09:20:09.000000000 +0200
  89664. +++ uClibc-git/libpthread/nptl/sysdeps/alpha/tls.h 2014-02-03 12:32:57.000000000 +0100
  89665. @@ -13,9 +13,8 @@
  89666. Lesser General Public License for more details.
  89667. You should have received a copy of the GNU Lesser General Public
  89668. - License along with the GNU C Library; if not, write to the Free
  89669. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89670. - 02111-1307 USA. */
  89671. + License along with the GNU C Library; if not, see
  89672. + <http://www.gnu.org/licenses/>. */
  89673. #ifndef _TLS_H
  89674. #define _TLS_H 1
  89675. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/arm/dl-tls.h
  89676. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  89677. +++ uClibc-git/libpthread/nptl/sysdeps/arm/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  89678. @@ -13,9 +13,8 @@
  89679. Lesser General Public License for more details.
  89680. You should have received a copy of the GNU Lesser General Public
  89681. - License along with the GNU C Library; if not, write to the Free
  89682. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89683. - 02111-1307 USA. */
  89684. + License along with the GNU C Library; if not, see
  89685. + <http://www.gnu.org/licenses/>. */
  89686. /* Type used for the representation of TLS information in the GOT. */
  89687. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h
  89688. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  89689. +++ uClibc-git/libpthread/nptl/sysdeps/arm/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  89690. @@ -12,9 +12,8 @@
  89691. Lesser General Public License for more details.
  89692. You should have received a copy of the GNU Lesser General Public
  89693. - License along with the GNU C Library; if not, write to the Free
  89694. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89695. - 02111-1307 USA. */
  89696. + License along with the GNU C Library; if not, see
  89697. + <http://www.gnu.org/licenses/>. */
  89698. #include <setjmp.h>
  89699. #include <stdint.h>
  89700. @@ -31,6 +30,3 @@
  89701. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  89702. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[__JMP_BUF_SP] - (_adj))
  89703. -
  89704. -/* We use the normal longjmp for unwinding. */
  89705. -#define __libc_unwind_longjmp(buf, val) longjmp (buf, val)
  89706. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/libc-tls.c uClibc-git/libpthread/nptl/sysdeps/arm/libc-tls.c
  89707. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  89708. +++ uClibc-git/libpthread/nptl/sysdeps/arm/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  89709. @@ -13,9 +13,8 @@
  89710. Lesser General Public License for more details.
  89711. You should have received a copy of the GNU Lesser General Public
  89712. - License along with the GNU C Library; if not, write to the Free
  89713. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89714. - 02111-1307 USA. */
  89715. + License along with the GNU C Library; if not, see
  89716. + <http://www.gnu.org/licenses/>. */
  89717. #include <sysdeps/generic/libc-tls.c>
  89718. #include <dl-tls.h>
  89719. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/arm/pthreaddef.h
  89720. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  89721. +++ uClibc-git/libpthread/nptl/sysdeps/arm/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  89722. @@ -12,9 +12,8 @@
  89723. Lesser General Public License for more details.
  89724. You should have received a copy of the GNU Lesser General Public
  89725. - License along with the GNU C Library; if not, write to the Free
  89726. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89727. - 02111-1307 USA. */
  89728. + License along with the GNU C Library; if not, see
  89729. + <http://www.gnu.org/licenses/>. */
  89730. /* Default stack size. */
  89731. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  89732. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S uClibc-git/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S
  89733. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S 2012-05-15 09:20:09.000000000 +0200
  89734. +++ uClibc-git/libpthread/nptl/sysdeps/arm/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  89735. @@ -12,9 +12,8 @@
  89736. Lesser General Public License for more details.
  89737. You should have received a copy of the GNU Lesser General Public
  89738. - License along with the GNU C Library; if not, write to the Free
  89739. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89740. - 02111-1307 USA. */
  89741. + License along with the GNU C Library; if not, see
  89742. + <http://www.gnu.org/licenses/>. */
  89743. #include <sysdep.h>
  89744. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S
  89745. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  89746. +++ uClibc-git/libpthread/nptl/sysdeps/arm/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  89747. @@ -12,9 +12,8 @@
  89748. Lesser General Public License for more details.
  89749. You should have received a copy of the GNU Lesser General Public
  89750. - License along with the GNU C Library; if not, write to the Free
  89751. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89752. - 02111-1307 USA. */
  89753. + License along with the GNU C Library; if not, see
  89754. + <http://www.gnu.org/licenses/>. */
  89755. #define _ERRNO_H 1
  89756. #include <bits/errno.h>
  89757. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/tls.h uClibc-git/libpthread/nptl/sysdeps/arm/tls.h
  89758. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/arm/tls.h 2012-05-15 09:20:09.000000000 +0200
  89759. +++ uClibc-git/libpthread/nptl/sysdeps/arm/tls.h 2014-02-03 12:32:57.000000000 +0100
  89760. @@ -13,9 +13,8 @@
  89761. Lesser General Public License for more details.
  89762. You should have received a copy of the GNU Lesser General Public
  89763. - License along with the GNU C Library; if not, write to the Free
  89764. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89765. - 02111-1307 USA. */
  89766. + License along with the GNU C Library; if not, see
  89767. + <http://www.gnu.org/licenses/>. */
  89768. #ifndef _TLS_H
  89769. #define _TLS_H 1
  89770. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/dl-tls.c uClibc-git/libpthread/nptl/sysdeps/generic/dl-tls.c
  89771. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/dl-tls.c 2012-05-15 09:20:09.000000000 +0200
  89772. +++ uClibc-git/libpthread/nptl/sysdeps/generic/dl-tls.c 2014-02-03 12:32:57.000000000 +0100
  89773. @@ -13,9 +13,8 @@
  89774. Lesser General Public License for more details.
  89775. You should have received a copy of the GNU Lesser General Public
  89776. - License along with the GNU C Library; if not, write to the Free
  89777. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89778. - 02111-1307 USA. */
  89779. + License along with the GNU C Library; if not, see
  89780. + <http://www.gnu.org/licenses/>. */
  89781. #if defined SHARED || defined NOT_IN_libc
  89782. # error in buildsystem: This file is for libc.a
  89783. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/libc-tls.c uClibc-git/libpthread/nptl/sysdeps/generic/libc-tls.c
  89784. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  89785. +++ uClibc-git/libpthread/nptl/sysdeps/generic/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  89786. @@ -13,9 +13,8 @@
  89787. Lesser General Public License for more details.
  89788. You should have received a copy of the GNU Lesser General Public
  89789. - License along with the GNU C Library; if not, write to the Free
  89790. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89791. - 02111-1307 USA. */
  89792. + License along with the GNU C Library; if not, see
  89793. + <http://www.gnu.org/licenses/>. */
  89794. #include <errno.h>
  89795. #include <ldsodefs.h>
  89796. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/generic/lowlevellock.h
  89797. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/generic/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  89798. +++ uClibc-git/libpthread/nptl/sysdeps/generic/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  89799. @@ -14,9 +14,8 @@
  89800. Lesser General Public License for more details.
  89801. You should have received a copy of the GNU Lesser General Public
  89802. - License along with the GNU C Library; if not, write to the Free
  89803. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89804. - 02111-1307 USA. */
  89805. + License along with the GNU C Library; if not, see
  89806. + <http://www.gnu.org/licenses/>. */
  89807. #include <atomic.h>
  89808. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/i386/dl-tls.h
  89809. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  89810. +++ uClibc-git/libpthread/nptl/sysdeps/i386/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  89811. @@ -13,9 +13,8 @@
  89812. Lesser General Public License for more details.
  89813. You should have received a copy of the GNU Lesser General Public
  89814. - License along with the GNU C Library; if not, write to the Free
  89815. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89816. - 02111-1307 USA. */
  89817. + License along with the GNU C Library; if not, see
  89818. + <http://www.gnu.org/licenses/>. */
  89819. /* Type used for the representation of TLS information in the GOT. */
  89820. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S
  89821. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  89822. +++ uClibc-git/libpthread/nptl/sysdeps/i386/i486/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  89823. @@ -13,9 +13,8 @@
  89824. Lesser General Public License for more details.
  89825. You should have received a copy of the GNU Lesser General Public
  89826. - License along with the GNU C Library; if not, write to the Free
  89827. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89828. - 02111-1307 USA. */
  89829. + License along with the GNU C Library; if not, see
  89830. + <http://www.gnu.org/licenses/>. */
  89831. #include <pthread-errnos.h>
  89832. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S
  89833. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  89834. +++ uClibc-git/libpthread/nptl/sysdeps/i386/i586/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  89835. @@ -13,8 +13,7 @@
  89836. Lesser General Public License for more details.
  89837. You should have received a copy of the GNU Lesser General Public
  89838. - License along with the GNU C Library; if not, write to the Free
  89839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89840. - 02111-1307 USA. */
  89841. + License along with the GNU C Library; if not, see
  89842. + <http://www.gnu.org/licenses/>. */
  89843. #include "../i486/pthread_spin_trylock.S"
  89844. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/Makefile uClibc-git/libpthread/nptl/sysdeps/i386/i686/Makefile
  89845. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/Makefile 2012-05-15 09:20:09.000000000 +0200
  89846. +++ uClibc-git/libpthread/nptl/sysdeps/i386/i686/Makefile 2014-02-03 12:32:57.000000000 +0100
  89847. @@ -13,9 +13,8 @@
  89848. # Lesser General Public License for more details.
  89849. # You should have received a copy of the GNU Lesser General Public
  89850. -# License along with the GNU C Library; if not, write to the Free
  89851. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89852. -# 02111-1307 USA.
  89853. +# License along with the GNU C Library; see the file COPYING.LIB. If
  89854. +# not, see <http://www.gnu.org/licenses/>.
  89855. ifeq ($(subdir),nptl)
  89856. # It turns out that stack coloring is in general not good on P4s. Some
  89857. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S
  89858. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  89859. +++ uClibc-git/libpthread/nptl/sysdeps/i386/i686/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  89860. @@ -13,9 +13,8 @@
  89861. Lesser General Public License for more details.
  89862. You should have received a copy of the GNU Lesser General Public
  89863. - License along with the GNU C Library; if not, write to the Free
  89864. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89865. - 02111-1307 USA. */
  89866. + License along with the GNU C Library; if not, see
  89867. + <http://www.gnu.org/licenses/>. */
  89868. #define HAVE_CMOV 1
  89869. #include "../i486/pthread_spin_trylock.S"
  89870. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/tls.h uClibc-git/libpthread/nptl/sysdeps/i386/i686/tls.h
  89871. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/i686/tls.h 2012-05-15 09:20:09.000000000 +0200
  89872. +++ uClibc-git/libpthread/nptl/sysdeps/i386/i686/tls.h 2014-02-03 12:32:57.000000000 +0100
  89873. @@ -13,9 +13,8 @@
  89874. Lesser General Public License for more details.
  89875. You should have received a copy of the GNU Lesser General Public
  89876. - License along with the GNU C Library; if not, write to the Free
  89877. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89878. - 02111-1307 USA. */
  89879. + License along with the GNU C Library; if not, see
  89880. + <http://www.gnu.org/licenses/>. */
  89881. #ifndef _TLS_H
  89882. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h
  89883. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  89884. +++ uClibc-git/libpthread/nptl/sysdeps/i386/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  89885. @@ -13,9 +13,8 @@
  89886. Lesser General Public License for more details.
  89887. You should have received a copy of the GNU Lesser General Public
  89888. - License along with the GNU C Library; if not, write to the Free
  89889. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89890. - 02111-1307 USA. */
  89891. + License along with the GNU C Library; if not, see
  89892. + <http://www.gnu.org/licenses/>. */
  89893. #include <setjmp.h>
  89894. #include <stdint.h>
  89895. @@ -26,7 +25,3 @@
  89896. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  89897. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  89898. -
  89899. -/* We use the normal lobngjmp for unwinding. */
  89900. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  89901. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  89902. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/Makefile uClibc-git/libpthread/nptl/sysdeps/i386/Makefile
  89903. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/Makefile 2012-05-15 09:20:09.000000000 +0200
  89904. +++ uClibc-git/libpthread/nptl/sysdeps/i386/Makefile 2014-02-03 12:32:57.000000000 +0100
  89905. @@ -12,9 +12,8 @@
  89906. # Lesser General Public License for more details.
  89907. # You should have received a copy of the GNU Lesser General Public
  89908. -# License along with the GNU C Library; if not, write to the Free
  89909. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89910. -# 02111-1307 USA.
  89911. +# License along with the GNU C Library; see the file COPYING.LIB. If
  89912. +# not, see <http://www.gnu.org/licenses/>.
  89913. ifeq ($(subdir),csu)
  89914. gen-as-const-headers += tcb-offsets.sym
  89915. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/i386/pthreaddef.h
  89916. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  89917. +++ uClibc-git/libpthread/nptl/sysdeps/i386/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  89918. @@ -13,9 +13,8 @@
  89919. Lesser General Public License for more details.
  89920. You should have received a copy of the GNU Lesser General Public
  89921. - License along with the GNU C Library; if not, write to the Free
  89922. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89923. - 02111-1307 USA. */
  89924. + License along with the GNU C Library; if not, see
  89925. + <http://www.gnu.org/licenses/>. */
  89926. /* Default stack size. */
  89927. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  89928. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_init.c uClibc-git/libpthread/nptl/sysdeps/i386/pthread_spin_init.c
  89929. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_init.c 2012-05-15 09:20:09.000000000 +0200
  89930. +++ uClibc-git/libpthread/nptl/sysdeps/i386/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  89931. @@ -13,8 +13,7 @@
  89932. Lesser General Public License for more details.
  89933. You should have received a copy of the GNU Lesser General Public
  89934. - License along with the GNU C Library; if not, write to the Free
  89935. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89936. - 02111-1307 USA. */
  89937. + License along with the GNU C Library; if not, see
  89938. + <http://www.gnu.org/licenses/>. */
  89939. /* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
  89940. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c uClibc-git/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c
  89941. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  89942. +++ uClibc-git/libpthread/nptl/sysdeps/i386/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  89943. @@ -13,9 +13,8 @@
  89944. Lesser General Public License for more details.
  89945. You should have received a copy of the GNU Lesser General Public
  89946. - License along with the GNU C Library; if not, write to the Free
  89947. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89948. - 02111-1307 USA. */
  89949. + License along with the GNU C Library; if not, see
  89950. + <http://www.gnu.org/licenses/>. */
  89951. #include "pthreadP.h"
  89952. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S uClibc-git/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S
  89953. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S 2012-05-15 09:20:09.000000000 +0200
  89954. +++ uClibc-git/libpthread/nptl/sysdeps/i386/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  89955. @@ -13,9 +13,8 @@
  89956. Lesser General Public License for more details.
  89957. You should have received a copy of the GNU Lesser General Public
  89958. - License along with the GNU C Library; if not, write to the Free
  89959. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89960. - 02111-1307 USA. */
  89961. + License along with the GNU C Library; if not, see
  89962. + <http://www.gnu.org/licenses/>. */
  89963. .globl pthread_spin_unlock
  89964. .type pthread_spin_unlock,@function
  89965. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/tls.h uClibc-git/libpthread/nptl/sysdeps/i386/tls.h
  89966. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/i386/tls.h 2012-05-15 09:20:09.000000000 +0200
  89967. +++ uClibc-git/libpthread/nptl/sysdeps/i386/tls.h 2014-02-03 12:32:57.000000000 +0100
  89968. @@ -13,9 +13,8 @@
  89969. Lesser General Public License for more details.
  89970. You should have received a copy of the GNU Lesser General Public
  89971. - License along with the GNU C Library; if not, write to the Free
  89972. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  89973. - 02111-1307 USA. */
  89974. + License along with the GNU C Library; if not, see
  89975. + <http://www.gnu.org/licenses/>. */
  89976. #ifndef _TLS_H
  89977. #define _TLS_H 1
  89978. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/Makefile.commonarch uClibc-git/libpthread/nptl/sysdeps/Makefile.commonarch
  89979. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/Makefile.commonarch 2012-05-15 09:20:09.000000000 +0200
  89980. +++ uClibc-git/libpthread/nptl/sysdeps/Makefile.commonarch 2014-02-03 12:32:57.000000000 +0100
  89981. @@ -47,9 +47,8 @@
  89982. $(libpthread_arch_OUT)/gen_tcb-offsets.s: $(libpthread_arch_OUT)/gen_tcb-offsets.c | headers
  89983. $(compile.c)
  89984. libpthread-generated-y += $(libpthread_arch_OUT)/gen_tcb-offsets.s
  89985. -PTHREAD_TCB_OFFSET_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
  89986. $(libpthread_arch_OUT)/tcb-offsets.h: $(libpthread_arch_OUT)/gen_tcb-offsets.s
  89987. - $(do_sed) $(PTHREAD_TCB_OFFSET_MANGLE) $< > $@
  89988. + $(do_sed) $(PTHREAD_GENERATE_MANGLE) $< > $@
  89989. @if test ! -s $@ ; then rm -f $@ ; false ; fi
  89990. pregen-headers-$(UCLIBC_HAS_THREADS_NATIVE) += $(libpthread_arch_OUT)/tcb-offsets.h
  89991. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/metag/dl-tls.h
  89992. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/dl-tls.h 1970-01-01 01:00:00.000000000 +0100
  89993. +++ uClibc-git/libpthread/nptl/sysdeps/metag/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  89994. @@ -0,0 +1,29 @@
  89995. +/* Thread-local storage handling in the ELF dynamic linker. Meta version.
  89996. + Copyright (C) 2002 Free Software Foundation, Inc.
  89997. + This file is part of the GNU C Library.
  89998. +
  89999. + The GNU C Library is free software; you can redistribute it and/or
  90000. + modify it under the terms of the GNU Lesser General Public
  90001. + License as published by the Free Software Foundation; either
  90002. + version 2.1 of the License, or (at your option) any later version.
  90003. +
  90004. + The GNU C Library is distributed in the hope that it will be useful,
  90005. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90006. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90007. + Lesser General Public License for more details.
  90008. +
  90009. + You should have received a copy of the GNU Lesser General Public
  90010. + License along with the GNU C Library; if not, write to the Free
  90011. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90012. + 02111-1307 USA. */
  90013. +
  90014. +
  90015. +/* Type used for the representation of TLS information in the GOT. */
  90016. +typedef struct
  90017. +{
  90018. + unsigned long int ti_module;
  90019. + unsigned long int ti_offset;
  90020. +} tls_index;
  90021. +
  90022. +
  90023. +extern void *__tls_get_addr (tls_index *ti);
  90024. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h
  90025. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h 1970-01-01 01:00:00.000000000 +0100
  90026. +++ uClibc-git/libpthread/nptl/sysdeps/metag/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90027. @@ -0,0 +1,36 @@
  90028. +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
  90029. + This file is part of the GNU C Library.
  90030. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
  90031. +
  90032. + The GNU C Library is free software; you can redistribute it and/or
  90033. + modify it under the terms of the GNU Lesser General Public
  90034. + License as published by the Free Software Foundation; either
  90035. + version 2.1 of the License, or (at your option) any later version.
  90036. +
  90037. + The GNU C Library is distributed in the hope that it will be useful,
  90038. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90039. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90040. + Lesser General Public License for more details.
  90041. +
  90042. + You should have received a copy of the GNU Lesser General Public
  90043. + License along with the GNU C Library; if not, write to the Free
  90044. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90045. + 02111-1307 USA. */
  90046. +
  90047. +#include <setjmp.h>
  90048. +#include <stdint.h>
  90049. +#include <unwind.h>
  90050. +
  90051. +/* Test if longjmp to JMPBUF would unwind the frame
  90052. + containing a local variable at ADDRESS. */
  90053. +#undef _JMPBUF_UNWINDS
  90054. +#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
  90055. + ((void *) (address) > (void *) demangle (jmpbuf[JB_SP]))
  90056. +
  90057. +#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
  90058. + _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
  90059. +
  90060. +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90061. + ((uintptr_t) (_address) - (_adj) > (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  90062. +
  90063. +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  90064. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/libc-tls.c uClibc-git/libpthread/nptl/sysdeps/metag/libc-tls.c
  90065. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/libc-tls.c 1970-01-01 01:00:00.000000000 +0100
  90066. +++ uClibc-git/libpthread/nptl/sysdeps/metag/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  90067. @@ -0,0 +1,33 @@
  90068. +/*
  90069. + * Thread-local storage handling in statically linked binaries. Meta version.
  90070. + * Copyright (C) 2009 Free Software Foundation, Inc.
  90071. + *
  90072. + * Based on GNU C Library (file: libc/sysdeps/sh/libc-tls.c)
  90073. + *
  90074. + * Copyright (C) 2010 STMicroelectronics Ltd.
  90075. + * Copyright (C) 2013 Imagination Technologies Ltd.
  90076. + *
  90077. + * Author: Filippo Arcidiacono <filippo.arcidiacono@st.com>
  90078. + *
  90079. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90080. + *
  90081. + */
  90082. +
  90083. +#include <sysdeps/generic/libc-tls.c>
  90084. +#include <dl-tls.h>
  90085. +
  90086. +#if defined (USE_TLS) && (USE_TLS)
  90087. +
  90088. +/* On Meta, linker optimizations are not required, so __tls_get_addr
  90089. + can be called even in statically linked binaries. In this case module
  90090. + must be always 1 and PT_TLS segment exist in the binary, otherwise it
  90091. + would not link. */
  90092. +
  90093. +void *
  90094. +__tls_get_addr (tls_index *ti)
  90095. +{
  90096. + dtv_t *dtv = THREAD_DTV ();
  90097. + return (char *) dtv[1].pointer.val + ti->ti_offset;
  90098. +}
  90099. +
  90100. +#endif
  90101. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/Makefile.arch uClibc-git/libpthread/nptl/sysdeps/metag/Makefile.arch
  90102. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  90103. +++ uClibc-git/libpthread/nptl/sysdeps/metag/Makefile.arch 2014-02-03 12:32:57.000000000 +0100
  90104. @@ -0,0 +1,17 @@
  90105. +# Makefile for uClibc NPTL
  90106. +#
  90107. +# Copyright (C) 2005 Steven J. Hill <sjhill@uclibc.org>
  90108. +#
  90109. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90110. +#
  90111. +
  90112. +CFLAGS-pthread_spin_init.c = -DNOT_IN_libc -DIS_IN_libpthread
  90113. +ASFLAGS-pthread_spin_lock.S = -DNOT_IN_libc -DIS_IN_libpthread
  90114. +ASFLAGS-pthread_spin_unlock.S = -DNOT_IN_libc -DIS_IN_libpthread
  90115. +ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc -DIS_IN_libpthread
  90116. +
  90117. +ASFLAGS-pthread_spin_lock.c += -D_GNU_SOURCE
  90118. +
  90119. +CFLAGS-metag = $(SSP_ALL_CFLAGS)
  90120. +
  90121. +libc_arch_a_CSRC := libc-tls.c
  90122. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/metag_load_tp.S uClibc-git/libpthread/nptl/sysdeps/metag/metag_load_tp.S
  90123. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/metag_load_tp.S 1970-01-01 01:00:00.000000000 +0100
  90124. +++ uClibc-git/libpthread/nptl/sysdeps/metag/metag_load_tp.S 2014-02-03 12:32:57.000000000 +0100
  90125. @@ -0,0 +1,7 @@
  90126. +/*
  90127. + * Copyright (C) 2013 Imagination Technologies Ltd.
  90128. + *
  90129. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90130. + */
  90131. +
  90132. +#include <../../../../ldso/ldso/metag/metag_load_tp.S>
  90133. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/metag/pthreaddef.h
  90134. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthreaddef.h 1970-01-01 01:00:00.000000000 +0100
  90135. +++ uClibc-git/libpthread/nptl/sysdeps/metag/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90136. @@ -0,0 +1,40 @@
  90137. +/* Copyright (C) 2003 Free Software Foundation, Inc.
  90138. + This file is part of the GNU C Library.
  90139. +
  90140. + The GNU C Library is free software; you can redistribute it and/or
  90141. + modify it under the terms of the GNU Lesser General Public
  90142. + License as published by the Free Software Foundation; either
  90143. + version 2.1 of the License, or (at your option) any later version.
  90144. +
  90145. + The GNU C Library is distributed in the hope that it will be useful,
  90146. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90147. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90148. + Lesser General Public License for more details.
  90149. +
  90150. + You should have received a copy of the GNU Lesser General Public
  90151. + License along with the GNU C Library; if not, write to the Free
  90152. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90153. + 02111-1307 USA. */
  90154. +
  90155. +#include <sysdep.h>
  90156. +
  90157. +/* Default stack size. */
  90158. +#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  90159. +
  90160. +/* Required stack pointer alignment at beginning. */
  90161. +#define STACK_ALIGN 8
  90162. +
  90163. +/* Minimal stack size after allocating thread descriptor and guard size. */
  90164. +#define MINIMAL_REST_STACK 2048
  90165. +
  90166. +/* Alignment requirement for TCB. */
  90167. +#define TCB_ALIGNMENT 8
  90168. +
  90169. +
  90170. +/* Location of current stack frame. */
  90171. +#define CURRENT_STACK_FRAME __builtin_frame_address (0)
  90172. +
  90173. +
  90174. +/* XXX Until we have a better place keep the definitions here. */
  90175. +#define __exit_thread_inline(val) \
  90176. + INLINE_SYSCALL (exit, 1, (val))
  90177. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_init.c uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_init.c
  90178. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_init.c 1970-01-01 01:00:00.000000000 +0100
  90179. +++ uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  90180. @@ -0,0 +1,20 @@
  90181. +/* Copyright (C) 2002 Free Software Foundation, Inc.
  90182. + This file is part of the GNU C Library.
  90183. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
  90184. +
  90185. + The GNU C Library is free software; you can redistribute it and/or
  90186. + modify it under the terms of the GNU Lesser General Public
  90187. + License as published by the Free Software Foundation; either
  90188. + version 2.1 of the License, or (at your option) any later version.
  90189. +
  90190. + The GNU C Library is distributed in the hope that it will be useful,
  90191. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90192. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90193. + Lesser General Public License for more details.
  90194. +
  90195. + You should have received a copy of the GNU Lesser General Public
  90196. + License along with the GNU C Library; if not, write to the Free
  90197. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90198. + 02111-1307 USA. */
  90199. +
  90200. +/* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
  90201. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S
  90202. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S 1970-01-01 01:00:00.000000000 +0100
  90203. +++ uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  90204. @@ -0,0 +1,20 @@
  90205. +! Copyright (C) 2013 Imagination Technologies Ltd.
  90206. +
  90207. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90208. +
  90209. + .text
  90210. + .global _pthread_spin_lock
  90211. + .type _pthread_spin_lock,function
  90212. +_pthread_spin_lock:
  90213. +1: LNKGETD D0Ar2, [D1Ar1]
  90214. + CMP D0Ar2, #0
  90215. + ADD D0Ar2, D0Ar2, #1
  90216. + LNKSETDEQ [D1Ar1], D0Ar2
  90217. + BNE 1b
  90218. + DEFR D0Ar2, TXSTAT
  90219. + ANDT D0Ar2, D0Ar2, #HI(0x3f000000)
  90220. + CMPT D0Ar2, #HI(0x02000000)
  90221. + BNZ 1b
  90222. + MOV D0Re0, #0
  90223. + MOV PC, D1RtP
  90224. + .size _pthread_spin_lock,.-_pthread_spin_lock
  90225. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S
  90226. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S 1970-01-01 01:00:00.000000000 +0100
  90227. +++ uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90228. @@ -0,0 +1,24 @@
  90229. +! Copyright (C) 2013 Imagination Technologies Ltd.
  90230. +
  90231. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90232. +
  90233. +#include <pthread-errnos.h>
  90234. +
  90235. + .text
  90236. + .global _pthread_spin_trylock
  90237. + .type _pthread_spin_trylock,function
  90238. +_pthread_spin_trylock:
  90239. +1: MOVT D0Re0, #HI(#EBUSY)
  90240. + ADD D0Re0, D0Re0, #LO(#EBUSY)
  90241. + LNKGETD D0Ar2, [D1Ar1]
  90242. + CMP D0Ar2, #0
  90243. + ADD D0Ar2, D0Ar2, #1
  90244. + LNKSETDEQ [D1Ar1], D0Ar2
  90245. + BNE 2f
  90246. + DEFR D0Ar2, TXSTAT
  90247. + ANDT D0Ar2, D0Ar2, #HI(0x3f000000)
  90248. + CMPT D0Ar2, #HI(0x02000000)
  90249. + BNZ 1b
  90250. + MOV D0Re0, #0
  90251. +2: MOV PC, D1RtP
  90252. + .size _pthread_spin_trylock,.-_pthread_spin_trylock
  90253. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S
  90254. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S 1970-01-01 01:00:00.000000000 +0100
  90255. +++ uClibc-git/libpthread/nptl/sysdeps/metag/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  90256. @@ -0,0 +1,16 @@
  90257. +! Copyright (C) 2013 Imagination Technologies Ltd.
  90258. +
  90259. +! Licensed under LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  90260. +
  90261. + .text
  90262. + .global _pthread_spin_unlock
  90263. + .type _pthread_spin_unlock,function
  90264. +_pthread_spin_unlock:
  90265. + MOV D0Re0, #0
  90266. + SETD [D1Ar1], D0Re0
  90267. + MOV PC, D1RtP
  90268. + .size _pthread_spin_unlock,.-_pthread_spin_unlock
  90269. +
  90270. + /* The implementation of pthread_spin_init is identical. */
  90271. + .global _pthread_spin_init
  90272. +_pthread_spin_init = _pthread_spin_unlock
  90273. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tcb-offsets.sym uClibc-git/libpthread/nptl/sysdeps/metag/tcb-offsets.sym
  90274. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tcb-offsets.sym 1970-01-01 01:00:00.000000000 +0100
  90275. +++ uClibc-git/libpthread/nptl/sysdeps/metag/tcb-offsets.sym 2014-02-03 12:32:57.000000000 +0100
  90276. @@ -0,0 +1,15 @@
  90277. +#include <sysdep.h>
  90278. +#include <tls.h>
  90279. +
  90280. +RESULT offsetof (struct pthread, result)
  90281. +TID offsetof (struct pthread, tid)
  90282. +PID offsetof (struct pthread, pid)
  90283. +CANCELHANDLING offsetof (struct pthread, cancelhandling)
  90284. +CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf)
  90285. +MULTIPLE_THREADS_OFFSET offsetof (struct pthread, header.multiple_threads)
  90286. +TLS_PRE_TCB_SIZE sizeof (struct pthread)
  90287. +MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
  90288. +POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
  90289. +#ifndef __ASSUME_PRIVATE_FUTEX
  90290. +PRIVATE_FUTEX offsetof (struct pthread, header.private_futex)
  90291. +#endif
  90292. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tls.h uClibc-git/libpthread/nptl/sysdeps/metag/tls.h
  90293. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/metag/tls.h 1970-01-01 01:00:00.000000000 +0100
  90294. +++ uClibc-git/libpthread/nptl/sysdeps/metag/tls.h 2014-02-03 12:32:57.000000000 +0100
  90295. @@ -0,0 +1,163 @@
  90296. +/* Definition for thread-local data handling. NPTL/Meta version.
  90297. + Copyright (C) 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
  90298. + This file is part of the GNU C Library.
  90299. +
  90300. + The GNU C Library is free software; you can redistribute it and/or
  90301. + modify it under the terms of the GNU Lesser General Public
  90302. + License as published by the Free Software Foundation; either
  90303. + version 2.1 of the License, or (at your option) any later version.
  90304. +
  90305. + The GNU C Library is distributed in the hope that it will be useful,
  90306. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  90307. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  90308. + Lesser General Public License for more details.
  90309. +
  90310. + You should have received a copy of the GNU Lesser General Public
  90311. + License along with the GNU C Library; if not, write to the Free
  90312. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90313. + 02111-1307 USA. */
  90314. +
  90315. +#ifndef _TLS_H
  90316. +#define _TLS_H
  90317. +
  90318. +#ifndef __ASSEMBLER__
  90319. +# include <stdbool.h>
  90320. +# include <stddef.h>
  90321. +# include <stdint.h>
  90322. +# include <stdlib.h>
  90323. +# include <list.h>
  90324. +# include <sysdep.h>
  90325. +# include <bits/kernel-features.h>
  90326. +
  90327. +/* Type for the dtv. */
  90328. +typedef union dtv
  90329. +{
  90330. + size_t counter;
  90331. + struct
  90332. + {
  90333. + void *val;
  90334. + bool is_static;
  90335. + } pointer;
  90336. +} dtv_t;
  90337. +
  90338. +typedef struct
  90339. +{
  90340. + dtv_t *dtv;
  90341. + uintptr_t pointer_guard;
  90342. +} tcbhead_t;
  90343. +
  90344. +# define TLS_MULTIPLE_THREADS_IN_TCB 1
  90345. +
  90346. +#else /* __ASSEMBLER__ */
  90347. +# include <tcb-offsets.h>
  90348. +#endif /* __ASSEMBLER__ */
  90349. +
  90350. +
  90351. +/* We require TLS support in the tools. */
  90352. +#define HAVE_TLS_SUPPORT
  90353. +#define HAVE___THREAD 1
  90354. +#define HAVE_TLS_MODEL_ATTRIBUTE 1
  90355. +/* Signal that TLS support is available. */
  90356. +# define USE_TLS 1
  90357. +
  90358. +#ifndef __ASSEMBLER__
  90359. +
  90360. +/* Get system call information. */
  90361. +# include <sysdep.h>
  90362. +
  90363. +/* This is the size of the initial TCB. */
  90364. +# define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
  90365. +
  90366. +/* Alignment requirements for the initial TCB. */
  90367. +# define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
  90368. +
  90369. +/* This is the size of the TCB. */
  90370. +# define TLS_TCB_SIZE sizeof (tcbhead_t)
  90371. +
  90372. +/* This is the size we need before TCB. */
  90373. +# define TLS_PRE_TCB_SIZE sizeof (struct pthread)
  90374. +
  90375. +/* Alignment requirements for the TCB. */
  90376. +# define TLS_TCB_ALIGN __alignof__ (struct pthread)
  90377. +
  90378. +/* The TLS blocks start right after the TCB. */
  90379. +# define TLS_DTV_AT_TP 1
  90380. +
  90381. +/* Get the thread descriptor definition. */
  90382. +# include <descr.h>
  90383. +
  90384. +/* Install the dtv pointer. The pointer passed is to the element with
  90385. + index -1 which contain the length. */
  90386. +# define INSTALL_DTV(tcbp, dtvp) \
  90387. + ((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1
  90388. +
  90389. +/* Install new dtv for current thread. */
  90390. +# define INSTALL_NEW_DTV(dtv) \
  90391. + (((tcbhead_t *)__builtin_thread_pointer ())->dtv = (dtv))
  90392. +
  90393. +/* Return dtv of given thread descriptor. */
  90394. +# define GET_DTV(tcbp) \
  90395. + (((tcbhead_t *) (tcbp))->dtv)
  90396. +
  90397. +/* Code to initially initialize the thread pointer. This might need
  90398. + special attention since 'errno' is not yet available and if the
  90399. + operation can cause a failure 'errno' must not be touched. */
  90400. +# define TLS_INIT_TP(tcbp, secondcall) \
  90401. + ({ INTERNAL_SYSCALL_DECL (err); \
  90402. + long result_var; \
  90403. + result_var = INTERNAL_SYSCALL (metag_set_tls, err, 1, (tcbp)); \
  90404. + INTERNAL_SYSCALL_ERROR_P (result_var, err) \
  90405. + ? "unknown error" : NULL; })
  90406. +
  90407. +/* Return the address of the dtv for the current thread. */
  90408. +# define THREAD_DTV() \
  90409. + (((tcbhead_t *)__builtin_thread_pointer ())->dtv)
  90410. +
  90411. +/* Return the thread descriptor for the current thread.
  90412. + The contained asm must *not* be marked volatile since otherwise
  90413. + assignments like
  90414. + struct pthread *self = thread_self();
  90415. + do not get optimized away. */
  90416. +# define THREAD_SELF \
  90417. + ((struct pthread *)__builtin_thread_pointer () - 1)
  90418. +
  90419. +/* Magic for libthread_db to know how to do THREAD_SELF. */
  90420. +# define DB_THREAD_SELF \
  90421. + CONST_THREAD_AREA (32, sizeof (struct pthread))
  90422. +
  90423. +/* Access to data in the thread descriptor is easy. */
  90424. +#define THREAD_GETMEM(descr, member) \
  90425. + descr->member
  90426. +#define THREAD_GETMEM_NC(descr, member, idx) \
  90427. + descr->member[idx]
  90428. +#define THREAD_SETMEM(descr, member, value) \
  90429. + descr->member = (value)
  90430. +#define THREAD_SETMEM_NC(descr, member, idx, value) \
  90431. + descr->member[idx] = (value)
  90432. +
  90433. +/* Get and set the global scope generation counter in struct pthread. */
  90434. +#define THREAD_GSCOPE_FLAG_UNUSED 0
  90435. +#define THREAD_GSCOPE_FLAG_USED 1
  90436. +#define THREAD_GSCOPE_FLAG_WAIT 2
  90437. +#define THREAD_GSCOPE_RESET_FLAG() \
  90438. + do \
  90439. + { int __res \
  90440. + = atomic_exchange_rel (&THREAD_SELF->header.gscope_flag, \
  90441. + THREAD_GSCOPE_FLAG_UNUSED); \
  90442. + if (__res == THREAD_GSCOPE_FLAG_WAIT) \
  90443. + lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE); \
  90444. + } \
  90445. + while (0)
  90446. +#define THREAD_GSCOPE_SET_FLAG() \
  90447. + do \
  90448. + { \
  90449. + THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED; \
  90450. + atomic_write_barrier (); \
  90451. + } \
  90452. + while (0)
  90453. +#define THREAD_GSCOPE_WAIT() \
  90454. + GL(dl_wait_lookup_done) ()
  90455. +
  90456. +#endif /* __ASSEMBLER__ */
  90457. +
  90458. +#endif /* tls.h */
  90459. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/mips/dl-tls.h
  90460. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  90461. +++ uClibc-git/libpthread/nptl/sysdeps/mips/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  90462. @@ -13,9 +13,8 @@
  90463. Lesser General Public License for more details.
  90464. You should have received a copy of the GNU Lesser General Public
  90465. - License along with the GNU C Library; if not, write to the Free
  90466. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90467. - 02111-1307 USA. */
  90468. + License along with the GNU C Library; if not, see
  90469. + <http://www.gnu.org/licenses/>. */
  90470. /* Type used for the representation of TLS information in the GOT. */
  90471. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h
  90472. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  90473. +++ uClibc-git/libpthread/nptl/sysdeps/mips/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90474. @@ -12,9 +12,8 @@
  90475. Lesser General Public License for more details.
  90476. You should have received a copy of the GNU Lesser General Public
  90477. - License along with the GNU C Library; if not, write to the Free
  90478. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90479. - 02111-1307 USA. */
  90480. + License along with the GNU C Library; if not, see
  90481. + <http://www.gnu.org/licenses/>. */
  90482. #include <setjmp.h>
  90483. #include <stdint.h>
  90484. @@ -25,6 +24,3 @@
  90485. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90486. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].__sp - (_adj))
  90487. -
  90488. -/* We use the normal longjmp for unwinding. */
  90489. -#define __libc_unwind_longjmp(buf, val) longjmp (buf, val)
  90490. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/libc-tls.c uClibc-git/libpthread/nptl/sysdeps/mips/libc-tls.c
  90491. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/libc-tls.c 2012-05-15 09:20:09.000000000 +0200
  90492. +++ uClibc-git/libpthread/nptl/sysdeps/mips/libc-tls.c 2014-02-03 12:32:57.000000000 +0100
  90493. @@ -13,9 +13,8 @@
  90494. Lesser General Public License for more details.
  90495. You should have received a copy of the GNU Lesser General Public
  90496. - License along with the GNU C Library; if not, write to the Free
  90497. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90498. - 02111-1307 USA. */
  90499. + License along with the GNU C Library; if not, see
  90500. + <http://www.gnu.org/licenses/>. */
  90501. #include <sysdeps/generic/libc-tls.c>
  90502. #include <dl-tls.h>
  90503. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/mips/pthreaddef.h
  90504. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  90505. +++ uClibc-git/libpthread/nptl/sysdeps/mips/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90506. @@ -12,9 +12,8 @@
  90507. Lesser General Public License for more details.
  90508. You should have received a copy of the GNU Lesser General Public
  90509. - License along with the GNU C Library; if not, write to the Free
  90510. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90511. - 02111-1307 USA. */
  90512. + License along with the GNU C Library; if not, see
  90513. + <http://www.gnu.org/licenses/>. */
  90514. /* Default stack size. */
  90515. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  90516. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S uClibc-git/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S
  90517. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S 2012-05-15 09:20:09.000000000 +0200
  90518. +++ uClibc-git/libpthread/nptl/sysdeps/mips/pthread_spin_lock.S 2014-02-03 12:32:57.000000000 +0100
  90519. @@ -12,9 +12,8 @@
  90520. Lesser General Public License for more details.
  90521. You should have received a copy of the GNU Lesser General Public
  90522. - License along with the GNU C Library; if not, write to the Free
  90523. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90524. - 02111-1307 USA. */
  90525. + License along with the GNU C Library; if not, see
  90526. + <http://www.gnu.org/licenses/>. */
  90527. #include <sys/asm.h>
  90528. #include <sysdep.h>
  90529. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S
  90530. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  90531. +++ uClibc-git/libpthread/nptl/sysdeps/mips/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  90532. @@ -12,9 +12,8 @@
  90533. Lesser General Public License for more details.
  90534. You should have received a copy of the GNU Lesser General Public
  90535. - License along with the GNU C Library; if not, write to the Free
  90536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90537. - 02111-1307 USA. */
  90538. + License along with the GNU C Library; if not, see
  90539. + <http://www.gnu.org/licenses/>. */
  90540. #include <sys/asm.h>
  90541. #include <sysdep.h>
  90542. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/regdef.h uClibc-git/libpthread/nptl/sysdeps/mips/regdef.h
  90543. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/regdef.h 2012-05-15 09:20:09.000000000 +0200
  90544. +++ uClibc-git/libpthread/nptl/sysdeps/mips/regdef.h 2014-02-03 12:32:57.000000000 +0100
  90545. @@ -13,9 +13,8 @@
  90546. Lesser General Public License for more details.
  90547. You should have received a copy of the GNU Lesser General Public
  90548. - License along with the GNU C Library; if not, write to the Free
  90549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90550. - 02111-1307 USA. */
  90551. + License along with the GNU C Library; if not, see
  90552. + <http://www.gnu.org/licenses/>. */
  90553. #ifndef _REGDEF_H
  90554. #define _REGDEF_H
  90555. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/tls.h uClibc-git/libpthread/nptl/sysdeps/mips/tls.h
  90556. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/mips/tls.h 2012-05-15 09:20:09.000000000 +0200
  90557. +++ uClibc-git/libpthread/nptl/sysdeps/mips/tls.h 2014-02-03 12:32:57.000000000 +0100
  90558. @@ -13,9 +13,8 @@
  90559. Lesser General Public License for more details.
  90560. You should have received a copy of the GNU Lesser General Public
  90561. - License along with the GNU C Library; if not, write to the Free
  90562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90563. - 02111-1307 USA. */
  90564. + License along with the GNU C Library; if not, see
  90565. + <http://www.gnu.org/licenses/>. */
  90566. #ifndef _TLS_H
  90567. #define _TLS_H 1
  90568. @@ -121,7 +120,7 @@
  90569. operation can cause a failure 'errno' must not be touched. */
  90570. # define TLS_INIT_TP(tcbp, secondcall) \
  90571. ({ INTERNAL_SYSCALL_DECL (err); \
  90572. - long result_var; \
  90573. + long result_var attribute_unused; \
  90574. result_var = INTERNAL_SYSCALL (set_thread_area, err, 1, \
  90575. (char *) (tcbp) + TLS_TCB_OFFSET); \
  90576. INTERNAL_SYSCALL_ERROR_P (result_var, err) \
  90577. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/powerpc/dl-tls.h
  90578. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  90579. +++ uClibc-git/libpthread/nptl/sysdeps/powerpc/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  90580. @@ -13,9 +13,8 @@
  90581. Lesser General Public License for more details.
  90582. You should have received a copy of the GNU Lesser General Public
  90583. - License along with the GNU C Library; if not, write to the Free
  90584. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90585. - 02111-1307 USA. */
  90586. + License along with the GNU C Library; if not, see
  90587. + <http://www.gnu.org/licenses/>. */
  90588. /* Type used for the representation of TLS information in the TOC. */
  90589. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h
  90590. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  90591. +++ uClibc-git/libpthread/nptl/sysdeps/powerpc/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  90592. @@ -13,9 +13,8 @@
  90593. Lesser General Public License for more details.
  90594. You should have received a copy of the GNU Lesser General Public
  90595. - License along with the GNU C Library; if not, write to the Free
  90596. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90597. - 02111-1307 USA. */
  90598. + License along with the GNU C Library; if not, see
  90599. + <http://www.gnu.org/licenses/>. */
  90600. #include <setjmp.h>
  90601. #include <stdint.h>
  90602. @@ -26,6 +25,3 @@
  90603. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  90604. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_GPR1] - (_adj))
  90605. -
  90606. -/* We use the normal lobngjmp for unwinding. */
  90607. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  90608. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/powerpc/pthreaddef.h
  90609. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  90610. +++ uClibc-git/libpthread/nptl/sysdeps/powerpc/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  90611. @@ -12,9 +12,8 @@
  90612. Lesser General Public License for more details.
  90613. You should have received a copy of the GNU Lesser General Public
  90614. - License along with the GNU C Library; if not, write to the Free
  90615. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90616. - 02111-1307 USA. */
  90617. + License along with the GNU C Library; if not, see
  90618. + <http://www.gnu.org/licenses/>. */
  90619. /* Default stack size. */
  90620. #define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
  90621. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c uClibc-git/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c
  90622. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  90623. +++ uClibc-git/libpthread/nptl/sysdeps/powerpc/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  90624. @@ -13,9 +13,8 @@
  90625. Lesser General Public License for more details.
  90626. You should have received a copy of the GNU Lesser General Public
  90627. - License along with the GNU C Library; if not, write to the Free
  90628. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90629. - 02111-1307 USA. */
  90630. + License along with the GNU C Library; if not, see
  90631. + <http://www.gnu.org/licenses/>. */
  90632. #include "pthreadP.h"
  90633. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c uClibc-git/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c
  90634. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c 2012-05-15 09:20:09.000000000 +0200
  90635. +++ uClibc-git/libpthread/nptl/sysdeps/powerpc/pthread_spin_trylock.c 2014-02-03 12:32:57.000000000 +0100
  90636. @@ -13,9 +13,8 @@
  90637. Lesser General Public License for more details.
  90638. You should have received a copy of the GNU Lesser General Public
  90639. - License along with the GNU C Library; if not, write to the Free
  90640. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90641. - 02111-1307 USA. */
  90642. + License along with the GNU C Library; if not, see
  90643. + <http://www.gnu.org/licenses/>. */
  90644. #include <errno.h>
  90645. #include "pthreadP.h"
  90646. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/tls.h uClibc-git/libpthread/nptl/sysdeps/powerpc/tls.h
  90647. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/powerpc/tls.h 2012-05-15 09:20:09.000000000 +0200
  90648. +++ uClibc-git/libpthread/nptl/sysdeps/powerpc/tls.h 2014-02-03 12:32:57.000000000 +0100
  90649. @@ -13,9 +13,8 @@
  90650. Lesser General Public License for more details.
  90651. You should have received a copy of the GNU Lesser General Public
  90652. - License along with the GNU C Library; if not, write to the Free
  90653. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90654. - 02111-1307 USA. */
  90655. + License along with the GNU C Library; if not, see
  90656. + <http://www.gnu.org/licenses/>. */
  90657. #ifndef _TLS_H
  90658. #define _TLS_H 1
  90659. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/allocalim.h uClibc-git/libpthread/nptl/sysdeps/pthread/allocalim.h
  90660. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/allocalim.h 2012-05-15 09:20:09.000000000 +0200
  90661. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/allocalim.h 2014-02-03 12:32:57.000000000 +0100
  90662. @@ -13,9 +13,8 @@
  90663. Lesser General Public License for more details.
  90664. You should have received a copy of the GNU Lesser General Public
  90665. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  90666. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  90667. - Boston, MA 02111-1307, USA. */
  90668. + License along with the GNU C Library; see the file COPYING.LIB. If
  90669. + not, see <http://www.gnu.org/licenses/>. */
  90670. #include <alloca.h>
  90671. #include <limits.h>
  90672. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h uClibc-git/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h
  90673. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h 2012-05-15 09:20:09.000000000 +0200
  90674. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/bits/libc-lock.h 2014-02-03 12:32:57.000000000 +0100
  90675. @@ -13,9 +13,8 @@
  90676. Lesser General Public License for more details.
  90677. You should have received a copy of the GNU Lesser General Public
  90678. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  90679. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  90680. - Boston, MA 02111-1307, USA. */
  90681. + License along with the GNU C Library; see the file COPYING.LIB. If
  90682. + not, see <http://www.gnu.org/licenses/>. */
  90683. #ifndef _BITS_LIBC_LOCK_H
  90684. #define _BITS_LIBC_LOCK_H 1
  90685. @@ -475,7 +474,7 @@
  90686. library. */
  90687. extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
  90688. - __const pthread_mutexattr_t *__mutex_attr);
  90689. + const pthread_mutexattr_t *__mutex_attr);
  90690. extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
  90691. @@ -494,7 +493,7 @@
  90692. #ifdef __USE_UNIX98
  90693. extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock,
  90694. - __const pthread_rwlockattr_t *__attr);
  90695. + const pthread_rwlockattr_t *__attr);
  90696. extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock);
  90697. @@ -513,7 +512,7 @@
  90698. void (*__destr_function) (void *));
  90699. extern int __pthread_setspecific (pthread_key_t __key,
  90700. - __const void *__pointer);
  90701. + const void *__pointer);
  90702. extern void *__pthread_getspecific (pthread_key_t __key);
  90703. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h uClibc-git/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h
  90704. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h 2012-05-15 09:20:09.000000000 +0200
  90705. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/bits/libc-tsd.h 2014-02-03 12:32:57.000000000 +0100
  90706. @@ -13,9 +13,8 @@
  90707. Lesser General Public License for more details.
  90708. You should have received a copy of the GNU Lesser General Public
  90709. - License along with the GNU C Library; if not, write to the Free
  90710. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90711. - 02111-1307 USA. */
  90712. + License along with the GNU C Library; if not, see
  90713. + <http://www.gnu.org/licenses/>. */
  90714. #ifndef _GENERIC_BITS_LIBC_TSD_H
  90715. #define _GENERIC_BITS_LIBC_TSD_H 1
  90716. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h uClibc-git/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h
  90717. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h 2012-05-15 09:20:09.000000000 +0200
  90718. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/bits/stdio-lock.h 2014-02-03 12:32:57.000000000 +0100
  90719. @@ -13,9 +13,8 @@
  90720. Lesser General Public License for more details.
  90721. You should have received a copy of the GNU Lesser General Public
  90722. - License along with the GNU C Library; if not, write to the Free
  90723. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90724. - 02111-1307 USA. */
  90725. + License along with the GNU C Library; if not, see
  90726. + <http://www.gnu.org/licenses/>. */
  90727. #ifndef _BITS_STDIO_LOCK_H
  90728. #define _BITS_STDIO_LOCK_H 1
  90729. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/createthread.c uClibc-git/libpthread/nptl/sysdeps/pthread/createthread.c
  90730. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/createthread.c 2012-05-15 09:20:09.000000000 +0200
  90731. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/createthread.c 2014-02-03 12:32:57.000000000 +0100
  90732. @@ -13,9 +13,8 @@
  90733. Lesser General Public License for more details.
  90734. You should have received a copy of the GNU Lesser General Public
  90735. - License along with the GNU C Library; if not, write to the Free
  90736. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90737. - 02111-1307 USA. */
  90738. + License along with the GNU C Library; if not, see
  90739. + <http://www.gnu.org/licenses/>. */
  90740. #include <sched.h>
  90741. #include <setjmp.h>
  90742. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/librt-cancellation.c uClibc-git/libpthread/nptl/sysdeps/pthread/librt-cancellation.c
  90743. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/librt-cancellation.c 2012-05-15 09:20:09.000000000 +0200
  90744. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/librt-cancellation.c 2014-02-03 12:32:57.000000000 +0100
  90745. @@ -13,9 +13,8 @@
  90746. Lesser General Public License for more details.
  90747. You should have received a copy of the GNU Lesser General Public
  90748. - License along with the GNU C Library; if not, write to the Free
  90749. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90750. - 02111-1307 USA. */
  90751. + License along with the GNU C Library; if not, see
  90752. + <http://www.gnu.org/licenses/>. */
  90753. #include "pthreadP.h"
  90754. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/list.h uClibc-git/libpthread/nptl/sysdeps/pthread/list.h
  90755. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/list.h 2012-05-15 09:20:09.000000000 +0200
  90756. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/list.h 2014-02-03 12:32:57.000000000 +0100
  90757. @@ -13,9 +13,8 @@
  90758. Lesser General Public License for more details.
  90759. You should have received a copy of the GNU Lesser General Public
  90760. - License along with the GNU C Library; if not, write to the Free
  90761. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90762. - 02111-1307 USA. */
  90763. + License along with the GNU C Library; if not, see
  90764. + <http://www.gnu.org/licenses/>. */
  90765. #ifndef _LIST_H
  90766. #define _LIST_H 1
  90767. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/Makefile.in uClibc-git/libpthread/nptl/sysdeps/pthread/Makefile.in
  90768. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  90769. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  90770. @@ -33,7 +33,6 @@
  90771. pthread_spin_init.c \
  90772. pthread_spin_unlock.c \
  90773. pt-longjmp.c \
  90774. - pt-sigaction.c \
  90775. tpp.c
  90776. CFLAGS-pthread = $(SSP_ALL_CFLAGS) -DNOT_IN_libc -DIS_IN_libpthread
  90777. CFLAGS-pthread_barrier_wait.c = -D_GNU_SOURCE
  90778. @@ -49,8 +48,7 @@
  90779. CFLAGS-rt-unwind-resume.c = -DIS_IN_librt \
  90780. -fexceptions -fasynchronous-unwind-tables
  90781. -libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, \
  90782. - unwind-forcedunwind)
  90783. +libpthread-so-y += $(patsubst %,$(libpthread_pthread_OUT)/%.oS, unwind-forcedunwind)
  90784. librt-pt-routines-y = librt-cancellation.c
  90785. librt-pt-shared-only-routines-y = rt-unwind-resume.c
  90786. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/malloc-machine.h uClibc-git/libpthread/nptl/sysdeps/pthread/malloc-machine.h
  90787. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/malloc-machine.h 2012-05-15 09:20:09.000000000 +0200
  90788. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/malloc-machine.h 2014-02-03 12:32:57.000000000 +0100
  90789. @@ -14,9 +14,8 @@
  90790. Lesser General Public License for more details.
  90791. You should have received a copy of the GNU Lesser General Public
  90792. - License along with the GNU C Library; if not, write to the Free
  90793. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90794. - 02111-1307 USA. */
  90795. + License along with the GNU C Library; if not, see
  90796. + <http://www.gnu.org/licenses/>. */
  90797. #ifndef _MALLOC_MACHINE_H
  90798. #define _MALLOC_MACHINE_H
  90799. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/posix-timer.h uClibc-git/libpthread/nptl/sysdeps/pthread/posix-timer.h
  90800. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/posix-timer.h 2012-05-15 09:20:09.000000000 +0200
  90801. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/posix-timer.h 2014-02-03 12:32:57.000000000 +0100
  90802. @@ -14,9 +14,8 @@
  90803. Lesser General Public License for more details.
  90804. You should have received a copy of the GNU Lesser General Public
  90805. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  90806. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  90807. - Boston, MA 02111-1307, USA. */
  90808. + License along with the GNU C Library; see the file COPYING.LIB. If
  90809. + not, see <http://www.gnu.org/licenses/>. */
  90810. #include <limits.h>
  90811. #include <signal.h>
  90812. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c
  90813. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c 2012-05-15 09:20:09.000000000 +0200
  90814. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_barrier_destroy.c 2014-02-03 12:32:57.000000000 +0100
  90815. @@ -13,9 +13,8 @@
  90816. Lesser General Public License for more details.
  90817. You should have received a copy of the GNU Lesser General Public
  90818. - License along with the GNU C Library; if not, write to the Free
  90819. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90820. - 02111-1307 USA. */
  90821. + License along with the GNU C Library; if not, see
  90822. + <http://www.gnu.org/licenses/>. */
  90823. #include <errno.h>
  90824. #include "pthreadP.h"
  90825. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c
  90826. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c 2012-05-15 09:20:09.000000000 +0200
  90827. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_barrier_init.c 2014-02-03 12:32:57.000000000 +0100
  90828. @@ -13,9 +13,8 @@
  90829. Lesser General Public License for more details.
  90830. You should have received a copy of the GNU Lesser General Public
  90831. - License along with the GNU C Library; if not, write to the Free
  90832. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90833. - 02111-1307 USA. */
  90834. + License along with the GNU C Library; if not, see
  90835. + <http://www.gnu.org/licenses/>. */
  90836. #include <errno.h>
  90837. #include "pthreadP.h"
  90838. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c
  90839. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c 2012-05-15 09:20:09.000000000 +0200
  90840. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_barrier_wait.c 2014-02-03 12:32:57.000000000 +0100
  90841. @@ -13,9 +13,8 @@
  90842. Lesser General Public License for more details.
  90843. You should have received a copy of the GNU Lesser General Public
  90844. - License along with the GNU C Library; if not, write to the Free
  90845. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90846. - 02111-1307 USA. */
  90847. + License along with the GNU C Library; if not, see
  90848. + <http://www.gnu.org/licenses/>. */
  90849. #include <errno.h>
  90850. #include <sysdep.h>
  90851. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c
  90852. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c 2012-05-15 09:20:09.000000000 +0200
  90853. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_broadcast.c 2014-02-03 12:32:57.000000000 +0100
  90854. @@ -13,9 +13,8 @@
  90855. Lesser General Public License for more details.
  90856. You should have received a copy of the GNU Lesser General Public
  90857. - License along with the GNU C Library; if not, write to the Free
  90858. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90859. - 02111-1307 USA. */
  90860. + License along with the GNU C Library; if not, see
  90861. + <http://www.gnu.org/licenses/>. */
  90862. #include <endian.h>
  90863. #include <errno.h>
  90864. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c
  90865. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c 2012-05-15 09:20:09.000000000 +0200
  90866. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_signal.c 2014-02-03 12:32:57.000000000 +0100
  90867. @@ -13,9 +13,8 @@
  90868. Lesser General Public License for more details.
  90869. You should have received a copy of the GNU Lesser General Public
  90870. - License along with the GNU C Library; if not, write to the Free
  90871. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90872. - 02111-1307 USA. */
  90873. + License along with the GNU C Library; if not, see
  90874. + <http://www.gnu.org/licenses/>. */
  90875. #include <endian.h>
  90876. #include <errno.h>
  90877. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c
  90878. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c 2012-05-15 09:20:09.000000000 +0200
  90879. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_timedwait.c 2014-02-03 12:32:57.000000000 +0100
  90880. @@ -13,9 +13,8 @@
  90881. Lesser General Public License for more details.
  90882. You should have received a copy of the GNU Lesser General Public
  90883. - License along with the GNU C Library; if not, write to the Free
  90884. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90885. - 02111-1307 USA. */
  90886. + License along with the GNU C Library; if not, see
  90887. + <http://www.gnu.org/licenses/>. */
  90888. #include <endian.h>
  90889. #include <errno.h>
  90890. @@ -100,8 +99,10 @@
  90891. {
  90892. #ifdef __NR_clock_gettime
  90893. INTERNAL_SYSCALL_DECL (err);
  90894. - int ret;
  90895. - ret = INTERNAL_SYSCALL (clock_gettime, err, 2,
  90896. +# ifndef __ASSUME_POSIX_TIMERS
  90897. + int ret =
  90898. +# endif
  90899. + INTERNAL_SYSCALL (clock_gettime, err, 2,
  90900. (cond->__data.__nwaiters
  90901. & ((1 << COND_NWAITERS_SHIFT) - 1)),
  90902. &rt);
  90903. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c
  90904. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c 2012-05-15 09:20:09.000000000 +0200
  90905. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_cond_wait.c 2014-02-03 12:32:57.000000000 +0100
  90906. @@ -13,9 +13,8 @@
  90907. Lesser General Public License for more details.
  90908. You should have received a copy of the GNU Lesser General Public
  90909. - License along with the GNU C Library; if not, write to the Free
  90910. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90911. - 02111-1307 USA. */
  90912. + License along with the GNU C Library; if not, see
  90913. + <http://www.gnu.org/licenses/>. */
  90914. #include <endian.h>
  90915. #include <errno.h>
  90916. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread-functions.h uClibc-git/libpthread/nptl/sysdeps/pthread/pthread-functions.h
  90917. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread-functions.h 2012-05-15 09:20:09.000000000 +0200
  90918. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread-functions.h 2014-02-03 12:32:57.000000000 +0100
  90919. @@ -13,9 +13,8 @@
  90920. Lesser General Public License for more details.
  90921. You should have received a copy of the GNU Lesser General Public
  90922. - License along with the GNU C Library; if not, write to the Free
  90923. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90924. - 02111-1307 USA. */
  90925. + License along with the GNU C Library; if not, see
  90926. + <http://www.gnu.org/licenses/>. */
  90927. #ifndef _PTHREAD_FUNCTIONS_H
  90928. #define _PTHREAD_FUNCTIONS_H 1
  90929. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread.h uClibc-git/libpthread/nptl/sysdeps/pthread/pthread.h
  90930. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread.h 2012-05-15 09:20:09.000000000 +0200
  90931. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread.h 2014-02-03 12:32:57.000000000 +0100
  90932. @@ -13,9 +13,8 @@
  90933. Lesser General Public License for more details.
  90934. You should have received a copy of the GNU Lesser General Public
  90935. - License along with the GNU C Library; if not, write to the Free
  90936. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  90937. - 02111-1307 USA. */
  90938. + License along with the GNU C Library; if not, see
  90939. + <http://www.gnu.org/licenses/>. */
  90940. #ifndef _PTHREAD_H
  90941. #define _PTHREAD_H 1
  90942. @@ -228,7 +227,7 @@
  90943. getting passed ARG. Creation attributed come from ATTR. The new
  90944. handle is stored in *NEWTHREAD. */
  90945. extern int pthread_create (pthread_t *__restrict __newthread,
  90946. - __const pthread_attr_t *__restrict __attr,
  90947. + const pthread_attr_t *__restrict __attr,
  90948. void *(*__start_routine) (void *),
  90949. void *__restrict __arg) __THROW __nonnull ((1, 3));
  90950. @@ -258,7 +257,7 @@
  90951. This function is a cancellation point and therefore not marked with
  90952. __THROW. */
  90953. extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
  90954. - __const struct timespec *__abstime);
  90955. + const struct timespec *__abstime);
  90956. #endif
  90957. /* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
  90958. @@ -287,7 +286,7 @@
  90959. __THROW __nonnull ((1));
  90960. /* Get detach state attribute. */
  90961. -extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
  90962. +extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
  90963. int *__detachstate)
  90964. __THROW __nonnull ((1, 2));
  90965. @@ -298,7 +297,7 @@
  90966. /* Get the size of the guard area created for stack overflow protection. */
  90967. -extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
  90968. +extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
  90969. size_t *__guardsize)
  90970. __THROW __nonnull ((1, 2));
  90971. @@ -309,18 +308,18 @@
  90972. /* Return in *PARAM the scheduling parameters of *ATTR. */
  90973. -extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
  90974. +extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict
  90975. __attr,
  90976. struct sched_param *__restrict __param)
  90977. __THROW __nonnull ((1, 2));
  90978. /* Set scheduling parameters (priority, etc) in *ATTR according to PARAM. */
  90979. extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
  90980. - __const struct sched_param *__restrict
  90981. + const struct sched_param *__restrict
  90982. __param) __THROW __nonnull ((1, 2));
  90983. /* Return in *POLICY the scheduling policy of *ATTR. */
  90984. -extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
  90985. +extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
  90986. __attr, int *__restrict __policy)
  90987. __THROW __nonnull ((1, 2));
  90988. @@ -329,7 +328,7 @@
  90989. __THROW __nonnull ((1));
  90990. /* Return in *INHERIT the scheduling inheritance mode of *ATTR. */
  90991. -extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
  90992. +extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
  90993. __attr, int *__restrict __inherit)
  90994. __THROW __nonnull ((1, 2));
  90995. @@ -340,7 +339,7 @@
  90996. /* Return in *SCOPE the scheduling contention scope of *ATTR. */
  90997. -extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
  90998. +extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
  90999. int *__restrict __scope)
  91000. __THROW __nonnull ((1, 2));
  91001. @@ -349,7 +348,7 @@
  91002. __THROW __nonnull ((1));
  91003. /* Return the previously set address for the stack. */
  91004. -extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
  91005. +extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
  91006. __attr, void **__restrict __stackaddr)
  91007. __THROW __nonnull ((1, 2)) __attribute_deprecated__;
  91008. @@ -362,7 +361,7 @@
  91009. __THROW __nonnull ((1)) __attribute_deprecated__;
  91010. /* Return the currently used minimal stack size. */
  91011. -extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
  91012. +extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
  91013. __attr, size_t *__restrict __stacksize)
  91014. __THROW __nonnull ((1, 2));
  91015. @@ -375,7 +374,7 @@
  91016. #ifdef __USE_XOPEN2K
  91017. /* Return the previously set address for the stack. */
  91018. -extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
  91019. +extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
  91020. void **__restrict __stackaddr,
  91021. size_t *__restrict __stacksize)
  91022. __THROW __nonnull ((1, 2, 3));
  91023. @@ -392,12 +391,12 @@
  91024. the processors represented in CPUSET. */
  91025. extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
  91026. size_t __cpusetsize,
  91027. - __const cpu_set_t *__cpuset)
  91028. + const cpu_set_t *__cpuset)
  91029. __THROW __nonnull ((1, 3));
  91030. /* Get bit set in CPUSET representing the processors threads created with
  91031. ATTR can run on. */
  91032. -extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
  91033. +extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
  91034. size_t __cpusetsize,
  91035. cpu_set_t *__cpuset)
  91036. __THROW __nonnull ((1, 3));
  91037. @@ -416,7 +415,7 @@
  91038. /* Set the scheduling parameters for TARGET_THREAD according to POLICY
  91039. and *PARAM. */
  91040. extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
  91041. - __const struct sched_param *__param)
  91042. + const struct sched_param *__param)
  91043. __THROW __nonnull ((3));
  91044. /* Return in *POLICY and *PARAM the scheduling parameters for TARGET_THREAD. */
  91045. @@ -449,7 +448,7 @@
  91046. /* Limit specified thread TH to run only on the processors represented
  91047. in CPUSET. */
  91048. extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
  91049. - __const cpu_set_t *__cpuset)
  91050. + const cpu_set_t *__cpuset)
  91051. __THROW __nonnull ((3));
  91052. /* Get bit set in CPUSET representing the processors TH can run on. */
  91053. @@ -581,6 +580,7 @@
  91054. function the compiler is free to decide inlining the change when
  91055. needed or fall back on the copy which must exist somewhere
  91056. else. */
  91057. +void __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame);
  91058. __extern_inline void
  91059. __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame)
  91060. {
  91061. @@ -724,7 +724,7 @@
  91062. /* Initialize a mutex. */
  91063. extern int pthread_mutex_init (pthread_mutex_t *__mutex,
  91064. - __const pthread_mutexattr_t *__mutexattr)
  91065. + const pthread_mutexattr_t *__mutexattr)
  91066. __THROW __nonnull ((1));
  91067. /* Destroy a mutex. */
  91068. @@ -742,7 +742,7 @@
  91069. #ifdef __USE_XOPEN2K
  91070. /* Wait until lock becomes available, or specified time passes. */
  91071. extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
  91072. - __const struct timespec *__restrict
  91073. + const struct timespec *__restrict
  91074. __abstime) __THROW __nonnull ((1, 2));
  91075. #endif
  91076. @@ -752,7 +752,7 @@
  91077. /* Get the priority ceiling of MUTEX. */
  91078. -extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
  91079. +extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
  91080. __restrict __mutex,
  91081. int *__restrict __prioceiling)
  91082. __THROW __nonnull ((1, 2));
  91083. @@ -788,7 +788,7 @@
  91084. __THROW __nonnull ((1));
  91085. /* Get the process-shared flag of the mutex attribute ATTR. */
  91086. -extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
  91087. +extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
  91088. __restrict __attr,
  91089. int *__restrict __pshared)
  91090. __THROW __nonnull ((1, 2));
  91091. @@ -800,7 +800,7 @@
  91092. #if defined __USE_UNIX98 || defined __USE_XOPEN2K8
  91093. /* Return in *KIND the mutex kind attribute in *ATTR. */
  91094. -extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
  91095. +extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
  91096. __attr, int *__restrict __kind)
  91097. __THROW __nonnull ((1, 2));
  91098. @@ -812,7 +812,7 @@
  91099. #endif
  91100. /* Return in *PROTOCOL the mutex protocol attribute in *ATTR. */
  91101. -extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
  91102. +extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
  91103. __restrict __attr,
  91104. int *__restrict __protocol)
  91105. __THROW __nonnull ((1, 2));
  91106. @@ -824,7 +824,7 @@
  91107. __THROW __nonnull ((1));
  91108. /* Return in *PRIOCEILING the mutex prioceiling attribute in *ATTR. */
  91109. -extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
  91110. +extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
  91111. __restrict __attr,
  91112. int *__restrict __prioceiling)
  91113. __THROW __nonnull ((1, 2));
  91114. @@ -836,11 +836,11 @@
  91115. #ifdef __USE_XOPEN2K
  91116. /* Get the robustness flag of the mutex attribute ATTR. */
  91117. -extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr,
  91118. +extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
  91119. int *__robustness)
  91120. __THROW __nonnull ((1, 2));
  91121. # ifdef __USE_GNU
  91122. -extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
  91123. +extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr,
  91124. int *__robustness)
  91125. __THROW __nonnull ((1, 2));
  91126. # endif
  91127. @@ -863,7 +863,7 @@
  91128. /* Initialize read-write lock RWLOCK using attributes ATTR, or use
  91129. the default values if later is NULL. */
  91130. extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
  91131. - __const pthread_rwlockattr_t *__restrict
  91132. + const pthread_rwlockattr_t *__restrict
  91133. __attr) __THROW __nonnull ((1));
  91134. /* Destroy read-write lock RWLOCK. */
  91135. @@ -881,7 +881,7 @@
  91136. # ifdef __USE_XOPEN2K
  91137. /* Try to acquire read lock for RWLOCK or return after specfied time. */
  91138. extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
  91139. - __const struct timespec *__restrict
  91140. + const struct timespec *__restrict
  91141. __abstime) __THROW __nonnull ((1, 2));
  91142. # endif
  91143. @@ -896,7 +896,7 @@
  91144. # ifdef __USE_XOPEN2K
  91145. /* Try to acquire write lock for RWLOCK or return after specfied time. */
  91146. extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
  91147. - __const struct timespec *__restrict
  91148. + const struct timespec *__restrict
  91149. __abstime) __THROW __nonnull ((1, 2));
  91150. # endif
  91151. @@ -916,7 +916,7 @@
  91152. __THROW __nonnull ((1));
  91153. /* Return current setting of process-shared attribute of ATTR in PSHARED. */
  91154. -extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
  91155. +extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
  91156. __restrict __attr,
  91157. int *__restrict __pshared)
  91158. __THROW __nonnull ((1, 2));
  91159. @@ -927,7 +927,7 @@
  91160. __THROW __nonnull ((1));
  91161. /* Return current setting of reader/writer preference. */
  91162. -extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
  91163. +extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
  91164. __restrict __attr,
  91165. int *__restrict __pref)
  91166. __THROW __nonnull ((1, 2));
  91167. @@ -943,7 +943,7 @@
  91168. /* Initialize condition variable COND using attributes ATTR, or use
  91169. the default values if later is NULL. */
  91170. extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
  91171. - __const pthread_condattr_t *__restrict
  91172. + const pthread_condattr_t *__restrict
  91173. __cond_attr) __THROW __nonnull ((1));
  91174. /* Destroy condition variable COND. */
  91175. @@ -976,7 +976,7 @@
  91176. __THROW. */
  91177. extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
  91178. pthread_mutex_t *__restrict __mutex,
  91179. - __const struct timespec *__restrict
  91180. + const struct timespec *__restrict
  91181. __abstime) __nonnull ((1, 2, 3));
  91182. /* Functions for handling condition variable attributes. */
  91183. @@ -990,7 +990,7 @@
  91184. __THROW __nonnull ((1));
  91185. /* Get the process-shared flag of the condition variable attribute ATTR. */
  91186. -extern int pthread_condattr_getpshared (__const pthread_condattr_t *
  91187. +extern int pthread_condattr_getpshared (const pthread_condattr_t *
  91188. __restrict __attr,
  91189. int *__restrict __pshared)
  91190. __THROW __nonnull ((1, 2));
  91191. @@ -1001,7 +1001,7 @@
  91192. #ifdef __USE_XOPEN2K
  91193. /* Get the clock selected for the conditon variable attribute ATTR. */
  91194. -extern int pthread_condattr_getclock (__const pthread_condattr_t *
  91195. +extern int pthread_condattr_getclock (const pthread_condattr_t *
  91196. __restrict __attr,
  91197. __clockid_t *__restrict __clock_id)
  91198. __THROW __nonnull ((1, 2));
  91199. @@ -1043,7 +1043,7 @@
  91200. /* Initialize BARRIER with the attributes in ATTR. The barrier is
  91201. opened when COUNT waiters arrived. */
  91202. extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
  91203. - __const pthread_barrierattr_t *__restrict
  91204. + const pthread_barrierattr_t *__restrict
  91205. __attr, unsigned int __count)
  91206. __THROW __nonnull ((1));
  91207. @@ -1065,7 +1065,7 @@
  91208. __THROW __nonnull ((1));
  91209. /* Get the process-shared flag of the barrier attribute ATTR. */
  91210. -extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
  91211. +extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
  91212. __restrict __attr,
  91213. int *__restrict __pshared)
  91214. __THROW __nonnull ((1, 2));
  91215. @@ -1097,7 +1097,7 @@
  91216. /* Store POINTER in the thread-specific data slot identified by KEY. */
  91217. extern int pthread_setspecific (pthread_key_t __key,
  91218. - __const void *__pointer) __THROW ;
  91219. + const void *__pointer) __THROW ;
  91220. #ifdef __USE_XOPEN2K
  91221. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_once.c
  91222. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  91223. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  91224. @@ -13,9 +13,8 @@
  91225. Lesser General Public License for more details.
  91226. You should have received a copy of the GNU Lesser General Public
  91227. - License along with the GNU C Library; if not, write to the Free
  91228. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91229. - 02111-1307 USA. */
  91230. + License along with the GNU C Library; if not, see
  91231. + <http://www.gnu.org/licenses/>. */
  91232. #include "pthreadP.h"
  91233. #include <lowlevellock.h>
  91234. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c
  91235. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c 2012-05-15 09:20:09.000000000 +0200
  91236. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_rdlock.c 2014-02-03 12:32:57.000000000 +0100
  91237. @@ -13,9 +13,8 @@
  91238. Lesser General Public License for more details.
  91239. You should have received a copy of the GNU Lesser General Public
  91240. - License along with the GNU C Library; if not, write to the Free
  91241. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91242. - 02111-1307 USA. */
  91243. + License along with the GNU C Library; if not, see
  91244. + <http://www.gnu.org/licenses/>. */
  91245. #include <errno.h>
  91246. #include <sysdep.h>
  91247. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c
  91248. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c 2012-05-15 09:20:09.000000000 +0200
  91249. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedrdlock.c 2014-02-03 12:32:57.000000000 +0100
  91250. @@ -13,9 +13,8 @@
  91251. Lesser General Public License for more details.
  91252. You should have received a copy of the GNU Lesser General Public
  91253. - License along with the GNU C Library; if not, write to the Free
  91254. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91255. - 02111-1307 USA. */
  91256. + License along with the GNU C Library; if not, see
  91257. + <http://www.gnu.org/licenses/>. */
  91258. #include <errno.h>
  91259. #include <sysdep.h>
  91260. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c
  91261. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c 2012-05-15 09:20:09.000000000 +0200
  91262. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c 2014-02-03 12:32:57.000000000 +0100
  91263. @@ -13,9 +13,8 @@
  91264. Lesser General Public License for more details.
  91265. You should have received a copy of the GNU Lesser General Public
  91266. - License along with the GNU C Library; if not, write to the Free
  91267. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91268. - 02111-1307 USA. */
  91269. + License along with the GNU C Library; if not, see
  91270. + <http://www.gnu.org/licenses/>. */
  91271. #include <errno.h>
  91272. #include <sysdep.h>
  91273. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c
  91274. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c 2012-05-15 09:20:09.000000000 +0200
  91275. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_unlock.c 2014-02-03 12:32:57.000000000 +0100
  91276. @@ -13,9 +13,8 @@
  91277. Lesser General Public License for more details.
  91278. You should have received a copy of the GNU Lesser General Public
  91279. - License along with the GNU C Library; if not, write to the Free
  91280. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91281. - 02111-1307 USA. */
  91282. + License along with the GNU C Library; if not, see
  91283. + <http://www.gnu.org/licenses/>. */
  91284. #include <errno.h>
  91285. #include <sysdep.h>
  91286. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
  91287. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c 2012-05-15 09:20:09.000000000 +0200
  91288. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_rwlock_wrlock.c 2014-02-03 12:32:57.000000000 +0100
  91289. @@ -13,9 +13,8 @@
  91290. Lesser General Public License for more details.
  91291. You should have received a copy of the GNU Lesser General Public
  91292. - License along with the GNU C Library; if not, write to the Free
  91293. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91294. - 02111-1307 USA. */
  91295. + License along with the GNU C Library; if not, see
  91296. + <http://www.gnu.org/licenses/>. */
  91297. #include <errno.h>
  91298. #include <sysdep.h>
  91299. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c
  91300. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c 2012-05-15 09:20:09.000000000 +0200
  91301. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_sigmask.c 2014-02-03 12:32:57.000000000 +0100
  91302. @@ -13,9 +13,8 @@
  91303. Lesser General Public License for more details.
  91304. You should have received a copy of the GNU Lesser General Public
  91305. - License along with the GNU C Library; if not, write to the Free
  91306. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91307. - 02111-1307 USA. */
  91308. + License along with the GNU C Library; if not, see
  91309. + <http://www.gnu.org/licenses/>. */
  91310. #include <errno.h>
  91311. #include <signal.h>
  91312. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c
  91313. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c 2012-05-15 09:20:09.000000000 +0200
  91314. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_spin_destroy.c 2014-02-03 12:32:57.000000000 +0100
  91315. @@ -13,9 +13,8 @@
  91316. Lesser General Public License for more details.
  91317. You should have received a copy of the GNU Lesser General Public
  91318. - License along with the GNU C Library; if not, write to the Free
  91319. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91320. - 02111-1307 USA. */
  91321. + License along with the GNU C Library; if not, see
  91322. + <http://www.gnu.org/licenses/>. */
  91323. #include "pthreadP.h"
  91324. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c
  91325. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c 2012-05-15 09:20:09.000000000 +0200
  91326. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  91327. @@ -14,9 +14,8 @@
  91328. Lesser General Public License for more details.
  91329. You should have received a copy of the GNU Lesser General Public
  91330. - License along with the GNU C Library; if not, write to the Free
  91331. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91332. - 02111-1307 USA. */
  91333. + License along with the GNU C Library; if not, see
  91334. + <http://www.gnu.org/licenses/>. */
  91335. #include "pthreadP.h"
  91336. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c
  91337. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c 2012-05-15 09:20:09.000000000 +0200
  91338. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pthread_spin_unlock.c 2014-02-03 12:32:57.000000000 +0100
  91339. @@ -14,9 +14,8 @@
  91340. Lesser General Public License for more details.
  91341. You should have received a copy of the GNU Lesser General Public
  91342. - License along with the GNU C Library; if not, write to the Free
  91343. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91344. - 02111-1307 USA. */
  91345. + License along with the GNU C Library; if not, see
  91346. + <http://www.gnu.org/licenses/>. */
  91347. #include "pthreadP.h"
  91348. #include <atomic.h>
  91349. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-initfini.c uClibc-git/libpthread/nptl/sysdeps/pthread/pt-initfini.c
  91350. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  91351. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  91352. @@ -23,8 +23,7 @@
  91353. You should have received a copy of the GNU Lesser General Public
  91354. License along with the GNU C Library; see the file COPYING.LIB. If not,
  91355. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  91356. - Boston, MA 02111-1307, USA. */
  91357. + see <http://www.gnu.org/licenses/>. */
  91358. /* This file is compiled into assembly code which is then munged by a sed
  91359. script into two files: crti.s and crtn.s.
  91360. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-longjmp.c uClibc-git/libpthread/nptl/sysdeps/pthread/pt-longjmp.c
  91361. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-longjmp.c 2012-05-15 09:20:09.000000000 +0200
  91362. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pt-longjmp.c 2014-02-03 12:32:57.000000000 +0100
  91363. @@ -13,14 +13,15 @@
  91364. Lesser General Public License for more details.
  91365. You should have received a copy of the GNU Lesser General Public
  91366. - License along with the GNU C Library; if not, write to the Free
  91367. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91368. - 02111-1307 USA. */
  91369. + License along with the GNU C Library; if not, see
  91370. + <http://www.gnu.org/licenses/>. */
  91371. #include <setjmp.h>
  91372. #include <stdlib.h>
  91373. #include "pthreadP.h"
  91374. +extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  91375. +
  91376. void
  91377. longjmp (jmp_buf env, int val)
  91378. {
  91379. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-sigaction.c uClibc-git/libpthread/nptl/sysdeps/pthread/pt-sigaction.c
  91380. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/pt-sigaction.c 2012-05-15 09:20:09.000000000 +0200
  91381. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/pt-sigaction.c 2014-02-03 12:32:57.000000000 +0100
  91382. @@ -13,9 +13,8 @@
  91383. Lesser General Public License for more details.
  91384. You should have received a copy of the GNU Lesser General Public
  91385. - License along with the GNU C Library; if not, write to the Free
  91386. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91387. - 02111-1307 USA. */
  91388. + License along with the GNU C Library; if not, see
  91389. + <http://www.gnu.org/licenses/>. */
  91390. #include <pthreadP.h>
  91391. #include <signal.h>
  91392. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/setxid.h uClibc-git/libpthread/nptl/sysdeps/pthread/setxid.h
  91393. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/setxid.h 2012-05-15 09:20:09.000000000 +0200
  91394. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/setxid.h 2014-02-03 12:32:57.000000000 +0100
  91395. @@ -12,9 +12,8 @@
  91396. Lesser General Public License for more details.
  91397. You should have received a copy of the GNU Lesser General Public
  91398. - License along with the GNU C Library; if not, write to the Free
  91399. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91400. - 02111-1307 USA. */
  91401. + License along with the GNU C Library; if not, see
  91402. + <http://www.gnu.org/licenses/>. */
  91403. #include <pthreadP.h>
  91404. #include <sysdep.h>
  91405. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigfillset.c uClibc-git/libpthread/nptl/sysdeps/pthread/sigfillset.c
  91406. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigfillset.c 1970-01-01 01:00:00.000000000 +0100
  91407. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/sigfillset.c 2014-02-03 12:32:57.000000000 +0100
  91408. @@ -0,0 +1,20 @@
  91409. +/* Copyright (C) 2003, 2005 Free Software Foundation, Inc.
  91410. + This file is part of the GNU C Library.
  91411. +
  91412. + The GNU C Library is free software; you can redistribute it and/or
  91413. + modify it under the terms of the GNU Lesser General Public
  91414. + License as published by the Free Software Foundation; either
  91415. + version 2.1 of the License, or (at your option) any later version.
  91416. +
  91417. + The GNU C Library is distributed in the hope that it will be useful,
  91418. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  91419. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  91420. + Lesser General Public License for more details.
  91421. +
  91422. + You should have received a copy of the GNU Lesser General Public
  91423. + License along with the GNU C Library; if not, see
  91424. + <http://www.gnu.org/licenses/>. */
  91425. +
  91426. +#include <pthreadP.h>
  91427. +
  91428. +#include <../../../../libc/signal/sigfillset.c>
  91429. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigprocmask.c uClibc-git/libpthread/nptl/sysdeps/pthread/sigprocmask.c
  91430. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/sigprocmask.c 1970-01-01 01:00:00.000000000 +0100
  91431. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/sigprocmask.c 2014-02-03 12:32:57.000000000 +0100
  91432. @@ -0,0 +1,21 @@
  91433. +/* Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
  91434. + This file is part of the GNU C Library.
  91435. +
  91436. + The GNU C Library is free software; you can redistribute it and/or
  91437. + modify it under the terms of the GNU Lesser General Public
  91438. + License as published by the Free Software Foundation; either
  91439. + version 2.1 of the License, or (at your option) any later version.
  91440. +
  91441. + The GNU C Library is distributed in the hope that it will be useful,
  91442. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  91443. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  91444. + Lesser General Public License for more details.
  91445. +
  91446. + You should have received a copy of the GNU Lesser General Public
  91447. + License along with the GNU C Library; if not, see
  91448. + <http://www.gnu.org/licenses/>. */
  91449. +
  91450. +#include <pthreadP.h>
  91451. +#undef _LARGEFILE64_SOURCE
  91452. +
  91453. +#include <../../../../libc/sysdeps/linux/common/sigprocmask.c>
  91454. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_create.c uClibc-git/libpthread/nptl/sysdeps/pthread/timer_create.c
  91455. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  91456. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  91457. @@ -13,9 +13,8 @@
  91458. Lesser General Public License for more details.
  91459. You should have received a copy of the GNU Lesser General Public
  91460. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91461. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91462. - Boston, MA 02111-1307, USA. */
  91463. + License along with the GNU C Library; see the file COPYING.LIB. If
  91464. + not, see <http://www.gnu.org/licenses/>. */
  91465. #include <errno.h>
  91466. #include <signal.h>
  91467. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_delete.c uClibc-git/libpthread/nptl/sysdeps/pthread/timer_delete.c
  91468. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_delete.c 2012-05-15 09:20:09.000000000 +0200
  91469. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/timer_delete.c 2014-02-03 12:32:57.000000000 +0100
  91470. @@ -13,9 +13,8 @@
  91471. Lesser General Public License for more details.
  91472. You should have received a copy of the GNU Lesser General Public
  91473. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91474. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91475. - Boston, MA 02111-1307, USA. */
  91476. + License along with the GNU C Library; see the file COPYING.LIB. If
  91477. + not, see <http://www.gnu.org/licenses/>. */
  91478. #include <assert.h>
  91479. #include <errno.h>
  91480. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_getoverr.c uClibc-git/libpthread/nptl/sysdeps/pthread/timer_getoverr.c
  91481. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_getoverr.c 2012-05-15 09:20:09.000000000 +0200
  91482. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/timer_getoverr.c 2014-02-03 12:32:57.000000000 +0100
  91483. @@ -13,9 +13,8 @@
  91484. Lesser General Public License for more details.
  91485. You should have received a copy of the GNU Lesser General Public
  91486. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91487. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91488. - Boston, MA 02111-1307, USA. */
  91489. + License along with the GNU C Library; see the file COPYING.LIB. If
  91490. + not, see <http://www.gnu.org/licenses/>. */
  91491. #include <errno.h>
  91492. #include <pthread.h>
  91493. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_gettime.c uClibc-git/libpthread/nptl/sysdeps/pthread/timer_gettime.c
  91494. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_gettime.c 2012-05-15 09:20:09.000000000 +0200
  91495. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/timer_gettime.c 2014-02-03 12:32:57.000000000 +0100
  91496. @@ -13,9 +13,8 @@
  91497. Lesser General Public License for more details.
  91498. You should have received a copy of the GNU Lesser General Public
  91499. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91500. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91501. - Boston, MA 02111-1307, USA. */
  91502. + License along with the GNU C Library; see the file COPYING.LIB. If
  91503. + not, see <http://www.gnu.org/licenses/>. */
  91504. #include <errno.h>
  91505. #include <pthread.h>
  91506. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_routines.c uClibc-git/libpthread/nptl/sysdeps/pthread/timer_routines.c
  91507. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_routines.c 2012-05-15 09:20:09.000000000 +0200
  91508. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/timer_routines.c 2014-02-03 12:32:57.000000000 +0100
  91509. @@ -14,9 +14,8 @@
  91510. Lesser General Public License for more details.
  91511. You should have received a copy of the GNU Lesser General Public
  91512. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91513. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91514. - Boston, MA 02111-1307, USA. */
  91515. + License along with the GNU C Library; see the file COPYING.LIB. If
  91516. + not, see <http://www.gnu.org/licenses/>. */
  91517. #include <assert.h>
  91518. #include <errno.h>
  91519. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_settime.c uClibc-git/libpthread/nptl/sysdeps/pthread/timer_settime.c
  91520. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/timer_settime.c 2012-05-15 09:20:09.000000000 +0200
  91521. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/timer_settime.c 2014-02-03 12:32:57.000000000 +0100
  91522. @@ -13,9 +13,8 @@
  91523. Lesser General Public License for more details.
  91524. You should have received a copy of the GNU Lesser General Public
  91525. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91526. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91527. - Boston, MA 02111-1307, USA. */
  91528. + License along with the GNU C Library; see the file COPYING.LIB. If
  91529. + not, see <http://www.gnu.org/licenses/>. */
  91530. #include <errno.h>
  91531. #include <pthread.h>
  91532. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/tpp.c uClibc-git/libpthread/nptl/sysdeps/pthread/tpp.c
  91533. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/tpp.c 2012-05-15 09:20:09.000000000 +0200
  91534. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/tpp.c 2014-02-03 12:32:57.000000000 +0100
  91535. @@ -14,9 +14,8 @@
  91536. Lesser General Public License for more details.
  91537. You should have received a copy of the GNU Lesser General Public
  91538. - License along with the GNU C Library; if not, write to the Free
  91539. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91540. - 02111-1307 USA. */
  91541. + License along with the GNU C Library; if not, see
  91542. + <http://www.gnu.org/licenses/>. */
  91543. #include <assert.h>
  91544. #include <atomic.h>
  91545. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c uClibc-git/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c
  91546. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c 2012-05-15 09:20:09.000000000 +0200
  91547. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/unwind-forcedunwind.c 2014-02-03 12:32:57.000000000 +0100
  91548. @@ -13,9 +13,8 @@
  91549. Lesser General Public License for more details.
  91550. You should have received a copy of the GNU Lesser General Public
  91551. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91552. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91553. - Boston, MA 02111-1307, USA. */
  91554. + License along with the GNU C Library; see the file COPYING.LIB. If
  91555. + not, see <http://www.gnu.org/licenses/>. */
  91556. #include <dlfcn.h>
  91557. #include <stdio.h>
  91558. @@ -112,6 +111,11 @@
  91559. _Unwind_Reason_Code
  91560. __gcc_personality_v0 (int version, _Unwind_Action actions,
  91561. _Unwind_Exception_Class exception_class,
  91562. + struct _Unwind_Exception *ue_header,
  91563. + struct _Unwind_Context *context);
  91564. +_Unwind_Reason_Code
  91565. +__gcc_personality_v0 (int version, _Unwind_Action actions,
  91566. + _Unwind_Exception_Class exception_class,
  91567. struct _Unwind_Exception *ue_header,
  91568. struct _Unwind_Context *context)
  91569. {
  91570. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-resume.c uClibc-git/libpthread/nptl/sysdeps/pthread/unwind-resume.c
  91571. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/pthread/unwind-resume.c 2012-05-15 09:20:09.000000000 +0200
  91572. +++ uClibc-git/libpthread/nptl/sysdeps/pthread/unwind-resume.c 2014-02-03 12:32:57.000000000 +0100
  91573. @@ -13,9 +13,8 @@
  91574. Lesser General Public License for more details.
  91575. You should have received a copy of the GNU Lesser General Public
  91576. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  91577. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91578. - Boston, MA 02111-1307, USA. */
  91579. + License along with the GNU C Library; see the file COPYING.LIB. If
  91580. + not, see <http://www.gnu.org/licenses/>. */
  91581. #include <dlfcn.h>
  91582. #include <stdio.h>
  91583. @@ -66,6 +65,11 @@
  91584. _Unwind_Reason_Code
  91585. __gcc_personality_v0 (int version, _Unwind_Action actions,
  91586. _Unwind_Exception_Class exception_class,
  91587. + struct _Unwind_Exception *ue_header,
  91588. + struct _Unwind_Context *context);
  91589. +_Unwind_Reason_Code
  91590. +__gcc_personality_v0 (int version, _Unwind_Action actions,
  91591. + _Unwind_Exception_Class exception_class,
  91592. struct _Unwind_Exception *ue_header,
  91593. struct _Unwind_Context *context)
  91594. {
  91595. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/sh/dl-tls.h
  91596. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  91597. +++ uClibc-git/libpthread/nptl/sysdeps/sh/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  91598. @@ -13,9 +13,8 @@
  91599. Lesser General Public License for more details.
  91600. You should have received a copy of the GNU Lesser General Public
  91601. - License along with the GNU C Library; if not, write to the Free
  91602. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91603. - 02111-1307 USA. */
  91604. + License along with the GNU C Library; if not, see
  91605. + <http://www.gnu.org/licenses/>. */
  91606. /* Type used for the representation of TLS information in the GOT. */
  91607. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h
  91608. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  91609. +++ uClibc-git/libpthread/nptl/sysdeps/sh/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  91610. @@ -13,9 +13,8 @@
  91611. Lesser General Public License for more details.
  91612. You should have received a copy of the GNU Lesser General Public
  91613. - License along with the GNU C Library; if not, write to the Free
  91614. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91615. - 02111-1307 USA. */
  91616. + License along with the GNU C Library; if not, see
  91617. + <http://www.gnu.org/licenses/>. */
  91618. #include <setjmp.h>
  91619. #include <stdint.h>
  91620. @@ -26,8 +25,3 @@
  91621. #define _JMPBUF_UNWINDS_ADJ(jmpbuf, address, adj) \
  91622. ((uintptr_t) (address) - (adj) < (uintptr_t) (jmpbuf)[0].__regs[7] - (adj))
  91623. -
  91624. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  91625. -
  91626. -/* We use the normal lobngjmp for unwinding. */
  91627. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  91628. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/sh/pthreaddef.h
  91629. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  91630. +++ uClibc-git/libpthread/nptl/sysdeps/sh/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  91631. @@ -12,9 +12,8 @@
  91632. Lesser General Public License for more details.
  91633. You should have received a copy of the GNU Lesser General Public
  91634. - License along with the GNU C Library; if not, write to the Free
  91635. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91636. - 02111-1307 USA. */
  91637. + License along with the GNU C Library; if not, see
  91638. + <http://www.gnu.org/licenses/>. */
  91639. #include <sysdep.h>
  91640. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_init.c uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_init.c
  91641. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_init.c 2012-05-15 09:20:09.000000000 +0200
  91642. +++ uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_init.c 2014-02-03 12:32:57.000000000 +0100
  91643. @@ -13,8 +13,7 @@
  91644. Lesser General Public License for more details.
  91645. You should have received a copy of the GNU Lesser General Public
  91646. - License along with the GNU C Library; if not, write to the Free
  91647. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91648. - 02111-1307 USA. */
  91649. + License along with the GNU C Library; if not, see
  91650. + <http://www.gnu.org/licenses/>. */
  91651. /* Not needed. pthread_spin_init is an alias for pthread_spin_unlock. */
  91652. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c
  91653. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  91654. +++ uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  91655. @@ -12,9 +12,8 @@
  91656. Lesser General Public License for more details.
  91657. You should have received a copy of the GNU Lesser General Public
  91658. - License along with the GNU C Library; if not, write to the Free
  91659. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91660. - 02111-1307 USA. */
  91661. + License along with the GNU C Library; if not, see
  91662. + <http://www.gnu.org/licenses/>. */
  91663. #include "pthreadP.h"
  91664. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S
  91665. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  91666. +++ uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  91667. @@ -12,9 +12,8 @@
  91668. Lesser General Public License for more details.
  91669. You should have received a copy of the GNU Lesser General Public
  91670. - License along with the GNU C Library; if not, write to the Free
  91671. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91672. - 02111-1307 USA. */
  91673. + License along with the GNU C Library; if not, see
  91674. + <http://www.gnu.org/licenses/>. */
  91675. #include <pthread-errnos.h>
  91676. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S
  91677. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S 2012-05-15 09:20:09.000000000 +0200
  91678. +++ uClibc-git/libpthread/nptl/sysdeps/sh/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  91679. @@ -12,9 +12,8 @@
  91680. Lesser General Public License for more details.
  91681. You should have received a copy of the GNU Lesser General Public
  91682. - License along with the GNU C Library; if not, write to the Free
  91683. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91684. - 02111-1307 USA. */
  91685. + License along with the GNU C Library; if not, see
  91686. + <http://www.gnu.org/licenses/>. */
  91687. .globl pthread_spin_unlock
  91688. .type pthread_spin_unlock,@function
  91689. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/tls.h uClibc-git/libpthread/nptl/sysdeps/sh/tls.h
  91690. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sh/tls.h 2012-05-15 09:20:09.000000000 +0200
  91691. +++ uClibc-git/libpthread/nptl/sysdeps/sh/tls.h 2014-02-03 12:32:57.000000000 +0100
  91692. @@ -13,9 +13,8 @@
  91693. Lesser General Public License for more details.
  91694. You should have received a copy of the GNU Lesser General Public
  91695. - License along with the GNU C Library; if not, write to the Free
  91696. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91697. - 02111-1307 USA. */
  91698. + License along with the GNU C Library; if not, see
  91699. + <http://www.gnu.org/licenses/>. */
  91700. #ifndef _TLS_H
  91701. #define _TLS_H
  91702. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/sparc/dl-tls.h
  91703. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  91704. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  91705. @@ -13,9 +13,8 @@
  91706. Lesser General Public License for more details.
  91707. You should have received a copy of the GNU Lesser General Public
  91708. - License along with the GNU C Library; if not, write to the Free
  91709. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91710. - 02111-1307 USA. */
  91711. + License along with the GNU C Library; if not, see
  91712. + <http://www.gnu.org/licenses/>. */
  91713. /* Type used for the representation of TLS information in the GOT. */
  91714. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h
  91715. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  91716. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  91717. @@ -13,9 +13,8 @@
  91718. Lesser General Public License for more details.
  91719. You should have received a copy of the GNU Lesser General Public
  91720. - License along with the GNU C Library; if not, write to the Free
  91721. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91722. - 02111-1307 USA. */
  91723. + License along with the GNU C Library; if not, see
  91724. + <http://www.gnu.org/licenses/>. */
  91725. #include <setjmp.h>
  91726. #include <stdint.h>
  91727. @@ -26,7 +25,3 @@
  91728. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  91729. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  91730. -
  91731. -/* We use the normal longjmp for unwinding. */
  91732. -extern __typeof(longjmp) __libc_longjmp attribute_noreturn;
  91733. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  91734. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h
  91735. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  91736. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  91737. @@ -12,9 +12,8 @@
  91738. Lesser General Public License for more details.
  91739. You should have received a copy of the GNU Lesser General Public
  91740. - License along with the GNU C Library; if not, write to the Free
  91741. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91742. - 02111-1307 USA. */
  91743. + License along with the GNU C Library; if not, see
  91744. + <http://www.gnu.org/licenses/>. */
  91745. /* Default stack size. */
  91746. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  91747. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c
  91748. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  91749. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  91750. @@ -13,16 +13,15 @@
  91751. Lesser General Public License for more details.
  91752. You should have received a copy of the GNU Lesser General Public
  91753. - License along with the GNU C Library; if not, write to the Free
  91754. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91755. - 02111-1307 USA. */
  91756. + License along with the GNU C Library; if not, see
  91757. + <http://www.gnu.org/licenses/>. */
  91758. #include "pthreadP.h"
  91759. int
  91760. pthread_spin_lock (pthread_spinlock_t *lock)
  91761. {
  91762. - __asm__ __volatile
  91763. + __asm__ __volatile__
  91764. ("1: ldstub [%0], %%g2\n"
  91765. " orcc %%g2, 0x0, %%g0\n"
  91766. " bne,a 2f\n"
  91767. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c
  91768. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c 2012-05-15 09:20:09.000000000 +0200
  91769. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/pthread_spin_trylock.c 2014-02-03 12:32:57.000000000 +0100
  91770. @@ -13,9 +13,8 @@
  91771. Lesser General Public License for more details.
  91772. You should have received a copy of the GNU Lesser General Public
  91773. - License along with the GNU C Library; if not, write to the Free
  91774. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91775. - 02111-1307 USA. */
  91776. + License along with the GNU C Library; if not, see
  91777. + <http://www.gnu.org/licenses/>. */
  91778. #include <errno.h>
  91779. #include "pthreadP.h"
  91780. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c
  91781. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  91782. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  91783. @@ -13,16 +13,15 @@
  91784. Lesser General Public License for more details.
  91785. You should have received a copy of the GNU Lesser General Public
  91786. - License along with the GNU C Library; if not, write to the Free
  91787. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91788. - 02111-1307 USA. */
  91789. + License along with the GNU C Library; if not, see
  91790. + <http://www.gnu.org/licenses/>. */
  91791. #include "pthreadP.h"
  91792. int
  91793. pthread_spin_lock (pthread_spinlock_t *lock)
  91794. {
  91795. - __asm__ __volatile
  91796. + __asm__ __volatile__
  91797. ("1: ldstub [%0], %%g2\n"
  91798. " brnz,pn %%g2, 2f\n"
  91799. " membar #StoreLoad | #StoreStore\n"
  91800. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h
  91801. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  91802. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  91803. @@ -13,9 +13,8 @@
  91804. Lesser General Public License for more details.
  91805. You should have received a copy of the GNU Lesser General Public
  91806. - License along with the GNU C Library; if not, write to the Free
  91807. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91808. - 02111-1307 USA. */
  91809. + License along with the GNU C Library; if not, see
  91810. + <http://www.gnu.org/licenses/>. */
  91811. #include <setjmp.h>
  91812. #include <stdint.h>
  91813. @@ -26,6 +25,3 @@
  91814. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  91815. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
  91816. -
  91817. -/* We use the normal lobngjmp for unwinding. */
  91818. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  91819. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h
  91820. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  91821. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  91822. @@ -12,9 +12,8 @@
  91823. Lesser General Public License for more details.
  91824. You should have received a copy of the GNU Lesser General Public
  91825. - License along with the GNU C Library; if not, write to the Free
  91826. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91827. - 02111-1307 USA. */
  91828. + License along with the GNU C Library; if not, see
  91829. + <http://www.gnu.org/licenses/>. */
  91830. /* Default stack size. */
  91831. #define ARCH_STACK_DEFAULT_SIZE (4 * 1024 * 1024)
  91832. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c
  91833. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c 2012-05-15 09:20:09.000000000 +0200
  91834. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_lock.c 2014-02-03 12:32:57.000000000 +0100
  91835. @@ -13,16 +13,15 @@
  91836. Lesser General Public License for more details.
  91837. You should have received a copy of the GNU Lesser General Public
  91838. - License along with the GNU C Library; if not, write to the Free
  91839. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91840. - 02111-1307 USA. */
  91841. + License along with the GNU C Library; if not, see
  91842. + <http://www.gnu.org/licenses/>. */
  91843. #include "pthreadP.h"
  91844. int
  91845. pthread_spin_lock (pthread_spinlock_t *lock)
  91846. {
  91847. - __asm__ __volatile
  91848. + __asm__ __volatile__
  91849. ("1: ldstub [%0], %%g5\n"
  91850. " brnz,pn %%g5, 2f\n"
  91851. " membar #StoreLoad | #StoreStore\n"
  91852. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c
  91853. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c 2012-05-15 09:20:09.000000000 +0200
  91854. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_trylock.c 2014-02-03 12:32:57.000000000 +0100
  91855. @@ -13,9 +13,8 @@
  91856. Lesser General Public License for more details.
  91857. You should have received a copy of the GNU Lesser General Public
  91858. - License along with the GNU C Library; if not, write to the Free
  91859. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91860. - 02111-1307 USA. */
  91861. + License along with the GNU C Library; if not, see
  91862. + <http://www.gnu.org/licenses/>. */
  91863. #include <errno.h>
  91864. #include "pthreadP.h"
  91865. @@ -24,7 +23,7 @@
  91866. pthread_spin_trylock (pthread_spinlock_t *lock)
  91867. {
  91868. int res;
  91869. - __asm__ __volatile
  91870. + __asm__ __volatile__
  91871. ("ldstub [%1], %0\n"
  91872. "membar #StoreLoad | #StoreStore"
  91873. : "=r" (res)
  91874. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c
  91875. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c 2012-05-15 09:20:09.000000000 +0200
  91876. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/sparc64/pthread_spin_unlock.c 2014-02-03 12:32:57.000000000 +0100
  91877. @@ -14,9 +14,8 @@
  91878. Lesser General Public License for more details.
  91879. You should have received a copy of the GNU Lesser General Public
  91880. - License along with the GNU C Library; if not, write to the Free
  91881. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91882. - 02111-1307 USA. */
  91883. + License along with the GNU C Library; if not, see
  91884. + <http://www.gnu.org/licenses/>. */
  91885. #include "pthreadP.h"
  91886. #include <atomic.h>
  91887. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/tls.h uClibc-git/libpthread/nptl/sysdeps/sparc/tls.h
  91888. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/sparc/tls.h 2012-05-15 09:20:09.000000000 +0200
  91889. +++ uClibc-git/libpthread/nptl/sysdeps/sparc/tls.h 2014-02-03 12:32:57.000000000 +0100
  91890. @@ -13,9 +13,8 @@
  91891. Lesser General Public License for more details.
  91892. You should have received a copy of the GNU Lesser General Public
  91893. - License along with the GNU C Library; if not, write to the Free
  91894. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91895. - 02111-1307 USA. */
  91896. + License along with the GNU C Library; if not, see
  91897. + <http://www.gnu.org/licenses/>. */
  91898. #ifndef _TLS_H
  91899. #define _TLS_H
  91900. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h
  91901. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  91902. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  91903. @@ -14,8 +14,7 @@
  91904. You should have received a copy of the GNU Library General Public
  91905. License along with the GNU C Library; see the file COPYING.LIB. If not,
  91906. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  91907. - Boston, MA 02111-1307, USA. */
  91908. + see <http://www.gnu.org/licenses/>. */
  91909. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  91910. and defines LINK_MAX although filesystems have different maxima. A
  91911. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
  91912. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  91913. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  91914. @@ -13,9 +13,8 @@
  91915. Lesser General Public License for more details.
  91916. You should have received a copy of the GNU Lesser General Public
  91917. - License along with the GNU C Library; if not, write to the Free
  91918. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91919. - 02111-1307 USA. */
  91920. + License along with the GNU C Library; if not, see
  91921. + <http://www.gnu.org/licenses/>. */
  91922. #ifndef _BITS_PTHREADTYPES_H
  91923. #define _BITS_PTHREADTYPES_H 1
  91924. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h
  91925. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  91926. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  91927. @@ -13,9 +13,8 @@
  91928. Lesser General Public License for more details.
  91929. You should have received a copy of the GNU Lesser General Public
  91930. - License along with the GNU C Library; if not, write to the Free
  91931. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91932. - 02111-1307 USA. */
  91933. + License along with the GNU C Library; if not, see
  91934. + <http://www.gnu.org/licenses/>. */
  91935. #ifndef _SEMAPHORE_H
  91936. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  91937. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c
  91938. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c 2012-05-15 09:20:09.000000000 +0200
  91939. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/createthread.c 2014-02-03 12:32:57.000000000 +0100
  91940. @@ -12,9 +12,8 @@
  91941. Lesser General Public License for more details.
  91942. You should have received a copy of the GNU Lesser General Public
  91943. - License along with the GNU C Library; if not, write to the Free
  91944. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91945. - 02111-1307 USA. */
  91946. + License along with the GNU C Library; if not, see
  91947. + <http://www.gnu.org/licenses/>. */
  91948. /* Value passed to 'clone' for initialization of the thread register. */
  91949. #define TLS_VALUE (pd + 1)
  91950. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c
  91951. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c 2012-05-15 09:20:09.000000000 +0200
  91952. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/fork.c 2014-02-03 12:32:57.000000000 +0100
  91953. @@ -12,9 +12,8 @@
  91954. Lesser General Public License for more details.
  91955. You should have received a copy of the GNU Lesser General Public
  91956. - License along with the GNU C Library; if not, write to the Free
  91957. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91958. - 02111-1307 USA. */
  91959. + License along with the GNU C Library; if not, see
  91960. + <http://www.gnu.org/licenses/>. */
  91961. #include <sched.h>
  91962. #include <signal.h>
  91963. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
  91964. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  91965. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  91966. @@ -12,9 +12,8 @@
  91967. Lesser General Public License for more details.
  91968. You should have received a copy of the GNU Lesser General Public
  91969. - License along with the GNU C Libr \ary; if not, write to the Free
  91970. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91971. - 02111-1307 USA. */
  91972. + License along with the GNU C Library; see the file COPYING.LIB. If
  91973. + not, see <http://www.gnu.org/licenses/>. */
  91974. #ifndef _LOWLEVELLOCK_H
  91975. #define _LOWLEVELLOCK_H 1
  91976. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c
  91977. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  91978. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  91979. @@ -12,9 +12,8 @@
  91980. Lesser General Public License for more details.
  91981. You should have received a copy of the GNU Lesser General Public
  91982. - License along with the GNU C Library; if not, write to the Free
  91983. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91984. - 02111-1307 USA. */
  91985. + License along with the GNU C Library; if not, see
  91986. + <http://www.gnu.org/licenses/>. */
  91987. #include "pthreadP.h"
  91988. #include <lowlevellock.h>
  91989. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S
  91990. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  91991. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  91992. @@ -12,9 +12,8 @@
  91993. Lesser General Public License for more details.
  91994. You should have received a copy of the GNU Lesser General Public
  91995. - License along with the GNU C Library; if not, write to the Free
  91996. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  91997. - 02111-1307 USA. */
  91998. + License along with the GNU C Library; if not, see
  91999. + <http://www.gnu.org/licenses/>. */
  92000. #include <sysdep.h>
  92001. #include <tcb-offsets.h>
  92002. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h
  92003. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  92004. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  92005. @@ -12,9 +12,8 @@
  92006. Lesser General Public License for more details.
  92007. You should have received a copy of the GNU Lesser General Public
  92008. - License along with the GNU C Library; if not, write to the Free
  92009. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92010. - 02111-1307 USA. */
  92011. + License along with the GNU C Library; if not, see
  92012. + <http://www.gnu.org/licenses/>. */
  92013. #include <sysdep.h>
  92014. #include <tls.h>
  92015. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S
  92016. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S 2012-05-15 09:20:09.000000000 +0200
  92017. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/vfork.S 2014-02-03 12:32:57.000000000 +0100
  92018. @@ -12,9 +12,8 @@
  92019. Lesser General Public License for more details.
  92020. You should have received a copy of the GNU Lesser General Public
  92021. - License along with the GNU C Library; if not, write to the Free
  92022. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92023. - 02111-1307 USA. */
  92024. + License along with the GNU C Library; if not, see
  92025. + <http://www.gnu.org/licenses/>. */
  92026. #include <sysdep.h>
  92027. #include <tcb-offsets.h>
  92028. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h
  92029. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  92030. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  92031. @@ -12,9 +12,8 @@
  92032. Lesser General Public License for more details.
  92033. You should have received a copy of the GNU Lesser General Public
  92034. - License along with the GNU C Library; if not, write to the Free
  92035. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92036. - 02111-1307 USA. */
  92037. + License along with the GNU C Library; if not, see
  92038. + <http://www.gnu.org/licenses/>. */
  92039. #ifndef _BITS_PTHREADTYPES_H
  92040. #define _BITS_PTHREADTYPES_H 1
  92041. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h
  92042. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  92043. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  92044. @@ -12,9 +12,8 @@
  92045. Lesser General Public License for more details.
  92046. You should have received a copy of the GNU Lesser General Public
  92047. - License along with the GNU C Library; if not, write to the Free
  92048. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92049. - 02111-1307 USA. */
  92050. + License along with the GNU C Library; if not, see
  92051. + <http://www.gnu.org/licenses/>. */
  92052. #ifndef _SEMAPHORE_H
  92053. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  92054. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c
  92055. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c 2012-05-15 09:20:09.000000000 +0200
  92056. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/createthread.c 2014-02-03 12:32:57.000000000 +0100
  92057. @@ -12,9 +12,8 @@
  92058. Lesser General Public License for more details.
  92059. You should have received a copy of the GNU Lesser General Public
  92060. - License along with the GNU C Library; if not, write to the Free
  92061. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92062. - 02111-1307 USA. */
  92063. + License along with the GNU C Library; if not, see
  92064. + <http://www.gnu.org/licenses/>. */
  92065. /* Value passed to 'clone' for initialization of the thread register. */
  92066. #define TLS_VALUE (pd + 1)
  92067. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c
  92068. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c 2012-05-15 09:20:09.000000000 +0200
  92069. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c 2014-02-03 12:32:57.000000000 +0100
  92070. @@ -13,9 +13,8 @@
  92071. Lesser General Public License for more details.
  92072. You should have received a copy of the GNU Lesser General Public
  92073. - License along with the GNU C Library; if not, write to the Free
  92074. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92075. - 02111-1307 USA. */
  92076. + License along with the GNU C Library; if not, see
  92077. + <http://www.gnu.org/licenses/>. */
  92078. #include <sched.h>
  92079. #include <signal.h>
  92080. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c
  92081. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  92082. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  92083. @@ -13,9 +13,8 @@
  92084. Lesser General Public License for more details.
  92085. You should have received a copy of the GNU Lesser General Public
  92086. - License along with the GNU C Library; if not, write to the Free
  92087. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92088. - 02111-1307 USA. */
  92089. + License along with the GNU C Library; if not, see
  92090. + <http://www.gnu.org/licenses/>. */
  92091. /* No difference to lowlevellock.c, except we lose a couple of functions. */
  92092. #include "lowlevellock.c"
  92093. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c
  92094. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  92095. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  92096. @@ -13,9 +13,8 @@
  92097. Lesser General Public License for more details.
  92098. You should have received a copy of the GNU Lesser General Public
  92099. - License along with the GNU C Library; if not, write to the Free
  92100. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92101. - 02111-1307 USA. */
  92102. + License along with the GNU C Library; if not, see
  92103. + <http://www.gnu.org/licenses/>. */
  92104. #include <errno.h>
  92105. #include <sysdep.h>
  92106. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h
  92107. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  92108. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  92109. @@ -12,9 +12,8 @@
  92110. Lesser General Public License for more details.
  92111. You should have received a copy of the GNU Lesser General Public
  92112. - License along with the GNU C Library; if not, write to the Free
  92113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92114. - 02111-1307 USA. */
  92115. + License along with the GNU C Library; if not, see
  92116. + <http://www.gnu.org/licenses/>. */
  92117. #ifndef _LOWLEVELLOCK_H
  92118. #define _LOWLEVELLOCK_H 1
  92119. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c
  92120. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  92121. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  92122. @@ -12,9 +12,8 @@
  92123. Lesser General Public License for more details.
  92124. You should have received a copy of the GNU Lesser General Public
  92125. - License along with the GNU C Library; if not, write to the Free
  92126. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92127. - 02111-1307 USA. */
  92128. + License along with the GNU C Library; if not, see
  92129. + <http://www.gnu.org/licenses/>. */
  92130. #include "pthreadP.h"
  92131. #include <lowlevellock.h>
  92132. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S
  92133. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  92134. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  92135. @@ -12,9 +12,8 @@
  92136. Lesser General Public License for more details.
  92137. You should have received a copy of the GNU Lesser General Public
  92138. - License along with the GNU C Library; if not, write to the Free
  92139. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92140. - 02111-1307 USA. */
  92141. + License along with the GNU C Library; if not, see
  92142. + <http://www.gnu.org/licenses/>. */
  92143. #include <tcb-offsets.h>
  92144. @@ -35,4 +34,4 @@
  92145. cmp r0, #0; /* If we are the parent... */ \
  92146. strne r3, [r2, #PID_OFFSET] /* ... restore the saved PID. */
  92147. -#INCLUDE <../../../../../../../LIBC/SYSDEPS/LINUX/ARM/VFORK.S>
  92148. +#include "../../../../../../../libc/sysdeps/linux/arm/vfork.S"
  92149. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h
  92150. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  92151. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  92152. @@ -12,9 +12,8 @@
  92153. Lesser General Public License for more details.
  92154. You should have received a copy of the GNU Lesser General Public
  92155. - License along with the GNU C Library; if not, write to the Free
  92156. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92157. - 02111-1307 USA. */
  92158. + License along with the GNU C Library; if not, see
  92159. + <http://www.gnu.org/licenses/>. */
  92160. #include <sysdep.h>
  92161. #include <tcb-offsets.h>
  92162. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
  92163. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c 2012-05-15 09:20:09.000000000 +0200
  92164. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c 2014-02-03 12:32:57.000000000 +0100
  92165. @@ -13,9 +13,8 @@
  92166. Lesser General Public License for more details.
  92167. You should have received a copy of the GNU Lesser General Public
  92168. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92169. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92170. - Boston, MA 02111-1307, USA. */
  92171. + License along with the GNU C Library; see the file COPYING.LIB. If
  92172. + not, see <http://www.gnu.org/licenses/>. */
  92173. #include <dlfcn.h>
  92174. #include <stdio.h>
  92175. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c
  92176. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c 2012-05-15 09:20:09.000000000 +0200
  92177. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c 2014-02-03 12:32:57.000000000 +0100
  92178. @@ -13,9 +13,8 @@
  92179. Lesser General Public License for more details.
  92180. You should have received a copy of the GNU Lesser General Public
  92181. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92182. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92183. - Boston, MA 02111-1307, USA. */
  92184. + License along with the GNU C Library; see the file COPYING.LIB. If
  92185. + not, see <http://www.gnu.org/licenses/>. */
  92186. #include <dlfcn.h>
  92187. #include <stdio.h>
  92188. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S
  92189. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S 2012-05-15 09:20:09.000000000 +0200
  92190. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/arm/vfork.S 2014-02-03 12:32:57.000000000 +0100
  92191. @@ -12,9 +12,8 @@
  92192. Lesser General Public License for more details.
  92193. You should have received a copy of the GNU Lesser General Public
  92194. - License along with the GNU C Library; if not, write to the Free
  92195. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92196. - 02111-1307 USA. */
  92197. + License along with the GNU C Library; if not, see
  92198. + <http://www.gnu.org/licenses/>. */
  92199. #include <tcb-offsets.h>
  92200. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h
  92201. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  92202. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  92203. @@ -13,9 +13,8 @@
  92204. Lesser General Public License for more details.
  92205. You should have received a copy of the GNU Lesser General Public
  92206. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92207. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92208. - Boston, MA 02111-1307, USA. */
  92209. + License along with the GNU C Library; see the file COPYING.LIB. If
  92210. + not, see <http://www.gnu.org/licenses/>. */
  92211. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  92212. and defines LINK_MAX although filesystems have different maxima. A
  92213. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h
  92214. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-05-15 09:20:09.000000000 +0200
  92215. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2014-02-03 12:32:57.000000000 +0100
  92216. @@ -13,9 +13,8 @@
  92217. Lesser General Public License for more details.
  92218. You should have received a copy of the GNU Lesser General Public
  92219. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  92220. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  92221. - Boston, MA 02111-1307, USA. */
  92222. + License along with the GNU C Library; see the file COPYING.LIB. If
  92223. + not, see <http://www.gnu.org/licenses/>. */
  92224. #ifndef _BITS_POSIX_OPT_H
  92225. #define _BITS_POSIX_OPT_H 1
  92226. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c
  92227. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c 2012-05-15 09:20:09.000000000 +0200
  92228. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/createthread.c 2014-02-03 12:32:57.000000000 +0100
  92229. @@ -13,9 +13,8 @@
  92230. Lesser General Public License for more details.
  92231. You should have received a copy of the GNU Lesser General Public
  92232. - License along with the GNU C Library; if not, write to the Free
  92233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92234. - 02111-1307 USA. */
  92235. + License along with the GNU C Library; if not, see
  92236. + <http://www.gnu.org/licenses/>. */
  92237. /* Value passed to 'clone' for initialization of the thread register. */
  92238. #define TLS_VALUE pd
  92239. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S
  92240. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S 2012-05-15 09:20:09.000000000 +0200
  92241. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/exit-thread.S 2014-02-03 12:32:57.000000000 +0100
  92242. @@ -12,9 +12,8 @@
  92243. Lesser General Public License for more details.
  92244. You should have received a copy of the GNU Lesser General Public
  92245. - License along with the GNU C Library; if not, write to the Free
  92246. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92247. - 02111-1307 USA. */
  92248. + License along with the GNU C Library; if not, see
  92249. + <http://www.gnu.org/licenses/>. */
  92250. #include <sysdep.h>
  92251. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c
  92252. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c 2012-05-15 09:20:09.000000000 +0200
  92253. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c 2014-02-03 12:32:57.000000000 +0100
  92254. @@ -13,9 +13,8 @@
  92255. Lesser General Public License for more details.
  92256. You should have received a copy of the GNU Lesser General Public
  92257. - License along with the GNU C Library; if not, write to the Free
  92258. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92259. - 02111-1307 USA. */
  92260. + License along with the GNU C Library; if not, see
  92261. + <http://www.gnu.org/licenses/>. */
  92262. #include <assert.h>
  92263. #include <stdlib.h>
  92264. @@ -58,9 +57,15 @@
  92265. #endif
  92266. }
  92267. -extern __typeof(fork) __libc_fork;
  92268. pid_t
  92269. -__libc_fork (void)
  92270. +#if defined __arm__ && defined __thumb__ && __GNUC_PREREQ (4,6)
  92271. +/* GCC PR target/53735
  92272. + * In thumb1 we run out of registers when compiling with Os so relax that
  92273. + * to have more registers available for spilling by using O2 here.
  92274. + */
  92275. +attribute_optimize("O2")
  92276. +#endif
  92277. +fork (void)
  92278. {
  92279. pid_t pid;
  92280. struct used_handler
  92281. @@ -223,7 +228,4 @@
  92282. return pid;
  92283. }
  92284. -weak_alias(__libc_fork,__fork)
  92285. -libc_hidden_proto(fork)
  92286. -weak_alias(__libc_fork,fork)
  92287. -libc_hidden_weak(fork)
  92288. +libc_hidden_def(fork)
  92289. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h
  92290. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h 2012-05-15 09:20:09.000000000 +0200
  92291. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/fork.h 2014-02-03 12:32:57.000000000 +0100
  92292. @@ -13,9 +13,8 @@
  92293. Lesser General Public License for more details.
  92294. You should have received a copy of the GNU Lesser General Public
  92295. - License along with the GNU C Library; if not, write to the Free
  92296. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92297. - 02111-1307 USA. */
  92298. + License along with the GNU C Library; if not, see
  92299. + <http://www.gnu.org/licenses/>. */
  92300. #include <lowlevellock.h>
  92301. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c
  92302. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c 2012-05-15 09:20:09.000000000 +0200
  92303. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/getpid.c 2014-02-03 12:32:57.000000000 +0100
  92304. @@ -13,14 +13,17 @@
  92305. Lesser General Public License for more details.
  92306. You should have received a copy of the GNU Lesser General Public
  92307. - License along with the GNU C Library; if not, write to the Free
  92308. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92309. - 02111-1307 USA. */
  92310. + License along with the GNU C Library; if not, see
  92311. + <http://www.gnu.org/licenses/>. */
  92312. #include <unistd.h>
  92313. #include <tls.h>
  92314. #include <sysdep.h>
  92315. +#ifdef __NR_getxpid
  92316. +# undef __NR_getpid
  92317. +# define __NR_getpid __NR_getxpid
  92318. +#endif
  92319. #ifndef NOT_IN_libc
  92320. static inline __attribute__((always_inline)) pid_t really_getpid (pid_t oldval);
  92321. @@ -46,8 +49,7 @@
  92322. }
  92323. #endif
  92324. -extern __typeof(getpid) __getpid;
  92325. -pid_t
  92326. +static pid_t
  92327. __getpid (void)
  92328. {
  92329. #ifdef NOT_IN_libc
  92330. @@ -60,6 +62,8 @@
  92331. #endif
  92332. return result;
  92333. }
  92334. -libc_hidden_proto(getpid)
  92335. weak_alias(__getpid, getpid)
  92336. libc_hidden_weak(getpid)
  92337. +#if !defined NOT_IN_libc && !defined __NR_getppid
  92338. +strong_alias(getpid,getppid)
  92339. +#endif
  92340. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
  92341. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  92342. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  92343. @@ -12,9 +12,8 @@
  92344. Lesser General Public License for more details.
  92345. You should have received a copy of the GNU Lesser General Public
  92346. - License along with the GNU C Library; if not, write to the Free
  92347. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92348. - 02111-1307 USA. */
  92349. + License along with the GNU C Library; if not, see
  92350. + <http://www.gnu.org/licenses/>. */
  92351. #ifndef _BITS_PTHREADTYPES_H
  92352. #define _BITS_PTHREADTYPES_H 1
  92353. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h
  92354. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  92355. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  92356. @@ -13,9 +13,8 @@
  92357. Lesser General Public License for more details.
  92358. You should have received a copy of the GNU Lesser General Public
  92359. - License along with the GNU C Library; if not, write to the Free
  92360. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92361. - 02111-1307 USA. */
  92362. + License along with the GNU C Library; if not, see
  92363. + <http://www.gnu.org/licenses/>. */
  92364. #ifndef _SEMAPHORE_H
  92365. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  92366. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c
  92367. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c 2012-05-15 09:20:09.000000000 +0200
  92368. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/createthread.c 2014-02-03 12:32:57.000000000 +0100
  92369. @@ -13,9 +13,8 @@
  92370. Lesser General Public License for more details.
  92371. You should have received a copy of the GNU Lesser General Public
  92372. - License along with the GNU C Library; if not, write to the Free
  92373. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92374. - 02111-1307 USA. */
  92375. + License along with the GNU C Library; if not, see
  92376. + <http://www.gnu.org/licenses/>. */
  92377. /* The "thread register" gets initialized from a segment descriptor.
  92378. Initialize such a descriptor first. */
  92379. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c
  92380. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c 2012-05-15 09:20:09.000000000 +0200
  92381. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/fork.c 2014-02-03 12:32:57.000000000 +0100
  92382. @@ -13,9 +13,8 @@
  92383. Lesser General Public License for more details.
  92384. You should have received a copy of the GNU Lesser General Public
  92385. - License along with the GNU C Library; if not, write to the Free
  92386. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92387. - 02111-1307 USA. */
  92388. + License along with the GNU C Library; if not, see
  92389. + <http://www.gnu.org/licenses/>. */
  92390. #include <sched.h>
  92391. #include <signal.h>
  92392. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
  92393. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  92394. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  92395. @@ -13,8 +13,7 @@
  92396. Lesser General Public License for more details.
  92397. You should have received a copy of the GNU Lesser General Public
  92398. - License along with the GNU C Library; if not, write to the Free
  92399. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92400. - 02111-1307 USA. */
  92401. + License along with the GNU C Library; if not, see
  92402. + <http://www.gnu.org/licenses/>. */
  92403. #include "lowlevellock.S"
  92404. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
  92405. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  92406. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  92407. @@ -13,9 +13,8 @@
  92408. Lesser General Public License for more details.
  92409. You should have received a copy of the GNU Lesser General Public
  92410. - License along with the GNU C Library; if not, write to the Free
  92411. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92412. - 02111-1307 USA. */
  92413. + License along with the GNU C Library; if not, see
  92414. + <http://www.gnu.org/licenses/>. */
  92415. #include <sysdep.h>
  92416. #include <pthread-errnos.h>
  92417. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S
  92418. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  92419. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  92420. @@ -13,9 +13,8 @@
  92421. Lesser General Public License for more details.
  92422. You should have received a copy of the GNU Lesser General Public
  92423. - License along with the GNU C Library; if not, write to the Free
  92424. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92425. - 02111-1307 USA. */
  92426. + License along with the GNU C Library; if not, see
  92427. + <http://www.gnu.org/licenses/>. */
  92428. #include <sysdep.h>
  92429. #include <pthread-errnos.h>
  92430. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
  92431. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S 2012-05-15 09:20:09.000000000 +0200
  92432. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  92433. @@ -13,9 +13,8 @@
  92434. Lesser General Public License for more details.
  92435. You should have received a copy of the GNU Lesser General Public
  92436. - License along with the GNU C Library; if not, write to the Free
  92437. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92438. - 02111-1307 USA. */
  92439. + License along with the GNU C Library; if not, see
  92440. + <http://www.gnu.org/licenses/>. */
  92441. #include <sysdep.h>
  92442. #include <lowlevellock.h>
  92443. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
  92444. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S 2012-05-15 09:20:09.000000000 +0200
  92445. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  92446. @@ -13,9 +13,8 @@
  92447. Lesser General Public License for more details.
  92448. You should have received a copy of the GNU Lesser General Public
  92449. - License along with the GNU C Library; if not, write to the Free
  92450. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92451. - 02111-1307 USA. */
  92452. + License along with the GNU C Library; if not, see
  92453. + <http://www.gnu.org/licenses/>. */
  92454. #include <sysdep.h>
  92455. #include <lowlevellock.h>
  92456. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
  92457. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S 2012-05-15 09:20:09.000000000 +0200
  92458. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  92459. @@ -13,9 +13,8 @@
  92460. Lesser General Public License for more details.
  92461. You should have received a copy of the GNU Lesser General Public
  92462. - License along with the GNU C Library; if not, write to the Free
  92463. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92464. - 02111-1307 USA. */
  92465. + License along with the GNU C Library; if not, see
  92466. + <http://www.gnu.org/licenses/>. */
  92467. #include <sysdep.h>
  92468. #include <lowlevellock.h>
  92469. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
  92470. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  92471. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  92472. @@ -13,9 +13,8 @@
  92473. Lesser General Public License for more details.
  92474. You should have received a copy of the GNU Lesser General Public
  92475. - License along with the GNU C Library; if not, write to the Free
  92476. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92477. - 02111-1307 USA. */
  92478. + License along with the GNU C Library; if not, see
  92479. + <http://www.gnu.org/licenses/>. */
  92480. #include <sysdep.h>
  92481. #include <lowlevellock.h>
  92482. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
  92483. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2012-05-15 09:20:09.000000000 +0200
  92484. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  92485. @@ -13,9 +13,8 @@
  92486. Lesser General Public License for more details.
  92487. You should have received a copy of the GNU Lesser General Public
  92488. - License along with the GNU C Library; if not, write to the Free
  92489. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92490. - 02111-1307 USA. */
  92491. + License along with the GNU C Library; if not, see
  92492. + <http://www.gnu.org/licenses/>. */
  92493. #include <sysdep.h>
  92494. #include <lowlevellock.h>
  92495. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
  92496. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S 2012-05-15 09:20:09.000000000 +0200
  92497. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  92498. @@ -13,9 +13,8 @@
  92499. Lesser General Public License for more details.
  92500. You should have received a copy of the GNU Lesser General Public
  92501. - License along with the GNU C Library; if not, write to the Free
  92502. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92503. - 02111-1307 USA. */
  92504. + License along with the GNU C Library; if not, see
  92505. + <http://www.gnu.org/licenses/>. */
  92506. #include <sysdep.h>
  92507. #include <lowlevellock.h>
  92508. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
  92509. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S 2012-05-15 09:20:09.000000000 +0200
  92510. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  92511. @@ -13,9 +13,8 @@
  92512. Lesser General Public License for more details.
  92513. You should have received a copy of the GNU Lesser General Public
  92514. - License along with the GNU C Library; if not, write to the Free
  92515. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92516. - 02111-1307 USA. */
  92517. + License along with the GNU C Library; if not, see
  92518. + <http://www.gnu.org/licenses/>. */
  92519. #include <sysdep.h>
  92520. #include <lowlevellock.h>
  92521. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
  92522. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S 2012-05-15 09:20:09.000000000 +0200
  92523. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  92524. @@ -13,9 +13,8 @@
  92525. Lesser General Public License for more details.
  92526. You should have received a copy of the GNU Lesser General Public
  92527. - License along with the GNU C Library; if not, write to the Free
  92528. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92529. - 02111-1307 USA. */
  92530. + License along with the GNU C Library; if not, see
  92531. + <http://www.gnu.org/licenses/>. */
  92532. #include <sysdep.h>
  92533. #include <lowlevellock.h>
  92534. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
  92535. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S 2012-05-15 09:20:09.000000000 +0200
  92536. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  92537. @@ -13,9 +13,8 @@
  92538. Lesser General Public License for more details.
  92539. You should have received a copy of the GNU Lesser General Public
  92540. - License along with the GNU C Library; if not, write to the Free
  92541. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92542. - 02111-1307 USA. */
  92543. + License along with the GNU C Library; if not, see
  92544. + <http://www.gnu.org/licenses/>. */
  92545. #include <sysdep.h>
  92546. #include <lowlevellock.h>
  92547. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
  92548. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S 2012-05-15 09:20:09.000000000 +0200
  92549. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  92550. @@ -13,9 +13,8 @@
  92551. Lesser General Public License for more details.
  92552. You should have received a copy of the GNU Lesser General Public
  92553. - License along with the GNU C Library; if not, write to the Free
  92554. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92555. - 02111-1307 USA. */
  92556. + License along with the GNU C Library; if not, see
  92557. + <http://www.gnu.org/licenses/>. */
  92558. #include <sysdep.h>
  92559. #include <lowlevellock.h>
  92560. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
  92561. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  92562. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  92563. @@ -13,9 +13,8 @@
  92564. Lesser General Public License for more details.
  92565. You should have received a copy of the GNU Lesser General Public
  92566. - License along with the GNU C Library; if not, write to the Free
  92567. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92568. - 02111-1307 USA. */
  92569. + License along with the GNU C Library; if not, see
  92570. + <http://www.gnu.org/licenses/>. */
  92571. #include <sysdep.h>
  92572. #include <pthread-errnos.h>
  92573. @@ -25,10 +24,10 @@
  92574. .text
  92575. - .globl __new_sem_post
  92576. - .type __new_sem_post,@function
  92577. + .globl sem_post
  92578. + .type sem_post,@function
  92579. .align 16
  92580. -__new_sem_post:
  92581. +sem_post:
  92582. cfi_startproc
  92583. pushl %ebx
  92584. cfi_adjust_cfa_offset(4)
  92585. @@ -126,9 +125,7 @@
  92586. cfi_restore(%ebx)
  92587. ret
  92588. cfi_endproc
  92589. - .size __new_sem_post,.-__new_sem_post
  92590. -weak_alias(__new_sem_post, sem_post)
  92591. -
  92592. + .size sem_post,.-sem_post
  92593. #ifdef __PIC__
  92594. .section .gnu.linkonce.t.__x86.get_pc_thunk.bx,"ax",@progbits
  92595. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
  92596. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  92597. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  92598. @@ -13,9 +13,8 @@
  92599. Lesser General Public License for more details.
  92600. You should have received a copy of the GNU Lesser General Public
  92601. - License along with the GNU C Library; if not, write to the Free
  92602. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92603. - 02111-1307 USA. */
  92604. + License along with the GNU C Library; if not, see
  92605. + <http://www.gnu.org/licenses/>. */
  92606. #include <sysdep.h>
  92607. #include <pthread-errnos.h>
  92608. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
  92609. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  92610. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  92611. @@ -13,9 +13,8 @@
  92612. Lesser General Public License for more details.
  92613. You should have received a copy of the GNU Lesser General Public
  92614. - License along with the GNU C Library; if not, write to the Free
  92615. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92616. - 02111-1307 USA. */
  92617. + License along with the GNU C Library; if not, see
  92618. + <http://www.gnu.org/licenses/>. */
  92619. #include <sysdep.h>
  92620. #include <pthread-errnos.h>
  92621. @@ -23,10 +22,10 @@
  92622. .text
  92623. - .globl __new_sem_trywait
  92624. - .type __new_sem_trywait,@function
  92625. + .globl sem_trywait
  92626. + .type sem_trywait,@function
  92627. .align 16
  92628. -__new_sem_trywait:
  92629. +sem_trywait:
  92630. movl 4(%esp), %ecx
  92631. movl (%ecx), %eax
  92632. @@ -63,9 +62,7 @@
  92633. #endif
  92634. orl $-1, %eax
  92635. ret
  92636. - .size __new_sem_trywait,.-__new_sem_trywait
  92637. -weak_alias(__new_sem_trywait, sem_trywait)
  92638. -
  92639. + .size sem_trywait,.-sem_trywait
  92640. #ifdef __PIC__
  92641. .section .gnu.linkonce.t.__x86.get_pc_thunk.cx,"ax",@progbits
  92642. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S
  92643. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  92644. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  92645. @@ -13,9 +13,8 @@
  92646. Lesser General Public License for more details.
  92647. You should have received a copy of the GNU Lesser General Public
  92648. - License along with the GNU C Library; if not, write to the Free
  92649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92650. - 02111-1307 USA. */
  92651. + License along with the GNU C Library; if not, see
  92652. + <http://www.gnu.org/licenses/>. */
  92653. #include <sysdep.h>
  92654. #include <pthread-errnos.h>
  92655. @@ -29,10 +28,10 @@
  92656. .text
  92657. - .globl __new_sem_wait
  92658. - .type __new_sem_wait,@function
  92659. + .globl sem_wait
  92660. + .type sem_wait,@function
  92661. .align 16
  92662. -__new_sem_wait:
  92663. +sem_wait:
  92664. .LSTARTCODE:
  92665. pushl %ebx
  92666. .Lpush_ebx:
  92667. @@ -129,8 +128,7 @@
  92668. orl $-1, %eax
  92669. jmp 9b
  92670. - .size __new_sem_wait,.-__new_sem_wait
  92671. -weak_alias(__new_sem_wait, sem_wait)
  92672. + .size sem_wait,.-sem_wait
  92673. .type sem_wait_cleanup,@function
  92674. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S
  92675. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  92676. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  92677. @@ -13,8 +13,7 @@
  92678. Lesser General Public License for more details.
  92679. You should have received a copy of the GNU Lesser General Public
  92680. - License along with the GNU C Library; if not, write to the Free
  92681. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92682. - 02111-1307 USA. */
  92683. + License along with the GNU C Library; if not, see
  92684. + <http://www.gnu.org/licenses/>. */
  92685. #include "../i486/lowlevellock.S"
  92686. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S
  92687. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  92688. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  92689. @@ -13,8 +13,7 @@
  92690. Lesser General Public License for more details.
  92691. You should have received a copy of the GNU Lesser General Public
  92692. - License along with the GNU C Library; if not, write to the Free
  92693. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92694. - 02111-1307 USA. */
  92695. + License along with the GNU C Library; if not, see
  92696. + <http://www.gnu.org/licenses/>. */
  92697. #include "../i486/lowlevelrobustlock.S"
  92698. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S
  92699. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S 2012-05-15 09:20:09.000000000 +0200
  92700. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  92701. @@ -13,8 +13,7 @@
  92702. Lesser General Public License for more details.
  92703. You should have received a copy of the GNU Lesser General Public
  92704. - License along with the GNU C Library; if not, write to the Free
  92705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92706. - 02111-1307 USA. */
  92707. + License along with the GNU C Library; if not, see
  92708. + <http://www.gnu.org/licenses/>. */
  92709. #include "../i486/pthread_barrier_wait.S"
  92710. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S
  92711. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S 2012-05-15 09:20:09.000000000 +0200
  92712. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  92713. @@ -13,8 +13,7 @@
  92714. Lesser General Public License for more details.
  92715. You should have received a copy of the GNU Lesser General Public
  92716. - License along with the GNU C Library; if not, write to the Free
  92717. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92718. - 02111-1307 USA. */
  92719. + License along with the GNU C Library; if not, see
  92720. + <http://www.gnu.org/licenses/>. */
  92721. #include "../i486/pthread_cond_broadcast.S"
  92722. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S
  92723. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S 2012-05-15 09:20:09.000000000 +0200
  92724. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  92725. @@ -13,8 +13,7 @@
  92726. Lesser General Public License for more details.
  92727. You should have received a copy of the GNU Lesser General Public
  92728. - License along with the GNU C Library; if not, write to the Free
  92729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92730. - 02111-1307 USA. */
  92731. + License along with the GNU C Library; if not, see
  92732. + <http://www.gnu.org/licenses/>. */
  92733. #include "../i486/pthread_cond_signal.S"
  92734. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S
  92735. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  92736. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  92737. @@ -13,8 +13,7 @@
  92738. Lesser General Public License for more details.
  92739. You should have received a copy of the GNU Lesser General Public
  92740. - License along with the GNU C Library; if not, write to the Free
  92741. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92742. - 02111-1307 USA. */
  92743. + License along with the GNU C Library; if not, see
  92744. + <http://www.gnu.org/licenses/>. */
  92745. #include "../i486/pthread_cond_timedwait.S"
  92746. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S
  92747. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S 2012-05-15 09:20:09.000000000 +0200
  92748. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  92749. @@ -13,8 +13,7 @@
  92750. Lesser General Public License for more details.
  92751. You should have received a copy of the GNU Lesser General Public
  92752. - License along with the GNU C Library; if not, write to the Free
  92753. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92754. - 02111-1307 USA. */
  92755. + License along with the GNU C Library; if not, see
  92756. + <http://www.gnu.org/licenses/>. */
  92757. #include "../i486/pthread_cond_wait.S"
  92758. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S
  92759. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S 2012-05-15 09:20:09.000000000 +0200
  92760. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  92761. @@ -13,8 +13,7 @@
  92762. Lesser General Public License for more details.
  92763. You should have received a copy of the GNU Lesser General Public
  92764. - License along with the GNU C Library; if not, write to the Free
  92765. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92766. - 02111-1307 USA. */
  92767. + License along with the GNU C Library; if not, see
  92768. + <http://www.gnu.org/licenses/>. */
  92769. #include "../i486/pthread_rwlock_rdlock.S"
  92770. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S
  92771. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S 2012-05-15 09:20:09.000000000 +0200
  92772. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  92773. @@ -13,8 +13,7 @@
  92774. Lesser General Public License for more details.
  92775. You should have received a copy of the GNU Lesser General Public
  92776. - License along with the GNU C Library; if not, write to the Free
  92777. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92778. - 02111-1307 USA. */
  92779. + License along with the GNU C Library; if not, see
  92780. + <http://www.gnu.org/licenses/>. */
  92781. #include "../i486/pthread_rwlock_timedrdlock.S"
  92782. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S
  92783. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S 2012-05-15 09:20:09.000000000 +0200
  92784. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  92785. @@ -13,8 +13,7 @@
  92786. Lesser General Public License for more details.
  92787. You should have received a copy of the GNU Lesser General Public
  92788. - License along with the GNU C Library; if not, write to the Free
  92789. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92790. - 02111-1307 USA. */
  92791. + License along with the GNU C Library; if not, see
  92792. + <http://www.gnu.org/licenses/>. */
  92793. #include "../i486/pthread_rwlock_timedwrlock.S"
  92794. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S
  92795. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S 2012-05-15 09:20:09.000000000 +0200
  92796. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  92797. @@ -13,8 +13,7 @@
  92798. Lesser General Public License for more details.
  92799. You should have received a copy of the GNU Lesser General Public
  92800. - License along with the GNU C Library; if not, write to the Free
  92801. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92802. - 02111-1307 USA. */
  92803. + License along with the GNU C Library; if not, see
  92804. + <http://www.gnu.org/licenses/>. */
  92805. #include "../i486/pthread_rwlock_unlock.S"
  92806. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S
  92807. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S 2012-05-15 09:20:09.000000000 +0200
  92808. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  92809. @@ -13,8 +13,7 @@
  92810. Lesser General Public License for more details.
  92811. You should have received a copy of the GNU Lesser General Public
  92812. - License along with the GNU C Library; if not, write to the Free
  92813. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92814. - 02111-1307 USA. */
  92815. + License along with the GNU C Library; if not, see
  92816. + <http://www.gnu.org/licenses/>. */
  92817. #include "../i486/pthread_rwlock_wrlock.S"
  92818. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S
  92819. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  92820. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  92821. @@ -13,8 +13,7 @@
  92822. Lesser General Public License for more details.
  92823. You should have received a copy of the GNU Lesser General Public
  92824. - License along with the GNU C Library; if not, write to the Free
  92825. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92826. - 02111-1307 USA. */
  92827. + License along with the GNU C Library; if not, see
  92828. + <http://www.gnu.org/licenses/>. */
  92829. #include "../i486/sem_post.S"
  92830. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S
  92831. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  92832. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  92833. @@ -13,8 +13,7 @@
  92834. Lesser General Public License for more details.
  92835. You should have received a copy of the GNU Lesser General Public
  92836. - License along with the GNU C Library; if not, write to the Free
  92837. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92838. - 02111-1307 USA. */
  92839. + License along with the GNU C Library; if not, see
  92840. + <http://www.gnu.org/licenses/>. */
  92841. #include "../i486/sem_timedwait.S"
  92842. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S
  92843. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  92844. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  92845. @@ -13,8 +13,7 @@
  92846. Lesser General Public License for more details.
  92847. You should have received a copy of the GNU Lesser General Public
  92848. - License along with the GNU C Library; if not, write to the Free
  92849. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92850. - 02111-1307 USA. */
  92851. + License along with the GNU C Library; if not, see
  92852. + <http://www.gnu.org/licenses/>. */
  92853. #include "../i486/sem_trywait.S"
  92854. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S
  92855. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  92856. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i586/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  92857. @@ -13,8 +13,7 @@
  92858. Lesser General Public License for more details.
  92859. You should have received a copy of the GNU Lesser General Public
  92860. - License along with the GNU C Library; if not, write to the Free
  92861. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92862. - 02111-1307 USA. */
  92863. + License along with the GNU C Library; if not, see
  92864. + <http://www.gnu.org/licenses/>. */
  92865. #include "../i486/sem_wait.S"
  92866. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S
  92867. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  92868. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  92869. @@ -13,8 +13,7 @@
  92870. Lesser General Public License for more details.
  92871. You should have received a copy of the GNU Lesser General Public
  92872. - License along with the GNU C Library; if not, write to the Free
  92873. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92874. - 02111-1307 USA. */
  92875. + License along with the GNU C Library; if not, see
  92876. + <http://www.gnu.org/licenses/>. */
  92877. #include "../i486/lowlevellock.S"
  92878. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S
  92879. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  92880. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  92881. @@ -13,8 +13,7 @@
  92882. Lesser General Public License for more details.
  92883. You should have received a copy of the GNU Lesser General Public
  92884. - License along with the GNU C Library; if not, write to the Free
  92885. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92886. - 02111-1307 USA. */
  92887. + License along with the GNU C Library; if not, see
  92888. + <http://www.gnu.org/licenses/>. */
  92889. #include "../i486/lowlevelrobustlock.S"
  92890. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S
  92891. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S 2012-05-15 09:20:09.000000000 +0200
  92892. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  92893. @@ -13,8 +13,7 @@
  92894. Lesser General Public License for more details.
  92895. You should have received a copy of the GNU Lesser General Public
  92896. - License along with the GNU C Library; if not, write to the Free
  92897. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92898. - 02111-1307 USA. */
  92899. + License along with the GNU C Library; if not, see
  92900. + <http://www.gnu.org/licenses/>. */
  92901. #include "../i486/pthread_barrier_wait.S"
  92902. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S
  92903. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S 2012-05-15 09:20:09.000000000 +0200
  92904. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  92905. @@ -13,8 +13,7 @@
  92906. Lesser General Public License for more details.
  92907. You should have received a copy of the GNU Lesser General Public
  92908. - License along with the GNU C Library; if not, write to the Free
  92909. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92910. - 02111-1307 USA. */
  92911. + License along with the GNU C Library; if not, see
  92912. + <http://www.gnu.org/licenses/>. */
  92913. #include "../i486/pthread_cond_broadcast.S"
  92914. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S
  92915. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S 2012-05-15 09:20:09.000000000 +0200
  92916. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  92917. @@ -13,8 +13,7 @@
  92918. Lesser General Public License for more details.
  92919. You should have received a copy of the GNU Lesser General Public
  92920. - License along with the GNU C Library; if not, write to the Free
  92921. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92922. - 02111-1307 USA. */
  92923. + License along with the GNU C Library; if not, see
  92924. + <http://www.gnu.org/licenses/>. */
  92925. #include "../i486/pthread_cond_signal.S"
  92926. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S
  92927. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  92928. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  92929. @@ -13,9 +13,8 @@
  92930. Lesser General Public License for more details.
  92931. You should have received a copy of the GNU Lesser General Public
  92932. - License along with the GNU C Library; if not, write to the Free
  92933. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92934. - 02111-1307 USA. */
  92935. + License along with the GNU C Library; if not, see
  92936. + <http://www.gnu.org/licenses/>. */
  92937. #define HAVE_CMOV 1
  92938. #include "../i486/pthread_cond_timedwait.S"
  92939. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S
  92940. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S 2012-05-15 09:20:09.000000000 +0200
  92941. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  92942. @@ -13,8 +13,7 @@
  92943. Lesser General Public License for more details.
  92944. You should have received a copy of the GNU Lesser General Public
  92945. - License along with the GNU C Library; if not, write to the Free
  92946. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92947. - 02111-1307 USA. */
  92948. + License along with the GNU C Library; if not, see
  92949. + <http://www.gnu.org/licenses/>. */
  92950. #include "../i486/pthread_cond_wait.S"
  92951. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S
  92952. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S 2012-05-15 09:20:09.000000000 +0200
  92953. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  92954. @@ -13,8 +13,7 @@
  92955. Lesser General Public License for more details.
  92956. You should have received a copy of the GNU Lesser General Public
  92957. - License along with the GNU C Library; if not, write to the Free
  92958. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92959. - 02111-1307 USA. */
  92960. + License along with the GNU C Library; if not, see
  92961. + <http://www.gnu.org/licenses/>. */
  92962. #include "../i486/pthread_rwlock_rdlock.S"
  92963. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S
  92964. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S 2012-05-15 09:20:09.000000000 +0200
  92965. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  92966. @@ -13,8 +13,7 @@
  92967. Lesser General Public License for more details.
  92968. You should have received a copy of the GNU Lesser General Public
  92969. - License along with the GNU C Library; if not, write to the Free
  92970. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92971. - 02111-1307 USA. */
  92972. + License along with the GNU C Library; if not, see
  92973. + <http://www.gnu.org/licenses/>. */
  92974. #include "../i486/pthread_rwlock_timedrdlock.S"
  92975. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S
  92976. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S 2012-05-15 09:20:09.000000000 +0200
  92977. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  92978. @@ -13,8 +13,7 @@
  92979. Lesser General Public License for more details.
  92980. You should have received a copy of the GNU Lesser General Public
  92981. - License along with the GNU C Library; if not, write to the Free
  92982. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92983. - 02111-1307 USA. */
  92984. + License along with the GNU C Library; if not, see
  92985. + <http://www.gnu.org/licenses/>. */
  92986. #include "../i486/pthread_rwlock_timedwrlock.S"
  92987. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S
  92988. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S 2012-05-15 09:20:09.000000000 +0200
  92989. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  92990. @@ -13,9 +13,8 @@
  92991. Lesser General Public License for more details.
  92992. You should have received a copy of the GNU Lesser General Public
  92993. - License along with the GNU C Library; if not, write to the Free
  92994. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  92995. - 02111-1307 USA. */
  92996. + License along with the GNU C Library; if not, see
  92997. + <http://www.gnu.org/licenses/>. */
  92998. #define HAVE_CMOV 1
  92999. #include "../i486/pthread_rwlock_unlock.S"
  93000. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S
  93001. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S 2012-05-15 09:20:09.000000000 +0200
  93002. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  93003. @@ -13,8 +13,7 @@
  93004. Lesser General Public License for more details.
  93005. You should have received a copy of the GNU Lesser General Public
  93006. - License along with the GNU C Library; if not, write to the Free
  93007. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93008. - 02111-1307 USA. */
  93009. + License along with the GNU C Library; if not, see
  93010. + <http://www.gnu.org/licenses/>. */
  93011. #include "../i486/pthread_rwlock_wrlock.S"
  93012. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S
  93013. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  93014. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  93015. @@ -13,8 +13,7 @@
  93016. Lesser General Public License for more details.
  93017. You should have received a copy of the GNU Lesser General Public
  93018. - License along with the GNU C Library; if not, write to the Free
  93019. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93020. - 02111-1307 USA. */
  93021. + License along with the GNU C Library; if not, see
  93022. + <http://www.gnu.org/licenses/>. */
  93023. #include "../i486/sem_post.S"
  93024. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S
  93025. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  93026. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  93027. @@ -13,8 +13,7 @@
  93028. Lesser General Public License for more details.
  93029. You should have received a copy of the GNU Lesser General Public
  93030. - License along with the GNU C Library; if not, write to the Free
  93031. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93032. - 02111-1307 USA. */
  93033. + License along with the GNU C Library; if not, see
  93034. + <http://www.gnu.org/licenses/>. */
  93035. #include "../i486/sem_timedwait.S"
  93036. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S
  93037. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  93038. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  93039. @@ -13,8 +13,7 @@
  93040. Lesser General Public License for more details.
  93041. You should have received a copy of the GNU Lesser General Public
  93042. - License along with the GNU C Library; if not, write to the Free
  93043. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93044. - 02111-1307 USA. */
  93045. + License along with the GNU C Library; if not, see
  93046. + <http://www.gnu.org/licenses/>. */
  93047. #include "../i486/sem_trywait.S"
  93048. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S
  93049. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  93050. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  93051. @@ -13,8 +13,7 @@
  93052. Lesser General Public License for more details.
  93053. You should have received a copy of the GNU Lesser General Public
  93054. - License along with the GNU C Library; if not, write to the Free
  93055. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93056. - 02111-1307 USA. */
  93057. + License along with the GNU C Library; if not, see
  93058. + <http://www.gnu.org/licenses/>. */
  93059. #include "../i486/sem_wait.S"
  93060. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h
  93061. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  93062. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  93063. @@ -13,9 +13,8 @@
  93064. Lesser General Public License for more details.
  93065. You should have received a copy of the GNU Lesser General Public
  93066. - License along with the GNU C Library; if not, write to the Free
  93067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93068. - 02111-1307 USA. */
  93069. + License along with the GNU C Library; if not, see
  93070. + <http://www.gnu.org/licenses/>. */
  93071. #ifndef _LOWLEVELLOCK_H
  93072. #define _LOWLEVELLOCK_H 1
  93073. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
  93074. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S 2012-05-15 09:20:09.000000000 +0200
  93075. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S 2014-02-03 12:32:57.000000000 +0100
  93076. @@ -13,9 +13,8 @@
  93077. Lesser General Public License for more details.
  93078. You should have received a copy of the GNU Lesser General Public
  93079. - License along with the GNU C Library; if not, write to the Free
  93080. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93081. - 02111-1307 USA. */
  93082. + License along with the GNU C Library; if not, see
  93083. + <http://www.gnu.org/licenses/>. */
  93084. #include <unwindbuf.h>
  93085. #include <sysdep.h>
  93086. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S
  93087. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  93088. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  93089. @@ -13,9 +13,8 @@
  93090. Lesser General Public License for more details.
  93091. You should have received a copy of the GNU Lesser General Public
  93092. - License along with the GNU C Library; if not, write to the Free
  93093. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93094. - 02111-1307 USA. */
  93095. + License along with the GNU C Library; if not, see
  93096. + <http://www.gnu.org/licenses/>. */
  93097. #include <sysdep.h>
  93098. #define _ERRNO_H 1
  93099. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h
  93100. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2012-05-15 09:20:09.000000000 +0200
  93101. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/smp.h 2014-02-03 12:32:57.000000000 +0100
  93102. @@ -14,8 +14,7 @@
  93103. You should have received a copy of the GNU Library General Public
  93104. License along with the GNU C Library; see the file COPYING.LIB. If not,
  93105. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  93106. - Boston, MA 02111-1307, USA. */
  93107. + see <http://www.gnu.org/licenses/>. */
  93108. #include <errno.h>
  93109. #include <fcntl.h>
  93110. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
  93111. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  93112. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  93113. @@ -13,9 +13,8 @@
  93114. Lesser General Public License for more details.
  93115. You should have received a copy of the GNU Lesser General Public
  93116. - License along with the GNU C Library; if not, write to the Free
  93117. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93118. - 02111-1307 USA. */
  93119. + License along with the GNU C Library; if not, see
  93120. + <http://www.gnu.org/licenses/>. */
  93121. #include <sysdep.h>
  93122. #include <tls.h>
  93123. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S
  93124. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S 2012-05-15 09:20:09.000000000 +0200
  93125. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/i386/vfork.S 2014-02-03 12:32:57.000000000 +0100
  93126. @@ -12,9 +12,8 @@
  93127. Lesser General Public License for more details.
  93128. You should have received a copy of the GNU Lesser General Public
  93129. - License along with the GNU C Library; if not, write to the Free
  93130. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93131. - 02111-1307 USA. */
  93132. + License along with the GNU C Library; if not, see
  93133. + <http://www.gnu.org/licenses/>. */
  93134. #include <tcb-offsets.h>
  93135. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h
  93136. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h 2012-05-15 09:20:09.000000000 +0200
  93137. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/internaltypes.h 2014-02-03 12:32:57.000000000 +0100
  93138. @@ -13,9 +13,8 @@
  93139. Lesser General Public License for more details.
  93140. You should have received a copy of the GNU Lesser General Public
  93141. - License along with the GNU C Library; if not, write to the Free
  93142. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93143. - 02111-1307 USA. */
  93144. + License along with the GNU C Library; if not, see
  93145. + <http://www.gnu.org/licenses/>. */
  93146. #ifndef _INTERNALTYPES_H
  93147. #define _INTERNALTYPES_H 1
  93148. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c
  93149. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c 2012-05-15 09:20:09.000000000 +0200
  93150. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/jmp-unwind.c 2014-02-03 12:32:57.000000000 +0100
  93151. @@ -13,9 +13,8 @@
  93152. Lesser General Public License for more details.
  93153. You should have received a copy of the GNU Lesser General Public
  93154. - License along with the GNU C Library; if not, write to the Free
  93155. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93156. - 02111-1307 USA. */
  93157. + License along with the GNU C Library; if not, see
  93158. + <http://www.gnu.org/licenses/>. */
  93159. #include <setjmp.h>
  93160. #include <stddef.h>
  93161. @@ -25,7 +24,6 @@
  93162. #pragma weak __pthread_cleanup_upto
  93163. -void _longjmp_unwind (jmp_buf env, int val);
  93164. void
  93165. _longjmp_unwind (jmp_buf env, int val)
  93166. {
  93167. @@ -38,3 +36,4 @@
  93168. __pthread_cleanup_upto (env->__jmpbuf, CURRENT_STACK_FRAME);
  93169. #endif
  93170. }
  93171. +libc_hidden_def(_longjmp_unwind)
  93172. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c
  93173. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  93174. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  93175. @@ -13,9 +13,8 @@
  93176. Lesser General Public License for more details.
  93177. You should have received a copy of the GNU Lesser General Public
  93178. - License along with the GNU C Library; if not, write to the Free
  93179. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93180. - 02111-1307 USA. */
  93181. + License along with the GNU C Library; if not, see
  93182. + <http://www.gnu.org/licenses/>. */
  93183. /* No difference to lowlevellock.c, except we lose a couple of functions. */
  93184. #include "lowlevellock.c"
  93185. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c
  93186. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c 2012-05-15 09:20:09.000000000 +0200
  93187. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/libc_multiple_threads.c 2014-02-03 12:32:57.000000000 +0100
  93188. @@ -13,9 +13,8 @@
  93189. Lesser General Public License for more details.
  93190. You should have received a copy of the GNU Lesser General Public
  93191. - License along with the GNU C Library; if not, write to the Free
  93192. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93193. - 02111-1307 USA. */
  93194. + License along with the GNU C Library; if not, see
  93195. + <http://www.gnu.org/licenses/>. */
  93196. #include <pthreadP.h>
  93197. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
  93198. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c 2012-05-15 09:20:09.000000000 +0200
  93199. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c 2014-02-03 12:32:57.000000000 +0100
  93200. @@ -13,9 +13,8 @@
  93201. Lesser General Public License for more details.
  93202. You should have received a copy of the GNU Lesser General Public
  93203. - License along with the GNU C Library; if not, write to the Free
  93204. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93205. - 02111-1307 USA. */
  93206. + License along with the GNU C Library; if not, see
  93207. + <http://www.gnu.org/licenses/>. */
  93208. #include <unistd.h>
  93209. #include <list.h>
  93210. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
  93211. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  93212. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  93213. @@ -14,9 +14,8 @@
  93214. Lesser General Public License for more details.
  93215. You should have received a copy of the GNU Lesser General Public
  93216. - License along with the GNU C Library; if not, write to the Free
  93217. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93218. - 02111-1307 USA. */
  93219. + License along with the GNU C Library; if not, see
  93220. + <http://www.gnu.org/licenses/>. */
  93221. #include <errno.h>
  93222. #include <sysdep.h>
  93223. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c
  93224. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c 2012-05-15 09:20:09.000000000 +0200
  93225. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c 2014-02-03 12:32:57.000000000 +0100
  93226. @@ -13,9 +13,8 @@
  93227. Lesser General Public License for more details.
  93228. You should have received a copy of the GNU Lesser General Public
  93229. - License along with the GNU C Library; if not, write to the Free
  93230. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93231. - 02111-1307 USA. */
  93232. + License along with the GNU C Library; if not, see
  93233. + <http://www.gnu.org/licenses/>. */
  93234. #include <errno.h>
  93235. #include <sysdep.h>
  93236. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
  93237. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch 2012-05-15 09:20:09.000000000 +0200
  93238. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch 2014-02-03 12:32:57.000000000 +0100
  93239. @@ -62,22 +62,24 @@
  93240. pthread_getcpuclockid.c pthread_kill.c \
  93241. pthread_mutex_cond_lock.c pthread_yield.c \
  93242. sem_post.c sem_timedwait.c sem_trywait.c sem_wait.c \
  93243. - pt-fork.c pt-sleep.c pthread_sigqueue.c pt-tempname.c \
  93244. - sigtimedwait.c sigwaitinfo.c sigwait.c \
  93245. + pt-tempname.c \
  93246. + pthread_sigqueue.c \
  93247. lowlevellock.c lowlevelrobustlock.c
  93248. +# pt-sleep.c pt-fork.c sigtimedwait.c sigwaitinfo.c sigwait.c
  93249. libpthread_linux_SSRC := #ptw-close.S ptw-open.S ptw-waitid.S ptw-waidpid.S ptw-write.S
  93250. libc_linux_CSRC += libc_pthread_init.c libc_multiple_threads.c \
  93251. register-atfork.c unregister-atfork.c getpid.c \
  93252. - raise.c sleep.c jmp-unwind.c libc-lowlevellock.c
  93253. + raise.c jmp-unwind.c libc-lowlevellock.c
  93254. + #sleep.c
  93255. librt_linux_CSRC += mq_notify.c timer_create.c timer_delete.c \
  93256. timer_getoverr.c timer_gettime.c timer_routines.c \
  93257. timer_settime.c
  93258. # These provide both a cancellable and a not cancellable implementation
  93259. -libc_linux_SSRC = close.S open.S write.S read.S waitpid.S
  93260. +libc_linux_SSRC = #close.S open.S write.S read.S waitpid.S
  93261. libc_linux_SSRC := $(filter-out $(libc_linux_arch_SSRC-OMIT),$(libc_linux_SSRC))
  93262. libpthread_linux_CSRC := $(filter-out $(notdir $(libpthread_linux_arch_OBJS:.o=.c)),$(libpthread_linux_CSRC))
  93263. @@ -141,13 +143,14 @@
  93264. CFLAGS-OMIT-getpid.c = -DNOT_IN_libc -DIS_IN_libpthread
  93265. CFLAGS-OMIT-raise.c = -DNOT_IN_libc -DIS_IN_libpthread
  93266. CFLAGS-OMIT-sleep.c = -DNOT_IN_libc -DIS_IN_libpthread
  93267. +CFLAGS-OMIT-jmp-unwind.c = -DNOT_IN_libc -DIS_IN_libpthread
  93268. CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
  93269. -CFLAGS-OMIT-close.S = -DNOT_IN_libc -DIS_IN_libpthread
  93270. -CFLAGS-OMIT-open.S = -DNOT_IN_libc -DIS_IN_libpthread
  93271. -CFLAGS-OMIT-read.S = -DNOT_IN_libc -DIS_IN_libpthread
  93272. -CFLAGS-OMIT-write.S = -DNOT_IN_libc -DIS_IN_libpthread
  93273. -CFLAGS-OMIT-waitpid.S = -DNOT_IN_libc -DIS_IN_libpthread
  93274. +#CFLAGS-OMIT-close.S = -DNOT_IN_libc -DIS_IN_libpthread
  93275. +#CFLAGS-OMIT-open.S = -DNOT_IN_libc -DIS_IN_libpthread
  93276. +#CFLAGS-OMIT-read.S = -DNOT_IN_libc -DIS_IN_libpthread
  93277. +#CFLAGS-OMIT-write.S = -DNOT_IN_libc -DIS_IN_libpthread
  93278. +#CFLAGS-OMIT-waitpid.S = -DNOT_IN_libc -DIS_IN_libpthread
  93279. CFLAGS-OMIT-mq_notify.c = -DIS_IN_libpthread
  93280. CFLAGS-OMIT-timer_create.c = -DIS_IN_libpthread
  93281. @@ -157,11 +160,11 @@
  93282. CFLAGS-OMIT-timer_routines.c = -DIS_IN_libpthread
  93283. CFLAGS-OMIT-timer_settime.c = -DIS_IN_libpthread
  93284. -ASFLAGS-open.S = -D_LIBC_REENTRANT
  93285. -ASFLAGS-close.S = -D_LIBC_REENTRANT
  93286. -ASFLAGS-read.S = -D_LIBC_REENTRANT
  93287. -ASFLAGS-write.S = -D_LIBC_REENTRANT
  93288. -ASFLAGS-waitpid.S = -D_LIBC_REENTRANT
  93289. +#ASFLAGS-open.S = -D_LIBC_REENTRANT
  93290. +#ASFLAGS-close.S = -D_LIBC_REENTRANT
  93291. +#ASFLAGS-read.S = -D_LIBC_REENTRANT
  93292. +#ASFLAGS-write.S = -D_LIBC_REENTRANT
  93293. +#ASFLAGS-waitpid.S = -D_LIBC_REENTRANT
  93294. #
  93295. # Create header files.
  93296. @@ -174,8 +177,6 @@
  93297. CFLAGS-gen_structsem.c = -S
  93298. CFLAGS-gen_unwindbuf.c = -S
  93299. -PTHREAD_GENERATE_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
  93300. -
  93301. PTHREAD_LINUX_SYM := $(notdir $(wildcard $(libpthread_linux_DIR)/*.sym))
  93302. PTHREAD_LINUX_SYM_C := $(addprefix $(libpthread_linux_OUT)/gen_,$(PTHREAD_LINUX_SYM:.sym=.c))
  93303. PTHREAD_LINUX_SYM_S := $(PTHREAD_LINUX_SYM_C:.c=.s)
  93304. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h
  93305. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h 1970-01-01 01:00:00.000000000 +0100
  93306. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  93307. @@ -0,0 +1,181 @@
  93308. +/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
  93309. + This file is part of the GNU C Library.
  93310. +
  93311. + The GNU C Library is free software; you can redistribute it and/or
  93312. + modify it under the terms of the GNU Lesser General Public
  93313. + License as published by the Free Software Foundation; either
  93314. + version 2.1 of the License, or (at your option) any later version.
  93315. +
  93316. + The GNU C Library is distributed in the hope that it will be useful,
  93317. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93318. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93319. + Lesser General Public License for more details.
  93320. +
  93321. + You should have received a copy of the GNU Lesser General Public
  93322. + License along with the GNU C Library; if not, write to the Free
  93323. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93324. + 02111-1307 USA. */
  93325. +
  93326. +#ifndef _BITS_PTHREADTYPES_H
  93327. +#define _BITS_PTHREADTYPES_H 1
  93328. +
  93329. +#include <endian.h>
  93330. +
  93331. +#define __SIZEOF_PTHREAD_ATTR_T 36
  93332. +#define __SIZEOF_PTHREAD_MUTEX_T 24
  93333. +#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
  93334. +#define __SIZEOF_PTHREAD_COND_T 48
  93335. +#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
  93336. +#define __SIZEOF_PTHREAD_CONDATTR_T 4
  93337. +#define __SIZEOF_PTHREAD_RWLOCK_T 32
  93338. +#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
  93339. +#define __SIZEOF_PTHREAD_BARRIER_T 20
  93340. +#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
  93341. +
  93342. +
  93343. +/* Thread identifiers. The structure of the attribute type is not
  93344. + exposed on purpose. */
  93345. +typedef unsigned long int pthread_t;
  93346. +
  93347. +
  93348. +typedef union
  93349. +{
  93350. + char __size[__SIZEOF_PTHREAD_ATTR_T];
  93351. + long int __align;
  93352. +} pthread_attr_t;
  93353. +
  93354. +
  93355. +typedef struct __pthread_internal_slist
  93356. +{
  93357. + struct __pthread_internal_slist *__next;
  93358. +} __pthread_slist_t;
  93359. +
  93360. +
  93361. +/* Data structures for mutex handling. The structure of the attribute
  93362. + type is not exposed on purpose. */
  93363. +typedef union
  93364. +{
  93365. + struct __pthread_mutex_s
  93366. + {
  93367. + int __lock;
  93368. + unsigned int __count;
  93369. + int __owner;
  93370. + /* KIND must stay at this position in the structure to maintain
  93371. + binary compatibility. */
  93372. + int __kind;
  93373. + unsigned int __nusers;
  93374. + __extension__ union
  93375. + {
  93376. + int __spins;
  93377. + __pthread_slist_t __list;
  93378. + };
  93379. + } __data;
  93380. + char __size[__SIZEOF_PTHREAD_MUTEX_T];
  93381. + long int __align;
  93382. +} pthread_mutex_t;
  93383. +
  93384. +typedef union
  93385. +{
  93386. + char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
  93387. + long int __align;
  93388. +} pthread_mutexattr_t;
  93389. +
  93390. +
  93391. +/* Data structure for conditional variable handling. The structure of
  93392. + the attribute type is not exposed on purpose. */
  93393. +typedef union
  93394. +{
  93395. + struct
  93396. + {
  93397. + int __lock;
  93398. + unsigned int __futex;
  93399. + __extension__ unsigned long long int __total_seq;
  93400. + __extension__ unsigned long long int __wakeup_seq;
  93401. + __extension__ unsigned long long int __woken_seq;
  93402. + void *__mutex;
  93403. + unsigned int __nwaiters;
  93404. + unsigned int __broadcast_seq;
  93405. + } __data;
  93406. + char __size[__SIZEOF_PTHREAD_COND_T];
  93407. + __extension__ long long int __align;
  93408. +} pthread_cond_t;
  93409. +
  93410. +typedef union
  93411. +{
  93412. + char __size[__SIZEOF_PTHREAD_CONDATTR_T];
  93413. + long int __align;
  93414. +} pthread_condattr_t;
  93415. +
  93416. +
  93417. +/* Keys for thread-specific data */
  93418. +typedef unsigned int pthread_key_t;
  93419. +
  93420. +
  93421. +/* Once-only execution */
  93422. +typedef int pthread_once_t;
  93423. +
  93424. +
  93425. +#if defined __USE_UNIX98 || defined __USE_XOPEN2K
  93426. +/* Data structure for read-write lock variable handling. The
  93427. + structure of the attribute type is not exposed on purpose. */
  93428. +typedef union
  93429. +{
  93430. + struct
  93431. + {
  93432. + int __lock;
  93433. + unsigned int __nr_readers;
  93434. + unsigned int __readers_wakeup;
  93435. + unsigned int __writer_wakeup;
  93436. + unsigned int __nr_readers_queued;
  93437. + unsigned int __nr_writers_queued;
  93438. +#if __BYTE_ORDER == __BIG_ENDIAN
  93439. + unsigned char __pad1;
  93440. + unsigned char __pad2;
  93441. + unsigned char __shared;
  93442. + /* FLAGS must stay at this position in the structure to maintain
  93443. + binary compatibility. */
  93444. + unsigned char __flags;
  93445. +#else
  93446. + /* FLAGS must stay at this position in the structure to maintain
  93447. + binary compatibility. */
  93448. + unsigned char __flags;
  93449. + unsigned char __shared;
  93450. + unsigned char __pad1;
  93451. + unsigned char __pad2;
  93452. +#endif
  93453. + int __writer;
  93454. + } __data;
  93455. + char __size[__SIZEOF_PTHREAD_RWLOCK_T];
  93456. + long int __align;
  93457. +} pthread_rwlock_t;
  93458. +
  93459. +typedef union
  93460. +{
  93461. + char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
  93462. + long int __align;
  93463. +} pthread_rwlockattr_t;
  93464. +#endif
  93465. +
  93466. +
  93467. +#ifdef __USE_XOPEN2K
  93468. +/* POSIX spinlock data type. */
  93469. +typedef volatile int pthread_spinlock_t;
  93470. +
  93471. +
  93472. +/* POSIX barriers data type. The structure of the type is
  93473. + deliberately not exposed. */
  93474. +typedef union
  93475. +{
  93476. + char __size[__SIZEOF_PTHREAD_BARRIER_T];
  93477. + long int __align;
  93478. +} pthread_barrier_t;
  93479. +
  93480. +typedef union
  93481. +{
  93482. + char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
  93483. + int __align;
  93484. +} pthread_barrierattr_t;
  93485. +#endif
  93486. +
  93487. +
  93488. +#endif /* bits/pthreadtypes.h */
  93489. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h
  93490. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h 1970-01-01 01:00:00.000000000 +0100
  93491. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  93492. @@ -0,0 +1,35 @@
  93493. +/* Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
  93494. + This file is part of the GNU C Library.
  93495. +
  93496. + The GNU C Library is free software; you can redistribute it and/or
  93497. + modify it under the terms of the GNU Lesser General Public
  93498. + License as published by the Free Software Foundation; either
  93499. + version 2.1 of the License, or (at your option) any later version.
  93500. +
  93501. + The GNU C Library is distributed in the hope that it will be useful,
  93502. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93503. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93504. + Lesser General Public License for more details.
  93505. +
  93506. + You should have received a copy of the GNU Lesser General Public
  93507. + License along with the GNU C Library; if not, write to the Free
  93508. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93509. + 02111-1307 USA. */
  93510. +
  93511. +#ifndef _SEMAPHORE_H
  93512. +# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  93513. +#endif
  93514. +
  93515. +
  93516. +#define __SIZEOF_SEM_T 16
  93517. +
  93518. +
  93519. +/* Value returned if `sem_open' failed. */
  93520. +#define SEM_FAILED ((sem_t *) 0)
  93521. +
  93522. +
  93523. +typedef union
  93524. +{
  93525. + char __size[__SIZEOF_SEM_T];
  93526. + long int __align;
  93527. +} sem_t;
  93528. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S
  93529. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S 1970-01-01 01:00:00.000000000 +0100
  93530. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/clone.S 2014-02-03 12:32:57.000000000 +0100
  93531. @@ -0,0 +1,9 @@
  93532. +/*
  93533. + * Copyright (C) 2013 Imagination Technologies Ltd.
  93534. + *
  93535. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  93536. + */
  93537. +
  93538. +#define RESET_PID
  93539. +#include <tcb-offsets.h>
  93540. +#include "../../../../../../../libc/sysdeps/linux/metag/clone.S"
  93541. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c
  93542. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c 1970-01-01 01:00:00.000000000 +0100
  93543. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/createthread.c 2014-02-03 12:32:57.000000000 +0100
  93544. @@ -0,0 +1,23 @@
  93545. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  93546. + This file is part of the GNU C Library.
  93547. +
  93548. + The GNU C Library is free software; you can redistribute it and/or
  93549. + modify it under the terms of the GNU Lesser General Public
  93550. + License as published by the Free Software Foundation; either
  93551. + version 2.1 of the License, or (at your option) any later version.
  93552. +
  93553. + The GNU C Library is distributed in the hope that it will be useful,
  93554. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93555. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93556. + Lesser General Public License for more details.
  93557. +
  93558. + You should have received a copy of the GNU Lesser General Public
  93559. + License along with the GNU C Library; if not, write to the Free
  93560. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93561. + 02111-1307 USA. */
  93562. +
  93563. +/* Value passed to 'clone' for initialization of the thread register. */
  93564. +#define TLS_VALUE (pd + 1)
  93565. +
  93566. +/* Get the real implementation. */
  93567. +#include <sysdeps/pthread/createthread.c>
  93568. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c
  93569. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c 1970-01-01 01:00:00.000000000 +0100
  93570. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/fork.c 2014-02-03 12:32:57.000000000 +0100
  93571. @@ -0,0 +1,31 @@
  93572. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  93573. + This file is part of the GNU C Library.
  93574. + Contributed by Phil Blundell <pb@nexus.co.uk>, 2005
  93575. +
  93576. + The GNU C Library is free software; you can redistribute it and/or
  93577. + modify it under the terms of the GNU Lesser General Public
  93578. + License as published by the Free Software Foundation; either
  93579. + version 2.1 of the License, or (at your option) any later version.
  93580. +
  93581. + The GNU C Library is distributed in the hope that it will be useful,
  93582. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93583. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93584. + Lesser General Public License for more details.
  93585. +
  93586. + You should have received a copy of the GNU Lesser General Public
  93587. + License along with the GNU C Library; if not, write to the Free
  93588. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93589. + 02111-1307 USA. */
  93590. +
  93591. +#include <sched.h>
  93592. +#include <signal.h>
  93593. +#include <sysdep.h>
  93594. +#include <tls.h>
  93595. +
  93596. +
  93597. +#define ARCH_FORK() \
  93598. + INLINE_SYSCALL (clone, 5, \
  93599. + CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, \
  93600. + NULL, NULL, &THREAD_SELF->tid, NULL)
  93601. +
  93602. +#include "../fork.c"
  93603. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c
  93604. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c 1970-01-01 01:00:00.000000000 +0100
  93605. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  93606. @@ -0,0 +1,21 @@
  93607. +/* Copyright (C) 2003 Free Software Foundation, Inc.
  93608. + This file is part of the GNU C Library.
  93609. + Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
  93610. +
  93611. + The GNU C Library is free software; you can redistribute it and/or
  93612. + modify it under the terms of the GNU Lesser General Public
  93613. + License as published by the Free Software Foundation; either
  93614. + version 2.1 of the License, or (at your option) any later version.
  93615. +
  93616. + The GNU C Library is distributed in the hope that it will be useful,
  93617. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93618. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93619. + Lesser General Public License for more details.
  93620. +
  93621. + You should have received a copy of the GNU Lesser General Public
  93622. + License along with the GNU C Library; if not, write to the Free
  93623. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93624. + 02111-1307 USA. */
  93625. +
  93626. +/* No difference to lowlevellock.c, except we lose a couple of functions. */
  93627. +#include "lowlevellock.c"
  93628. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c
  93629. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c 1970-01-01 01:00:00.000000000 +0100
  93630. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  93631. @@ -0,0 +1,134 @@
  93632. +/* low level locking for pthread library. Generic futex-using version.
  93633. + Copyright (C) 2003, 2005, 2007 Free Software Foundation, Inc.
  93634. + This file is part of the GNU C Library.
  93635. +
  93636. + The GNU C Library is free software; you can redistribute it and/or
  93637. + modify it under the terms of the GNU Lesser General Public
  93638. + License as published by the Free Software Foundation; either
  93639. + version 2.1 of the License, or (at your option) any later version.
  93640. +
  93641. + The GNU C Library is distributed in the hope that it will be useful,
  93642. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93643. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93644. + Lesser General Public License for more details.
  93645. +
  93646. + You should have received a copy of the GNU Lesser General Public
  93647. + License along with the GNU C Library; if not, write to the Free
  93648. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93649. + 02111-1307 USA. */
  93650. +
  93651. +#include <errno.h>
  93652. +#include <sysdep.h>
  93653. +#include <lowlevellock.h>
  93654. +#include <sys/time.h>
  93655. +#include <tls.h>
  93656. +
  93657. +void
  93658. +__lll_lock_wait_private (int *futex)
  93659. +{
  93660. + do
  93661. + {
  93662. + int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
  93663. + if (oldval != 0)
  93664. + lll_futex_wait (futex, 2, LLL_PRIVATE);
  93665. + }
  93666. + while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  93667. +}
  93668. +
  93669. +
  93670. +/* These functions don't get included in libc.so */
  93671. +#ifdef IS_IN_libpthread
  93672. +void
  93673. +__lll_lock_wait (int *futex, int private)
  93674. +{
  93675. + do
  93676. + {
  93677. + int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
  93678. + if (oldval != 0)
  93679. + lll_futex_wait (futex, 2, private);
  93680. + }
  93681. + while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  93682. +}
  93683. +
  93684. +
  93685. +int
  93686. +__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
  93687. +{
  93688. + struct timespec rt;
  93689. +
  93690. + /* Reject invalid timeouts. */
  93691. + if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
  93692. + return EINVAL;
  93693. +
  93694. + /* Upgrade the lock. */
  93695. + if (atomic_exchange_acq (futex, 2) == 0)
  93696. + return 0;
  93697. +
  93698. + do
  93699. + {
  93700. + struct timeval tv;
  93701. +
  93702. + /* Get the current time. */
  93703. + (void) gettimeofday (&tv, NULL);
  93704. +
  93705. + /* Compute relative timeout. */
  93706. + rt.tv_sec = abstime->tv_sec - tv.tv_sec;
  93707. + rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
  93708. + if (rt.tv_nsec < 0)
  93709. + {
  93710. + rt.tv_nsec += 1000000000;
  93711. + --rt.tv_sec;
  93712. + }
  93713. +
  93714. + /* Already timed out? */
  93715. + if (rt.tv_sec < 0)
  93716. + return ETIMEDOUT;
  93717. +
  93718. + // XYZ: Lost the lock to check whether it was private.
  93719. + lll_futex_timed_wait (futex, 2, &rt, private);
  93720. + }
  93721. + while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  93722. +
  93723. + return 0;
  93724. +}
  93725. +
  93726. +
  93727. +int
  93728. +__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
  93729. +{
  93730. + int tid;
  93731. +
  93732. + if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
  93733. + return EINVAL;
  93734. +
  93735. + /* Repeat until thread terminated. */
  93736. + while ((tid = *tidp) != 0)
  93737. + {
  93738. + struct timeval tv;
  93739. + struct timespec rt;
  93740. +
  93741. + /* Get the current time. */
  93742. + (void) gettimeofday (&tv, NULL);
  93743. +
  93744. + /* Compute relative timeout. */
  93745. + rt.tv_sec = abstime->tv_sec - tv.tv_sec;
  93746. + rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
  93747. + if (rt.tv_nsec < 0)
  93748. + {
  93749. + rt.tv_nsec += 1000000000;
  93750. + --rt.tv_sec;
  93751. + }
  93752. +
  93753. + /* Already timed out? */
  93754. + if (rt.tv_sec < 0)
  93755. + return ETIMEDOUT;
  93756. +
  93757. + /* Wait until thread terminates. */
  93758. + // XYZ: Lost the lock to check whether it was private.
  93759. + if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
  93760. + return ETIMEDOUT;
  93761. + }
  93762. +
  93763. + return 0;
  93764. +}
  93765. +#endif
  93766. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h
  93767. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h 1970-01-01 01:00:00.000000000 +0100
  93768. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  93769. @@ -0,0 +1,279 @@
  93770. +/* Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
  93771. + This file is part of the GNU C Library.
  93772. +
  93773. + The GNU C Library is free software; you can redistribute it and/or
  93774. + modify it under the terms of the GNU Lesser General Public
  93775. + License as published by the Free Software Foundation; either
  93776. + version 2.1 of the License, or (at your option) any later version.
  93777. +
  93778. + The GNU C Library is distributed in the hope that it will be useful,
  93779. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  93780. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  93781. + Lesser General Public License for more details.
  93782. +
  93783. + You should have received a copy of the GNU Lesser General Public
  93784. + License along with the GNU C Library; if not, write to the Free
  93785. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  93786. + 02111-1307 USA. */
  93787. +
  93788. +#ifndef _LOWLEVELLOCK_H
  93789. +#define _LOWLEVELLOCK_H 1
  93790. +
  93791. +#include <time.h>
  93792. +#include <sys/param.h>
  93793. +#include <bits/pthreadtypes.h>
  93794. +#include <atomic.h>
  93795. +#include <sysdep.h>
  93796. +#include <bits/kernel-features.h>
  93797. +
  93798. +#define FUTEX_WAIT 0
  93799. +#define FUTEX_WAKE 1
  93800. +#define FUTEX_REQUEUE 3
  93801. +#define FUTEX_CMP_REQUEUE 4
  93802. +#define FUTEX_WAKE_OP 5
  93803. +#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE ((4 << 24) | 1)
  93804. +#define FUTEX_LOCK_PI 6
  93805. +#define FUTEX_UNLOCK_PI 7
  93806. +#define FUTEX_TRYLOCK_PI 8
  93807. +#define FUTEX_WAIT_BITSET 9
  93808. +#define FUTEX_WAKE_BITSET 10
  93809. +#define FUTEX_PRIVATE_FLAG 128
  93810. +#define FUTEX_CLOCK_REALTIME 256
  93811. +
  93812. +#define FUTEX_BITSET_MATCH_ANY 0xffffffff
  93813. +
  93814. +/* Values for 'private' parameter of locking macros. Yes, the
  93815. + definition seems to be backwards. But it is not. The bit will be
  93816. + reversed before passing to the system call. */
  93817. +#define LLL_PRIVATE 0
  93818. +#define LLL_SHARED FUTEX_PRIVATE_FLAG
  93819. +
  93820. +
  93821. +#if !defined NOT_IN_libc || defined IS_IN_rtld
  93822. +/* In libc.so or ld.so all futexes are private. */
  93823. +# ifdef __ASSUME_PRIVATE_FUTEX
  93824. +# define __lll_private_flag(fl, private) \
  93825. + ((fl) | FUTEX_PRIVATE_FLAG)
  93826. +# else
  93827. +# define __lll_private_flag(fl, private) \
  93828. + ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
  93829. +# endif
  93830. +#else
  93831. +# ifdef __ASSUME_PRIVATE_FUTEX
  93832. +# define __lll_private_flag(fl, private) \
  93833. + (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
  93834. +# else
  93835. +# define __lll_private_flag(fl, private) \
  93836. + (__builtin_constant_p (private) \
  93837. + ? ((private) == 0 \
  93838. + ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex)) \
  93839. + : (fl)) \
  93840. + : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG) \
  93841. + & THREAD_GETMEM (THREAD_SELF, header.private_futex))))
  93842. +# endif
  93843. +#endif
  93844. +
  93845. +
  93846. +#define lll_futex_wait(futexp, val, private) \
  93847. + lll_futex_timed_wait(futexp, val, NULL, private)
  93848. +
  93849. +#define lll_futex_timed_wait(futexp, val, timespec, private) \
  93850. + ({ \
  93851. + INTERNAL_SYSCALL_DECL (__err); \
  93852. + long int __ret; \
  93853. + __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
  93854. + __lll_private_flag (FUTEX_WAIT, private), \
  93855. + (val), (timespec)); \
  93856. + __ret; \
  93857. + })
  93858. +
  93859. +#define lll_futex_wake(futexp, nr, private) \
  93860. + ({ \
  93861. + INTERNAL_SYSCALL_DECL (__err); \
  93862. + long int __ret; \
  93863. + __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \
  93864. + __lll_private_flag (FUTEX_WAKE, private), \
  93865. + (nr), 0); \
  93866. + __ret; \
  93867. + })
  93868. +
  93869. +#define lll_robust_dead(futexv, private) \
  93870. + do \
  93871. + { \
  93872. + int *__futexp = &(futexv); \
  93873. + atomic_or (__futexp, FUTEX_OWNER_DIED); \
  93874. + lll_futex_wake (__futexp, 1, private); \
  93875. + } \
  93876. + while (0)
  93877. +
  93878. +/* Returns non-zero if error happened, zero if success. */
  93879. +#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
  93880. + ({ \
  93881. + INTERNAL_SYSCALL_DECL (__err); \
  93882. + long int __ret; \
  93883. + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
  93884. + __lll_private_flag (FUTEX_CMP_REQUEUE, private),\
  93885. + (nr_wake), (nr_move), (mutex), (val)); \
  93886. + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
  93887. + })
  93888. +
  93889. +
  93890. +/* Returns non-zero if error happened, zero if success. */
  93891. +#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
  93892. + ({ \
  93893. + INTERNAL_SYSCALL_DECL (__err); \
  93894. + long int __ret; \
  93895. + __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp), \
  93896. + __lll_private_flag (FUTEX_WAKE_OP, private), \
  93897. + (nr_wake), (nr_wake2), (futexp2), \
  93898. + FUTEX_OP_CLEAR_WAKE_IF_GT_ONE); \
  93899. + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \
  93900. + })
  93901. +
  93902. +
  93903. +#define lll_trylock(lock) \
  93904. + atomic_compare_and_exchange_val_acq(&(lock), 1, 0)
  93905. +
  93906. +#define lll_cond_trylock(lock) \
  93907. + atomic_compare_and_exchange_val_acq(&(lock), 2, 0)
  93908. +
  93909. +#define __lll_robust_trylock(futex, id) \
  93910. + (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
  93911. +#define lll_robust_trylock(lock, id) \
  93912. + __lll_robust_trylock (&(lock), id)
  93913. +
  93914. +extern void __lll_lock_wait_private (int *futex) attribute_hidden;
  93915. +extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
  93916. +extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
  93917. +
  93918. +#define __lll_lock(futex, private) \
  93919. + ((void) ({ \
  93920. + int *__futex = (futex); \
  93921. + if (unlikely(atomic_compare_and_exchange_val_acq (__futex, 1, 0))) \
  93922. + { \
  93923. + if (__builtin_constant_p (private) && (private) == LLL_PRIVATE) \
  93924. + __lll_lock_wait_private (__futex); \
  93925. + else \
  93926. + __lll_lock_wait (__futex, private); \
  93927. + } \
  93928. + }))
  93929. +#define lll_lock(futex, private) __lll_lock (&(futex), private)
  93930. +
  93931. +
  93932. +#define __lll_robust_lock(futex, id, private) \
  93933. + ({ \
  93934. + int *__futex = (futex); \
  93935. + int __val = 0; \
  93936. + \
  93937. + if (unlikely(atomic_compare_and_exchange_bool_acq (__futex, id, 0))) \
  93938. + __val = __lll_robust_lock_wait (__futex, private); \
  93939. + __val; \
  93940. + })
  93941. +#define lll_robust_lock(futex, id, private) \
  93942. + __lll_robust_lock (&(futex), id, private)
  93943. +
  93944. +
  93945. +#define __lll_cond_lock(futex, private) \
  93946. + ((void) ({ \
  93947. + int *__futex = (futex); \
  93948. + if (unlikely(atomic_exchange_acq (__futex, 2))) \
  93949. + __lll_lock_wait (__futex, private); \
  93950. + }))
  93951. +#define lll_cond_lock(futex, private) __lll_cond_lock (&(futex), private)
  93952. +
  93953. +
  93954. +#define lll_robust_cond_lock(futex, id, private) \
  93955. + __lll_robust_lock (&(futex), (id) | FUTEX_WAITERS, private)
  93956. +
  93957. +
  93958. +extern int __lll_timedlock_wait (int *futex, const struct timespec *,
  93959. + int private) attribute_hidden;
  93960. +extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *,
  93961. + int private) attribute_hidden;
  93962. +
  93963. +#define __lll_timedlock(futex, abstime, private) \
  93964. + ({ \
  93965. + int *__futex = (futex); \
  93966. + int __val = 0; \
  93967. + \
  93968. + if (unlikely(atomic_exchange_acq (__futex, 1))) \
  93969. + __val = __lll_timedlock_wait (__futex, abstime, private); \
  93970. + __val; \
  93971. + })
  93972. +#define lll_timedlock(futex, abstime, private) \
  93973. + __lll_timedlock (&(futex), abstime, private)
  93974. +
  93975. +
  93976. +#define __lll_robust_timedlock(futex, abstime, id, private) \
  93977. + ({ \
  93978. + int *__futex = (futex); \
  93979. + int __val = 0; \
  93980. + \
  93981. + if (unlikely(atomic_compare_and_exchange_bool_acq (__futex, id, 0))) \
  93982. + __val = __lll_robust_timedlock_wait (__futex, abstime, private); \
  93983. + __val; \
  93984. + })
  93985. +#define lll_robust_timedlock(futex, abstime, id, private) \
  93986. + __lll_robust_timedlock (&(futex), abstime, id, private)
  93987. +
  93988. +
  93989. +#define __lll_unlock(futex, private) \
  93990. + (void) \
  93991. + ({ int *__futex = (futex); \
  93992. + int __oldval = atomic_exchange_rel (__futex, 0); \
  93993. + if (unlikely(__oldval > 1)) \
  93994. + lll_futex_wake (__futex, 1, private); \
  93995. + })
  93996. +#define lll_unlock(futex, private) __lll_unlock(&(futex), private)
  93997. +
  93998. +
  93999. +#define __lll_robust_unlock(futex, private) \
  94000. + (void) \
  94001. + ({ int *__futex = (futex); \
  94002. + int __oldval = atomic_exchange_rel (__futex, 0); \
  94003. + if (unlikely(__oldval & FUTEX_WAITERS)) \
  94004. + lll_futex_wake (__futex, 1, private); \
  94005. + })
  94006. +#define lll_robust_unlock(futex, private) \
  94007. + __lll_robust_unlock(&(futex), private)
  94008. +
  94009. +
  94010. +#define lll_islocked(futex) \
  94011. + (futex != 0)
  94012. +
  94013. +
  94014. +/* Our internal lock implementation is identical to the binary-compatible
  94015. + mutex implementation. */
  94016. +
  94017. +/* Initializers for lock. */
  94018. +#define LLL_LOCK_INITIALIZER (0)
  94019. +#define LLL_LOCK_INITIALIZER_LOCKED (1)
  94020. +
  94021. +/* The states of a lock are:
  94022. + 0 - untaken
  94023. + 1 - taken by one user
  94024. + >1 - taken by more users */
  94025. +
  94026. +/* The kernel notifies a process which uses CLONE_CLEARTID via futex
  94027. + wakeup when the clone terminates. The memory location contains the
  94028. + thread ID while the clone is running and is reset to zero
  94029. + afterwards. */
  94030. +#define lll_wait_tid(tid) \
  94031. + do { \
  94032. + __typeof (tid) __tid; \
  94033. + while ((__tid = (tid)) != 0) \
  94034. + lll_futex_wait (&(tid), __tid, LLL_SHARED);\
  94035. + } while (0)
  94036. +
  94037. +extern int __lll_timedwait_tid (int *, const struct timespec *)
  94038. + attribute_hidden;
  94039. +
  94040. +#define lll_timedwait_tid(tid, abstime) \
  94041. + ({ \
  94042. + int __res = 0; \
  94043. + if ((tid) != 0) \
  94044. + __res = __lll_timedwait_tid (&(tid), (abstime)); \
  94045. + __res; \
  94046. + })
  94047. +
  94048. +#endif /* lowlevellock.h */
  94049. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile
  94050. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile 1970-01-01 01:00:00.000000000 +0100
  94051. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile 2014-02-03 12:32:57.000000000 +0100
  94052. @@ -0,0 +1,13 @@
  94053. +# Makefile for uClibc NPTL
  94054. +#
  94055. +# Copyright (C) 2005 Steven J. Hill <sjhill@uclibc.org>
  94056. +#
  94057. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94058. +#
  94059. +
  94060. +top_srcdir=../../../../../../../
  94061. +top_builddir=../../../../../../../
  94062. +all: objs
  94063. +include $(top_builddir)Rules.mak
  94064. +include Makefile.arch
  94065. +include $(top_srcdir)Makerules
  94066. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch
  94067. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch 1970-01-01 01:00:00.000000000 +0100
  94068. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/Makefile.arch 2014-02-03 12:32:57.000000000 +0100
  94069. @@ -0,0 +1,31 @@
  94070. +# Makefile for uClibc NPTL
  94071. +#
  94072. +# Copyright (C) 2006 Steven J. Hill <sjhill@uclibc.org>
  94073. +#
  94074. +# Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94075. +#
  94076. +
  94077. +libpthread_linux_arch_SSRC = pt-vfork.S
  94078. +libpthread_linux_arch_CSRC = pthread_once.c \
  94079. + pt-__syscall_rt_sigaction.c pt-__syscall_error.c \
  94080. + lowlevellock.c
  94081. +
  94082. +libc_linux_arch_CSRC = fork.c libc-lowlevellock.c
  94083. +libc_linux_arch_SSRC = clone.S vfork.S
  94084. +libc_linux_arch_SSRC-OMIT = waitpid.S
  94085. +
  94086. +CFLAGS += $(SSP_ALL_CFLAGS)
  94087. +
  94088. +CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread
  94089. +CFLAGS-pt-__syscall_rt_sigaction.c = -DNOT_IN_libc -DIS_IN_libpthread
  94090. +CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
  94091. +CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread
  94092. +ASFLAGS-vfork.S = -DIS_IN_libc -DNOT_IN_libpthread
  94093. +ASFLAGS-clone.S = -DIS_IN_libc -DNOT_IN_libpthread
  94094. +ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
  94095. +
  94096. +ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
  94097. +CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
  94098. +endif
  94099. +CFLAGS-OMIT-fork.c = -DNOT_IN_libc -DIS_IN_libpthread
  94100. +CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
  94101. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c
  94102. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c 1970-01-01 01:00:00.000000000 +0100
  94103. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-gettimeofday.c 2014-02-03 12:32:57.000000000 +0100
  94104. @@ -0,0 +1,11 @@
  94105. +/*
  94106. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94107. + *
  94108. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94109. + */
  94110. +
  94111. +#include <sys/syscall.h>
  94112. +#include <sys/time.h>
  94113. +
  94114. +int gettimeofday (struct timeval *, struct timezone *) attribute_hidden;
  94115. +_syscall2(int, gettimeofday, struct timeval *, tv, struct timezone *, tz);
  94116. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c
  94117. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c 1970-01-01 01:00:00.000000000 +0100
  94118. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  94119. @@ -0,0 +1,100 @@
  94120. +/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
  94121. + This file is part of the GNU C Library.
  94122. +
  94123. + The GNU C Library is free software; you can redistribute it and/or
  94124. + modify it under the terms of the GNU Lesser General Public
  94125. + License as published by the Free Software Foundation; either
  94126. + version 2.1 of the License, or (at your option) any later version.
  94127. +
  94128. + The GNU C Library is distributed in the hope that it will be useful,
  94129. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94130. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94131. + Lesser General Public License for more details.
  94132. +
  94133. + You should have received a copy of the GNU Lesser General Public
  94134. + License along with the GNU C Library; if not, write to the Free
  94135. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94136. + 02111-1307 USA. */
  94137. +
  94138. +#include "pthreadP.h"
  94139. +#include <lowlevellock.h>
  94140. +
  94141. +unsigned long int __fork_generation attribute_hidden;
  94142. +
  94143. +static void
  94144. +clear_once_control (void *arg)
  94145. +{
  94146. + pthread_once_t *once_control = (pthread_once_t *) arg;
  94147. +
  94148. + *once_control = 0;
  94149. + lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
  94150. +}
  94151. +
  94152. +int
  94153. +attribute_protected
  94154. +__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
  94155. +{
  94156. + for (;;)
  94157. + {
  94158. + int oldval;
  94159. + int newval;
  94160. +
  94161. + /* Pseudo code:
  94162. + newval = __fork_generation | 1;
  94163. + oldval = *once_control;
  94164. + if ((oldval & 2) == 0)
  94165. + *once_control = newval;
  94166. + Do this atomically.
  94167. + */
  94168. + do
  94169. + {
  94170. + newval = __fork_generation | 1;
  94171. + oldval = *once_control;
  94172. + if (oldval & 2)
  94173. + break;
  94174. + } while (atomic_compare_and_exchange_val_acq (once_control, newval, oldval) != oldval);
  94175. +
  94176. + /* Check if the initializer has already been done. */
  94177. + if ((oldval & 2) != 0)
  94178. + return 0;
  94179. +
  94180. + /* Check if another thread already runs the initializer. */
  94181. + if ((oldval & 1) == 0)
  94182. + break;
  94183. +
  94184. + /* Check whether the initializer execution was interrupted by a fork. */
  94185. + if (oldval != newval)
  94186. + break;
  94187. +
  94188. + /* Same generation, some other thread was faster. Wait. */
  94189. + lll_futex_wait (once_control, oldval, LLL_PRIVATE);
  94190. + }
  94191. +
  94192. + /* This thread is the first here. Do the initialization.
  94193. + Register a cleanup handler so that in case the thread gets
  94194. + interrupted the initialization can be restarted. */
  94195. + pthread_cleanup_push (clear_once_control, once_control);
  94196. +
  94197. + init_routine ();
  94198. +
  94199. + pthread_cleanup_pop (0);
  94200. +
  94201. + /* Say that the initialisation is done. */
  94202. + *once_control = __fork_generation | 2;
  94203. +
  94204. + /* Wake up all other threads. */
  94205. + lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
  94206. +
  94207. + return 0;
  94208. +}
  94209. +weak_alias (__pthread_once, pthread_once)
  94210. +strong_alias (__pthread_once, __pthread_once_internal)
  94211. +
  94212. +#if defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__PIC__)
  94213. +/* When statically linked, if pthread_create is used, this file
  94214. + will be brought in. The exception handling code in GCC assumes
  94215. + that if pthread_create is available, so are these. */
  94216. +const void *include_pthread_getspecific attribute_hidden = pthread_getspecific;
  94217. +const void *include_pthread_setspecific attribute_hidden = pthread_setspecific;
  94218. +const void *include_pthread_key_create attribute_hidden = pthread_key_create;
  94219. +#endif
  94220. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c
  94221. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c 1970-01-01 01:00:00.000000000 +0100
  94222. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_error.c 2014-02-03 12:32:57.000000000 +0100
  94223. @@ -0,0 +1,7 @@
  94224. +/*
  94225. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94226. + *
  94227. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94228. + */
  94229. +
  94230. +#include <../../../../../../../libc/sysdeps/linux/metag/__syscall_error.c>
  94231. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c
  94232. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c 1970-01-01 01:00:00.000000000 +0100
  94233. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-__syscall_rt_sigaction.c 2014-02-03 12:32:57.000000000 +0100
  94234. @@ -0,0 +1,7 @@
  94235. +/*
  94236. + * Copyright (C) 2013 Imagination Technologies Ltd.
  94237. + *
  94238. + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
  94239. + */
  94240. +
  94241. +#include <../../../../../../../libc/sysdeps/linux/common/__syscall_rt_sigaction.c>
  94242. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S
  94243. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S 1970-01-01 01:00:00.000000000 +0100
  94244. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  94245. @@ -0,0 +1,51 @@
  94246. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  94247. + This file is part of the GNU C Library.
  94248. +
  94249. + The GNU C Library is free software; you can redistribute it and/or
  94250. + modify it under the terms of the GNU Lesser General Public
  94251. + License as published by the Free Software Foundation; either
  94252. + version 2.1 of the License, or (at your option) any later version.
  94253. +
  94254. + The GNU C Library is distributed in the hope that it will be useful,
  94255. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94256. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94257. + Lesser General Public License for more details.
  94258. +
  94259. + You should have received a copy of the GNU Lesser General Public
  94260. + License along with the GNU C Library; if not, write to the Free
  94261. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94262. + 02111-1307 USA. */
  94263. +
  94264. +#include <tcb-offsets.h>
  94265. +#include <asm/unistd.h>
  94266. +
  94267. +#ifdef __PIC__
  94268. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp@PLT
  94269. +#else
  94270. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp
  94271. +#endif
  94272. +
  94273. +/* Save the PID value. */
  94274. +#define SAVE_PID \
  94275. + SETL [A0StP++], D0FrT, D1RtP; \
  94276. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  94277. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  94278. + GETD D0FrT, [D0Re0 + #PID]; \
  94279. + NEG D0FrT, D0FrT; \
  94280. + SETD [D0Re0 + #PID], D0FrT; \
  94281. + GETL D0FrT, D1RtP, [--A0StP];
  94282. +
  94283. +#define RESTORE_PID \
  94284. + CMP D0Re0, #0; \
  94285. + BEQ 1f; \
  94286. + MSETL [A0StP++], D0Re0, D0FrT; \
  94287. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  94288. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  94289. + GETD D0FrT, [D0Re0 + #PID]; \
  94290. + NEG D0FrT, D0FrT; \
  94291. + SETD [D0Re0 + #PID], D0FrT; \
  94292. + GETL D0FrT, D1RtP, [--A0StP]; \
  94293. + GETL D0Re0, D1Re0, [--A0StP]; \
  94294. +1:
  94295. +
  94296. +#include <../../../../../../../libc/sysdeps/linux/metag/vfork.S>
  94297. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h
  94298. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h 1970-01-01 01:00:00.000000000 +0100
  94299. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  94300. @@ -0,0 +1,152 @@
  94301. +/* Copyright (C) 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
  94302. + This file is part of the GNU C Library.
  94303. +
  94304. + The GNU C Library is free software; you can redistribute it and/or
  94305. + modify it under the terms of the GNU Lesser General Public
  94306. + License as published by the Free Software Foundation; either
  94307. + version 2.1 of the License, or (at your option) any later version.
  94308. +
  94309. + The GNU C Library is distributed in the hope that it will be useful,
  94310. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94311. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94312. + Lesser General Public License for more details.
  94313. +
  94314. + You should have received a copy of the GNU Lesser General Public
  94315. + License along with the GNU C Library; if not, write to the Free
  94316. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94317. + 02111-1307 USA. */
  94318. +
  94319. +#include <tls.h>
  94320. +#include <sysdep.h>
  94321. +#ifndef __ASSEMBLER__
  94322. +# include <pthreadP.h>
  94323. +#endif
  94324. +
  94325. +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  94326. +
  94327. +/* NOTE: We do mark syscalls with unwind annotations, for the benefit of
  94328. + cancellation; but they're really only accurate at the point of the
  94329. + syscall. The ARM unwind directives are not rich enough without adding
  94330. + a custom personality function. */
  94331. +
  94332. +#ifdef __ASSEMBLER__
  94333. +#undef ret
  94334. +#define ret \
  94335. + CMP D0Re0, #-4095; \
  94336. + MOVLO PC, D1RtP; \
  94337. + MOV D1Ar1, D0Re0; \
  94338. + B SYSCALL_ERROR;
  94339. +#endif /* __ASSEMBLER__ */
  94340. +
  94341. +# undef PSEUDO
  94342. +# define PSEUDO(name, syscall_name, args) \
  94343. + .section ".text"; \
  94344. + .type ___##syscall_name##_nocancel,%function; \
  94345. + .globl ___##syscall_name##_nocancel; \
  94346. + ___##syscall_name##_nocancel: \
  94347. + cfi_startproc; \
  94348. + DO_CALL (syscall_name, args); \
  94349. + MOV PC, D1RtP; \
  94350. + cfi_endproc; \
  94351. + .size ___##syscall_name##_nocancel,.-___##syscall_name##_nocancel; \
  94352. + .globl _##name; \
  94353. + .type _##name, @function; \
  94354. +name##: \
  94355. +_##name##: \
  94356. + DOCARGS_##args; \
  94357. + SINGLE_THREAD_P; \
  94358. + UNDOCARGS_##args; \
  94359. + BNE .Lpseudo_cancel; \
  94360. + cfi_remember_state; \
  94361. + DO_CALL (syscall_name, 0); \
  94362. + ret \
  94363. + cfi_restore_state; \
  94364. + .Lpseudo_cancel: \
  94365. + MSETL [A0StP++], D0FrT, D0.5; \
  94366. + DOCARGS_##args; /* save syscall args etc. around CENABLE. */ \
  94367. + CENABLE; \
  94368. + MOV D0FrT, D0Re0; /* put mask in safe place. */ \
  94369. + UNDOCARGS_##args; /* restore syscall args. */ \
  94370. + DO_CALL(syscall_name, 0); /* do the call. */ \
  94371. + MOV D0.5, D0Re0; /* save syscall return value. */ \
  94372. + MOV D1Ar1, D0FrT; /* get mask back. */ \
  94373. + CDISABLE; \
  94374. + MOV D0Re0, D0.5; /* retrieve return value. */ \
  94375. + GETL D0.5, D1.5, [--A0StP]; \
  94376. + GETL D0FrT, D1RtP, [--A0StP];
  94377. +
  94378. +# define DOCARGS_0
  94379. +# define UNDOCARGS_0
  94380. +
  94381. +# define DOCARGS_1 \
  94382. + SETL [A0StP++], D1Ar1, D0Ar2
  94383. +# define UNDOCARGS_1 \
  94384. + GETL D1Ar1, D0Ar2, [--A0StP]
  94385. +
  94386. +# define DOCARGS_2 DOCARGS_1
  94387. +
  94388. +# define UNDOCARGS_2 UNDOCARGS_2
  94389. +
  94390. +# define DOCARGS_3 \
  94391. + MSETL [A0StP++], D1Ar1, D1Ar3
  94392. +
  94393. +# define UNDOCARGS_3 \
  94394. + GETL D1Ar1, D0Ar2, [--A0StP]; \
  94395. + GETL D1Ar3, D0Ar4, [--A0StP]
  94396. +
  94397. +# define DOCARGS_4 DOCARGS_3
  94398. +# define UNDOCARGS_4 UNDOCARGS_3
  94399. +
  94400. +# define DOCARGS_5 \
  94401. + MSETL [A0StP++], D1Ar1, D1Ar3, D1Ar5
  94402. +# define UNDOCARGS_5 \
  94403. + GETL D1Ar1, D0Ar2, [--A0StP]; \
  94404. + GETL D1Ar3, D0Ar4, [--A0StP]; \
  94405. + GETL D1Ar5, D0Ar6, [--A0StP]
  94406. +
  94407. +# define DOCARGS_6 DOCARGS_5
  94408. +# define UNDOCARGS_6 UNDOCARGS_5
  94409. +
  94410. +# ifdef IS_IN_libpthread
  94411. +# define CENABLE CALLR D1RtP, ___pthread_enable_asynccancel@PLT
  94412. +# define CDISABLE CALLR D1RtP, ___pthread_disable_asynccancel@PLT
  94413. +# define __local_multiple_threads __pthread_multiple_threads
  94414. +# elif !defined NOT_IN_libc
  94415. +# define CENABLE CALLR D1RtP, ___libc_enable_asynccancel@PLT
  94416. +# define CDISABLE CALLR D1RtP, ___libc_disable_asynccancel@PLT
  94417. +# define __local_multiple_threads __libc_multiple_threads
  94418. +# elif defined IS_IN_librt
  94419. +# define CENABLE CALLR D1RtP, ___librt_enable_asynccancel@PLT
  94420. +# define CDISABLE CALLR D1RtP, ___librt_disable_asynccancel@PLT
  94421. +# else
  94422. +# error Unsupported library
  94423. +# endif
  94424. +
  94425. +#ifndef __ASSEMBLER__
  94426. +# define SINGLE_THREAD_P \
  94427. + likely(THREAD_GETMEM (THREAD_SELF, \
  94428. + header.multiple_threads) == 0)
  94429. +#else
  94430. +# define SINGLE_THREAD_P \
  94431. + SETL [A0StP++], D0FrT, D1RtP; \
  94432. + CALLR D1RtP, ___metag_load_tp@PLT; \
  94433. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  94434. + GETD D0Re0, [D0Re0 + #MULTIPLE_THREADS_OFFSET]; \
  94435. + CMP D0Re0, #0; \
  94436. + GETL D0FrT, D1RtP, [--A0StP]
  94437. +#endif
  94438. +
  94439. +
  94440. +#elif !defined __ASSEMBLER__
  94441. +
  94442. +/* For rtld, et cetera. */
  94443. +# define SINGLE_THREAD_P 1
  94444. +# define NO_CANCELLATION 1
  94445. +
  94446. +#endif
  94447. +
  94448. +#ifndef __ASSEMBLER__
  94449. +# define RTLD_SINGLE_THREAD_P \
  94450. + likely(THREAD_GETMEM (THREAD_SELF, \
  94451. + header.multiple_threads) == 0)
  94452. +#endif
  94453. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S
  94454. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S 1970-01-01 01:00:00.000000000 +0100
  94455. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/metag/vfork.S 2014-02-03 12:32:57.000000000 +0100
  94456. @@ -0,0 +1,56 @@
  94457. +/* Copyright (C) 2005 Free Software Foundation, Inc.
  94458. + This file is part of the GNU C Library.
  94459. +
  94460. + The GNU C Library is free software; you can redistribute it and/or
  94461. + modify it under the terms of the GNU Lesser General Public
  94462. + License as published by the Free Software Foundation; either
  94463. + version 2.1 of the License, or (at your option) any later version.
  94464. +
  94465. + The GNU C Library is distributed in the hope that it will be useful,
  94466. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  94467. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  94468. + Lesser General Public License for more details.
  94469. +
  94470. + You should have received a copy of the GNU Lesser General Public
  94471. + License along with the GNU C Library; if not, write to the Free
  94472. + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94473. + 02111-1307 USA. */
  94474. +
  94475. +#include <tcb-offsets.h>
  94476. +#include <asm/unistd.h>
  94477. +
  94478. +#ifdef __PIC__
  94479. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp@PLT
  94480. +#else
  94481. +#define __VFORK_METAG_LOAD_TP ___metag_load_tp
  94482. +#endif
  94483. +
  94484. +/* Save the PID value. */
  94485. +#define SAVE_PID \
  94486. + SETL [A0StP++], D0FrT, D1RtP; \
  94487. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  94488. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  94489. + GETD D0FrT, [D0Re0 + #PID]; \
  94490. + NEGS D0FrT, D0FrT; \
  94491. + BNZ 1f; \
  94492. + MOVT D0FrT, #0x8000; \
  94493. +1: SETD [D0Re0 + #PID], D0FrT; \
  94494. + GETL D0FrT, D1RtP, [--A0StP];
  94495. +
  94496. +#define RESTORE_PID \
  94497. + CMP D0Re0, #0; \
  94498. + BEQ 1f; \
  94499. + MSETL [A0StP++], D0Re0, D0FrT; \
  94500. + CALLR D1RtP, __VFORK_METAG_LOAD_TP; \
  94501. + SUB D0Re0, D0Re0, #TLS_PRE_TCB_SIZE; \
  94502. + GETD D0FrT, [D0Re0 + #PID]; \
  94503. + NEG D0FrT, D0FrT; \
  94504. + MOVT D1Re0, #0x8000; \
  94505. + CMP D0FrT, D1Re0; \
  94506. + XOREQ D0FrT, D0FrT, D0FrT; \
  94507. + SETD [D0Re0 + #PID], D0FrT; \
  94508. + GETL D0FrT, D1RtP, [--A0StP]; \
  94509. + GETL D0Re0, D1Re0, [--A0StP]; \
  94510. +1:
  94511. +
  94512. +#include <../../../../../../../libc/sysdeps/linux/metag/vfork.S>
  94513. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h
  94514. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  94515. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  94516. @@ -13,9 +13,8 @@
  94517. Lesser General Public License for more details.
  94518. You should have received a copy of the GNU Lesser General Public
  94519. - License along with the GNU C Library; if not, write to the Free
  94520. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94521. - 02111-1307 USA. */
  94522. + License along with the GNU C Library; if not, see
  94523. + <http://www.gnu.org/licenses/>. */
  94524. #ifndef _BITS_PTHREADTYPES_H
  94525. #define _BITS_PTHREADTYPES_H 1
  94526. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h
  94527. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  94528. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  94529. @@ -12,9 +12,8 @@
  94530. Lesser General Public License for more details.
  94531. You should have received a copy of the GNU Lesser General Public
  94532. - License along with the GNU C Library; if not, write to the Free
  94533. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94534. - 02111-1307 USA. */
  94535. + License along with the GNU C Library; if not, see
  94536. + <http://www.gnu.org/licenses/>. */
  94537. #ifndef _SEMAPHORE_H
  94538. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  94539. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c
  94540. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c 2012-05-15 09:20:09.000000000 +0200
  94541. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/createthread.c 2014-02-03 12:32:57.000000000 +0100
  94542. @@ -12,9 +12,8 @@
  94543. Lesser General Public License for more details.
  94544. You should have received a copy of the GNU Lesser General Public
  94545. - License along with the GNU C Library; if not, write to the Free
  94546. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94547. - 02111-1307 USA. */
  94548. + License along with the GNU C Library; if not, see
  94549. + <http://www.gnu.org/licenses/>. */
  94550. /* Value passed to 'clone' for initialization of the thread register. */
  94551. #define TLS_VALUE ((void *) (pd) \
  94552. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h
  94553. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  94554. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  94555. @@ -13,9 +13,8 @@
  94556. Lesser General Public License for more details.
  94557. You should have received a copy of the GNU Lesser General Public
  94558. - License along with the GNU C Library; if not, write to the Free
  94559. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94560. - 02111-1307 USA. */
  94561. + License along with the GNU C Library; if not, see
  94562. + <http://www.gnu.org/licenses/>. */
  94563. #ifndef _LOWLEVELLOCK_H
  94564. #define _LOWLEVELLOCK_H 1
  94565. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c
  94566. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  94567. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  94568. @@ -13,9 +13,8 @@
  94569. Lesser General Public License for more details.
  94570. You should have received a copy of the GNU Lesser General Public
  94571. - License along with the GNU C Library; if not, write to the Free
  94572. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94573. - 02111-1307 USA. */
  94574. + License along with the GNU C Library; if not, see
  94575. + <http://www.gnu.org/licenses/>. */
  94576. #include "pthreadP.h"
  94577. #include <lowlevellock.h>
  94578. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S
  94579. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  94580. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  94581. @@ -12,9 +12,8 @@
  94582. Lesser General Public License for more details.
  94583. You should have received a copy of the GNU Lesser General Public
  94584. - License along with the GNU C Library; if not, write to the Free
  94585. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94586. - 02111-1307 USA. */
  94587. + License along with the GNU C Library; if not, see
  94588. + <http://www.gnu.org/licenses/>. */
  94589. #include <features.h>
  94590. #include <tls.h>
  94591. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h
  94592. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  94593. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  94594. @@ -12,9 +12,8 @@
  94595. Lesser General Public License for more details.
  94596. You should have received a copy of the GNU Lesser General Public
  94597. - License along with the GNU C Library; if not, write to the Free
  94598. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94599. - 02111-1307 USA. */
  94600. + License along with the GNU C Library; if not, see
  94601. + <http://www.gnu.org/licenses/>. */
  94602. #include <sysdep.h>
  94603. #include <tls.h>
  94604. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S
  94605. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S 2012-05-15 09:20:09.000000000 +0200
  94606. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mips/vfork.S 2014-02-03 12:32:57.000000000 +0100
  94607. @@ -12,9 +12,8 @@
  94608. Lesser General Public License for more details.
  94609. You should have received a copy of the GNU Lesser General Public
  94610. - License along with the GNU C Library; if not, write to the Free
  94611. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94612. - 02111-1307 USA. */
  94613. + License along with the GNU C Library; if not, see
  94614. + <http://www.gnu.org/licenses/>. */
  94615. #include <features.h>
  94616. #include <tls.h>
  94617. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c
  94618. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c 2012-05-15 09:20:09.000000000 +0200
  94619. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/mq_notify.c 2014-02-03 12:32:57.000000000 +0100
  94620. @@ -13,9 +13,8 @@
  94621. Lesser General Public License for more details.
  94622. You should have received a copy of the GNU Lesser General Public
  94623. - License along with the GNU C Library; if not, write to the Free
  94624. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94625. - 02111-1307 USA. */
  94626. + License along with the GNU C Library; if not, see
  94627. + <http://www.gnu.org/licenses/>. */
  94628. #include <assert.h>
  94629. #include <errno.h>
  94630. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h
  94631. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h 2012-05-15 09:20:09.000000000 +0200
  94632. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/not-cancel.h 2014-02-03 12:32:57.000000000 +0100
  94633. @@ -14,18 +14,26 @@
  94634. Lesser General Public License for more details.
  94635. You should have received a copy of the GNU Lesser General Public
  94636. - License along with the GNU C Library; if not, write to the Free
  94637. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94638. - 02111-1307 USA. */
  94639. + License along with the GNU C Library; if not, see
  94640. + <http://www.gnu.org/licenses/>. */
  94641. #include <sys/types.h>
  94642. #include <sysdep.h>
  94643. /* Uncancelable open. */
  94644. +#if defined __NR_openat && !defined __NR_open
  94645. +#define open_not_cancel(name, flags, mode) \
  94646. + INLINE_SYSCALL (openat, 4, AT_FDCWD, (const char *) (name), \
  94647. + (flags), (mode))
  94648. +#define open_not_cancel_2(name, flags) \
  94649. + INLINE_SYSCALL (openat, 3, AT_FDCWD, (const char *) (name), \
  94650. + (flags))
  94651. +#else
  94652. #define open_not_cancel(name, flags, mode) \
  94653. INLINE_SYSCALL (open, 3, (const char *) (name), (flags), (mode))
  94654. #define open_not_cancel_2(name, flags) \
  94655. INLINE_SYSCALL (open, 2, (const char *) (name), (flags))
  94656. +#endif
  94657. /* Uncancelable openat. */
  94658. #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt
  94659. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
  94660. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  94661. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  94662. @@ -14,9 +14,8 @@
  94663. Lesser General Public License for more details.
  94664. You should have received a copy of the GNU Lesser General Public
  94665. - License along with the GNU C Library; if not, write to the Free
  94666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94667. - 02111-1307 USA. */
  94668. + License along with the GNU C Library; if not, see
  94669. + <http://www.gnu.org/licenses/>. */
  94670. #ifndef _BITS_PTHREADTYPES_H
  94671. #define _BITS_PTHREADTYPES_H 1
  94672. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h
  94673. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  94674. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  94675. @@ -14,9 +14,8 @@
  94676. Lesser General Public License for more details.
  94677. You should have received a copy of the GNU Lesser General Public
  94678. - License along with the GNU C Library; if not, write to the Free
  94679. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94680. - 02111-1307 USA. */
  94681. + License along with the GNU C Library; if not, see
  94682. + <http://www.gnu.org/licenses/>. */
  94683. #ifndef _SEMAPHORE_H
  94684. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  94685. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c
  94686. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c 2012-05-15 09:20:09.000000000 +0200
  94687. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/createthread.c 2014-02-03 12:32:57.000000000 +0100
  94688. @@ -13,9 +13,8 @@
  94689. Lesser General Public License for more details.
  94690. You should have received a copy of the GNU Lesser General Public
  94691. - License along with the GNU C Library; if not, write to the Free
  94692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94693. - 02111-1307 USA. */
  94694. + License along with the GNU C Library; if not, see
  94695. + <http://www.gnu.org/licenses/>. */
  94696. /* Value passed to 'clone' for initialization of the thread register. */
  94697. #define TLS_VALUE ((void *) (pd) \
  94698. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
  94699. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  94700. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  94701. @@ -13,9 +13,8 @@
  94702. Lesser General Public License for more details.
  94703. You should have received a copy of the GNU Lesser General Public
  94704. - License along with the GNU C Library; if not, write to the Free
  94705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94706. - 02111-1307 USA. */
  94707. + License along with the GNU C Library; if not, see
  94708. + <http://www.gnu.org/licenses/>. */
  94709. #ifndef _LOWLEVELLOCK_H
  94710. #define _LOWLEVELLOCK_H 1
  94711. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S
  94712. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  94713. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  94714. @@ -13,9 +13,8 @@
  94715. Lesser General Public License for more details.
  94716. You should have received a copy of the GNU Lesser General Public
  94717. - License along with the GNU C Library; if not, write to the Free
  94718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94719. - 02111-1307 USA. */
  94720. + License along with the GNU C Library; if not, see
  94721. + <http://www.gnu.org/licenses/>. */
  94722. #include <sysdep.h>
  94723. #define _ERRNO_H 1
  94724. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
  94725. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  94726. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  94727. @@ -14,9 +14,8 @@
  94728. Lesser General Public License for more details.
  94729. You should have received a copy of the GNU Lesser General Public
  94730. - License along with the GNU C Library; if not, write to the Free
  94731. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  94732. - 02110-1301 USA. */
  94733. + License along with the GNU C Library; if not, see
  94734. + <http://www.gnu.org/licenses/>. */
  94735. #include <sysdep.h>
  94736. #include <tls.h>
  94737. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
  94738. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  94739. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  94740. @@ -13,9 +13,8 @@
  94741. Lesser General Public License for more details.
  94742. You should have received a copy of the GNU Lesser General Public
  94743. - License along with the GNU C Library; if not, write to the Free
  94744. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94745. - 02111-1307 USA. */
  94746. + License along with the GNU C Library; if not, see
  94747. + <http://www.gnu.org/licenses/>. */
  94748. #include <sysdep.h>
  94749. #define _ERRNO_H 1
  94750. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S
  94751. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  94752. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  94753. @@ -13,9 +13,8 @@
  94754. Lesser General Public License for more details.
  94755. You should have received a copy of the GNU Lesser General Public
  94756. - License along with the GNU C Library; if not, write to the Free
  94757. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94758. - 02111-1307 USA. */
  94759. + License along with the GNU C Library; if not, see
  94760. + <http://www.gnu.org/licenses/>. */
  94761. #include <sysdep.h>
  94762. #define _ERRNO_H 1
  94763. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
  94764. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  94765. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  94766. @@ -14,9 +14,8 @@
  94767. Lesser General Public License for more details.
  94768. You should have received a copy of the GNU Lesser General Public
  94769. - License along with the GNU C Library; if not, write to the Free
  94770. - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
  94771. - 02110-1301 USA. */
  94772. + License along with the GNU C Library; if not, see
  94773. + <http://www.gnu.org/licenses/>. */
  94774. #include <sysdep.h>
  94775. #include <tls.h>
  94776. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S
  94777. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  94778. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  94779. @@ -13,9 +13,8 @@
  94780. Lesser General Public License for more details.
  94781. You should have received a copy of the GNU Lesser General Public
  94782. - License along with the GNU C Library; if not, write to the Free
  94783. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94784. - 02111-1307 USA. */
  94785. + License along with the GNU C Library; if not, see
  94786. + <http://www.gnu.org/licenses/>. */
  94787. #include <sysdep.h>
  94788. #define _ERRNO_H 1
  94789. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c
  94790. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  94791. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  94792. @@ -13,9 +13,8 @@
  94793. Lesser General Public License for more details.
  94794. You should have received a copy of the GNU Lesser General Public
  94795. - License along with the GNU C Library; if not, write to the Free
  94796. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94797. - 02111-1307 USA. */
  94798. + License along with the GNU C Library; if not, see
  94799. + <http://www.gnu.org/licenses/>. */
  94800. #include "pthreadP.h"
  94801. #include <lowlevellock.h>
  94802. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c
  94803. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c 2012-05-15 09:20:09.000000000 +0200
  94804. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c 2014-02-03 12:32:57.000000000 +0100
  94805. @@ -13,9 +13,8 @@
  94806. Lesser General Public License for more details.
  94807. You should have received a copy of the GNU Lesser General Public
  94808. - License along with the GNU C Library; if not, write to the Free
  94809. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94810. - 02111-1307 USA. */
  94811. + License along with the GNU C Library; if not, see
  94812. + <http://www.gnu.org/licenses/>. */
  94813. #include "pthreadP.h"
  94814. #include <lowlevellock.h>
  94815. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c
  94816. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2012-05-15 09:20:09.000000000 +0200
  94817. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2014-02-03 12:32:57.000000000 +0100
  94818. @@ -13,9 +13,8 @@
  94819. Lesser General Public License for more details.
  94820. You should have received a copy of the GNU Lesser General Public
  94821. - License along with the GNU C Library; if not, write to the Free
  94822. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94823. - 02111-1307 USA. */
  94824. + License along with the GNU C Library; if not, see
  94825. + <http://www.gnu.org/licenses/>. */
  94826. #include <setjmp.h>
  94827. #include <stdlib.h>
  94828. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c
  94829. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c 2012-05-15 09:20:09.000000000 +0200
  94830. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/sem_post.c 2014-02-03 12:32:57.000000000 +0100
  94831. @@ -14,9 +14,8 @@
  94832. Lesser General Public License for more details.
  94833. You should have received a copy of the GNU Lesser General Public
  94834. - License along with the GNU C Library; if not, write to the Free
  94835. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94836. - 02111-1307 USA. */
  94837. + License along with the GNU C Library; if not, see
  94838. + <http://www.gnu.org/licenses/>. */
  94839. #include <errno.h>
  94840. #include <sysdep.h>
  94841. @@ -25,7 +24,7 @@
  94842. #include <semaphore.h>
  94843. int
  94844. -__new_sem_post (sem_t *sem)
  94845. +sem_post (sem_t *sem)
  94846. {
  94847. struct new_sem *isem = (struct new_sem *) sem;
  94848. @@ -44,4 +43,3 @@
  94849. }
  94850. return 0;
  94851. }
  94852. -weak_alias(__new_sem_post, sem_post)
  94853. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c
  94854. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c 2012-05-15 09:20:09.000000000 +0200
  94855. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pt-fork.c 2014-02-03 12:32:57.000000000 +0100
  94856. @@ -13,17 +13,16 @@
  94857. Lesser General Public License for more details.
  94858. You should have received a copy of the GNU Lesser General Public
  94859. - License along with the GNU C Library; if not, write to the Free
  94860. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94861. - 02111-1307 USA. */
  94862. + License along with the GNU C Library; if not, see
  94863. + <http://www.gnu.org/licenses/>. */
  94864. #include <unistd.h>
  94865. -extern int __libc_fork (void);
  94866. -
  94867. -pid_t
  94868. +#if 0
  94869. +static pid_t
  94870. __fork (void)
  94871. {
  94872. return __libc_fork ();
  94873. }
  94874. strong_alias (__fork, fork)
  94875. +#endif
  94876. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
  94877. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c 2012-05-15 09:20:09.000000000 +0200
  94878. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c 2014-02-03 12:32:57.000000000 +0100
  94879. @@ -13,9 +13,8 @@
  94880. Lesser General Public License for more details.
  94881. You should have received a copy of the GNU Lesser General Public
  94882. - License along with the GNU C Library; if not, write to the Free
  94883. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94884. - 02111-1307 USA. */
  94885. + License along with the GNU C Library; if not, see
  94886. + <http://www.gnu.org/licenses/>. */
  94887. #include <assert.h>
  94888. #include <errno.h>
  94889. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
  94890. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c 2012-05-15 09:20:09.000000000 +0200
  94891. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c 2014-02-03 12:32:57.000000000 +0100
  94892. @@ -13,9 +13,8 @@
  94893. Lesser General Public License for more details.
  94894. You should have received a copy of the GNU Lesser General Public
  94895. - License along with the GNU C Library; if not, write to the Free
  94896. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94897. - 02111-1307 USA. */
  94898. + License along with the GNU C Library; if not, see
  94899. + <http://www.gnu.org/licenses/>. */
  94900. #include <assert.h>
  94901. #include <errno.h>
  94902. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c
  94903. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c 2012-05-15 09:20:09.000000000 +0200
  94904. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getaffinity.c 2014-02-03 12:32:57.000000000 +0100
  94905. @@ -13,9 +13,8 @@
  94906. Lesser General Public License for more details.
  94907. You should have received a copy of the GNU Lesser General Public
  94908. - License along with the GNU C Library; if not, write to the Free
  94909. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94910. - 02111-1307 USA. */
  94911. + License along with the GNU C Library; if not, see
  94912. + <http://www.gnu.org/licenses/>. */
  94913. #include <errno.h>
  94914. #include <limits.h>
  94915. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c
  94916. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c 2012-05-15 09:20:09.000000000 +0200
  94917. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c 2014-02-03 12:32:57.000000000 +0100
  94918. @@ -12,9 +12,8 @@
  94919. Lesser General Public License for more details.
  94920. You should have received a copy of the GNU Lesser General Public
  94921. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  94922. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  94923. - Boston, MA 02111-1307, USA. */
  94924. + License along with the GNU C Library; see the file COPYING.LIB. If
  94925. + not, see <http://www.gnu.org/licenses/>. */
  94926. #include <errno.h>
  94927. #include <pthreadP.h>
  94928. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c
  94929. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c 2012-05-15 09:20:09.000000000 +0200
  94930. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_kill.c 2014-02-03 12:32:57.000000000 +0100
  94931. @@ -13,9 +13,8 @@
  94932. Lesser General Public License for more details.
  94933. You should have received a copy of the GNU Lesser General Public
  94934. - License along with the GNU C Library; if not, write to the Free
  94935. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94936. - 02111-1307 USA. */
  94937. + License along with the GNU C Library; if not, see
  94938. + <http://www.gnu.org/licenses/>. */
  94939. #include <errno.h>
  94940. #include <signal.h>
  94941. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c
  94942. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c 2012-05-15 09:20:09.000000000 +0200
  94943. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_setaffinity.c 2014-02-03 12:32:57.000000000 +0100
  94944. @@ -13,9 +13,8 @@
  94945. Lesser General Public License for more details.
  94946. You should have received a copy of the GNU Lesser General Public
  94947. - License along with the GNU C Library; if not, write to the Free
  94948. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94949. - 02111-1307 USA. */
  94950. + License along with the GNU C Library; if not, see
  94951. + <http://www.gnu.org/licenses/>. */
  94952. #include <alloca.h>
  94953. #include <errno.h>
  94954. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c
  94955. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c 2012-05-15 09:20:09.000000000 +0200
  94956. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_sigqueue.c 2014-02-03 12:32:57.000000000 +0100
  94957. @@ -13,9 +13,8 @@
  94958. Lesser General Public License for more details.
  94959. You should have received a copy of the GNU Lesser General Public
  94960. - License along with the GNU C Library; if not, write to the Free
  94961. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94962. - 02111-1307 USA. */
  94963. + License along with the GNU C Library; if not, see
  94964. + <http://www.gnu.org/licenses/>. */
  94965. #include <errno.h>
  94966. #include <signal.h>
  94967. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c
  94968. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c 2012-05-15 09:20:09.000000000 +0200
  94969. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pthread_yield.c 2014-02-03 12:32:57.000000000 +0100
  94970. @@ -13,9 +13,8 @@
  94971. Lesser General Public License for more details.
  94972. You should have received a copy of the GNU Lesser General Public
  94973. - License along with the GNU C Library; if not, write to the Free
  94974. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94975. - 02111-1307 USA. */
  94976. + License along with the GNU C Library; if not, see
  94977. + <http://www.gnu.org/licenses/>. */
  94978. #include <pthread.h>
  94979. #include <sched.h>
  94980. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c
  94981. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c 2012-05-15 09:20:09.000000000 +0200
  94982. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/pt-raise.c 2014-02-03 12:32:57.000000000 +0100
  94983. @@ -13,9 +13,8 @@
  94984. Lesser General Public License for more details.
  94985. You should have received a copy of the GNU Lesser General Public
  94986. - License along with the GNU C Library; if not, write to the Free
  94987. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  94988. - 02111-1307 USA. */
  94989. + License along with the GNU C Library; if not, see
  94990. + <http://www.gnu.org/licenses/>. */
  94991. #include <errno.h>
  94992. #include <signal.h>
  94993. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c
  94994. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c 2012-05-15 09:20:09.000000000 +0200
  94995. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/raise.c 2014-02-03 12:32:57.000000000 +0100
  94996. @@ -13,9 +13,8 @@
  94997. Lesser General Public License for more details.
  94998. You should have received a copy of the GNU Lesser General Public
  94999. - License along with the GNU C Library; if not, write to the Free
  95000. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95001. - 02111-1307 USA. */
  95002. + License along with the GNU C Library; if not, see
  95003. + <http://www.gnu.org/licenses/>. */
  95004. #include <errno.h>
  95005. #include <limits.h>
  95006. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c
  95007. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c 2012-05-15 09:20:09.000000000 +0200
  95008. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/register-atfork.c 2014-02-03 12:32:57.000000000 +0100
  95009. @@ -13,9 +13,8 @@
  95010. Lesser General Public License for more details.
  95011. You should have received a copy of the GNU Lesser General Public
  95012. - License along with the GNU C Library; if not, write to the Free
  95013. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95014. - 02111-1307 USA. */
  95015. + License along with the GNU C Library; if not, see
  95016. + <http://www.gnu.org/licenses/>. */
  95017. #include <errno.h>
  95018. #include <stdlib.h>
  95019. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c
  95020. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c 2012-05-15 09:20:09.000000000 +0200
  95021. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_post.c 2014-02-03 12:32:57.000000000 +0100
  95022. @@ -14,9 +14,8 @@
  95023. Lesser General Public License for more details.
  95024. You should have received a copy of the GNU Lesser General Public
  95025. - License along with the GNU C Library; if not, write to the Free
  95026. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95027. - 02111-1307 USA. */
  95028. + License along with the GNU C Library; if not, see
  95029. + <http://www.gnu.org/licenses/>. */
  95030. #include <errno.h>
  95031. #include <sysdep.h>
  95032. @@ -26,7 +25,7 @@
  95033. #include <tls.h>
  95034. int
  95035. -__new_sem_post (sem_t *sem)
  95036. +sem_post (sem_t *sem)
  95037. {
  95038. struct new_sem *isem = (struct new_sem *) sem;
  95039. @@ -55,4 +54,3 @@
  95040. }
  95041. return 0;
  95042. }
  95043. -weak_alias(__new_sem_post, sem_post)
  95044. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c
  95045. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c 2012-05-15 09:20:09.000000000 +0200
  95046. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_timedwait.c 2014-02-03 12:32:57.000000000 +0100
  95047. @@ -14,9 +14,8 @@
  95048. Lesser General Public License for more details.
  95049. You should have received a copy of the GNU Lesser General Public
  95050. - License along with the GNU C Library; if not, write to the Free
  95051. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95052. - 02111-1307 USA. */
  95053. + License along with the GNU C Library; if not, see
  95054. + <http://www.gnu.org/licenses/>. */
  95055. #include <errno.h>
  95056. #include <sysdep.h>
  95057. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c
  95058. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c 2012-05-15 09:20:09.000000000 +0200
  95059. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_trywait.c 2014-02-03 12:32:57.000000000 +0100
  95060. @@ -14,9 +14,8 @@
  95061. Lesser General Public License for more details.
  95062. You should have received a copy of the GNU Lesser General Public
  95063. - License along with the GNU C Library; if not, write to the Free
  95064. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95065. - 02111-1307 USA. */
  95066. + License along with the GNU C Library; if not, see
  95067. + <http://www.gnu.org/licenses/>. */
  95068. #include <errno.h>
  95069. #include <sysdep.h>
  95070. @@ -26,7 +25,7 @@
  95071. int
  95072. -__new_sem_trywait (sem_t *sem)
  95073. +sem_trywait (sem_t *sem)
  95074. {
  95075. int *futex = (int *) sem;
  95076. int val;
  95077. @@ -41,4 +40,3 @@
  95078. __set_errno (EAGAIN);
  95079. return -1;
  95080. }
  95081. -weak_alias(__new_sem_trywait, sem_trywait)
  95082. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c
  95083. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c 2012-05-15 09:20:09.000000000 +0200
  95084. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sem_wait.c 2014-02-03 12:32:57.000000000 +0100
  95085. @@ -14,9 +14,8 @@
  95086. Lesser General Public License for more details.
  95087. You should have received a copy of the GNU Lesser General Public
  95088. - License along with the GNU C Library; if not, write to the Free
  95089. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95090. - 02111-1307 USA. */
  95091. + License along with the GNU C Library; if not, see
  95092. + <http://www.gnu.org/licenses/>. */
  95093. #include <errno.h>
  95094. #include <sysdep.h>
  95095. @@ -38,7 +37,7 @@
  95096. int
  95097. -__new_sem_wait (sem_t *sem)
  95098. +sem_wait (sem_t *sem)
  95099. {
  95100. struct new_sem *isem = (struct new_sem *) sem;
  95101. int err;
  95102. @@ -81,4 +80,3 @@
  95103. return err;
  95104. }
  95105. -weak_alias(__new_sem_wait, sem_wait)
  95106. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
  95107. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  95108. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  95109. @@ -14,9 +14,8 @@
  95110. Lesser General Public License for more details.
  95111. You should have received a copy of the GNU Lesser General Public
  95112. - License along with the GNU C Library; if not, write to the Free
  95113. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95114. - 02111-1307 USA. */
  95115. + License along with the GNU C Library; if not, see
  95116. + <http://www.gnu.org/licenses/>. */
  95117. #ifndef _BITS_PTHREADTYPES_H
  95118. #define _BITS_PTHREADTYPES_H 1
  95119. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h
  95120. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  95121. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  95122. @@ -13,9 +13,8 @@
  95123. Lesser General Public License for more details.
  95124. You should have received a copy of the GNU Lesser General Public
  95125. - License along with the GNU C Library; if not, write to the Free
  95126. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95127. - 02111-1307 USA. */
  95128. + License along with the GNU C Library; if not, see
  95129. + <http://www.gnu.org/licenses/>. */
  95130. #ifndef _SEMAPHORE_H
  95131. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  95132. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c
  95133. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c 2012-05-15 09:20:09.000000000 +0200
  95134. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/createthread.c 2014-02-03 12:32:57.000000000 +0100
  95135. @@ -12,9 +12,8 @@
  95136. Lesser General Public License for more details.
  95137. You should have received a copy of the GNU Lesser General Public
  95138. - License along with the GNU C Library; if not, write to the Free
  95139. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95140. - 02111-1307 USA. */
  95141. + License along with the GNU C Library; if not, see
  95142. + <http://www.gnu.org/licenses/>. */
  95143. /* Value passed to 'clone' for initialization of the thread register. */
  95144. #define TLS_VALUE (pd + 1)
  95145. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c
  95146. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c 2012-05-15 09:20:09.000000000 +0200
  95147. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/fork.c 2014-02-03 12:32:57.000000000 +0100
  95148. @@ -12,9 +12,8 @@
  95149. Lesser General Public License for more details.
  95150. You should have received a copy of the GNU Lesser General Public
  95151. - License along with the GNU C Library; if not, write to the Free
  95152. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95153. - 02111-1307 USA. */
  95154. + License along with the GNU C Library; if not, see
  95155. + <http://www.gnu.org/licenses/>. */
  95156. #include <sched.h>
  95157. #include <signal.h>
  95158. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S
  95159. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  95160. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  95161. @@ -12,8 +12,7 @@
  95162. Lesser General Public License for more details.
  95163. You should have received a copy of the GNU Lesser General Public
  95164. - License along with the GNU C Library; if not, write to the Free
  95165. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95166. - 02111-1307 USA. */
  95167. + License along with the GNU C Library; if not, see
  95168. + <http://www.gnu.org/licenses/>. */
  95169. #include "lowlevellock.S"
  95170. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h
  95171. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h 2012-05-15 09:20:09.000000000 +0200
  95172. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h 2014-02-03 12:32:57.000000000 +0100
  95173. @@ -12,9 +12,8 @@
  95174. Lesser General Public License for more details.
  95175. You should have received a copy of the GNU Lesser General Public
  95176. - License along with the GNU C Library; if not, write to the Free
  95177. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95178. - 02111-1307 USA. */
  95179. + License along with the GNU C Library; if not, see
  95180. + <http://www.gnu.org/licenses/>. */
  95181. #ifdef __ASSEMBLER__
  95182. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h
  95183. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  95184. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  95185. @@ -13,9 +13,8 @@
  95186. Lesser General Public License for more details.
  95187. You should have received a copy of the GNU Lesser General Public
  95188. - License along with the GNU C Library; if not, write to the Free
  95189. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95190. - 02111-1307 USA. */
  95191. + License along with the GNU C Library; if not, see
  95192. + <http://www.gnu.org/licenses/>. */
  95193. #ifndef _LOWLEVELLOCK_H
  95194. #define _LOWLEVELLOCK_H 1
  95195. @@ -396,9 +395,9 @@
  95196. #define lll_wait_tid(tid) \
  95197. do { \
  95198. - __typeof (tid) *__tid = &(tid); \
  95199. - while (*__tid != 0) \
  95200. - lll_futex_wait (__tid, *__tid, LLL_SHARED); \
  95201. + __typeof (tid) __tid; \
  95202. + while ((__tid = (tid)) != 0) \
  95203. + lll_futex_wait (&(tid), __tid, LLL_SHARED); \
  95204. } while (0)
  95205. extern int __lll_timedwait_tid (int *tid, const struct timespec *abstime)
  95206. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
  95207. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  95208. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  95209. @@ -13,9 +13,8 @@
  95210. Lesser General Public License for more details.
  95211. You should have received a copy of the GNU Lesser General Public
  95212. - License along with the GNU C Library; if not, write to the Free
  95213. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95214. - 02111-1307 USA. */
  95215. + License along with the GNU C Library; if not, see
  95216. + <http://www.gnu.org/licenses/>. */
  95217. #include <sysdep.h>
  95218. #include <pthread-errnos.h>
  95219. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S
  95220. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  95221. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  95222. @@ -13,9 +13,8 @@
  95223. Lesser General Public License for more details.
  95224. You should have received a copy of the GNU Lesser General Public
  95225. - License along with the GNU C Library; if not, write to the Free
  95226. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95227. - 02111-1307 USA. */
  95228. + License along with the GNU C Library; if not, see
  95229. + <http://www.gnu.org/licenses/>. */
  95230. #include <sysdep.h>
  95231. #include <pthread-errnos.h>
  95232. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
  95233. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S 2012-05-15 09:20:09.000000000 +0200
  95234. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  95235. @@ -12,9 +12,8 @@
  95236. Lesser General Public License for more details.
  95237. You should have received a copy of the GNU Lesser General Public
  95238. - License along with the GNU C Library; if not, write to the Free
  95239. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95240. - 02111-1307 USA. */
  95241. + License along with the GNU C Library; if not, see
  95242. + <http://www.gnu.org/licenses/>. */
  95243. #include <sysdep.h>
  95244. #include <lowlevellock.h>
  95245. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
  95246. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S 2012-05-15 09:20:09.000000000 +0200
  95247. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  95248. @@ -12,9 +12,8 @@
  95249. Lesser General Public License for more details.
  95250. You should have received a copy of the GNU Lesser General Public
  95251. - License along with the GNU C Library; if not, write to the Free
  95252. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95253. - 02111-1307 USA. */
  95254. + License along with the GNU C Library; if not, see
  95255. + <http://www.gnu.org/licenses/>. */
  95256. #include <sysdep.h>
  95257. #include <lowlevellock.h>
  95258. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
  95259. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S 2012-05-15 09:20:09.000000000 +0200
  95260. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  95261. @@ -12,9 +12,8 @@
  95262. Lesser General Public License for more details.
  95263. You should have received a copy of the GNU Lesser General Public
  95264. - License along with the GNU C Library; if not, write to the Free
  95265. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95266. - 02111-1307 USA. */
  95267. + License along with the GNU C Library; if not, see
  95268. + <http://www.gnu.org/licenses/>. */
  95269. #include <sysdep.h>
  95270. #include <lowlevellock.h>
  95271. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
  95272. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  95273. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  95274. @@ -12,9 +12,8 @@
  95275. Lesser General Public License for more details.
  95276. You should have received a copy of the GNU Lesser General Public
  95277. - License along with the GNU C Library; if not, write to the Free
  95278. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95279. - 02111-1307 USA. */
  95280. + License along with the GNU C Library; if not, see
  95281. + <http://www.gnu.org/licenses/>. */
  95282. #include <sysdep.h>
  95283. #include <lowlevellock.h>
  95284. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
  95285. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S 2012-05-15 09:20:09.000000000 +0200
  95286. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  95287. @@ -12,9 +12,8 @@
  95288. Lesser General Public License for more details.
  95289. You should have received a copy of the GNU Lesser General Public
  95290. - License along with the GNU C Library; if not, write to the Free
  95291. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95292. - 02111-1307 USA. */
  95293. + License along with the GNU C Library; if not, see
  95294. + <http://www.gnu.org/licenses/>. */
  95295. #include <sysdep.h>
  95296. #include <lowlevellock.h>
  95297. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
  95298. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S 2012-05-15 09:20:09.000000000 +0200
  95299. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S 2014-02-03 12:32:57.000000000 +0100
  95300. @@ -12,9 +12,8 @@
  95301. Lesser General Public License for more details.
  95302. You should have received a copy of the GNU Lesser General Public
  95303. - License along with the GNU C Library; if not, write to the Free
  95304. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95305. - 02111-1307 USA. */
  95306. + License along with the GNU C Library; if not, see
  95307. + <http://www.gnu.org/licenses/>. */
  95308. #include <unwindbuf.h>
  95309. #include <sysdep.h>
  95310. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
  95311. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S 2012-05-15 09:20:09.000000000 +0200
  95312. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  95313. @@ -12,9 +12,8 @@
  95314. Lesser General Public License for more details.
  95315. You should have received a copy of the GNU Lesser General Public
  95316. - License along with the GNU C Library; if not, write to the Free
  95317. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95318. - 02111-1307 USA. */
  95319. + License along with the GNU C Library; if not, see
  95320. + <http://www.gnu.org/licenses/>. */
  95321. #include <sysdep.h>
  95322. #include <lowlevellock.h>
  95323. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
  95324. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S 2012-05-15 09:20:09.000000000 +0200
  95325. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  95326. @@ -12,9 +12,8 @@
  95327. Lesser General Public License for more details.
  95328. You should have received a copy of the GNU Lesser General Public
  95329. - License along with the GNU C Library; if not, write to the Free
  95330. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95331. - 02111-1307 USA. */
  95332. + License along with the GNU C Library; if not, see
  95333. + <http://www.gnu.org/licenses/>. */
  95334. #include <sysdep.h>
  95335. #include <lowlevellock.h>
  95336. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
  95337. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S 2012-05-15 09:20:09.000000000 +0200
  95338. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  95339. @@ -12,9 +12,8 @@
  95340. Lesser General Public License for more details.
  95341. You should have received a copy of the GNU Lesser General Public
  95342. - License along with the GNU C Library; if not, write to the Free
  95343. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95344. - 02111-1307 USA. */
  95345. + License along with the GNU C Library; if not, see
  95346. + <http://www.gnu.org/licenses/>. */
  95347. #include <sysdep.h>
  95348. #include <lowlevellock.h>
  95349. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
  95350. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S 2012-05-15 09:20:09.000000000 +0200
  95351. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  95352. @@ -12,9 +12,8 @@
  95353. Lesser General Public License for more details.
  95354. You should have received a copy of the GNU Lesser General Public
  95355. - License along with the GNU C Library; if not, write to the Free
  95356. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95357. - 02111-1307 USA. */
  95358. + License along with the GNU C Library; if not, see
  95359. + <http://www.gnu.org/licenses/>. */
  95360. #include <sysdep.h>
  95361. #include <lowlevellock.h>
  95362. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
  95363. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S 2012-05-15 09:20:09.000000000 +0200
  95364. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  95365. @@ -12,9 +12,8 @@
  95366. Lesser General Public License for more details.
  95367. You should have received a copy of the GNU Lesser General Public
  95368. - License along with the GNU C Library; if not, write to the Free
  95369. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95370. - 02111-1307 USA. */
  95371. + License along with the GNU C Library; if not, see
  95372. + <http://www.gnu.org/licenses/>. */
  95373. #include <sysdep.h>
  95374. #include <lowlevellock.h>
  95375. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c
  95376. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2012-05-15 09:20:09.000000000 +0200
  95377. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-initfini.c 2014-02-03 12:32:57.000000000 +0100
  95378. @@ -23,8 +23,7 @@
  95379. You should have received a copy of the GNU Library General Public
  95380. License along with the GNU C Library; see the file COPYING.LIB. If not,
  95381. - write to the Free Software Foundation, 59 Temple Place - Suite 330,
  95382. - Boston, MA 02111-1307, USA. */
  95383. + see <http://www.gnu.org/licenses/>. */
  95384. /* This file is compiled into assembly code which is then munged by a sed
  95385. script into two files: crti.s and crtn.s.
  95386. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S
  95387. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  95388. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  95389. @@ -12,9 +12,8 @@
  95390. Lesser General Public License for more details.
  95391. You should have received a copy of the GNU Lesser General Public
  95392. - License along with the GNU C Library; if not, write to the Free
  95393. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95394. - 02111-1307 USA. */
  95395. + License along with the GNU C Library; if not, see
  95396. + <http://www.gnu.org/licenses/>. */
  95397. #include <sysdep.h>
  95398. #define _ERRNO_H 1
  95399. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S
  95400. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  95401. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  95402. @@ -12,9 +12,8 @@
  95403. Lesser General Public License for more details.
  95404. You should have received a copy of the GNU Lesser General Public
  95405. - License along with the GNU C Library; if not, write to the Free
  95406. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95407. - 02111-1307 USA. */
  95408. + License along with the GNU C Library; if not, see
  95409. + <http://www.gnu.org/licenses/>. */
  95410. #include <sysdep.h>
  95411. #include <pthread-errnos.h>
  95412. @@ -25,10 +24,10 @@
  95413. .text
  95414. - .globl __new_sem_post
  95415. - .type __new_sem_post,@function
  95416. + .globl sem_post
  95417. + .type sem_post,@function
  95418. .align 5
  95419. -__new_sem_post:
  95420. +sem_post:
  95421. mov.l @(VALUE,r4), r2
  95422. 0:
  95423. mov.l .Lmax, r1
  95424. @@ -106,5 +105,4 @@
  95425. .Lerrloc3:
  95426. .long __errno_location@PLT-(.Lerrloc3b-.)
  95427. #endif
  95428. - .size __new_sem_post,.-__new_sem_post
  95429. - weak_alias(__new_sem_post, sem_post)
  95430. + .size sem_post,.-sem_post
  95431. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S
  95432. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  95433. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  95434. @@ -12,9 +12,8 @@
  95435. Lesser General Public License for more details.
  95436. You should have received a copy of the GNU Lesser General Public
  95437. - License along with the GNU C Library; if not, write to the Free
  95438. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95439. - 02111-1307 USA. */
  95440. + License along with the GNU C Library; if not, see
  95441. + <http://www.gnu.org/licenses/>. */
  95442. #include <sysdep.h>
  95443. #include <pthread-errnos.h>
  95444. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S
  95445. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  95446. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  95447. @@ -12,9 +12,8 @@
  95448. Lesser General Public License for more details.
  95449. You should have received a copy of the GNU Lesser General Public
  95450. - License along with the GNU C Library; if not, write to the Free
  95451. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95452. - 02111-1307 USA. */
  95453. + License along with the GNU C Library; if not, see
  95454. + <http://www.gnu.org/licenses/>. */
  95455. #include <sysdep.h>
  95456. #include <pthread-errnos.h>
  95457. @@ -24,10 +23,10 @@
  95458. .text
  95459. - .globl __new_sem_trywait
  95460. - .type __new_sem_trywait,@function
  95461. + .globl sem_trywait
  95462. + .type sem_trywait,@function
  95463. .align 5
  95464. -__new_sem_trywait:
  95465. +sem_trywait:
  95466. mov.l r12, @-r15
  95467. mov.l r8, @-r15
  95468. sts.l pr, @-r15
  95469. @@ -86,5 +85,4 @@
  95470. .Lerrloc1:
  95471. .long __errno_location@PLT-(.Lerrloc1b-.)
  95472. #endif
  95473. - .size __new_sem_trywait,.-__new_sem_trywait
  95474. - weak_alias(__new_sem_trywait, sem_trywait)
  95475. + .size sem_trywait,.-sem_trywait
  95476. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
  95477. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  95478. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  95479. @@ -12,9 +12,8 @@
  95480. Lesser General Public License for more details.
  95481. You should have received a copy of the GNU Lesser General Public
  95482. - License along with the GNU C Library; if not, write to the Free
  95483. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95484. - 02111-1307 USA. */
  95485. + License along with the GNU C Library; if not, see
  95486. + <http://www.gnu.org/licenses/>. */
  95487. #include <sysdep.h>
  95488. #include <pthread-errnos.h>
  95489. @@ -30,10 +29,10 @@
  95490. .text
  95491. - .globl __new_sem_wait
  95492. - .type __new_sem_wait,@function
  95493. + .globl sem_wait
  95494. + .type sem_wait,@function
  95495. .align 5
  95496. -__new_sem_wait:
  95497. +sem_wait:
  95498. .LSTARTCODE:
  95499. mov.l r8, @-r15
  95500. .Lpush_r8:
  95501. @@ -161,8 +160,7 @@
  95502. .long __pthread_enable_asynccancel-.Lenable0b
  95503. .Ldisable0:
  95504. .long __pthread_disable_asynccancel-.Ldisable0b
  95505. - .size __new_sem_wait,.-__new_sem_wait
  95506. - weak_alias(__new_sem_wait, sem_wait)
  95507. + .size sem_wait,.-sem_wait
  95508. .type sem_wait_cleanup,@function
  95509. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h
  95510. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h 2012-05-15 09:20:09.000000000 +0200
  95511. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/smp.h 2014-02-03 12:32:57.000000000 +0100
  95512. @@ -14,8 +14,7 @@
  95513. You should have received a copy of the GNU Library General Public
  95514. License along with the GNU C Library; see the file COPYING.LIB. If not,
  95515. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95516. - Boston, MA 02111-1307, USA. */
  95517. + see <http://www.gnu.org/licenses/>. */
  95518. static inline int
  95519. is_smp_system (void)
  95520. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
  95521. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95522. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95523. @@ -12,9 +12,8 @@
  95524. Lesser General Public License for more details.
  95525. You should have received a copy of the GNU Lesser General Public
  95526. - License along with the GNU C Library; if not, write to the Free
  95527. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95528. - 02111-1307 USA. */
  95529. + License along with the GNU C Library; if not, see
  95530. + <http://www.gnu.org/licenses/>. */
  95531. #include <tls.h>
  95532. #include <sysdep.h>
  95533. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S
  95534. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S 2012-05-15 09:20:09.000000000 +0200
  95535. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95536. @@ -12,9 +12,8 @@
  95537. Lesser General Public License for more details.
  95538. You should have received a copy of the GNU Lesser General Public
  95539. - License along with the GNU C Library; if not, write to the Free
  95540. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95541. - 02111-1307 USA. */
  95542. + License along with the GNU C Library; if not, see
  95543. + <http://www.gnu.org/licenses/>. */
  95544. #include <sysdep.h>
  95545. #define _ERRNO_H 1
  95546. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c
  95547. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c 2012-05-15 09:20:09.000000000 +0200
  95548. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sigtimedwait.c 2014-02-03 12:32:57.000000000 +0100
  95549. @@ -12,9 +12,8 @@
  95550. Lesser General Public License for more details.
  95551. You should have received a copy of the GNU Lesser General Public
  95552. - License along with the GNU C Library; if not, write to the Free
  95553. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95554. - 02111-1307 USA. */
  95555. + License along with the GNU C Library; if not, see
  95556. + <http://www.gnu.org/licenses/>. */
  95557. #include <pthreadP.h>
  95558. #include <errno.h>
  95559. @@ -67,7 +66,7 @@
  95560. /* Return any pending signal or wait for one for the given time. */
  95561. -int attribute_hidden
  95562. +int
  95563. __sigtimedwait (const sigset_t *set, siginfo_t *info,
  95564. const struct timespec *timeout)
  95565. {
  95566. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c
  95567. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c 2012-05-15 09:20:09.000000000 +0200
  95568. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sigwaitinfo.c 2014-02-03 12:32:57.000000000 +0100
  95569. @@ -12,9 +12,8 @@
  95570. Lesser General Public License for more details.
  95571. You should have received a copy of the GNU Lesser General Public
  95572. - License along with the GNU C Library; if not, write to the Free
  95573. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95574. - 02111-1307 USA. */
  95575. + License along with the GNU C Library; if not, see
  95576. + <http://www.gnu.org/licenses/>. */
  95577. #include <pthreadP.h>
  95578. #include <errno.h>
  95579. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h
  95580. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h 2012-05-15 09:20:09.000000000 +0200
  95581. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/smp.h 2014-02-03 12:32:57.000000000 +0100
  95582. @@ -14,8 +14,7 @@
  95583. You should have received a copy of the GNU Library General Public
  95584. License along with the GNU C Library; see the file COPYING.LIB. If not,
  95585. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95586. - Boston, MA 02111-1307, USA. */
  95587. + see <http://www.gnu.org/licenses/>. */
  95588. /* Test whether the machine has more than one processor. This is not the
  95589. best test but good enough. More complicated tests would require `malloc'
  95590. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h
  95591. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2012-05-15 09:20:09.000000000 +0200
  95592. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/local_lim.h 2014-02-03 12:32:57.000000000 +0100
  95593. @@ -14,8 +14,7 @@
  95594. You should have received a copy of the GNU Library General Public
  95595. License along with the GNU C Library; see the file COPYING.LIB. If not,
  95596. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95597. - Boston, MA 02111-1307, USA. */
  95598. + see <http://www.gnu.org/licenses/>. */
  95599. /* The kernel header pollutes the namespace with the NR_OPEN symbol
  95600. and defines LINK_MAX although filesystems have different maxima. A
  95601. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
  95602. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  95603. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  95604. @@ -14,9 +14,8 @@
  95605. Lesser General Public License for more details.
  95606. You should have received a copy of the GNU Lesser General Public
  95607. - License along with the GNU C Library; if not, write to the Free
  95608. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95609. - 02111-1307 USA. */
  95610. + License along with the GNU C Library; if not, see
  95611. + <http://www.gnu.org/licenses/>. */
  95612. #ifndef _BITS_PTHREADTYPES_H
  95613. #define _BITS_PTHREADTYPES_H 1
  95614. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h
  95615. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  95616. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  95617. @@ -14,9 +14,8 @@
  95618. Lesser General Public License for more details.
  95619. You should have received a copy of the GNU Lesser General Public
  95620. - License along with the GNU C Library; if not, write to the Free
  95621. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95622. - 02111-1307 USA. */
  95623. + License along with the GNU C Library; if not, see
  95624. + <http://www.gnu.org/licenses/>. */
  95625. #ifndef _SEMAPHORE_H
  95626. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  95627. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c
  95628. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c 2012-05-15 09:20:09.000000000 +0200
  95629. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/fork.c 2014-02-03 12:32:57.000000000 +0100
  95630. @@ -13,9 +13,8 @@
  95631. Lesser General Public License for more details.
  95632. You should have received a copy of the GNU Lesser General Public
  95633. - License along with the GNU C Library; if not, write to the Free
  95634. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95635. - 02111-1307 USA. */
  95636. + License along with the GNU C Library; if not, see
  95637. + <http://www.gnu.org/licenses/>. */
  95638. #include <sched.h>
  95639. #include <signal.h>
  95640. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c
  95641. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  95642. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/libc-lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  95643. @@ -13,9 +13,8 @@
  95644. Lesser General Public License for more details.
  95645. You should have received a copy of the GNU Lesser General Public
  95646. - License along with the GNU C Library; if not, write to the Free
  95647. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95648. - 02111-1307 USA. */
  95649. + License along with the GNU C Library; if not, see
  95650. + <http://www.gnu.org/licenses/>. */
  95651. /* No difference to lowlevellock.c, except we lose a couple of functions. */
  95652. #include "lowlevellock.c"
  95653. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c
  95654. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c 2012-05-15 09:20:09.000000000 +0200
  95655. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.c 2014-02-03 12:32:57.000000000 +0100
  95656. @@ -14,9 +14,8 @@
  95657. Lesser General Public License for more details.
  95658. You should have received a copy of the GNU Lesser General Public
  95659. - License along with the GNU C Library; if not, write to the Free
  95660. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95661. - 02111-1307 USA. */
  95662. + License along with the GNU C Library; if not, see
  95663. + <http://www.gnu.org/licenses/>. */
  95664. #include <errno.h>
  95665. #include <sysdep.h>
  95666. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
  95667. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  95668. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  95669. @@ -14,9 +14,8 @@
  95670. Lesser General Public License for more details.
  95671. You should have received a copy of the GNU Lesser General Public
  95672. - License along with the GNU C Libr \ary; if not, write to the Free
  95673. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95674. - 02111-1307 USA. */
  95675. + License along with the GNU C Library; see the file COPYING.LIB. If
  95676. + not, see <http://www.gnu.org/licenses/>. */
  95677. #ifndef _LOWLEVELLOCK_H
  95678. #define _LOWLEVELLOCK_H 1
  95679. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c
  95680. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c 2012-05-15 09:20:09.000000000 +0200
  95681. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c 2014-02-03 12:32:57.000000000 +0100
  95682. @@ -13,9 +13,8 @@
  95683. Lesser General Public License for more details.
  95684. You should have received a copy of the GNU Lesser General Public
  95685. - License along with the GNU C Library; if not, write to the Free
  95686. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95687. - 02111-1307 USA. */
  95688. + License along with the GNU C Library; if not, see
  95689. + <http://www.gnu.org/licenses/>. */
  95690. #include <errno.h>
  95691. #include "pthreadP.h"
  95692. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c
  95693. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c 2012-05-15 09:20:09.000000000 +0200
  95694. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c 2014-02-03 12:32:57.000000000 +0100
  95695. @@ -13,9 +13,8 @@
  95696. Lesser General Public License for more details.
  95697. You should have received a copy of the GNU Lesser General Public
  95698. - License along with the GNU C Library; if not, write to the Free
  95699. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95700. - 02111-1307 USA. */
  95701. + License along with the GNU C Library; if not, see
  95702. + <http://www.gnu.org/licenses/>. */
  95703. #include <errno.h>
  95704. #include "pthreadP.h"
  95705. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c
  95706. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c 2012-05-15 09:20:09.000000000 +0200
  95707. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/pthread_once.c 2014-02-03 12:32:57.000000000 +0100
  95708. @@ -13,9 +13,8 @@
  95709. Lesser General Public License for more details.
  95710. You should have received a copy of the GNU Lesser General Public
  95711. - License along with the GNU C Library; if not, write to the Free
  95712. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95713. - 02111-1307 USA. */
  95714. + License along with the GNU C Library; if not, see
  95715. + <http://www.gnu.org/licenses/>. */
  95716. #include "pthreadP.h"
  95717. #include <lowlevellock.h>
  95718. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c
  95719. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c 2012-05-15 09:20:09.000000000 +0200
  95720. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c 2014-02-03 12:32:57.000000000 +0100
  95721. @@ -13,9 +13,8 @@
  95722. Lesser General Public License for more details.
  95723. You should have received a copy of the GNU Lesser General Public
  95724. - License along with the GNU C Library; if not, write to the Free
  95725. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95726. - 02111-1307 USA. */
  95727. + License along with the GNU C Library; if not, see
  95728. + <http://www.gnu.org/licenses/>. */
  95729. #include <errno.h>
  95730. #include <string.h>
  95731. @@ -26,7 +25,7 @@
  95732. int
  95733. -__new_sem_init (sem, pshared, value)
  95734. +sem_init (sem, pshared, value)
  95735. sem_t *sem;
  95736. int pshared;
  95737. unsigned int value;
  95738. @@ -53,5 +52,3 @@
  95739. return 0;
  95740. }
  95741. -weak_alias(__new_sem_init, sem_init)
  95742. -
  95743. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c
  95744. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c 2012-05-15 09:20:09.000000000 +0200
  95745. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c 2014-02-03 12:32:57.000000000 +0100
  95746. @@ -13,9 +13,8 @@
  95747. Lesser General Public License for more details.
  95748. You should have received a copy of the GNU Lesser General Public
  95749. - License along with the GNU C Library; if not, write to the Free
  95750. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95751. - 02111-1307 USA. */
  95752. + License along with the GNU C Library; if not, see
  95753. + <http://www.gnu.org/licenses/>. */
  95754. #include <errno.h>
  95755. #include <sysdep.h>
  95756. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
  95757. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  95758. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  95759. @@ -13,9 +13,8 @@
  95760. Lesser General Public License for more details.
  95761. You should have received a copy of the GNU Lesser General Public
  95762. - License along with the GNU C Library; if not, write to the Free
  95763. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95764. - 02111-1307 USA. */
  95765. + License along with the GNU C Library; if not, see
  95766. + <http://www.gnu.org/licenses/>. */
  95767. #include <sysdep.h>
  95768. #include <tcb-offsets.h>
  95769. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c
  95770. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c 2012-05-15 09:20:09.000000000 +0200
  95771. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c 2014-02-03 12:32:57.000000000 +0100
  95772. @@ -14,9 +14,8 @@
  95773. Lesser General Public License for more details.
  95774. You should have received a copy of the GNU Lesser General Public
  95775. - License along with the GNU C Library; if not, write to the Free
  95776. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95777. - 02111-1307 USA. */
  95778. + License along with the GNU C Library; if not, see
  95779. + <http://www.gnu.org/licenses/>. */
  95780. #include <errno.h>
  95781. #include <sysdep.h>
  95782. @@ -25,7 +24,7 @@
  95783. #include <semaphore.h>
  95784. int
  95785. -__new_sem_post (sem_t *sem)
  95786. +sem_post (sem_t *sem)
  95787. {
  95788. struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
  95789. int nr;
  95790. @@ -51,5 +50,3 @@
  95791. }
  95792. return 0;
  95793. }
  95794. -weak_alias(__new_sem_post, sem_post)
  95795. -
  95796. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
  95797. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c 2012-05-15 09:20:09.000000000 +0200
  95798. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c 2014-02-03 12:32:57.000000000 +0100
  95799. @@ -14,9 +14,8 @@
  95800. Lesser General Public License for more details.
  95801. You should have received a copy of the GNU Lesser General Public
  95802. - License along with the GNU C Library; if not, write to the Free
  95803. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95804. - 02111-1307 USA. */
  95805. + License along with the GNU C Library; if not, see
  95806. + <http://www.gnu.org/licenses/>. */
  95807. #include <errno.h>
  95808. #include <sysdep.h>
  95809. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
  95810. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c 2012-05-15 09:20:09.000000000 +0200
  95811. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c 2014-02-03 12:32:57.000000000 +0100
  95812. @@ -14,9 +14,8 @@
  95813. Lesser General Public License for more details.
  95814. You should have received a copy of the GNU Lesser General Public
  95815. - License along with the GNU C Library; if not, write to the Free
  95816. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95817. - 02111-1307 USA. */
  95818. + License along with the GNU C Library; if not, see
  95819. + <http://www.gnu.org/licenses/>. */
  95820. #include <errno.h>
  95821. #include <sysdep.h>
  95822. @@ -26,7 +25,7 @@
  95823. int
  95824. -__new_sem_trywait (sem_t *sem)
  95825. +sem_trywait (sem_t *sem)
  95826. {
  95827. struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
  95828. int val;
  95829. @@ -50,5 +49,3 @@
  95830. __set_errno (EAGAIN);
  95831. return -1;
  95832. }
  95833. -weak_alias(__new_sem_trywait, sem_trywait)
  95834. -
  95835. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
  95836. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c 2012-05-15 09:20:09.000000000 +0200
  95837. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c 2014-02-03 12:32:57.000000000 +0100
  95838. @@ -14,9 +14,8 @@
  95839. Lesser General Public License for more details.
  95840. You should have received a copy of the GNU Lesser General Public
  95841. - License along with the GNU C Library; if not, write to the Free
  95842. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95843. - 02111-1307 USA. */
  95844. + License along with the GNU C Library; if not, see
  95845. + <http://www.gnu.org/licenses/>. */
  95846. #include <errno.h>
  95847. #include <sysdep.h>
  95848. @@ -45,7 +44,7 @@
  95849. int
  95850. -__new_sem_wait (sem_t *sem)
  95851. +sem_wait (sem_t *sem)
  95852. {
  95853. struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
  95854. int err;
  95855. @@ -123,5 +122,3 @@
  95856. return err;
  95857. }
  95858. -weak_alias(__new_sem_wait, sem_wait)
  95859. -
  95860. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
  95861. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95862. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95863. @@ -13,9 +13,8 @@
  95864. Lesser General Public License for more details.
  95865. You should have received a copy of the GNU Lesser General Public
  95866. - License along with the GNU C Library; if not, write to the Free
  95867. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95868. - 02111-1307 USA. */
  95869. + License along with the GNU C Library; if not, see
  95870. + <http://www.gnu.org/licenses/>. */
  95871. #include <tls.h>
  95872. #include <sysdep.h>
  95873. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
  95874. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2012-05-15 09:20:09.000000000 +0200
  95875. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95876. @@ -13,9 +13,8 @@
  95877. Lesser General Public License for more details.
  95878. You should have received a copy of the GNU Lesser General Public
  95879. - License along with the GNU C Library; if not, write to the Free
  95880. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95881. - 02111-1307 USA. */
  95882. + License along with the GNU C Library; if not, see
  95883. + <http://www.gnu.org/licenses/>. */
  95884. #include <sysdep.h>
  95885. #include <tcb-offsets.h>
  95886. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S
  95887. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  95888. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  95889. @@ -13,9 +13,8 @@
  95890. Lesser General Public License for more details.
  95891. You should have received a copy of the GNU Lesser General Public
  95892. - License along with the GNU C Library; if not, write to the Free
  95893. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95894. - 02111-1307 USA. */
  95895. + License along with the GNU C Library; if not, see
  95896. + <http://www.gnu.org/licenses/>. */
  95897. #include <sysdep.h>
  95898. #include <tcb-offsets.h>
  95899. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
  95900. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  95901. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  95902. @@ -13,9 +13,8 @@
  95903. Lesser General Public License for more details.
  95904. You should have received a copy of the GNU Lesser General Public
  95905. - License along with the GNU C Library; if not, write to the Free
  95906. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95907. - 02111-1307 USA. */
  95908. + License along with the GNU C Library; if not, see
  95909. + <http://www.gnu.org/licenses/>. */
  95910. #include <sysdep.h>
  95911. #include <tls.h>
  95912. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
  95913. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  95914. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  95915. @@ -13,9 +13,8 @@
  95916. Lesser General Public License for more details.
  95917. You should have received a copy of the GNU Lesser General Public
  95918. - License along with the GNU C Library; if not, write to the Free
  95919. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  95920. - 02111-1307 USA. */
  95921. + License along with the GNU C Library; if not, see
  95922. + <http://www.gnu.org/licenses/>. */
  95923. #include <sysdep.h>
  95924. #include <tcb-offsets.h>
  95925. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c
  95926. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  95927. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  95928. @@ -13,9 +13,8 @@
  95929. Lesser General Public License for more details.
  95930. You should have received a copy of the GNU Lesser General Public
  95931. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  95932. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95933. - Boston, MA 02111-1307, USA. */
  95934. + License along with the GNU C Library; see the file COPYING.LIB. If
  95935. + not, see <http://www.gnu.org/licenses/>. */
  95936. #include <errno.h>
  95937. #include <pthread.h>
  95938. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c
  95939. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c 2012-05-15 09:20:09.000000000 +0200
  95940. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_delete.c 2014-02-03 12:32:57.000000000 +0100
  95941. @@ -13,9 +13,8 @@
  95942. Lesser General Public License for more details.
  95943. You should have received a copy of the GNU Lesser General Public
  95944. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  95945. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95946. - Boston, MA 02111-1307, USA. */
  95947. + License along with the GNU C Library; see the file COPYING.LIB. If
  95948. + not, see <http://www.gnu.org/licenses/>. */
  95949. #include <errno.h>
  95950. #include <stdlib.h>
  95951. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c
  95952. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c 2012-05-15 09:20:09.000000000 +0200
  95953. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c 2014-02-03 12:32:57.000000000 +0100
  95954. @@ -13,9 +13,8 @@
  95955. Lesser General Public License for more details.
  95956. You should have received a copy of the GNU Lesser General Public
  95957. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  95958. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95959. - Boston, MA 02111-1307, USA. */
  95960. + License along with the GNU C Library; see the file COPYING.LIB. If
  95961. + not, see <http://www.gnu.org/licenses/>. */
  95962. #include <errno.h>
  95963. #include <time.h>
  95964. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c
  95965. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c 2012-05-15 09:20:09.000000000 +0200
  95966. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_gettime.c 2014-02-03 12:32:57.000000000 +0100
  95967. @@ -13,9 +13,8 @@
  95968. Lesser General Public License for more details.
  95969. You should have received a copy of the GNU Lesser General Public
  95970. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  95971. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95972. - Boston, MA 02111-1307, USA. */
  95973. + License along with the GNU C Library; see the file COPYING.LIB. If
  95974. + not, see <http://www.gnu.org/licenses/>. */
  95975. #include <errno.h>
  95976. #include <stdlib.h>
  95977. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c
  95978. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c 2012-05-15 09:20:09.000000000 +0200
  95979. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c 2014-02-03 12:32:57.000000000 +0100
  95980. @@ -13,9 +13,8 @@
  95981. Lesser General Public License for more details.
  95982. You should have received a copy of the GNU Lesser General Public
  95983. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  95984. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  95985. - Boston, MA 02111-1307, USA. */
  95986. + License along with the GNU C Library; see the file COPYING.LIB. If
  95987. + not, see <http://www.gnu.org/licenses/>. */
  95988. #include <errno.h>
  95989. #include <setjmp.h>
  95990. @@ -49,7 +48,7 @@
  95991. surprising for user code, although valid. We unblock all
  95992. signals. */
  95993. sigset_t ss;
  95994. - sigemptyset (&ss);
  95995. + __sigemptyset (&ss);
  95996. INTERNAL_SYSCALL_DECL (err);
  95997. INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, &ss, NULL, _NSIG / 8);
  95998. @@ -69,13 +68,13 @@
  95999. /* Helper function to support starting threads for SIGEV_THREAD. */
  96000. -static void *
  96001. +static attribute_noreturn void *
  96002. timer_helper_thread (void *arg)
  96003. {
  96004. /* Wait for the SIGTIMER signal, allowing the setXid signal, and
  96005. none else. */
  96006. sigset_t ss;
  96007. - sigemptyset (&ss);
  96008. + __sigemptyset (&ss);
  96009. __sigaddset (&ss, SIGTIMER);
  96010. /* Endless loop of waiting for signals. The loop is only ended when
  96011. @@ -175,7 +174,7 @@
  96012. sigset_t ss;
  96013. sigset_t oss;
  96014. sigfillset (&ss);
  96015. - /*__sigaddset (&ss, SIGCANCEL); - already done by sigfillset */
  96016. + __sigaddset (&ss, SIGCANCEL);
  96017. INTERNAL_SYSCALL_DECL (err);
  96018. INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_SETMASK, &ss, &oss, _NSIG / 8);
  96019. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c
  96020. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c 2012-05-15 09:20:09.000000000 +0200
  96021. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c 2014-02-03 12:32:57.000000000 +0100
  96022. @@ -13,9 +13,8 @@
  96023. Lesser General Public License for more details.
  96024. You should have received a copy of the GNU Lesser General Public
  96025. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96026. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96027. - Boston, MA 02111-1307, USA. */
  96028. + License along with the GNU C Library; see the file COPYING.LIB. If
  96029. + not, see <http://www.gnu.org/licenses/>. */
  96030. #include <errno.h>
  96031. #include <stdlib.h>
  96032. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c
  96033. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c 2012-05-15 09:20:09.000000000 +0200
  96034. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/unregister-atfork.c 2014-02-03 12:32:57.000000000 +0100
  96035. @@ -13,9 +13,8 @@
  96036. Lesser General Public License for more details.
  96037. You should have received a copy of the GNU Lesser General Public
  96038. - License along with the GNU C Library; if not, write to the Free
  96039. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96040. - 02111-1307 USA. */
  96041. + License along with the GNU C Library; if not, see
  96042. + <http://www.gnu.org/licenses/>. */
  96043. #include <errno.h>
  96044. #include <stdlib.h>
  96045. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
  96046. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h 2012-05-15 09:20:09.000000000 +0200
  96047. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h 2014-02-03 12:32:57.000000000 +0100
  96048. @@ -13,9 +13,8 @@
  96049. Lesser General Public License for more details.
  96050. You should have received a copy of the GNU Lesser General Public
  96051. - License along with the GNU C Library; if not, write to the Free
  96052. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96053. - 02111-1307 USA. */
  96054. + License along with the GNU C Library; if not, see
  96055. + <http://www.gnu.org/licenses/>. */
  96056. #ifndef _BITS_PTHREADTYPES_H
  96057. #define _BITS_PTHREADTYPES_H 1
  96058. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
  96059. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h 2012-05-15 09:20:09.000000000 +0200
  96060. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h 2014-02-03 12:32:57.000000000 +0100
  96061. @@ -13,9 +13,8 @@
  96062. Lesser General Public License for more details.
  96063. You should have received a copy of the GNU Lesser General Public
  96064. - License along with the GNU C Library; if not, write to the Free
  96065. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96066. - 02111-1307 USA. */
  96067. + License along with the GNU C Library; if not, see
  96068. + <http://www.gnu.org/licenses/>. */
  96069. #ifndef _SEMAPHORE_H
  96070. # error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
  96071. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S
  96072. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S 2012-05-15 09:20:09.000000000 +0200
  96073. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S 2014-02-03 12:32:57.000000000 +0100
  96074. @@ -13,9 +13,8 @@
  96075. Lesser General Public License for more details.
  96076. You should have received a copy of the GNU Lesser General Public
  96077. - License along with the GNU C Library; if not, write to the Free
  96078. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96079. - 02111-1307 USA. */
  96080. + License along with the GNU C Library; if not, see
  96081. + <http://www.gnu.org/licenses/>. */
  96082. #include <sysdep.h>
  96083. #include <tcb-offsets.h>
  96084. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h
  96085. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h 2012-05-15 09:20:09.000000000 +0200
  96086. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/compat-timer.h 2014-02-03 12:32:57.000000000 +0100
  96087. @@ -13,9 +13,8 @@
  96088. Lesser General Public License for more details.
  96089. You should have received a copy of the GNU Lesser General Public
  96090. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  96091. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  96092. - Boston, MA 02111-1307, USA. */
  96093. + License along with the GNU C Library; see the file COPYING.LIB. If
  96094. + not, see <http://www.gnu.org/licenses/>. */
  96095. #include <signal.h>
  96096. #include <time.h>
  96097. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c
  96098. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c 2012-05-15 09:20:09.000000000 +0200
  96099. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/fork.c 2014-02-03 12:32:57.000000000 +0100
  96100. @@ -13,9 +13,8 @@
  96101. Lesser General Public License for more details.
  96102. You should have received a copy of the GNU Lesser General Public
  96103. - License along with the GNU C Library; if not, write to the Free
  96104. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96105. - 02111-1307 USA. */
  96106. + License along with the GNU C Library; if not, see
  96107. + <http://www.gnu.org/licenses/>. */
  96108. #include <sched.h>
  96109. #include <signal.h>
  96110. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S
  96111. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S 2012-05-15 09:20:09.000000000 +0200
  96112. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S 2014-02-03 12:32:57.000000000 +0100
  96113. @@ -13,9 +13,8 @@
  96114. Lesser General Public License for more details.
  96115. You should have received a copy of the GNU Lesser General Public
  96116. - License along with the GNU C Library; if not, write to the Free
  96117. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96118. - 02111-1307 USA. */
  96119. + License along with the GNU C Library; if not, see
  96120. + <http://www.gnu.org/licenses/>. */
  96121. #define __pthread_enable_asynccancel __libc_enable_asynccancel
  96122. #define __pthread_disable_asynccancel __libc_disable_asynccancel
  96123. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S
  96124. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  96125. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  96126. @@ -13,8 +13,7 @@
  96127. Lesser General Public License for more details.
  96128. You should have received a copy of the GNU Lesser General Public
  96129. - License along with the GNU C Library; if not, write to the Free
  96130. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96131. - 02111-1307 USA. */
  96132. + License along with the GNU C Library; if not, see
  96133. + <http://www.gnu.org/licenses/>. */
  96134. #include "lowlevellock.S"
  96135. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S
  96136. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S 2012-05-15 09:20:09.000000000 +0200
  96137. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S 2014-02-03 12:32:57.000000000 +0100
  96138. @@ -13,9 +13,8 @@
  96139. Lesser General Public License for more details.
  96140. You should have received a copy of the GNU Lesser General Public
  96141. - License along with the GNU C Library; if not, write to the Free
  96142. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96143. - 02111-1307 USA. */
  96144. + License along with the GNU C Library; if not, see
  96145. + <http://www.gnu.org/licenses/>. */
  96146. #define __pthread_enable_asynccancel __librt_enable_asynccancel
  96147. #define __pthread_disable_asynccancel __librt_disable_asynccancel
  96148. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
  96149. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h 2012-05-15 09:20:09.000000000 +0200
  96150. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.h 2014-02-03 12:32:57.000000000 +0100
  96151. @@ -13,9 +13,8 @@
  96152. Lesser General Public License for more details.
  96153. You should have received a copy of the GNU Lesser General Public
  96154. - License along with the GNU C Library; if not, write to the Free
  96155. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96156. - 02111-1307 USA. */
  96157. + License along with the GNU C Library; if not, see
  96158. + <http://www.gnu.org/licenses/>. */
  96159. #ifndef _LOWLEVELLOCK_H
  96160. #define _LOWLEVELLOCK_H 1
  96161. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
  96162. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S 2012-05-15 09:20:09.000000000 +0200
  96163. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S 2014-02-03 12:32:57.000000000 +0100
  96164. @@ -13,9 +13,8 @@
  96165. Lesser General Public License for more details.
  96166. You should have received a copy of the GNU Lesser General Public
  96167. - License along with the GNU C Library; if not, write to the Free
  96168. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96169. - 02111-1307 USA. */
  96170. + License along with the GNU C Library; if not, see
  96171. + <http://www.gnu.org/licenses/>. */
  96172. #include <sysdep.h>
  96173. #include <pthread-errnos.h>
  96174. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
  96175. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S 2012-05-15 09:20:09.000000000 +0200
  96176. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S 2014-02-03 12:32:57.000000000 +0100
  96177. @@ -14,9 +14,8 @@
  96178. Lesser General Public License for more details.
  96179. You should have received a copy of the GNU Lesser General Public
  96180. - License along with the GNU C Library; if not, write to the Free
  96181. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96182. - 02111-1307 USA. */
  96183. + License along with the GNU C Library; if not, see
  96184. + <http://www.gnu.org/licenses/>. */
  96185. #include <sysdep.h>
  96186. #include <pthread-errnos.h>
  96187. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
  96188. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S 2012-05-15 09:20:09.000000000 +0200
  96189. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S 2014-02-03 12:32:57.000000000 +0100
  96190. @@ -13,9 +13,8 @@
  96191. Lesser General Public License for more details.
  96192. You should have received a copy of the GNU Lesser General Public
  96193. - License along with the GNU C Library; if not, write to the Free
  96194. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96195. - 02111-1307 USA. */
  96196. + License along with the GNU C Library; if not, see
  96197. + <http://www.gnu.org/licenses/>. */
  96198. #include <sysdep.h>
  96199. #include <lowlevellock.h>
  96200. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
  96201. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S 2012-05-15 09:20:09.000000000 +0200
  96202. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S 2014-02-03 12:32:57.000000000 +0100
  96203. @@ -14,9 +14,8 @@
  96204. Lesser General Public License for more details.
  96205. You should have received a copy of the GNU Lesser General Public
  96206. - License along with the GNU C Library; if not, write to the Free
  96207. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96208. - 02111-1307 USA. */
  96209. + License along with the GNU C Library; if not, see
  96210. + <http://www.gnu.org/licenses/>. */
  96211. #include <sysdep.h>
  96212. #include <lowlevellock.h>
  96213. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
  96214. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S 2012-05-15 09:20:09.000000000 +0200
  96215. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S 2014-02-03 12:32:57.000000000 +0100
  96216. @@ -13,9 +13,8 @@
  96217. Lesser General Public License for more details.
  96218. You should have received a copy of the GNU Lesser General Public
  96219. - License along with the GNU C Library; if not, write to the Free
  96220. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96221. - 02111-1307 USA. */
  96222. + License along with the GNU C Library; if not, see
  96223. + <http://www.gnu.org/licenses/>. */
  96224. #include <sysdep.h>
  96225. #include <lowlevellock.h>
  96226. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
  96227. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  96228. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  96229. @@ -13,9 +13,8 @@
  96230. Lesser General Public License for more details.
  96231. You should have received a copy of the GNU Lesser General Public
  96232. - License along with the GNU C Library; if not, write to the Free
  96233. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96234. - 02111-1307 USA. */
  96235. + License along with the GNU C Library; if not, see
  96236. + <http://www.gnu.org/licenses/>. */
  96237. #include <sysdep.h>
  96238. #include <lowlevellock.h>
  96239. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
  96240. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2012-05-15 09:20:09.000000000 +0200
  96241. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2014-02-03 12:32:57.000000000 +0100
  96242. @@ -13,9 +13,8 @@
  96243. Lesser General Public License for more details.
  96244. You should have received a copy of the GNU Lesser General Public
  96245. - License along with the GNU C Library; if not, write to the Free
  96246. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96247. - 02111-1307 USA. */
  96248. + License along with the GNU C Library; if not, see
  96249. + <http://www.gnu.org/licenses/>. */
  96250. #include <sysdep.h>
  96251. #include <lowlevellock.h>
  96252. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S
  96253. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S 2012-05-15 09:20:09.000000000 +0200
  96254. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_once.S 2014-02-03 12:32:57.000000000 +0100
  96255. @@ -13,9 +13,8 @@
  96256. Lesser General Public License for more details.
  96257. You should have received a copy of the GNU Lesser General Public
  96258. - License along with the GNU C Library; if not, write to the Free
  96259. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96260. - 02111-1307 USA. */
  96261. + License along with the GNU C Library; if not, see
  96262. + <http://www.gnu.org/licenses/>. */
  96263. #include <sysdep.h>
  96264. #include <bits/kernel-features.h>
  96265. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S
  96266. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S 2012-05-15 09:20:09.000000000 +0200
  96267. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S 2014-02-03 12:32:57.000000000 +0100
  96268. @@ -13,9 +13,8 @@
  96269. Lesser General Public License for more details.
  96270. You should have received a copy of the GNU Lesser General Public
  96271. - License along with the GNU C Library; if not, write to the Free
  96272. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96273. - 02111-1307 USA. */
  96274. + License along with the GNU C Library; if not, see
  96275. + <http://www.gnu.org/licenses/>. */
  96276. #include <sysdep.h>
  96277. #include <lowlevellock.h>
  96278. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
  96279. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S 2012-05-15 09:20:09.000000000 +0200
  96280. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S 2014-02-03 12:32:57.000000000 +0100
  96281. @@ -13,9 +13,8 @@
  96282. Lesser General Public License for more details.
  96283. You should have received a copy of the GNU Lesser General Public
  96284. - License along with the GNU C Library; if not, write to the Free
  96285. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96286. - 02111-1307 USA. */
  96287. + License along with the GNU C Library; if not, see
  96288. + <http://www.gnu.org/licenses/>. */
  96289. #include <sysdep.h>
  96290. #include <lowlevellock.h>
  96291. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
  96292. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S 2012-05-15 09:20:09.000000000 +0200
  96293. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S 2014-02-03 12:32:57.000000000 +0100
  96294. @@ -13,9 +13,8 @@
  96295. Lesser General Public License for more details.
  96296. You should have received a copy of the GNU Lesser General Public
  96297. - License along with the GNU C Library; if not, write to the Free
  96298. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96299. - 02111-1307 USA. */
  96300. + License along with the GNU C Library; if not, see
  96301. + <http://www.gnu.org/licenses/>. */
  96302. #include <sysdep.h>
  96303. #include <lowlevellock.h>
  96304. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
  96305. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S 2012-05-15 09:20:09.000000000 +0200
  96306. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S 2014-02-03 12:32:57.000000000 +0100
  96307. @@ -13,9 +13,8 @@
  96308. Lesser General Public License for more details.
  96309. You should have received a copy of the GNU Lesser General Public
  96310. - License along with the GNU C Library; if not, write to the Free
  96311. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96312. - 02111-1307 USA. */
  96313. + License along with the GNU C Library; if not, see
  96314. + <http://www.gnu.org/licenses/>. */
  96315. #include <sysdep.h>
  96316. #include <lowlevellock.h>
  96317. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S
  96318. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S 2012-05-15 09:20:09.000000000 +0200
  96319. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S 2014-02-03 12:32:57.000000000 +0100
  96320. @@ -13,9 +13,8 @@
  96321. Lesser General Public License for more details.
  96322. You should have received a copy of the GNU Lesser General Public
  96323. - License along with the GNU C Library; if not, write to the Free
  96324. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96325. - 02111-1307 USA. */
  96326. + License along with the GNU C Library; if not, see
  96327. + <http://www.gnu.org/licenses/>. */
  96328. #include <sysdep.h>
  96329. #include <lowlevellock.h>
  96330. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S
  96331. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S 2012-05-15 09:20:09.000000000 +0200
  96332. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/pt-vfork.S 2014-02-03 12:32:57.000000000 +0100
  96333. @@ -12,9 +12,8 @@
  96334. Lesser General Public License for more details.
  96335. You should have received a copy of the GNU Lesser General Public
  96336. - License along with the GNU C Library; if not, write to the Free
  96337. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96338. - 02111-1307 USA. */
  96339. + License along with the GNU C Library; if not, see
  96340. + <http://www.gnu.org/licenses/>. */
  96341. #include <tcb-offsets.h>
  96342. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S
  96343. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S 2012-05-15 09:20:09.000000000 +0200
  96344. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_post.S 2014-02-03 12:32:57.000000000 +0100
  96345. @@ -13,9 +13,8 @@
  96346. Lesser General Public License for more details.
  96347. You should have received a copy of the GNU Lesser General Public
  96348. - License along with the GNU C Library; if not, write to the Free
  96349. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96350. - 02111-1307 USA. */
  96351. + License along with the GNU C Library; if not, see
  96352. + <http://www.gnu.org/licenses/>. */
  96353. #include <sysdep.h>
  96354. #include <lowlevellock.h>
  96355. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
  96356. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S 2012-05-15 09:20:09.000000000 +0200
  96357. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S 2014-02-03 12:32:57.000000000 +0100
  96358. @@ -13,9 +13,8 @@
  96359. Lesser General Public License for more details.
  96360. You should have received a copy of the GNU Lesser General Public
  96361. - License along with the GNU C Library; if not, write to the Free
  96362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96363. - 02111-1307 USA. */
  96364. + License along with the GNU C Library; if not, see
  96365. + <http://www.gnu.org/licenses/>. */
  96366. #include <sysdep.h>
  96367. #include <bits/kernel-features.h>
  96368. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S
  96369. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S 2012-05-15 09:20:09.000000000 +0200
  96370. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_trywait.S 2014-02-03 12:32:57.000000000 +0100
  96371. @@ -13,9 +13,8 @@
  96372. Lesser General Public License for more details.
  96373. You should have received a copy of the GNU Lesser General Public
  96374. - License along with the GNU C Library; if not, write to the Free
  96375. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96376. - 02111-1307 USA. */
  96377. + License along with the GNU C Library; if not, see
  96378. + <http://www.gnu.org/licenses/>. */
  96379. #include <sysdep.h>
  96380. #include <lowlevellock.h>
  96381. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S
  96382. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S 2012-05-15 09:20:09.000000000 +0200
  96383. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sem_wait.S 2014-02-03 12:32:57.000000000 +0100
  96384. @@ -13,9 +13,8 @@
  96385. Lesser General Public License for more details.
  96386. You should have received a copy of the GNU Lesser General Public
  96387. - License along with the GNU C Library; if not, write to the Free
  96388. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96389. - 02111-1307 USA. */
  96390. + License along with the GNU C Library; if not, see
  96391. + <http://www.gnu.org/licenses/>. */
  96392. #include <sysdep.h>
  96393. #include <lowlevellock.h>
  96394. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
  96395. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2012-05-15 09:20:09.000000000 +0200
  96396. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h 2014-02-03 12:32:57.000000000 +0100
  96397. @@ -13,9 +13,8 @@
  96398. Lesser General Public License for more details.
  96399. You should have received a copy of the GNU Lesser General Public
  96400. - License along with the GNU C Library; if not, write to the Free
  96401. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96402. - 02111-1307 USA. */
  96403. + License along with the GNU C Library; if not, see
  96404. + <http://www.gnu.org/licenses/>. */
  96405. #include <sysdep.h>
  96406. #include <tls.h>
  96407. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S
  96408. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S 2012-05-15 09:20:09.000000000 +0200
  96409. +++ uClibc-git/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/vfork.S 2014-02-03 12:32:57.000000000 +0100
  96410. @@ -12,9 +12,8 @@
  96411. Lesser General Public License for more details.
  96412. You should have received a copy of the GNU Lesser General Public
  96413. - License along with the GNU C Library; if not, write to the Free
  96414. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96415. - 02111-1307 USA. */
  96416. + License along with the GNU C Library; if not, see
  96417. + <http://www.gnu.org/licenses/>. */
  96418. /* We want an #include_next, but we are the main source file.
  96419. So, #include ourselves and in that incarnation we can use #include_next. */
  96420. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/dl-tls.h uClibc-git/libpthread/nptl/sysdeps/x86_64/dl-tls.h
  96421. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/dl-tls.h 2012-05-15 09:20:09.000000000 +0200
  96422. +++ uClibc-git/libpthread/nptl/sysdeps/x86_64/dl-tls.h 2014-02-03 12:32:57.000000000 +0100
  96423. @@ -13,9 +13,8 @@
  96424. Lesser General Public License for more details.
  96425. You should have received a copy of the GNU Lesser General Public
  96426. - License along with the GNU C Library; if not, write to the Free
  96427. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96428. - 02111-1307 USA. */
  96429. + License along with the GNU C Library; if not, see
  96430. + <http://www.gnu.org/licenses/>. */
  96431. /* Type used for the representation of TLS information in the GOT. */
  96432. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h uClibc-git/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h
  96433. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h 2012-05-15 09:20:09.000000000 +0200
  96434. +++ uClibc-git/libpthread/nptl/sysdeps/x86_64/jmpbuf-unwind.h 2014-02-03 12:32:57.000000000 +0100
  96435. @@ -13,9 +13,8 @@
  96436. Lesser General Public License for more details.
  96437. You should have received a copy of the GNU Lesser General Public
  96438. - License along with the GNU C Library; if not, write to the Free
  96439. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96440. - 02111-1307 USA. */
  96441. + License along with the GNU C Library; if not, see
  96442. + <http://www.gnu.org/licenses/>. */
  96443. #include <setjmp.h>
  96444. #include <stdint.h>
  96445. @@ -26,6 +25,3 @@
  96446. #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
  96447. ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_RSP] - (_adj))
  96448. -
  96449. -/* We use the normal lobngjmp for unwinding. */
  96450. -#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
  96451. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthreaddef.h uClibc-git/libpthread/nptl/sysdeps/x86_64/pthreaddef.h
  96452. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthreaddef.h 2012-05-15 09:20:09.000000000 +0200
  96453. +++ uClibc-git/libpthread/nptl/sysdeps/x86_64/pthreaddef.h 2014-02-03 12:32:57.000000000 +0100
  96454. @@ -13,9 +13,8 @@
  96455. Lesser General Public License for more details.
  96456. You should have received a copy of the GNU Lesser General Public
  96457. - License along with the GNU C Library; if not, write to the Free
  96458. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96459. - 02111-1307 USA. */
  96460. + License along with the GNU C Library; if not, see
  96461. + <http://www.gnu.org/licenses/>. */
  96462. /* Default stack size. */
  96463. #define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)
  96464. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S uClibc-git/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S
  96465. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S 2012-05-15 09:20:09.000000000 +0200
  96466. +++ uClibc-git/libpthread/nptl/sysdeps/x86_64/pthread_spin_trylock.S 2014-02-03 12:32:57.000000000 +0100
  96467. @@ -13,9 +13,8 @@
  96468. Lesser General Public License for more details.
  96469. You should have received a copy of the GNU Lesser General Public
  96470. - License along with the GNU C Library; if not, write to the Free
  96471. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96472. - 02111-1307 USA. */
  96473. + License along with the GNU C Library; if not, see
  96474. + <http://www.gnu.org/licenses/>. */
  96475. #include <pthread-errnos.h>
  96476. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S uClibc-git/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S
  96477. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S 2012-05-15 09:20:09.000000000 +0200
  96478. +++ uClibc-git/libpthread/nptl/sysdeps/x86_64/pthread_spin_unlock.S 2014-02-03 12:32:57.000000000 +0100
  96479. @@ -13,9 +13,8 @@
  96480. Lesser General Public License for more details.
  96481. You should have received a copy of the GNU Lesser General Public
  96482. - License along with the GNU C Library; if not, write to the Free
  96483. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96484. - 02111-1307 USA. */
  96485. + License along with the GNU C Library; if not, see
  96486. + <http://www.gnu.org/licenses/>. */
  96487. .globl pthread_spin_unlock
  96488. .type pthread_spin_unlock,@function
  96489. diff -Nur uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/tls.h uClibc-git/libpthread/nptl/sysdeps/x86_64/tls.h
  96490. --- uClibc-0.9.33.2/libpthread/nptl/sysdeps/x86_64/tls.h 2012-05-15 09:20:09.000000000 +0200
  96491. +++ uClibc-git/libpthread/nptl/sysdeps/x86_64/tls.h 2014-02-03 12:32:57.000000000 +0100
  96492. @@ -13,9 +13,8 @@
  96493. Lesser General Public License for more details.
  96494. You should have received a copy of the GNU Lesser General Public
  96495. - License along with the GNU C Library; if not, write to the Free
  96496. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96497. - 02111-1307 USA. */
  96498. + License along with the GNU C Library; if not, see
  96499. + <http://www.gnu.org/licenses/>. */
  96500. #ifndef _TLS_H
  96501. #define _TLS_H 1
  96502. diff -Nur uClibc-0.9.33.2/libpthread/nptl/unwind.c uClibc-git/libpthread/nptl/unwind.c
  96503. --- uClibc-0.9.33.2/libpthread/nptl/unwind.c 2012-05-15 09:20:09.000000000 +0200
  96504. +++ uClibc-git/libpthread/nptl/unwind.c 2014-02-03 12:32:57.000000000 +0100
  96505. @@ -14,9 +14,8 @@
  96506. Lesser General Public License for more details.
  96507. You should have received a copy of the GNU Lesser General Public
  96508. - License along with the GNU C Library; if not, write to the Free
  96509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96510. - 02111-1307 USA. */
  96511. + License along with the GNU C Library; if not, see
  96512. + <http://www.gnu.org/licenses/>. */
  96513. #include <setjmp.h>
  96514. #include <stdlib.h>
  96515. @@ -99,7 +98,7 @@
  96516. }
  96517. -static void
  96518. +static attribute_noreturn void
  96519. unwind_cleanup (_Unwind_Reason_Code reason, struct _Unwind_Exception *exc)
  96520. {
  96521. /* When we get here a C++ catch block didn't rethrow the object. We
  96522. @@ -115,7 +114,7 @@
  96523. void
  96524. -attribute_protected
  96525. +/*does not apply due to hidden_proto(): attribute_protected*/
  96526. __cleanup_fct_attribute __attribute ((noreturn))
  96527. #if !defined SHARED && !defined IS_IN_libpthread
  96528. weak_function
  96529. diff -Nur uClibc-0.9.33.2/libpthread/nptl/vars.c uClibc-git/libpthread/nptl/vars.c
  96530. --- uClibc-0.9.33.2/libpthread/nptl/vars.c 2012-05-15 09:20:09.000000000 +0200
  96531. +++ uClibc-git/libpthread/nptl/vars.c 2014-02-03 12:32:57.000000000 +0100
  96532. @@ -12,9 +12,8 @@
  96533. Lesser General Public License for more details.
  96534. You should have received a copy of the GNU Lesser General Public
  96535. - License along with the GNU C Library; if not, write to the Free
  96536. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96537. - 02111-1307 USA. */
  96538. + License along with the GNU C Library; if not, see
  96539. + <http://www.gnu.org/licenses/>. */
  96540. #include <pthreadP.h>
  96541. #include <stdlib.h>
  96542. diff -Nur uClibc-0.9.33.2/libpthread/nptl/version.c uClibc-git/libpthread/nptl/version.c
  96543. --- uClibc-0.9.33.2/libpthread/nptl/version.c 2012-05-15 09:20:09.000000000 +0200
  96544. +++ uClibc-git/libpthread/nptl/version.c 2014-02-03 12:32:57.000000000 +0100
  96545. @@ -13,9 +13,8 @@
  96546. Lesser General Public License for more details.
  96547. You should have received a copy of the GNU Lesser General Public
  96548. - License along with the GNU C Library; if not, write to the Free
  96549. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96550. - 02111-1307 USA. */
  96551. + License along with the GNU C Library; if not, see
  96552. + <http://www.gnu.org/licenses/>. */
  96553. #include <unistd.h>
  96554. #include <sysdep.h>
  96555. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/db_info.c uClibc-git/libpthread/nptl_db/db_info.c
  96556. --- uClibc-0.9.33.2/libpthread/nptl_db/db_info.c 2012-05-15 09:20:09.000000000 +0200
  96557. +++ uClibc-git/libpthread/nptl_db/db_info.c 2014-02-03 12:32:57.000000000 +0100
  96558. @@ -15,9 +15,8 @@
  96559. Lesser General Public License for more details.
  96560. You should have received a copy of the GNU Lesser General Public
  96561. - License along with the GNU C Library; if not, write to the Free
  96562. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96563. - 02111-1307 USA. */
  96564. + License along with the GNU C Library; if not, see
  96565. + <http://www.gnu.org/licenses/>. */
  96566. #include "thread_dbP.h"
  96567. #include <tls.h>
  96568. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/fetch-value.c uClibc-git/libpthread/nptl_db/fetch-value.c
  96569. --- uClibc-0.9.33.2/libpthread/nptl_db/fetch-value.c 2012-05-15 09:20:09.000000000 +0200
  96570. +++ uClibc-git/libpthread/nptl_db/fetch-value.c 2014-02-03 12:32:57.000000000 +0100
  96571. @@ -13,9 +13,8 @@
  96572. Lesser General Public License for more details.
  96573. You should have received a copy of the GNU Lesser General Public
  96574. - License along with the GNU C Library; if not, write to the Free
  96575. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96576. - 02111-1307 USA. */
  96577. + License along with the GNU C Library; if not, see
  96578. + <http://www.gnu.org/licenses/>. */
  96579. #include "thread_dbP.h"
  96580. #include <byteswap.h>
  96581. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/proc_service.h uClibc-git/libpthread/nptl_db/proc_service.h
  96582. --- uClibc-0.9.33.2/libpthread/nptl_db/proc_service.h 2012-05-15 09:20:09.000000000 +0200
  96583. +++ uClibc-git/libpthread/nptl_db/proc_service.h 2014-02-03 12:32:57.000000000 +0100
  96584. @@ -13,9 +13,8 @@
  96585. Lesser General Public License for more details.
  96586. You should have received a copy of the GNU Lesser General Public
  96587. - License along with the GNU C Library; if not, write to the Free
  96588. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96589. - 02111-1307 USA. */
  96590. + License along with the GNU C Library; if not, see
  96591. + <http://www.gnu.org/licenses/>. */
  96592. /* The definitions in this file must correspond to those in the debugger. */
  96593. #include <sys/procfs.h>
  96594. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/structs.def uClibc-git/libpthread/nptl_db/structs.def
  96595. --- uClibc-0.9.33.2/libpthread/nptl_db/structs.def 2012-05-15 09:20:09.000000000 +0200
  96596. +++ uClibc-git/libpthread/nptl_db/structs.def 2014-02-03 12:32:57.000000000 +0100
  96597. @@ -13,9 +13,8 @@
  96598. Lesser General Public License for more details.
  96599. You should have received a copy of the GNU Lesser General Public
  96600. - License along with the GNU C Library; if not, write to the Free
  96601. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96602. - 02111-1307 USA. */
  96603. + License along with the GNU C Library; if not, see
  96604. + <http://www.gnu.org/licenses/>. */
  96605. #ifndef DB_STRUCT_ARRAY_FIELD
  96606. # define DB_STRUCT_ARRAY_FIELD(type, field) DB_STRUCT_FIELD (type, field)
  96607. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_init.c uClibc-git/libpthread/nptl_db/td_init.c
  96608. --- uClibc-0.9.33.2/libpthread/nptl_db/td_init.c 2012-05-15 09:20:09.000000000 +0200
  96609. +++ uClibc-git/libpthread/nptl_db/td_init.c 2014-02-03 12:32:57.000000000 +0100
  96610. @@ -14,9 +14,8 @@
  96611. Lesser General Public License for more details.
  96612. You should have received a copy of the GNU Lesser General Public
  96613. - License along with the GNU C Library; if not, write to the Free
  96614. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96615. - 02111-1307 USA. */
  96616. + License along with the GNU C Library; if not, see
  96617. + <http://www.gnu.org/licenses/>. */
  96618. #include "thread_dbP.h"
  96619. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_log.c uClibc-git/libpthread/nptl_db/td_log.c
  96620. --- uClibc-0.9.33.2/libpthread/nptl_db/td_log.c 2012-05-15 09:20:09.000000000 +0200
  96621. +++ uClibc-git/libpthread/nptl_db/td_log.c 2014-02-03 12:32:57.000000000 +0100
  96622. @@ -14,9 +14,8 @@
  96623. Lesser General Public License for more details.
  96624. You should have received a copy of the GNU Lesser General Public
  96625. - License along with the GNU C Library; if not, write to the Free
  96626. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96627. - 02111-1307 USA. */
  96628. + License along with the GNU C Library; if not, see
  96629. + <http://www.gnu.org/licenses/>. */
  96630. #include "thread_dbP.h"
  96631. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_symbol_list.c uClibc-git/libpthread/nptl_db/td_symbol_list.c
  96632. --- uClibc-0.9.33.2/libpthread/nptl_db/td_symbol_list.c 2012-05-15 09:20:09.000000000 +0200
  96633. +++ uClibc-git/libpthread/nptl_db/td_symbol_list.c 2014-02-03 12:32:57.000000000 +0100
  96634. @@ -14,9 +14,8 @@
  96635. Lesser General Public License for more details.
  96636. You should have received a copy of the GNU Lesser General Public
  96637. - License along with the GNU C Library; if not, write to the Free
  96638. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96639. - 02111-1307 USA. */
  96640. + License along with the GNU C Library; if not, see
  96641. + <http://www.gnu.org/licenses/>. */
  96642. #include <assert.h>
  96643. #ifndef __UCLIBC__
  96644. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_clear_event.c uClibc-git/libpthread/nptl_db/td_ta_clear_event.c
  96645. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  96646. +++ uClibc-git/libpthread/nptl_db/td_ta_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  96647. @@ -14,9 +14,8 @@
  96648. Lesser General Public License for more details.
  96649. You should have received a copy of the GNU Lesser General Public
  96650. - License along with the GNU C Library; if not, write to the Free
  96651. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96652. - 02111-1307 USA. */
  96653. + License along with the GNU C Library; if not, see
  96654. + <http://www.gnu.org/licenses/>. */
  96655. #include "thread_dbP.h"
  96656. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_delete.c uClibc-git/libpthread/nptl_db/td_ta_delete.c
  96657. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_delete.c 2012-05-15 09:20:09.000000000 +0200
  96658. +++ uClibc-git/libpthread/nptl_db/td_ta_delete.c 2014-02-03 12:32:57.000000000 +0100
  96659. @@ -14,9 +14,8 @@
  96660. Lesser General Public License for more details.
  96661. You should have received a copy of the GNU Lesser General Public
  96662. - License along with the GNU C Library; if not, write to the Free
  96663. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96664. - 02111-1307 USA. */
  96665. + License along with the GNU C Library; if not, see
  96666. + <http://www.gnu.org/licenses/>. */
  96667. #include <stdlib.h>
  96668. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_enable_stats.c uClibc-git/libpthread/nptl_db/td_ta_enable_stats.c
  96669. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_enable_stats.c 2012-05-15 09:20:09.000000000 +0200
  96670. +++ uClibc-git/libpthread/nptl_db/td_ta_enable_stats.c 2014-02-03 12:32:57.000000000 +0100
  96671. @@ -14,9 +14,8 @@
  96672. Lesser General Public License for more details.
  96673. You should have received a copy of the GNU Lesser General Public
  96674. - License along with the GNU C Library; if not, write to the Free
  96675. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96676. - 02111-1307 USA. */
  96677. + License along with the GNU C Library; if not, see
  96678. + <http://www.gnu.org/licenses/>. */
  96679. #include "thread_dbP.h"
  96680. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_addr.c uClibc-git/libpthread/nptl_db/td_ta_event_addr.c
  96681. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_addr.c 2012-05-15 09:20:09.000000000 +0200
  96682. +++ uClibc-git/libpthread/nptl_db/td_ta_event_addr.c 2014-02-03 12:32:57.000000000 +0100
  96683. @@ -14,9 +14,8 @@
  96684. Lesser General Public License for more details.
  96685. You should have received a copy of the GNU Lesser General Public
  96686. - License along with the GNU C Library; if not, write to the Free
  96687. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96688. - 02111-1307 USA. */
  96689. + License along with the GNU C Library; if not, see
  96690. + <http://www.gnu.org/licenses/>. */
  96691. #include "thread_dbP.h"
  96692. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_getmsg.c uClibc-git/libpthread/nptl_db/td_ta_event_getmsg.c
  96693. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  96694. +++ uClibc-git/libpthread/nptl_db/td_ta_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  96695. @@ -14,9 +14,8 @@
  96696. Lesser General Public License for more details.
  96697. You should have received a copy of the GNU Lesser General Public
  96698. - License along with the GNU C Library; if not, write to the Free
  96699. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96700. - 02111-1307 USA. */
  96701. + License along with the GNU C Library; if not, see
  96702. + <http://www.gnu.org/licenses/>. */
  96703. #include <stddef.h>
  96704. #include <string.h>
  96705. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_nthreads.c uClibc-git/libpthread/nptl_db/td_ta_get_nthreads.c
  96706. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_nthreads.c 2012-05-15 09:20:09.000000000 +0200
  96707. +++ uClibc-git/libpthread/nptl_db/td_ta_get_nthreads.c 2014-02-03 12:32:57.000000000 +0100
  96708. @@ -14,9 +14,8 @@
  96709. Lesser General Public License for more details.
  96710. You should have received a copy of the GNU Lesser General Public
  96711. - License along with the GNU C Library; if not, write to the Free
  96712. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96713. - 02111-1307 USA. */
  96714. + License along with the GNU C Library; if not, see
  96715. + <http://www.gnu.org/licenses/>. */
  96716. #include "thread_dbP.h"
  96717. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_ph.c uClibc-git/libpthread/nptl_db/td_ta_get_ph.c
  96718. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_ph.c 2012-05-15 09:20:09.000000000 +0200
  96719. +++ uClibc-git/libpthread/nptl_db/td_ta_get_ph.c 2014-02-03 12:32:57.000000000 +0100
  96720. @@ -14,9 +14,8 @@
  96721. Lesser General Public License for more details.
  96722. You should have received a copy of the GNU Lesser General Public
  96723. - License along with the GNU C Library; if not, write to the Free
  96724. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96725. - 02111-1307 USA. */
  96726. + License along with the GNU C Library; if not, see
  96727. + <http://www.gnu.org/licenses/>. */
  96728. #include "thread_dbP.h"
  96729. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_stats.c uClibc-git/libpthread/nptl_db/td_ta_get_stats.c
  96730. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_get_stats.c 2012-05-15 09:20:09.000000000 +0200
  96731. +++ uClibc-git/libpthread/nptl_db/td_ta_get_stats.c 2014-02-03 12:32:57.000000000 +0100
  96732. @@ -14,9 +14,8 @@
  96733. Lesser General Public License for more details.
  96734. You should have received a copy of the GNU Lesser General Public
  96735. - License along with the GNU C Library; if not, write to the Free
  96736. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96737. - 02111-1307 USA. */
  96738. + License along with the GNU C Library; if not, see
  96739. + <http://www.gnu.org/licenses/>. */
  96740. #include "thread_dbP.h"
  96741. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_id2thr.c uClibc-git/libpthread/nptl_db/td_ta_map_id2thr.c
  96742. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_id2thr.c 2012-05-15 09:20:09.000000000 +0200
  96743. +++ uClibc-git/libpthread/nptl_db/td_ta_map_id2thr.c 2014-02-03 12:32:57.000000000 +0100
  96744. @@ -14,9 +14,8 @@
  96745. Lesser General Public License for more details.
  96746. You should have received a copy of the GNU Lesser General Public
  96747. - License along with the GNU C Library; if not, write to the Free
  96748. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96749. - 02111-1307 USA. */
  96750. + License along with the GNU C Library; if not, see
  96751. + <http://www.gnu.org/licenses/>. */
  96752. #include "thread_dbP.h"
  96753. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_lwp2thr.c uClibc-git/libpthread/nptl_db/td_ta_map_lwp2thr.c
  96754. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_map_lwp2thr.c 2012-05-15 09:20:09.000000000 +0200
  96755. +++ uClibc-git/libpthread/nptl_db/td_ta_map_lwp2thr.c 2014-02-03 12:32:57.000000000 +0100
  96756. @@ -13,9 +13,8 @@
  96757. Lesser General Public License for more details.
  96758. You should have received a copy of the GNU Lesser General Public
  96759. - License along with the GNU C Library; if not, write to the Free
  96760. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96761. - 02111-1307 USA. */
  96762. + License along with the GNU C Library; if not, see
  96763. + <http://www.gnu.org/licenses/>. */
  96764. #include "thread_dbP.h"
  96765. #include <stdlib.h>
  96766. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_new.c uClibc-git/libpthread/nptl_db/td_ta_new.c
  96767. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_new.c 2012-05-15 09:20:09.000000000 +0200
  96768. +++ uClibc-git/libpthread/nptl_db/td_ta_new.c 2014-02-03 12:32:57.000000000 +0100
  96769. @@ -14,9 +14,8 @@
  96770. Lesser General Public License for more details.
  96771. You should have received a copy of the GNU Lesser General Public
  96772. - License along with the GNU C Library; if not, write to the Free
  96773. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96774. - 02111-1307 USA. */
  96775. + License along with the GNU C Library; if not, see
  96776. + <http://www.gnu.org/licenses/>. */
  96777. #include <stddef.h>
  96778. #include <stdlib.h>
  96779. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_reset_stats.c uClibc-git/libpthread/nptl_db/td_ta_reset_stats.c
  96780. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_reset_stats.c 2012-05-15 09:20:09.000000000 +0200
  96781. +++ uClibc-git/libpthread/nptl_db/td_ta_reset_stats.c 2014-02-03 12:32:57.000000000 +0100
  96782. @@ -14,9 +14,8 @@
  96783. Lesser General Public License for more details.
  96784. You should have received a copy of the GNU Lesser General Public
  96785. - License along with the GNU C Library; if not, write to the Free
  96786. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96787. - 02111-1307 USA. */
  96788. + License along with the GNU C Library; if not, see
  96789. + <http://www.gnu.org/licenses/>. */
  96790. #include "thread_dbP.h"
  96791. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_setconcurrency.c uClibc-git/libpthread/nptl_db/td_ta_setconcurrency.c
  96792. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_setconcurrency.c 2012-05-15 09:20:09.000000000 +0200
  96793. +++ uClibc-git/libpthread/nptl_db/td_ta_setconcurrency.c 2014-02-03 12:32:57.000000000 +0100
  96794. @@ -14,9 +14,8 @@
  96795. Lesser General Public License for more details.
  96796. You should have received a copy of the GNU Lesser General Public
  96797. - License along with the GNU C Library; if not, write to the Free
  96798. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96799. - 02111-1307 USA. */
  96800. + License along with the GNU C Library; if not, see
  96801. + <http://www.gnu.org/licenses/>. */
  96802. #include "thread_dbP.h"
  96803. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_set_event.c uClibc-git/libpthread/nptl_db/td_ta_set_event.c
  96804. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_set_event.c 2012-05-15 09:20:09.000000000 +0200
  96805. +++ uClibc-git/libpthread/nptl_db/td_ta_set_event.c 2014-02-03 12:32:57.000000000 +0100
  96806. @@ -14,9 +14,8 @@
  96807. Lesser General Public License for more details.
  96808. You should have received a copy of the GNU Lesser General Public
  96809. - License along with the GNU C Library; if not, write to the Free
  96810. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96811. - 02111-1307 USA. */
  96812. + License along with the GNU C Library; if not, see
  96813. + <http://www.gnu.org/licenses/>. */
  96814. #include "thread_dbP.h"
  96815. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_thr_iter.c uClibc-git/libpthread/nptl_db/td_ta_thr_iter.c
  96816. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_thr_iter.c 2012-05-15 09:20:09.000000000 +0200
  96817. +++ uClibc-git/libpthread/nptl_db/td_ta_thr_iter.c 2014-02-03 12:32:57.000000000 +0100
  96818. @@ -14,9 +14,8 @@
  96819. Lesser General Public License for more details.
  96820. You should have received a copy of the GNU Lesser General Public
  96821. - License along with the GNU C Library; if not, write to the Free
  96822. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96823. - 02111-1307 USA. */
  96824. + License along with the GNU C Library; if not, see
  96825. + <http://www.gnu.org/licenses/>. */
  96826. #include "thread_dbP.h"
  96827. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_ta_tsd_iter.c uClibc-git/libpthread/nptl_db/td_ta_tsd_iter.c
  96828. --- uClibc-0.9.33.2/libpthread/nptl_db/td_ta_tsd_iter.c 2012-05-15 09:20:09.000000000 +0200
  96829. +++ uClibc-git/libpthread/nptl_db/td_ta_tsd_iter.c 2014-02-03 12:32:57.000000000 +0100
  96830. @@ -14,9 +14,8 @@
  96831. Lesser General Public License for more details.
  96832. You should have received a copy of the GNU Lesser General Public
  96833. - License along with the GNU C Library; if not, write to the Free
  96834. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96835. - 02111-1307 USA. */
  96836. + License along with the GNU C Library; if not, see
  96837. + <http://www.gnu.org/licenses/>. */
  96838. #include "thread_dbP.h"
  96839. #include <alloca.h>
  96840. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_clear_event.c uClibc-git/libpthread/nptl_db/td_thr_clear_event.c
  96841. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_clear_event.c 2012-05-15 09:20:09.000000000 +0200
  96842. +++ uClibc-git/libpthread/nptl_db/td_thr_clear_event.c 2014-02-03 12:32:57.000000000 +0100
  96843. @@ -14,9 +14,8 @@
  96844. Lesser General Public License for more details.
  96845. You should have received a copy of the GNU Lesser General Public
  96846. - License along with the GNU C Library; if not, write to the Free
  96847. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96848. - 02111-1307 USA. */
  96849. + License along with the GNU C Library; if not, see
  96850. + <http://www.gnu.org/licenses/>. */
  96851. #include <stddef.h>
  96852. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbresume.c uClibc-git/libpthread/nptl_db/td_thr_dbresume.c
  96853. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbresume.c 2012-05-15 09:20:09.000000000 +0200
  96854. +++ uClibc-git/libpthread/nptl_db/td_thr_dbresume.c 2014-02-03 12:32:57.000000000 +0100
  96855. @@ -14,9 +14,8 @@
  96856. Lesser General Public License for more details.
  96857. You should have received a copy of the GNU Lesser General Public
  96858. - License along with the GNU C Library; if not, write to the Free
  96859. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96860. - 02111-1307 USA. */
  96861. + License along with the GNU C Library; if not, see
  96862. + <http://www.gnu.org/licenses/>. */
  96863. #include "thread_dbP.h"
  96864. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbsuspend.c uClibc-git/libpthread/nptl_db/td_thr_dbsuspend.c
  96865. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_dbsuspend.c 2012-05-15 09:20:09.000000000 +0200
  96866. +++ uClibc-git/libpthread/nptl_db/td_thr_dbsuspend.c 2014-02-03 12:32:57.000000000 +0100
  96867. @@ -14,9 +14,8 @@
  96868. Lesser General Public License for more details.
  96869. You should have received a copy of the GNU Lesser General Public
  96870. - License along with the GNU C Library; if not, write to the Free
  96871. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96872. - 02111-1307 USA. */
  96873. + License along with the GNU C Library; if not, see
  96874. + <http://www.gnu.org/licenses/>. */
  96875. #include "thread_dbP.h"
  96876. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_enable.c uClibc-git/libpthread/nptl_db/td_thr_event_enable.c
  96877. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_enable.c 2012-05-15 09:20:09.000000000 +0200
  96878. +++ uClibc-git/libpthread/nptl_db/td_thr_event_enable.c 2014-02-03 12:32:57.000000000 +0100
  96879. @@ -14,9 +14,8 @@
  96880. Lesser General Public License for more details.
  96881. You should have received a copy of the GNU Lesser General Public
  96882. - License along with the GNU C Library; if not, write to the Free
  96883. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96884. - 02111-1307 USA. */
  96885. + License along with the GNU C Library; if not, see
  96886. + <http://www.gnu.org/licenses/>. */
  96887. #include "thread_dbP.h"
  96888. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_getmsg.c uClibc-git/libpthread/nptl_db/td_thr_event_getmsg.c
  96889. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_event_getmsg.c 2012-05-15 09:20:09.000000000 +0200
  96890. +++ uClibc-git/libpthread/nptl_db/td_thr_event_getmsg.c 2014-02-03 12:32:57.000000000 +0100
  96891. @@ -14,9 +14,8 @@
  96892. Lesser General Public License for more details.
  96893. You should have received a copy of the GNU Lesser General Public
  96894. - License along with the GNU C Library; if not, write to the Free
  96895. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96896. - 02111-1307 USA. */
  96897. + License along with the GNU C Library; if not, see
  96898. + <http://www.gnu.org/licenses/>. */
  96899. #include "thread_dbP.h"
  96900. #include <assert.h>
  96901. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getfpregs.c uClibc-git/libpthread/nptl_db/td_thr_getfpregs.c
  96902. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getfpregs.c 2012-05-15 09:20:09.000000000 +0200
  96903. +++ uClibc-git/libpthread/nptl_db/td_thr_getfpregs.c 2014-02-03 12:32:57.000000000 +0100
  96904. @@ -14,9 +14,8 @@
  96905. Lesser General Public License for more details.
  96906. You should have received a copy of the GNU Lesser General Public
  96907. - License along with the GNU C Library; if not, write to the Free
  96908. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96909. - 02111-1307 USA. */
  96910. + License along with the GNU C Library; if not, see
  96911. + <http://www.gnu.org/licenses/>. */
  96912. #include "thread_dbP.h"
  96913. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getgregs.c uClibc-git/libpthread/nptl_db/td_thr_getgregs.c
  96914. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getgregs.c 2012-05-15 09:20:09.000000000 +0200
  96915. +++ uClibc-git/libpthread/nptl_db/td_thr_getgregs.c 2014-02-03 12:32:57.000000000 +0100
  96916. @@ -14,9 +14,8 @@
  96917. Lesser General Public License for more details.
  96918. You should have received a copy of the GNU Lesser General Public
  96919. - License along with the GNU C Library; if not, write to the Free
  96920. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96921. - 02111-1307 USA. */
  96922. + License along with the GNU C Library; if not, see
  96923. + <http://www.gnu.org/licenses/>. */
  96924. #include "thread_dbP.h"
  96925. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_get_info.c uClibc-git/libpthread/nptl_db/td_thr_get_info.c
  96926. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_get_info.c 2012-05-15 09:20:09.000000000 +0200
  96927. +++ uClibc-git/libpthread/nptl_db/td_thr_get_info.c 2014-02-03 12:32:57.000000000 +0100
  96928. @@ -14,9 +14,8 @@
  96929. Lesser General Public License for more details.
  96930. You should have received a copy of the GNU Lesser General Public
  96931. - License along with the GNU C Library; if not, write to the Free
  96932. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96933. - 02111-1307 USA. */
  96934. + License along with the GNU C Library; if not, see
  96935. + <http://www.gnu.org/licenses/>. */
  96936. #include <stddef.h>
  96937. #include <string.h>
  96938. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregs.c uClibc-git/libpthread/nptl_db/td_thr_getxregs.c
  96939. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregs.c 2012-05-15 09:20:09.000000000 +0200
  96940. +++ uClibc-git/libpthread/nptl_db/td_thr_getxregs.c 2014-02-03 12:32:57.000000000 +0100
  96941. @@ -14,9 +14,8 @@
  96942. Lesser General Public License for more details.
  96943. You should have received a copy of the GNU Lesser General Public
  96944. - License along with the GNU C Library; if not, write to the Free
  96945. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96946. - 02111-1307 USA. */
  96947. + License along with the GNU C Library; if not, see
  96948. + <http://www.gnu.org/licenses/>. */
  96949. #include "thread_dbP.h"
  96950. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregsize.c uClibc-git/libpthread/nptl_db/td_thr_getxregsize.c
  96951. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_getxregsize.c 2012-05-15 09:20:09.000000000 +0200
  96952. +++ uClibc-git/libpthread/nptl_db/td_thr_getxregsize.c 2014-02-03 12:32:57.000000000 +0100
  96953. @@ -14,9 +14,8 @@
  96954. Lesser General Public License for more details.
  96955. You should have received a copy of the GNU Lesser General Public
  96956. - License along with the GNU C Library; if not, write to the Free
  96957. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96958. - 02111-1307 USA. */
  96959. + License along with the GNU C Library; if not, see
  96960. + <http://www.gnu.org/licenses/>. */
  96961. #include "thread_dbP.h"
  96962. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_set_event.c uClibc-git/libpthread/nptl_db/td_thr_set_event.c
  96963. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_set_event.c 2012-05-15 09:20:09.000000000 +0200
  96964. +++ uClibc-git/libpthread/nptl_db/td_thr_set_event.c 2014-02-03 12:32:57.000000000 +0100
  96965. @@ -14,9 +14,8 @@
  96966. Lesser General Public License for more details.
  96967. You should have received a copy of the GNU Lesser General Public
  96968. - License along with the GNU C Library; if not, write to the Free
  96969. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96970. - 02111-1307 USA. */
  96971. + License along with the GNU C Library; if not, see
  96972. + <http://www.gnu.org/licenses/>. */
  96973. #include <stddef.h>
  96974. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setfpregs.c uClibc-git/libpthread/nptl_db/td_thr_setfpregs.c
  96975. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setfpregs.c 2012-05-15 09:20:09.000000000 +0200
  96976. +++ uClibc-git/libpthread/nptl_db/td_thr_setfpregs.c 2014-02-03 12:32:57.000000000 +0100
  96977. @@ -14,9 +14,8 @@
  96978. Lesser General Public License for more details.
  96979. You should have received a copy of the GNU Lesser General Public
  96980. - License along with the GNU C Library; if not, write to the Free
  96981. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96982. - 02111-1307 USA. */
  96983. + License along with the GNU C Library; if not, see
  96984. + <http://www.gnu.org/licenses/>. */
  96985. #include "thread_dbP.h"
  96986. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setgregs.c uClibc-git/libpthread/nptl_db/td_thr_setgregs.c
  96987. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setgregs.c 2012-05-15 09:20:09.000000000 +0200
  96988. +++ uClibc-git/libpthread/nptl_db/td_thr_setgregs.c 2014-02-03 12:32:57.000000000 +0100
  96989. @@ -14,9 +14,8 @@
  96990. Lesser General Public License for more details.
  96991. You should have received a copy of the GNU Lesser General Public
  96992. - License along with the GNU C Library; if not, write to the Free
  96993. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  96994. - 02111-1307 USA. */
  96995. + License along with the GNU C Library; if not, see
  96996. + <http://www.gnu.org/licenses/>. */
  96997. #include "thread_dbP.h"
  96998. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setprio.c uClibc-git/libpthread/nptl_db/td_thr_setprio.c
  96999. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setprio.c 2012-05-15 09:20:09.000000000 +0200
  97000. +++ uClibc-git/libpthread/nptl_db/td_thr_setprio.c 2014-02-03 12:32:57.000000000 +0100
  97001. @@ -14,9 +14,8 @@
  97002. Lesser General Public License for more details.
  97003. You should have received a copy of the GNU Lesser General Public
  97004. - License along with the GNU C Library; if not, write to the Free
  97005. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97006. - 02111-1307 USA. */
  97007. + License along with the GNU C Library; if not, see
  97008. + <http://www.gnu.org/licenses/>. */
  97009. #include "thread_dbP.h"
  97010. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setsigpending.c uClibc-git/libpthread/nptl_db/td_thr_setsigpending.c
  97011. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setsigpending.c 2012-05-15 09:20:09.000000000 +0200
  97012. +++ uClibc-git/libpthread/nptl_db/td_thr_setsigpending.c 2014-02-03 12:32:57.000000000 +0100
  97013. @@ -14,9 +14,8 @@
  97014. Lesser General Public License for more details.
  97015. You should have received a copy of the GNU Lesser General Public
  97016. - License along with the GNU C Library; if not, write to the Free
  97017. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97018. - 02111-1307 USA. */
  97019. + License along with the GNU C Library; if not, see
  97020. + <http://www.gnu.org/licenses/>. */
  97021. #include "thread_dbP.h"
  97022. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setxregs.c uClibc-git/libpthread/nptl_db/td_thr_setxregs.c
  97023. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_setxregs.c 2012-05-15 09:20:09.000000000 +0200
  97024. +++ uClibc-git/libpthread/nptl_db/td_thr_setxregs.c 2014-02-03 12:32:57.000000000 +0100
  97025. @@ -14,9 +14,8 @@
  97026. Lesser General Public License for more details.
  97027. You should have received a copy of the GNU Lesser General Public
  97028. - License along with the GNU C Library; if not, write to the Free
  97029. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97030. - 02111-1307 USA. */
  97031. + License along with the GNU C Library; if not, see
  97032. + <http://www.gnu.org/licenses/>. */
  97033. #include "thread_dbP.h"
  97034. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_sigsetmask.c uClibc-git/libpthread/nptl_db/td_thr_sigsetmask.c
  97035. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_sigsetmask.c 2012-05-15 09:20:09.000000000 +0200
  97036. +++ uClibc-git/libpthread/nptl_db/td_thr_sigsetmask.c 2014-02-03 12:32:57.000000000 +0100
  97037. @@ -14,9 +14,8 @@
  97038. Lesser General Public License for more details.
  97039. You should have received a copy of the GNU Lesser General Public
  97040. - License along with the GNU C Library; if not, write to the Free
  97041. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97042. - 02111-1307 USA. */
  97043. + License along with the GNU C Library; if not, see
  97044. + <http://www.gnu.org/licenses/>. */
  97045. #include "thread_dbP.h"
  97046. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tlsbase.c uClibc-git/libpthread/nptl_db/td_thr_tlsbase.c
  97047. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tlsbase.c 2012-05-15 09:20:09.000000000 +0200
  97048. +++ uClibc-git/libpthread/nptl_db/td_thr_tlsbase.c 2014-02-03 12:32:57.000000000 +0100
  97049. @@ -13,9 +13,8 @@
  97050. Lesser General Public License for more details.
  97051. You should have received a copy of the GNU Lesser General Public
  97052. - License along with the GNU C Library; if not, write to the Free
  97053. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97054. - 02111-1307 USA. */
  97055. + License along with the GNU C Library; if not, see
  97056. + <http://www.gnu.org/licenses/>. */
  97057. #include "thread_dbP.h"
  97058. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tls_get_addr.c uClibc-git/libpthread/nptl_db/td_thr_tls_get_addr.c
  97059. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tls_get_addr.c 2012-05-15 09:20:09.000000000 +0200
  97060. +++ uClibc-git/libpthread/nptl_db/td_thr_tls_get_addr.c 2014-02-03 12:32:57.000000000 +0100
  97061. @@ -14,9 +14,8 @@
  97062. Lesser General Public License for more details.
  97063. You should have received a copy of the GNU Lesser General Public
  97064. - License along with the GNU C Library; if not, write to the Free
  97065. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97066. - 02111-1307 USA. */
  97067. + License along with the GNU C Library; if not, see
  97068. + <http://www.gnu.org/licenses/>. */
  97069. #include <link.h>
  97070. #include "thread_dbP.h"
  97071. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tsd.c uClibc-git/libpthread/nptl_db/td_thr_tsd.c
  97072. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_tsd.c 2012-05-15 09:20:09.000000000 +0200
  97073. +++ uClibc-git/libpthread/nptl_db/td_thr_tsd.c 2014-02-03 12:32:57.000000000 +0100
  97074. @@ -14,9 +14,8 @@
  97075. Lesser General Public License for more details.
  97076. You should have received a copy of the GNU Lesser General Public
  97077. - License along with the GNU C Library; if not, write to the Free
  97078. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97079. - 02111-1307 USA. */
  97080. + License along with the GNU C Library; if not, see
  97081. + <http://www.gnu.org/licenses/>. */
  97082. #include "thread_dbP.h"
  97083. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/td_thr_validate.c uClibc-git/libpthread/nptl_db/td_thr_validate.c
  97084. --- uClibc-0.9.33.2/libpthread/nptl_db/td_thr_validate.c 2012-05-15 09:20:09.000000000 +0200
  97085. +++ uClibc-git/libpthread/nptl_db/td_thr_validate.c 2014-02-03 12:32:57.000000000 +0100
  97086. @@ -14,9 +14,8 @@
  97087. Lesser General Public License for more details.
  97088. You should have received a copy of the GNU Lesser General Public
  97089. - License along with the GNU C Library; if not, write to the Free
  97090. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97091. - 02111-1307 USA. */
  97092. + License along with the GNU C Library; if not, see
  97093. + <http://www.gnu.org/licenses/>. */
  97094. #include "thread_dbP.h"
  97095. #include <stdbool.h>
  97096. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/thread_db.h uClibc-git/libpthread/nptl_db/thread_db.h
  97097. --- uClibc-0.9.33.2/libpthread/nptl_db/thread_db.h 2012-05-15 09:20:09.000000000 +0200
  97098. +++ uClibc-git/libpthread/nptl_db/thread_db.h 2014-02-03 12:32:57.000000000 +0100
  97099. @@ -13,9 +13,8 @@
  97100. Lesser General Public License for more details.
  97101. You should have received a copy of the GNU Lesser General Public
  97102. - License along with the GNU C Library; if not, write to the Free
  97103. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97104. - 02111-1307 USA. */
  97105. + License along with the GNU C Library; if not, see
  97106. + <http://www.gnu.org/licenses/>. */
  97107. #ifndef _THREAD_DB_H
  97108. #define _THREAD_DB_H 1
  97109. diff -Nur uClibc-0.9.33.2/libpthread/nptl_db/thread_dbP.h uClibc-git/libpthread/nptl_db/thread_dbP.h
  97110. --- uClibc-0.9.33.2/libpthread/nptl_db/thread_dbP.h 2012-05-15 09:20:09.000000000 +0200
  97111. +++ uClibc-git/libpthread/nptl_db/thread_dbP.h 2014-02-03 12:32:57.000000000 +0100
  97112. @@ -13,9 +13,8 @@
  97113. Lesser General Public License for more details.
  97114. You should have received a copy of the GNU Lesser General Public
  97115. - License along with the GNU C Library; if not, write to the Free
  97116. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97117. - 02111-1307 USA. */
  97118. + License along with the GNU C Library; if not, see
  97119. + <http://www.gnu.org/licenses/>. */
  97120. #ifndef _THREAD_DBP_H
  97121. #define _THREAD_DBP_H 1
  97122. diff -Nur uClibc-0.9.33.2/libresolv/resolv.c uClibc-git/libresolv/resolv.c
  97123. --- uClibc-0.9.33.2/libresolv/resolv.c 2012-05-15 09:20:09.000000000 +0200
  97124. +++ uClibc-git/libresolv/resolv.c 2014-02-03 12:32:57.000000000 +0100
  97125. @@ -7,8 +7,6 @@
  97126. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  97127. */
  97128. -#include <features.h>
  97129. -
  97130. void __stub1(void);
  97131. void __stub1(void)
  97132. {
  97133. diff -Nur uClibc-0.9.33.2/librt/clock_getcpuclockid.c uClibc-git/librt/clock_getcpuclockid.c
  97134. --- uClibc-0.9.33.2/librt/clock_getcpuclockid.c 2012-05-15 09:20:09.000000000 +0200
  97135. +++ uClibc-git/librt/clock_getcpuclockid.c 2014-02-03 12:32:57.000000000 +0100
  97136. @@ -13,9 +13,8 @@
  97137. Lesser General Public License for more details.
  97138. You should have received a copy of the GNU Lesser General Public
  97139. - License along with the GNU C Library; if not, write to the Free
  97140. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97141. - 02111-1307 USA. */
  97142. + License along with the GNU C Library; if not, see
  97143. + <http://www.gnu.org/licenses/>. */
  97144. #include <errno.h>
  97145. #include <time.h>
  97146. diff -Nur uClibc-0.9.33.2/librt/clock_gettime.c uClibc-git/librt/clock_gettime.c
  97147. --- uClibc-0.9.33.2/librt/clock_gettime.c 2012-05-15 09:20:09.000000000 +0200
  97148. +++ uClibc-git/librt/clock_gettime.c 2014-02-03 12:32:57.000000000 +0100
  97149. @@ -13,9 +13,8 @@
  97150. Lesser General Public License for more details.
  97151. You should have received a copy of the GNU Lesser General Public
  97152. - License along with the GNU C Library; if not, write to the Free
  97153. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97154. - 02111-1307 USA. */
  97155. + License along with the GNU C Library; if not, see
  97156. + <http://www.gnu.org/licenses/>. */
  97157. #include <sysdep.h>
  97158. #include <errno.h>
  97159. @@ -186,7 +185,6 @@
  97160. #include <stdint.h>
  97161. #include <time.h>
  97162. #include <sys/time.h>
  97163. -#include <libc-internal.h>
  97164. #include <ldsodefs.h>
  97165. diff -Nur uClibc-0.9.33.2/librt/clock_nanosleep.c uClibc-git/librt/clock_nanosleep.c
  97166. --- uClibc-0.9.33.2/librt/clock_nanosleep.c 2012-05-15 09:20:09.000000000 +0200
  97167. +++ uClibc-git/librt/clock_nanosleep.c 2014-02-03 12:32:57.000000000 +0100
  97168. @@ -12,9 +12,8 @@
  97169. Lesser General Public License for more details.
  97170. You should have received a copy of the GNU Lesser General Public
  97171. - License along with the GNU C Library; if not, write to the Free
  97172. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97173. - 02111-1307 USA. */
  97174. + License along with the GNU C Library; if not, see
  97175. + <http://www.gnu.org/licenses/>. */
  97176. #include <time.h>
  97177. #include <errno.h>
  97178. diff -Nur uClibc-0.9.33.2/librt/Makefile.in uClibc-git/librt/Makefile.in
  97179. --- uClibc-0.9.33.2/librt/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  97180. +++ uClibc-git/librt/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  97181. @@ -28,11 +28,20 @@
  97182. ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  97183. librt_filter_SRC += mq_notify.c timer_create.c timer_delete.c \
  97184. timer_getoverr.c timer_gettime.c timer_settime.c
  97185. +# these should really be guarded by ADVANCED_REALTIME, we use them in mq_send.c/mq_receive.c
  97186. librt_SSRC := $(wildcard $(librt_DIR)/*.S)
  97187. else
  97188. librt_filter_SRC += clock_nanosleep.c clock_getcpuclockid.c clock_gettime.c
  97189. librt_SSRC :=
  97190. endif
  97191. +
  97192. +librt_filter_SRC += $(if $(UCLIBC_HAS_ADVANCED_REALTIME),, \
  97193. + spawn.c \
  97194. + spawn_faction_addclose.c \
  97195. + spawn_faction_adddup2.c \
  97196. + spawn_faction_addopen.c \
  97197. + spawn_faction_init.c)
  97198. +
  97199. librt_SRC := $(filter-out $(librt_filter_SRC),$(librt_SRC))
  97200. librt_OBJ := $(patsubst %.c,$(librt_OUT)/%.o,$(librt_SRC))
  97201. diff -Nur uClibc-0.9.33.2/librt/mq_receive.c uClibc-git/librt/mq_receive.c
  97202. --- uClibc-0.9.33.2/librt/mq_receive.c 2012-05-15 09:20:09.000000000 +0200
  97203. +++ uClibc-git/librt/mq_receive.c 2014-02-03 12:32:57.000000000 +0100
  97204. @@ -10,13 +10,18 @@
  97205. #include <mqueue.h>
  97206. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  97207. +# ifndef __UCLIBC_HAS_ADVANCED_REALTIME__
  97208. +extern ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len,
  97209. + unsigned int *msg_prio,
  97210. + const struct timespec *abs_timeout);
  97211. +# endif
  97212. librt_hidden_proto(mq_timedreceive)
  97213. #else
  97214. # define __NR___syscall_mq_timedreceive __NR_mq_timedreceive
  97215. static _syscall5(int, __syscall_mq_timedreceive, int, mqdes,
  97216. char *, msg_ptr, size_t, msg_len, unsigned int *,
  97217. - msg_prio, const void *, abs_timeout);
  97218. + msg_prio, const void *, abs_timeout)
  97219. # ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
  97220. /*
  97221. diff -Nur uClibc-0.9.33.2/librt/mq_send.c uClibc-git/librt/mq_send.c
  97222. --- uClibc-0.9.33.2/librt/mq_send.c 2012-05-15 09:20:09.000000000 +0200
  97223. +++ uClibc-git/librt/mq_send.c 2014-02-03 12:32:57.000000000 +0100
  97224. @@ -10,13 +10,17 @@
  97225. #include <mqueue.h>
  97226. #ifdef __UCLIBC_HAS_THREADS_NATIVE__
  97227. +# ifndef __UCLIBC_HAS_ADVANCED_REALTIME__
  97228. +extern int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len,
  97229. + unsigned int msg_prio, const struct timespec *abs_timeout);
  97230. +# endif
  97231. librt_hidden_proto(mq_timedsend)
  97232. #else
  97233. # define __NR___syscall_mq_timedsend __NR_mq_timedsend
  97234. static _syscall5(int, __syscall_mq_timedsend, int, mqdes,
  97235. const char *, msg_ptr, size_t, msg_len, unsigned int,
  97236. - msg_prio, const void *, abs_timeout);
  97237. + msg_prio, const void *, abs_timeout)
  97238. # ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
  97239. /*
  97240. diff -Nur uClibc-0.9.33.2/librt/mq_timedreceive.S uClibc-git/librt/mq_timedreceive.S
  97241. --- uClibc-0.9.33.2/librt/mq_timedreceive.S 2012-05-15 09:20:09.000000000 +0200
  97242. +++ uClibc-git/librt/mq_timedreceive.S 2014-02-03 12:32:57.000000000 +0100
  97243. @@ -2,9 +2,7 @@
  97244. #ifndef __NR_mq_timedreceive
  97245. #error Missing definition of NR_timedreceive needed for cancellation.
  97246. #endif
  97247. -PSEUDO (__mq_timedreceive, mq_timedreceive, 5)
  97248. -ret
  97249. -PSEUDO_END(__mq_timedreceive)
  97250. -librt_hidden_def (__mq_timedreceive)
  97251. -weak_alias (__mq_timedreceive, mq_timedreceive)
  97252. -librt_hidden_weak (mq_timedreceive)
  97253. +PSEUDO(mq_timedreceive, mq_timedreceive, 5)
  97254. +ret_ERRVAL
  97255. +PSEUDO_END(mq_timedreceive)
  97256. +librt_hidden_def(mq_timedreceive)
  97257. diff -Nur uClibc-0.9.33.2/librt/mq_timedsend.S uClibc-git/librt/mq_timedsend.S
  97258. --- uClibc-0.9.33.2/librt/mq_timedsend.S 2012-05-15 09:20:09.000000000 +0200
  97259. +++ uClibc-git/librt/mq_timedsend.S 2014-02-03 12:32:57.000000000 +0100
  97260. @@ -2,9 +2,7 @@
  97261. #ifndef __NR_mq_timedsend
  97262. #error Missing definition of NR_timedsend needed for cancellation.
  97263. #endif
  97264. -PSEUDO (__mq_timedsend, mq_timedsend, 5)
  97265. -ret
  97266. -PSEUDO_END(__mq_timedsend)
  97267. -librt_hidden_def (__mq_timedsend)
  97268. -weak_alias (__mq_timedsend, mq_timedsend)
  97269. -librt_hidden_weak (mq_timedsend)
  97270. +PSEUDO(mq_timedsend, mq_timedsend, 5)
  97271. +ret_ERRVAL
  97272. +PSEUDO_END(mq_timedsend)
  97273. +librt_hidden_def(mq_timedsend)
  97274. diff -Nur uClibc-0.9.33.2/librt/spawn.c uClibc-git/librt/spawn.c
  97275. --- uClibc-0.9.33.2/librt/spawn.c 1970-01-01 01:00:00.000000000 +0100
  97276. +++ uClibc-git/librt/spawn.c 2014-02-03 12:32:57.000000000 +0100
  97277. @@ -0,0 +1,266 @@
  97278. +/* Copyright (C) 2000, 2011 Free Software Foundation, Inc.
  97279. + This file is part of the GNU C Library.
  97280. +
  97281. + The GNU C Library is free software; you can redistribute it and/or
  97282. + modify it under the terms of the GNU Lesser General Public
  97283. + License as published by the Free Software Foundation; either
  97284. + version 2.1 of the License, or (at your option) any later version.
  97285. +
  97286. + The GNU C Library is distributed in the hope that it will be useful,
  97287. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  97288. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  97289. + Lesser General Public License for more details.
  97290. +
  97291. + You should have received a copy of the GNU Lesser General Public
  97292. + License along with the GNU C Library; if not, see
  97293. + <http://www.gnu.org/licenses/>. */
  97294. +
  97295. +#include <errno.h>
  97296. +#include <alloca.h>
  97297. +#include <unistd.h>
  97298. +#include <signal.h>
  97299. +#include <stdbool.h>
  97300. +#include <fcntl.h>
  97301. +
  97302. +#include <sys/resource.h>
  97303. +#include <not-cancel.h>
  97304. +
  97305. +#include <spawn.h>
  97306. +#include "spawn_int.h"
  97307. +
  97308. +/* The Unix standard contains a long explanation of the way to signal
  97309. + an error after the fork() was successful. Since no new wait status
  97310. + was wanted there is no way to signal an error using one of the
  97311. + available methods. The committee chose to signal an error by a
  97312. + normal program exit with the exit code 127. */
  97313. +#define SPAWN_ERROR 127
  97314. +
  97315. +/* Execute file actions.
  97316. + * Returns true on error.
  97317. + */
  97318. +inline static bool execute_file_actions(const posix_spawn_file_actions_t *fa)
  97319. +{
  97320. + struct rlimit64 fdlimit;
  97321. + bool have_fdlimit = false;
  97322. + int cnt;
  97323. +
  97324. + for (cnt = 0; cnt < fa->__used; ++cnt) {
  97325. + struct __spawn_action *action = &fa->__actions[cnt];
  97326. +
  97327. + switch (action->tag) {
  97328. + case spawn_do_close:
  97329. + if (close_not_cancel(action->action.close_action.fd) != 0) {
  97330. + if (!have_fdlimit) {
  97331. + getrlimit64(RLIMIT_NOFILE, &fdlimit);
  97332. + have_fdlimit = true;
  97333. + }
  97334. +
  97335. + /* Only signal errors for file descriptors out of range. */
  97336. + if (0 > action->action.close_action.fd
  97337. + || action->action.close_action.fd >= fdlimit.rlim_cur)
  97338. + /* Signal the error. */
  97339. + return true;
  97340. + }
  97341. + break;
  97342. +
  97343. + case spawn_do_open:;
  97344. + int new_fd = open_not_cancel(action->action.open_action.path,
  97345. + action->action.open_action.oflag
  97346. + | O_LARGEFILE,
  97347. + action->action.open_action.mode);
  97348. +
  97349. + if (new_fd == -1)
  97350. + return true;
  97351. +
  97352. + /* Make sure the desired file descriptor is used. */
  97353. + if (new_fd != action->action.open_action.fd) {
  97354. + if (dup2(new_fd, action->action.open_action.fd)
  97355. + != action->action.open_action.fd)
  97356. + return true;
  97357. +
  97358. + if (close_not_cancel(new_fd) != 0)
  97359. + return true;
  97360. + }
  97361. + break;
  97362. +
  97363. + case spawn_do_dup2:
  97364. + if (dup2(action->action.dup2_action.fd,
  97365. + action->action.dup2_action.newfd)
  97366. + != action->action.dup2_action.newfd)
  97367. + return true;
  97368. + break;
  97369. + }
  97370. + }
  97371. +
  97372. + return false;
  97373. +}
  97374. +
  97375. +#define DANGEROUS (POSIX_SPAWN_SETSIGMASK \
  97376. + | POSIX_SPAWN_SETSIGDEF \
  97377. + | POSIX_SPAWN_SETSCHEDPARAM \
  97378. + | POSIX_SPAWN_SETSCHEDULER \
  97379. + | POSIX_SPAWN_SETPGROUP \
  97380. + | POSIX_SPAWN_RESETIDS)
  97381. +inline static bool is_vfork_safe(short int flags)
  97382. +{
  97383. + return ((flags & POSIX_SPAWN_USEVFORK) || !(flags & DANGEROUS));
  97384. +}
  97385. +
  97386. +
  97387. +/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
  97388. + Before running the process perform the actions described in FILE-ACTIONS. */
  97389. +static int
  97390. +__spawni(pid_t *pid, const char *file,
  97391. + const posix_spawn_file_actions_t *fa,
  97392. + const posix_spawnattr_t *attrp, char *const argv[],
  97393. + char *const envp[], const char *path)
  97394. +{
  97395. + short int flags = attrp ? attrp->__flags : 0;
  97396. +
  97397. + pid_t new_pid;
  97398. + if (is_vfork_safe(flags) && !fa)
  97399. + new_pid = vfork();
  97400. + else {
  97401. +#ifdef __ARCH_USE_MMU__
  97402. + new_pid = fork();
  97403. +#else
  97404. + return ENOSYS;
  97405. +#endif
  97406. + }
  97407. +
  97408. + if (new_pid) {
  97409. + if (new_pid < 0)
  97410. + return errno;
  97411. +
  97412. + if (pid)
  97413. + *pid = new_pid;
  97414. +
  97415. + return 0;
  97416. + }
  97417. +
  97418. + if (flags & POSIX_SPAWN_SETSIGMASK) {
  97419. + if (sigprocmask(SIG_SETMASK, &attrp->__ss, NULL) != 0)
  97420. + goto error;
  97421. + }
  97422. +
  97423. + if (flags & POSIX_SPAWN_SETSIGDEF) {
  97424. + /* We have to iterate over all signals. This could possibly be
  97425. + done better but it requires system specific solutions since
  97426. + the sigset_t data type can be very different on different
  97427. + architectures. */
  97428. + struct sigaction sa;
  97429. + int sig;
  97430. +
  97431. + memset(&sa, 0, sizeof(sa));
  97432. + sa.sa_handler = SIG_DFL;
  97433. +
  97434. + for (sig = 1; sig <= _NSIG; ++sig) {
  97435. + if (sigismember(&attrp->__sd, sig)) {
  97436. + if (sigaction(sig, &sa, NULL) != 0)
  97437. + goto error;
  97438. + }
  97439. + }
  97440. + }
  97441. +
  97442. + if (flags & POSIX_SPAWN_SETSCHEDULER) {
  97443. + if (sched_setscheduler(0, attrp->__policy, &attrp->__sp) == -1)
  97444. + goto error;
  97445. + } else if (flags & POSIX_SPAWN_SETSCHEDPARAM) {
  97446. + if (sched_setparam(0, &attrp->__sp) == -1)
  97447. + goto error;
  97448. + }
  97449. +
  97450. + if (flags & POSIX_SPAWN_SETPGROUP) {
  97451. + if (setpgid(0, attrp->__pgrp) != 0)
  97452. + goto error;
  97453. + }
  97454. +
  97455. + if (flags & POSIX_SPAWN_RESETIDS) {
  97456. + if (seteuid(getuid()) || setegid(getgid()))
  97457. + goto error;
  97458. + }
  97459. +
  97460. + if (fa && execute_file_actions(fa))
  97461. + goto error;
  97462. +
  97463. + if (!path || strchr(file, '/')) {
  97464. + execve(file, argv, envp);
  97465. + goto error;
  97466. + }
  97467. +
  97468. +
  97469. + char *name;
  97470. + {
  97471. + size_t filelen = strlen(file) + 1;
  97472. + size_t pathlen = strlen(path) + 1;
  97473. + name = alloca(pathlen + filelen);
  97474. +
  97475. + /* Copy the file name at the top. */
  97476. + name = (char *) memcpy(name + pathlen, file, filelen);
  97477. +
  97478. + /* And add the slash. */
  97479. + *--name = '/';
  97480. + }
  97481. +
  97482. + char *p;
  97483. + do {
  97484. + char *startp;
  97485. + p = strchrnul(path, ':');
  97486. +
  97487. + /* Two adjacent colons, or a colon at the beginning or the end
  97488. + of `PATH' means to search the current directory. */
  97489. + if (p == path)
  97490. + startp = name + 1;
  97491. + else
  97492. + startp = (char *) memcpy(name - (p - path), path, p - path);
  97493. +
  97494. + execve(startp, argv, envp);
  97495. +
  97496. + switch (errno) {
  97497. + case EACCES:
  97498. + case ENOENT:
  97499. + case ESTALE:
  97500. + case ENOTDIR:
  97501. + /* Those errors indicate the file is missing or not
  97502. + executable by us, in which case we want to just try
  97503. + the next path directory. */
  97504. + break;
  97505. + default:
  97506. + /* Some other error means we found an executable file,
  97507. + but something went wrong executing it; return the
  97508. + error to our caller. */
  97509. + goto error;
  97510. + }
  97511. +
  97512. + path = p;
  97513. + } while (*p++ != '\0');
  97514. +
  97515. +error:
  97516. + _exit(SPAWN_ERROR);
  97517. +}
  97518. +
  97519. +/* Spawn a new process executing PATH with the attributes describes in *ATTRP.
  97520. + Before running the process perform the actions described in FILE-ACTIONS. */
  97521. +int posix_spawn (pid_t *pid, const char *path,
  97522. + const posix_spawn_file_actions_t *fa,
  97523. + const posix_spawnattr_t *attrp, char *const argv[],
  97524. + char *const envp[])
  97525. +{
  97526. + return __spawni(pid, path, fa, attrp, argv, envp, NULL);
  97527. +}
  97528. +
  97529. +/* Spawn a new process executing FILE with the attributes describes in *ATTRP.
  97530. + Before running the process perform the actions described in FILE-ACTIONS. */
  97531. +int
  97532. +posix_spawnp(pid_t *pid, const char *file,
  97533. + const posix_spawn_file_actions_t *fa,
  97534. + const posix_spawnattr_t *attrp, char *const argv[],
  97535. + char *const envp[])
  97536. +{
  97537. + const char *path = getenv("PATH");
  97538. +
  97539. + if (!path)
  97540. + path = ":/bin:/usr/bin";
  97541. +
  97542. + return __spawni(pid, file, fa, attrp, argv, envp, path);
  97543. +}
  97544. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_addclose.c uClibc-git/librt/spawn_faction_addclose.c
  97545. --- uClibc-0.9.33.2/librt/spawn_faction_addclose.c 1970-01-01 01:00:00.000000000 +0100
  97546. +++ uClibc-git/librt/spawn_faction_addclose.c 2014-02-03 12:32:57.000000000 +0100
  97547. @@ -0,0 +1,51 @@
  97548. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  97549. + This file is part of the GNU C Library.
  97550. +
  97551. + The GNU C Library is free software; you can redistribute it and/or
  97552. + modify it under the terms of the GNU Lesser General Public
  97553. + License as published by the Free Software Foundation; either
  97554. + version 2.1 of the License, or (at your option) any later version.
  97555. +
  97556. + The GNU C Library is distributed in the hope that it will be useful,
  97557. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  97558. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  97559. + Lesser General Public License for more details.
  97560. +
  97561. + You should have received a copy of the GNU Lesser General Public
  97562. + License along with the GNU C Library; if not, see
  97563. + <http://www.gnu.org/licenses/>. */
  97564. +
  97565. +#include <errno.h>
  97566. +#include <spawn.h>
  97567. +#include <unistd.h>
  97568. +
  97569. +#include "spawn_int.h"
  97570. +
  97571. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  97572. + `close' for the given file descriptor during the `spawn' call. */
  97573. +int
  97574. +posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *file_actions,
  97575. + int fd)
  97576. +{
  97577. + int maxfd = sysconf(_SC_OPEN_MAX);
  97578. + struct __spawn_action *rec;
  97579. +
  97580. + /* Test for the validity of the file descriptor. */
  97581. + if (fd < 0 || fd >= maxfd)
  97582. + return EBADF;
  97583. +
  97584. + /* Allocate more memory if needed. */
  97585. + if (file_actions->__used == file_actions->__allocated
  97586. + && __posix_spawn_file_actions_realloc(file_actions) != 0)
  97587. + /* This can only mean we ran out of memory. */
  97588. + return ENOMEM;
  97589. +
  97590. + /* Add the new value. */
  97591. + rec = &file_actions->__actions[file_actions->__used];
  97592. + rec->tag = spawn_do_close;
  97593. + rec->action.open_action.fd = fd;
  97594. +
  97595. + /* Account for the new entry. */
  97596. + ++file_actions->__used;
  97597. + return 0;
  97598. +}
  97599. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_adddup2.c uClibc-git/librt/spawn_faction_adddup2.c
  97600. --- uClibc-0.9.33.2/librt/spawn_faction_adddup2.c 1970-01-01 01:00:00.000000000 +0100
  97601. +++ uClibc-git/librt/spawn_faction_adddup2.c 2014-02-03 12:32:57.000000000 +0100
  97602. @@ -0,0 +1,52 @@
  97603. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  97604. + This file is part of the GNU C Library.
  97605. +
  97606. + The GNU C Library is free software; you can redistribute it and/or
  97607. + modify it under the terms of the GNU Lesser General Public
  97608. + License as published by the Free Software Foundation; either
  97609. + version 2.1 of the License, or (at your option) any later version.
  97610. +
  97611. + The GNU C Library is distributed in the hope that it will be useful,
  97612. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  97613. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  97614. + Lesser General Public License for more details.
  97615. +
  97616. + You should have received a copy of the GNU Lesser General Public
  97617. + License along with the GNU C Library; if not, see
  97618. + <http://www.gnu.org/licenses/>. */
  97619. +
  97620. +#include <errno.h>
  97621. +#include <spawn.h>
  97622. +#include <unistd.h>
  97623. +
  97624. +#include "spawn_int.h"
  97625. +
  97626. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  97627. + `dup2' for the given file descriptors during the `spawn' call. */
  97628. +int
  97629. +posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *file_actions,
  97630. + int fd, int newfd)
  97631. +{
  97632. + int maxfd = sysconf(_SC_OPEN_MAX);
  97633. + struct __spawn_action *rec;
  97634. +
  97635. + /* Test for the validity of the file descriptor. */
  97636. + if (fd < 0 || newfd < 0 || fd >= maxfd || newfd >= maxfd)
  97637. + return EBADF;
  97638. +
  97639. + /* Allocate more memory if needed. */
  97640. + if (file_actions->__used == file_actions->__allocated
  97641. + && __posix_spawn_file_actions_realloc (file_actions) != 0)
  97642. + /* This can only mean we ran out of memory. */
  97643. + return ENOMEM;
  97644. +
  97645. + /* Add the new value. */
  97646. + rec = &file_actions->__actions[file_actions->__used];
  97647. + rec->tag = spawn_do_dup2;
  97648. + rec->action.dup2_action.fd = fd;
  97649. + rec->action.dup2_action.newfd = newfd;
  97650. +
  97651. + /* Account for the new entry. */
  97652. + ++file_actions->__used;
  97653. + return 0;
  97654. +}
  97655. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_addopen.c uClibc-git/librt/spawn_faction_addopen.c
  97656. --- uClibc-0.9.33.2/librt/spawn_faction_addopen.c 1970-01-01 01:00:00.000000000 +0100
  97657. +++ uClibc-git/librt/spawn_faction_addopen.c 2014-02-03 12:32:57.000000000 +0100
  97658. @@ -0,0 +1,55 @@
  97659. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  97660. + This file is part of the GNU C Library.
  97661. +
  97662. + The GNU C Library is free software; you can redistribute it and/or
  97663. + modify it under the terms of the GNU Lesser General Public
  97664. + License as published by the Free Software Foundation; either
  97665. + version 2.1 of the License, or (at your option) any later version.
  97666. +
  97667. + The GNU C Library is distributed in the hope that it will be useful,
  97668. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  97669. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  97670. + Lesser General Public License for more details.
  97671. +
  97672. + You should have received a copy of the GNU Lesser General Public
  97673. + License along with the GNU C Library; if not, see
  97674. + <http://www.gnu.org/licenses/>. */
  97675. +
  97676. +#include <errno.h>
  97677. +#include <spawn.h>
  97678. +#include <unistd.h>
  97679. +
  97680. +#include "spawn_int.h"
  97681. +
  97682. +/* Add an action to FILE-ACTIONS which tells the implementation to call
  97683. + `open' for the given file during the `spawn' call. */
  97684. +int
  97685. +posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *file_actions,
  97686. + int fd, const char *path, int oflag,
  97687. + mode_t mode)
  97688. +{
  97689. + int maxfd = sysconf(_SC_OPEN_MAX);
  97690. + struct __spawn_action *rec;
  97691. +
  97692. + /* Test for the validity of the file descriptor. */
  97693. + if (fd < 0 || fd >= maxfd)
  97694. + return EBADF;
  97695. +
  97696. + /* Allocate more memory if needed. */
  97697. + if (file_actions->__used == file_actions->__allocated
  97698. + && __posix_spawn_file_actions_realloc (file_actions) != 0)
  97699. + /* This can only mean we ran out of memory. */
  97700. + return ENOMEM;
  97701. +
  97702. + /* Add the new value. */
  97703. + rec = &file_actions->__actions[file_actions->__used];
  97704. + rec->tag = spawn_do_open;
  97705. + rec->action.open_action.fd = fd;
  97706. + rec->action.open_action.path = path;
  97707. + rec->action.open_action.oflag = oflag;
  97708. + rec->action.open_action.mode = mode;
  97709. +
  97710. + /* Account for the new entry. */
  97711. + ++file_actions->__used;
  97712. + return 0;
  97713. +}
  97714. diff -Nur uClibc-0.9.33.2/librt/spawn_faction_init.c uClibc-git/librt/spawn_faction_init.c
  97715. --- uClibc-0.9.33.2/librt/spawn_faction_init.c 1970-01-01 01:00:00.000000000 +0100
  97716. +++ uClibc-git/librt/spawn_faction_init.c 2014-02-03 12:32:57.000000000 +0100
  97717. @@ -0,0 +1,42 @@
  97718. +/* Copyright (C) 2000 Free Software Foundation, Inc.
  97719. + This file is part of the GNU C Library.
  97720. +
  97721. + The GNU C Library is free software; you can redistribute it and/or
  97722. + modify it under the terms of the GNU Lesser General Public
  97723. + License as published by the Free Software Foundation; either
  97724. + version 2.1 of the License, or (at your option) any later version.
  97725. +
  97726. + The GNU C Library is distributed in the hope that it will be useful,
  97727. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  97728. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  97729. + Lesser General Public License for more details.
  97730. +
  97731. + You should have received a copy of the GNU Lesser General Public
  97732. + License along with the GNU C Library; if not, see
  97733. + <http://www.gnu.org/licenses/>. */
  97734. +
  97735. +#include <errno.h>
  97736. +#include <spawn.h>
  97737. +#include <stdlib.h>
  97738. +#include <string.h>
  97739. +
  97740. +#include "spawn_int.h"
  97741. +
  97742. +
  97743. +/* Function used to increase the size of the allocated array. This
  97744. + function is called from the `add'-functions. */
  97745. +int
  97746. +__posix_spawn_file_actions_realloc(posix_spawn_file_actions_t *file_actions)
  97747. +{
  97748. + int newalloc = file_actions->__allocated + 8;
  97749. + void *newmem = realloc(file_actions->__actions,
  97750. + newalloc * sizeof(struct __spawn_action));
  97751. +
  97752. + if (newmem == NULL)
  97753. + /* Not enough memory. */
  97754. + return ENOMEM;
  97755. +
  97756. + file_actions->__actions = (struct __spawn_action *)newmem;
  97757. + file_actions->__allocated = newalloc;
  97758. + return 0;
  97759. +}
  97760. diff -Nur uClibc-0.9.33.2/librt/spawn_int.h uClibc-git/librt/spawn_int.h
  97761. --- uClibc-0.9.33.2/librt/spawn_int.h 1970-01-01 01:00:00.000000000 +0100
  97762. +++ uClibc-git/librt/spawn_int.h 2014-02-03 12:32:57.000000000 +0100
  97763. @@ -0,0 +1,35 @@
  97764. +/* Data structure to contain the action information. */
  97765. +struct __spawn_action {
  97766. + enum {
  97767. + spawn_do_close,
  97768. + spawn_do_dup2,
  97769. + spawn_do_open
  97770. + } tag;
  97771. +
  97772. + union {
  97773. + struct {
  97774. + int fd;
  97775. + } close_action;
  97776. + struct {
  97777. + int fd;
  97778. + int newfd;
  97779. + } dup2_action;
  97780. + struct {
  97781. + int fd;
  97782. + const char *path;
  97783. + int oflag;
  97784. + mode_t mode;
  97785. + } open_action;
  97786. + } action;
  97787. +};
  97788. +
  97789. +int __posix_spawn_file_actions_realloc(posix_spawn_file_actions_t *fa);
  97790. +
  97791. +/* handle !LFS */
  97792. +#ifndef __UCLIBC_HAS_LFS__
  97793. +# define rlimit64 rlimit
  97794. +# define getrlimit64 getrlimit
  97795. +#endif
  97796. +#ifndef O_LARGEFILE
  97797. +# define O_LARGEFILE 0
  97798. +#endif
  97799. diff -Nur uClibc-0.9.33.2/librt/timer_create.c uClibc-git/librt/timer_create.c
  97800. --- uClibc-0.9.33.2/librt/timer_create.c 2012-05-15 09:20:09.000000000 +0200
  97801. +++ uClibc-git/librt/timer_create.c 2014-02-03 12:32:57.000000000 +0100
  97802. @@ -2,6 +2,7 @@
  97803. * timer_create.c - create a per-process timer.
  97804. */
  97805. +#include <stddef.h>
  97806. #include <errno.h>
  97807. #include <signal.h>
  97808. #include <stdlib.h>
  97809. @@ -13,10 +14,6 @@
  97810. #ifdef __NR_timer_create
  97811. -#ifndef offsetof
  97812. -# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
  97813. -#endif
  97814. -
  97815. #define __NR___syscall_timer_create __NR_timer_create
  97816. static __inline__ _syscall3(int, __syscall_timer_create, clockid_t, clock_id,
  97817. struct sigevent *, evp, kernel_timer_t *, ktimerid);
  97818. diff -Nur uClibc-0.9.33.2/libubacktrace/arm/backtrace.c uClibc-git/libubacktrace/arm/backtrace.c
  97819. --- uClibc-0.9.33.2/libubacktrace/arm/backtrace.c 2012-05-15 09:20:09.000000000 +0200
  97820. +++ uClibc-git/libubacktrace/arm/backtrace.c 2014-02-03 12:32:57.000000000 +0100
  97821. @@ -12,6 +12,7 @@
  97822. *
  97823. */
  97824. +#include <libgcc_s.h>
  97825. #include <execinfo.h>
  97826. #include <dlfcn.h>
  97827. #include <stdlib.h>
  97828. @@ -25,6 +26,7 @@
  97829. int cnt, size;
  97830. };
  97831. +#ifdef SHARED
  97832. static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
  97833. static _Unwind_VRS_Result (*unwind_vrs_get) (_Unwind_Context *,
  97834. _Unwind_VRS_RegClass,
  97835. @@ -34,14 +36,18 @@
  97836. static void backtrace_init (void)
  97837. {
  97838. - void *handle = dlopen ("libgcc_s.so.1", RTLD_LAZY);
  97839. + void *handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
  97840. if (handle == NULL
  97841. || ((unwind_backtrace = dlsym (handle, "_Unwind_Backtrace")) == NULL)
  97842. || ((unwind_vrs_get = dlsym (handle, "_Unwind_VRS_Get")) == NULL)) {
  97843. - printf("libgcc_s.so.1 must be installed for backtrace to work\n");
  97844. + printf(LIBGCC_S_SO " must be installed for backtrace to work\n");
  97845. abort();
  97846. }
  97847. }
  97848. +#else
  97849. +# define unwind_backtrace _Unwind_Backtrace
  97850. +# define unwind_vrs_get _Unwind_VRS_Get
  97851. +#endif
  97852. /* This function is identical to "_Unwind_GetGR", except that it uses
  97853. "unwind_vrs_get" instead of "_Unwind_VRS_Get". */
  97854. static inline _Unwind_Word
  97855. @@ -62,7 +68,7 @@
  97856. {
  97857. struct trace_arg *arg = a;
  97858. - assert (unwind_getip != NULL);
  97859. + assert (unwind_getip(ctx) != NULL);
  97860. /* We are first called with address in the __backtrace function. Skip it. */
  97861. if (arg->cnt != -1)
  97862. @@ -80,8 +86,10 @@
  97863. {
  97864. struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
  97865. +#ifdef SHARED
  97866. if (unwind_backtrace == NULL)
  97867. backtrace_init();
  97868. +#endif
  97869. if (size >= 1)
  97870. unwind_backtrace (backtrace_helper, &arg);
  97871. diff -Nur uClibc-0.9.33.2/libubacktrace/arm/Makefile.arch uClibc-git/libubacktrace/arm/Makefile.arch
  97872. --- uClibc-0.9.33.2/libubacktrace/arm/Makefile.arch 2012-05-15 09:20:09.000000000 +0200
  97873. +++ uClibc-git/libubacktrace/arm/Makefile.arch 2014-02-03 12:32:57.000000000 +0100
  97874. @@ -14,4 +14,4 @@
  97875. else
  97876. libubacktrace-a-y+=$(libubacktrace_ARCH_OBJS)
  97877. endif
  97878. -libubacktrace-so-y+=$(libubacktrace_ARCH_OBJS:.o=.os)
  97879. +libubacktrace-so-y+=$(libubacktrace_ARCH_OBJS:.o=.oS)
  97880. diff -Nur uClibc-0.9.33.2/libubacktrace/backtrace.c uClibc-git/libubacktrace/backtrace.c
  97881. --- uClibc-0.9.33.2/libubacktrace/backtrace.c 2012-05-15 09:20:09.000000000 +0200
  97882. +++ uClibc-git/libubacktrace/backtrace.c 2014-02-03 12:32:57.000000000 +0100
  97883. @@ -20,6 +20,7 @@
  97884. *
  97885. */
  97886. +#include <libgcc_s.h>
  97887. #include <execinfo.h>
  97888. #include <dlfcn.h>
  97889. #include <stdlib.h>
  97890. @@ -33,20 +34,25 @@
  97891. int cnt, size;
  97892. };
  97893. +#ifdef SHARED
  97894. static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
  97895. static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *);
  97896. static void backtrace_init (void)
  97897. {
  97898. - void *handle = dlopen ("libgcc_s.so.1", RTLD_LAZY);
  97899. + void *handle = dlopen (LIBGCC_S_SO, RTLD_LAZY);
  97900. if (handle == NULL
  97901. || ((unwind_backtrace = dlsym (handle, "_Unwind_Backtrace")) == NULL)
  97902. || ((unwind_getip = dlsym (handle, "_Unwind_GetIP")) == NULL)) {
  97903. - printf("libgcc_s.so.1 must be installed for backtrace to work\n");
  97904. + printf(LIBGCC_S_SO " must be installed for backtrace to work\n");
  97905. abort();
  97906. }
  97907. }
  97908. +#else
  97909. +# define unwind_backtrace _Unwind_Backtrace
  97910. +# define unwind_getip _Unwind_GetIP
  97911. +#endif
  97912. static _Unwind_Reason_Code
  97913. backtrace_helper (struct _Unwind_Context *ctx, void *a)
  97914. @@ -71,8 +77,10 @@
  97915. {
  97916. struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
  97917. +#ifdef SHARED
  97918. if (unwind_backtrace == NULL)
  97919. backtrace_init();
  97920. +#endif
  97921. if (size >= 1)
  97922. unwind_backtrace (backtrace_helper, &arg);
  97923. diff -Nur uClibc-0.9.33.2/libubacktrace/backtracesyms.c uClibc-git/libubacktrace/backtracesyms.c
  97924. --- uClibc-0.9.33.2/libubacktrace/backtracesyms.c 2012-05-15 09:20:09.000000000 +0200
  97925. +++ uClibc-git/libubacktrace/backtracesyms.c 2014-02-03 12:32:57.000000000 +0100
  97926. @@ -14,9 +14,8 @@
  97927. Lesser General Public License for more details.
  97928. You should have received a copy of the GNU Lesser General Public
  97929. - License along with the GNU C Library; if not, write to the Free
  97930. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97931. - 02111-1307 USA.
  97932. + License along with the GNU C Library; see the file COPYING.LIB. If
  97933. + not, see <http://www.gnu.org/licenses/>.
  97934. Based on glibc/sysdeps/generic/elf/backtracesyms.c
  97935. diff -Nur uClibc-0.9.33.2/libubacktrace/backtracesymsfd.c uClibc-git/libubacktrace/backtracesymsfd.c
  97936. --- uClibc-0.9.33.2/libubacktrace/backtracesymsfd.c 2012-05-15 09:20:09.000000000 +0200
  97937. +++ uClibc-git/libubacktrace/backtracesymsfd.c 2014-02-03 12:32:57.000000000 +0100
  97938. @@ -14,9 +14,8 @@
  97939. Lesser General Public License for more details.
  97940. You should have received a copy of the GNU Lesser General Public
  97941. - License along with the GNU C Library; if not, write to the Free
  97942. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  97943. - 02111-1307 USA.
  97944. + License along with the GNU C Library; see the file COPYING.LIB. If
  97945. + not, see <http://www.gnu.org/licenses/>.
  97946. Based on glibc/sysdeps/generic/elf/backtracesymsfd.c
  97947. diff -Nur uClibc-0.9.33.2/libubacktrace/Makefile.in uClibc-git/libubacktrace/Makefile.in
  97948. --- uClibc-0.9.33.2/libubacktrace/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  97949. +++ uClibc-git/libubacktrace/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  97950. @@ -25,11 +25,13 @@
  97951. -include $(libubacktrace_ARCH_DIR)/Makefile.arch
  97952. libubacktrace_SRC-y :=
  97953. -libubacktrace_SRC-$(UCLIBC_HAS_BACKTRACE) := backtrace.c backtracesyms.c backtracesymsfd.c
  97954. +libubacktrace_SRC-$(UCLIBC_HAS_BACKTRACE) := backtracesyms.c backtracesymsfd.c
  97955. +libubacktrace_SRC_SHARED-$(UCLIBC_HAS_BACKTRACE) := backtrace.c
  97956. # remove generic sources, if arch specific version is present
  97957. ifneq ($(strip $(libubacktrace_ARCH_SRC-y)),)
  97958. libubacktrace_SRC-y := $(filter-out $(notdir $(libubacktrace_ARCH_SRC-y)),$(libubacktrace_SRC-y))
  97959. +libubacktrace_SRC_SHARED-y := $(filter-out $(notdir $(libubacktrace_ARCH_SRC-y)),$(libubacktrace_SRC_SHARED-y))
  97960. endif
  97961. # -fasynchronous-unwind-tables is required for backtrace to work using dwarf2
  97962. @@ -43,12 +45,19 @@
  97963. libubacktrace_SRCS := $(patsubst %.c,$(libubacktrace_DIR)/%.c,$(libubacktrace_SRC-y))
  97964. libubacktrace_OBJS := $(patsubst $(libubacktrace_DIR)/%.c,$(libubacktrace_OUT)/%.o,$(libubacktrace_SRCS))
  97965. +libubacktrace_SHARED_SRCS := $(patsubst %.c,$(libubacktrace_DIR)/%.c,$(libubacktrace_SRC_SHARED-y))
  97966. +libubacktrace_SHARED_OBJS := $(patsubst $(libubacktrace_DIR)/%.c,$(libubacktrace_OUT)/%.o,$(libubacktrace_SHARED_SRCS))
  97967. +
  97968. +libubacktrace-shared-y := $(libubacktrace_SHARED_OBJS:.o=.oS)
  97969. +libubacktrace-static-y := $(libubacktrace_SHARED_OBJS)
  97970. +
  97971. ifeq ($(DOPIC),y)
  97972. -libubacktrace-a-y += $(libubacktrace_OBJS:.o=.os)
  97973. +libubacktrace-a-y += $(libubacktrace_OBJS:.o=.os) $(libubacktrace-static-y:.o=.os)
  97974. else
  97975. -libubacktrace-a-y += $(libubacktrace_OBJS)
  97976. +libubacktrace-a-y += $(libubacktrace_OBJS) $(libubacktrace-static-y)
  97977. endif
  97978. -libubacktrace-so-y += $(libubacktrace_OBJS:.o=.os)
  97979. +libubacktrace-so-y += $(libubacktrace_OBJS:.o=.os) $(libubacktrace-shared-y)
  97980. +
  97981. lib-a-$(UCLIBC_HAS_BACKTRACE) += $(top_builddir)lib/libubacktrace.a
  97982. lib-so-$(UCLIBC_HAS_BACKTRACE) += $(top_builddir)lib/libubacktrace.so
  97983. @@ -56,11 +65,7 @@
  97984. objclean-y += CLEAN_libubacktrace
  97985. ifeq ($(DOMULTI),n)
  97986. -ifeq ($(DOPIC),y)
  97987. -$(top_builddir)lib/libubacktrace.so: $(top_builddir)lib/libubacktrace.a $(libdl.depend)
  97988. -else
  97989. $(top_builddir)lib/libubacktrace.so: $(libubacktrace_OUT)/libubacktrace_so.a $(libdl.depend)
  97990. -endif
  97991. $(call link.so,$(libubacktrace_FULL_NAME),$(ABI_VERSION))
  97992. else
  97993. $(top_builddir)lib/libubacktrace.so: $(libubacktrace_OUT)/libubacktrace.oS | $(libdl.depend)
  97994. @@ -71,7 +76,7 @@
  97995. $(Q)$(RM) $@
  97996. $(do_ar)
  97997. -$(libubacktrace_OUT)/libubacktrace.oS: $(libubacktrace_SRCS) $(libubacktrace_ARCH_SRCS)
  97998. +$(libubacktrace_OUT)/libubacktrace.oS: $(libubacktrace_SRCS) $(libubacktrace_ARCH_SRCS) $(libubacktrace_SHARED_SRCS)
  97999. $(Q)$(RM) $@
  98000. $(compile-m)
  98001. diff -Nur uClibc-0.9.33.2/libutil/forkpty.c uClibc-git/libutil/forkpty.c
  98002. --- uClibc-0.9.33.2/libutil/forkpty.c 2012-05-15 09:20:09.000000000 +0200
  98003. +++ uClibc-git/libutil/forkpty.c 2014-02-03 12:32:57.000000000 +0100
  98004. @@ -13,9 +13,8 @@
  98005. Lesser General Public License for more details.
  98006. You should have received a copy of the GNU Lesser General Public
  98007. - License along with the GNU C Library; if not, write to the Free
  98008. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98009. - 02111-1307 USA. */
  98010. + License along with the GNU C Library; if not, see
  98011. + <http://www.gnu.org/licenses/>. */
  98012. #include <sys/types.h>
  98013. #include <termios.h>
  98014. diff -Nur uClibc-0.9.33.2/libutil/logout.c uClibc-git/libutil/logout.c
  98015. --- uClibc-0.9.33.2/libutil/logout.c 2012-05-15 09:20:09.000000000 +0200
  98016. +++ uClibc-git/libutil/logout.c 2014-02-03 12:32:57.000000000 +0100
  98017. @@ -13,9 +13,8 @@
  98018. Lesser General Public License for more details.
  98019. You should have received a copy of the GNU Lesser General Public
  98020. - License along with the GNU C Library; if not, write to the Free
  98021. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98022. - 02111-1307 USA. */
  98023. + License along with the GNU C Library; if not, see
  98024. + <http://www.gnu.org/licenses/>. */
  98025. #include <errno.h>
  98026. #include <string.h>
  98027. diff -Nur uClibc-0.9.33.2/libutil/openpty.c uClibc-git/libutil/openpty.c
  98028. --- uClibc-0.9.33.2/libutil/openpty.c 2012-05-15 09:20:09.000000000 +0200
  98029. +++ uClibc-git/libutil/openpty.c 2014-02-03 12:32:57.000000000 +0100
  98030. @@ -13,9 +13,8 @@
  98031. Lesser General Public License for more details.
  98032. You should have received a copy of the GNU Lesser General Public
  98033. - License along with the GNU C Library; if not, write to the Free
  98034. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  98035. - 02111-1307 USA. */
  98036. + License along with the GNU C Library; if not, see
  98037. + <http://www.gnu.org/licenses/>. */
  98038. #include <errno.h>
  98039. #include <fcntl.h>
  98040. diff -Nur uClibc-0.9.33.2/Makefile.help uClibc-git/Makefile.help
  98041. --- uClibc-0.9.33.2/Makefile.help 2012-05-15 09:20:09.000000000 +0200
  98042. +++ uClibc-git/Makefile.help 2014-02-03 12:32:56.000000000 +0100
  98043. @@ -27,6 +27,7 @@
  98044. @echo ' menuconfig - interactive curses-based configurator'
  98045. @echo ' oldconfig - resolve any unresolved symbols in .config'
  98046. @echo ' silentoldconfig - resolve any unresolved symbols in .config, silently'
  98047. + @echo ' savedefconfig - Save current config (minimal config)'
  98048. @echo ' randconfig - generate a random .config'
  98049. @$(if $(arch-defconfigs), \
  98050. @echo ''; \
  98051. @@ -58,7 +59,7 @@
  98052. @echo ' ARCH= - Use given arch for config targets'
  98053. @echo ' SHELL= - Shell to use for make'
  98054. @echo ' BUILD_CFLAGS= - extra CFLAGS for compiling host binaries'
  98055. - @echo ' BUILD_LFLAGS= - extra LDFLAGS for linking host binaries'
  98056. + @echo ' BUILD_LDFLAGS= - extra LDFLAGS for linking host binaries'
  98057. @echo ' CONFIG_SHELL= - Shell to use for menuconfig'
  98058. @echo
  98059. @echo ' PREFIX= - Prepended prefix'
  98060. diff -Nur uClibc-0.9.33.2/Makefile.in uClibc-git/Makefile.in
  98061. --- uClibc-0.9.33.2/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  98062. +++ uClibc-git/Makefile.in 2014-02-03 12:32:56.000000000 +0100
  98063. @@ -8,18 +8,8 @@
  98064. #--------------------------------------------------------------
  98065. # You shouldn't need to mess with anything beyond this point...
  98066. #--------------------------------------------------------------
  98067. -clean_targets := clean realclean distclean \
  98068. - objclean-y headers_clean-y CLEAN_utils
  98069. -noconfig_targets := menuconfig config oldconfig silentoldconfig randconfig \
  98070. - defconfig allyesconfig allnoconfig \
  98071. - release dist tags help
  98072. -
  98073. include $(top_srcdir)Rules.mak
  98074. sub_headers := headers
  98075. -ifndef KCONFIG_CONFIG
  98076. -KCONFIG_CONFIG := $(top_builddir).config
  98077. -endif
  98078. -export KCONFIG_CONFIG
  98079. ifeq ($(HAVE_DOT_CONFIG),y)
  98080. @@ -56,6 +46,7 @@
  98081. conf := $(top_builddir)extra/config/conf
  98082. mconf := $(top_builddir)extra/config/mconf
  98083. +nconf := $(top_builddir)extra/config/nconf
  98084. ifeq ($(HAVE_DOT_CONFIG),y)
  98085. # If the .config changes then we have to make sure that our includes are
  98086. @@ -63,9 +54,9 @@
  98087. # have uClibc_config.h as prerequisite but since we _symlink_ the headers
  98088. # and do not (?) want to rely on 'make -L' we better update them right here,
  98089. # on spot to save us from alot of hazzle.
  98090. -$(top_builddir)include/bits/uClibc_config.h: $(conf) $(KCONFIG_CONFIG) $(top_srcdir)extra/scripts/conf-header.sh | $(top_builddir)include/bits $(top_builddir)include/config
  98091. +$(top_builddir)include/bits/uClibc_config.h: $(conf) $(KCONFIG_CONFIG) $(top_srcdir)extra/scripts/conf-header.sh | $(top_builddir)include/bits
  98092. @$(disp_gen)
  98093. - $(Q)@$< -s $(top_srcdir)extra/Configs/Config.in
  98094. + $(Q)$< -s $(Kconfig)
  98095. $(Q)$(top_srcdir)extra/scripts/conf-header.sh $(KCONFIG_CONFIG) > $@
  98096. $(Q)$(MAKE) headers-y
  98097. @@ -76,6 +67,10 @@
  98098. $(top_builddir)include/config/linuxthreads/old.h $(top_builddir)include/config/linuxthreads/new.h:
  98099. @true
  98100. +$(top_builddir)include/generated/unifdef_config.h: $(top_builddir)include/bits/uClibc_config.h | $(top_builddir)include/generated
  98101. + @$(disp_gen)
  98102. + $(Q)$(SED) -e '1,3d' $^ > $@
  98103. +
  98104. # For the moment, we have to keep re-running this target
  98105. # because the fix includes scripts rely on pre-processers
  98106. # in order to generate the headers correctly :(. That
  98107. @@ -87,11 +82,21 @@
  98108. export header_extra_args = -n
  98109. endif
  98110. HEADERS_BITS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/bits/*.h))
  98111. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  98112. +HEADERS_BITS_COMMON_NO_LEGACY := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common-generic/bits/*.h))
  98113. +HEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_COMMON_NO_LEGACY),$(HEADERS_BITS_COMMON))
  98114. +ALL_HEADERS_BITS_COMMON_NO_LEGACY := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_COMMON_NO_LEGACY))
  98115. +endif
  98116. +
  98117. HEADERS_BITS_ARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/*.h))
  98118. HEADERS_BITS_SUBARCH :=
  98119. ifneq ($(TARGET_SUBARCH),)
  98120. HEADERS_BITS_SUBARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/*.h))
  98121. endif
  98122. +ifneq ($(HEADERS_BITS_PTHREAD),)
  98123. +HEADERS_BITS_ARCH := $(filter-out $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_ARCH))
  98124. +HEADERS_BITS_SUBARCH:= $(filter-out $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_SUBARCH))
  98125. +endif
  98126. HEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_ARCH) $(HEADERS_BITS_SUBARCH) $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_COMMON))
  98127. HEADERS_SYS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/sys/*.h))
  98128. @@ -99,8 +104,11 @@
  98129. HEADERS_SYS_COMMON := $(filter-out $(HEADERS_SYS_ARCH),$(HEADERS_SYS_COMMON))
  98130. ALL_HEADERS_COMMON := $(top_builddir)include/fpu_control.h \
  98131. + $(top_builddir)include/jmpbuf-offsets.h \
  98132. + $(top_builddir)include/jmpbuf-unwind.h \
  98133. $(top_builddir)include/dl-osinfo.h \
  98134. - $(top_builddir)include/hp-timing.h
  98135. + $(top_builddir)include/hp-timing.h \
  98136. + $(top_builddir)include/not-cancel.h
  98137. ALL_HEADERS_BITS_COMMON := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_COMMON))
  98138. ALL_HEADERS_BITS_ARCH := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_ARCH))
  98139. ifneq ($(TARGET_SUBARCH),)
  98140. @@ -120,13 +128,17 @@
  98141. $(ALL_HEADERS_SYS_ARCH) \
  98142. $(ALL_HEADERS_BITS_PTHREAD)
  98143. -$(top_builddir)include/fpu_control.h:
  98144. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  98145. + target-headers-sysdep += $(ALL_HEADERS_BITS_COMMON_NO_LEGACY)
  98146. +endif
  98147. +
  98148. +$(top_builddir)include/fpu_control.h $(top_builddir)include/jmpbuf-offsets.h $(top_builddir)include/jmpbuf-unwind.h:
  98149. @$(disp_ln)
  98150. $(Q)[ -r $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) ] && \
  98151. $(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ || \
  98152. $(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@
  98153. -$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h:
  98154. +$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h $(top_builddir)include/not-cancel.h:
  98155. $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@
  98156. $(ALL_HEADERS_BITS_COMMON):
  98157. @@ -135,6 +147,11 @@
  98158. $(ALL_HEADERS_BITS_ARCH):
  98159. $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(@F) $@
  98160. +ifneq ($(ARCH_HAS_DEPRECATED_SYSCALLS),y)
  98161. +$(ALL_HEADERS_BITS_COMMON_NO_LEGACY):
  98162. + $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common-generic/bits/$(@F) $@
  98163. +endif
  98164. +
  98165. ifneq ($(TARGET_SUBARCH),)
  98166. $(ALL_HEADERS_BITS_SUBARCH):
  98167. $(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/$(@F) $@
  98168. @@ -155,6 +172,9 @@
  98169. HEADERCLEAN_common:
  98170. $(do_rm) $(ALL_HEADERS_COMMON)
  98171. headers_clean-y += HEADERCLEAN_common
  98172. +HEADERCLEAN_config:
  98173. + $(do_rm) -r $(addprefix $(top_builddir)include/,config generated)
  98174. +menuconfig-clean-y: HEADERCLEAN_config
  98175. # The headers. Arch specific headers are specified via ARCH_HEADERS in
  98176. # libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via
  98177. @@ -170,27 +190,22 @@
  98178. $(top_builddir)include/bits/sysnum.h: $(top_srcdir)extra/scripts/gen_bits_syscall_h.sh | $(top_builddir)include/bits
  98179. @$(disp_gen)
  98180. $(Q)set -e; \
  98181. - tmp=`mktemp $(top_builddir)include/bits/sysnum.h.XXXXXX 2>/dev/null || true`; \
  98182. - [ -z "$$tmp" ] && tmp='$(top_builddir)include/bits/sysnum.h.new'; \
  98183. - KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir="$(top_builddir)" CC="$(CC) $(CPU_CFLAGS)" $(SHELL) $< > $$tmp; \
  98184. - if cmp $(top_builddir)include/bits/sysnum.h $$tmp >/dev/null 2>&1; then \
  98185. - $(RM) $$tmp; \
  98186. - else \
  98187. - mv -f $$tmp $(top_builddir)include/bits/sysnum.h; \
  98188. - fi
  98189. + KERNEL_HEADERS="${KERNEL_HEADERS}" CC="$(CC) $(CPU_CFLAGS)" $(SHELL) $< > $@.new; \
  98190. + cmp -s $@ $@.new && $(RM) $@.new || mv -f $@.new $@
  98191. @# Ugly linux specific hack..
  98192. $(Q)if grep -q __NR_ $@; then true; else \
  98193. rm -f $@; \
  98194. echo "ERROR: Could not generate syscalls."; \
  98195. - echo "Make sure that you have proper kernel headers."; \
  98196. - echo "Your .config in KERNEL_HEADERS=\"\" was set to:"; \
  98197. + echo "Make sure that you have properly installed kernel headers."; \
  98198. + echo "Your .config KERNEL_HEADERS=\"\" was set to:"; \
  98199. echo "${KERNEL_HEADERS}"; \
  98200. exit 1; \
  98201. fi
  98202. .PHONY: $(LOCAL_INSTALL_PATH)
  98203. $(LOCAL_INSTALL_PATH):
  98204. - $(Q)$(MAKE) PREFIX=$(shell pwd)/$(LOCAL_INSTALL_PATH) RUNTIME_PREFIX=/ \
  98205. + $(Q)$(MAKE) PREFIX=$(LOCAL_INSTALL_PATH) \
  98206. + RUNTIME_PREFIX=/ \
  98207. DEVEL_PREFIX=/usr/ \
  98208. HOSTCC="$(HOSTCC)" \
  98209. install
  98210. @@ -210,16 +225,27 @@
  98211. # a "y" here means the feature is enabled and so we should *not* rm it.
  98212. # if the option expands to nothing though, we can punt the headers.
  98213. HEADERS_RM- := \
  98214. + config \
  98215. + generated \
  98216. + internal \
  98217. + cancel.h \
  98218. dl-osinfo.h \
  98219. + jmpbuf-offsets.h \
  98220. + jmpbuf-unwind.h \
  98221. hp-timing.h \
  98222. + not-cancel.h \
  98223. _lfs_64.h \
  98224. bits/uClibc_arch_features.h \
  98225. bits/kernel_sigaction.h \
  98226. bits/kernel_stat.h \
  98227. bits/kernel_types.h \
  98228. + bits/libc-lock.h \
  98229. + bits/stdio-lock.h \
  98230. bits/syscalls.h \
  98231. bits/syscalls-common.h \
  98232. bits/uClibc_fpmax.h \
  98233. + bits/uClibc_mutex.h \
  98234. + bits/uClibc_pthread.h \
  98235. bits/uClibc_uintmaxtostr.h \
  98236. bits/uClibc_uwchar.h \
  98237. bits/uClibc_va_copy.h \
  98238. @@ -259,18 +285,23 @@
  98239. HEADERS_RM-$(UCLIBC_HAS_REGEX) += regex.h regexp.h
  98240. HEADERS_RM-$(UCLIBC_HAS_RPC) += rpc
  98241. HEADERS_RM-$(UCLIBC_HAS_SHADOW) += shadow.h
  98242. -HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h
  98243. +HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h bits/socket_type.h
  98244. HEADERS_RM-$(UCLIBC_HAS_SYSLOG) += syslog.h sys/syslog.h bits/syslog*.h
  98245. HEADERS_RM-$(UCLIBC_HAS_THREADS) += *thread*.h semaphore.h \
  98246. bits/*thread*.h \
  98247. bits/initspin.h
  98248. HEADERS_RM-$(UCLIBC_HAS_THREADS_NATIVE) += atomic.h bits/atomic.h
  98249. +HEADERS_RM-$(UCLIBC_HAS_OBSTACK) += obstack.h
  98250. HEADERS_RM-$(UCLIBC_HAS_UTMPX) += bits/utmpx.h utmpx.h
  98251. HEADERS_RM-$(UCLIBC_HAS_WCHAR) += wchar.h wctype.h
  98252. HEADERS_RM-$(UCLIBC_HAS_WORDEXP) += wordexp.h
  98253. HEADERS_RM-$(UCLIBC_HAS_XATTR) += sys/xattr.h
  98254. HEADERS_RM-$(UCLIBC_HAS_XLOCALE) += xlocale.h
  98255. -HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC) += sys/eventfd.h sys/fsuid.h \
  98256. +HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC) += \
  98257. + sys/cachectl.h \
  98258. + bits/eventfd.h \
  98259. + sys/eventfd.h \
  98260. + sys/fsuid.h \
  98261. bits/inotify.h \
  98262. sys/inotify.h \
  98263. sys/kdaemon.h \
  98264. @@ -288,11 +319,13 @@
  98265. sys/sysinfo.h \
  98266. bits/timerfd.h \
  98267. sys/timerfd.h \
  98268. + sys/sysmips.h \
  98269. sys/vfs.h
  98270. HEADERS_RM-$(UCLIBC_SUPPORT_AI_ADDRCONFIG) += ifaddrs.h
  98271. HEADERS_RM-$(UCLIBC_SV4_DEPRECATED) += ustat.h sys/ustat.h bits/ustat.h
  98272. HEADERS_RM-$(UCLIBC_SUSV3_LEGACY) += sys/timeb.h regexp.h
  98273. HEADERS_RM-$(UCLIBC_SUSV4_LEGACY) += utime.h ucontext.h
  98274. +HEADERS_RM-$(UCLIBC_HAS_ADVANCED_REALTIME) += spawn.h
  98275. ifneq ($(findstring install,$(MAKECMDGOALS)),)
  98276. $(addprefix $(PREFIX)$(DEVEL_PREFIX),include $(MULTILIB_DIR)):
  98277. @@ -303,7 +336,9 @@
  98278. $(do_mkdir)
  98279. endif
  98280. endif
  98281. -install_headers: headers $(top_builddir)extra/scripts/unifdef | $(PREFIX)$(DEVEL_PREFIX)include
  98282. +
  98283. +
  98284. +install_headers: headers $(top_builddir)extra/scripts/unifdef $(top_builddir)include/generated/unifdef_config.h | $(PREFIX)$(DEVEL_PREFIX)include
  98285. @$(call disp_install,"include -> $(PREFIX)$(DEVEL_PREFIX)include")
  98286. $(Q)top_builddir=$(top_builddir) \
  98287. $(top_srcdir)extra/scripts/install_headers.sh \
  98288. @@ -346,12 +381,7 @@
  98289. else
  98290. -$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
  98291. endif
  98292. -ifeq ($(UCLIBC_HAS_BACKTRACE),y)
  98293. -# Add the AS_NEEDED entry for libubacktrace.so
  98294. - if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME) ] ; then \
  98295. - echo "GROUP ( $(UBACKTRACE_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
  98296. - fi
  98297. -endif
  98298. + echo "$(UBACKTRACE_ASNEEDED)" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so
  98299. ifeq ($(UCLIBC_HAS_THREADS),y)
  98300. ifneq ($(LINUXTHREADS_OLD),y)
  98301. ifeq ($(HARDWIRED_ABSPATH),y)
  98302. @@ -422,49 +452,55 @@
  98303. install_hostutils: hostutils
  98304. $(Q)$(MAKE) CROSS_COMPILE="$(CROSS_COMPILE)" CC="$(CC)" HOSTCC="$(HOSTCC)" DOTHOST=.host -C utils utils_install
  98305. -$(addprefix $(top_builddir),include include/bits include/sys include/config lib extra/config/lxdialog extra/locale extra/scripts $(subdirs)):
  98306. +$(addprefix $(top_builddir),include include/bits include/sys include/config include/generated lib extra/config/lxdialog extra/locale extra/scripts $(subdirs)):
  98307. $(do_mkdir)
  98308. # configuration
  98309. # ---------------------------------------------------------------------------
  98310. -$(conf) $(mconf): | $(top_builddir)include/config $(top_builddir)extra/config/lxdialog
  98311. +$(conf) $(mconf) $(nconf): | $(top_builddir)include/config $(top_builddir)include/generated $(top_builddir)extra/config/lxdialog
  98312. $(Q)$(MAKE) -C extra/config $(@F)
  98313. arch-defconfigs := $(notdir $(wildcard $(top_srcdir)extra/Configs/defconfigs/$(ARCH)/*_defconfig))
  98314. menuconfig: $(mconf)
  98315. - $(Q)$< extra/Configs/Config.in
  98316. -
  98317. + $(Q)$< $(Kconfig)
  98318. config: $(conf)
  98319. - $(Q)$< extra/Configs/Config.in
  98320. -
  98321. -oldconfig: $(conf)
  98322. - $(Q)$< -o extra/Configs/Config.in
  98323. + $(Q)$< $(Kconfig)
  98324. +nconfig: $(nconf)
  98325. + $(Q)$< $(Kconfig)
  98326. +oldaskconfig: $(conf)
  98327. + $(Q)$< -a $(Kconfig)
  98328. silentoldconfig: $(conf)
  98329. - $(Q)$< -s extra/Configs/Config.in
  98330. -
  98331. -randconfig: $(conf)
  98332. - $(Q)$< -r extra/Configs/Config.in
  98333. -
  98334. + $(Q)$< -s $(Kconfig)
  98335. +oldconfig: $(conf)
  98336. + $(Q)$< -o $(Kconfig)
  98337. +allnoconfig: $(conf)
  98338. + $(Q)$< -n $(Kconfig)
  98339. allyesconfig: $(conf)
  98340. - $(Q)$< -y extra/Configs/Config.in
  98341. + $(Q)$< -y $(Kconfig)
  98342. $(SED) -i -e "s/^DODEBUG=.*/# DODEBUG is not set/" \
  98343. -e "s/^DOASSERTS=.*/# DOASSERTS is not set/" \
  98344. -e "s/^SUPPORT_LD_DEBUG_EARLY=.*/# SUPPORT_LD_DEBUG_EARLY is not set/" \
  98345. -e "s/^SUPPORT_LD_DEBUG=.*/# SUPPORT_LD_DEBUG is not set/" \
  98346. -e "s/^UCLIBC_MJN3_ONLY=.*/# UCLIBC_MJN3_ONLY is not set/" \
  98347. $(KCONFIG_CONFIG)
  98348. - $(Q)$< -o extra/Configs/Config.in
  98349. -
  98350. -allnoconfig: $(conf)
  98351. - $(Q)$< -n extra/Configs/Config.in
  98352. -
  98353. -defconfig: $(conf)
  98354. - $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ extra/Configs/Config.in
  98355. + $(Q)$< -o $(Kconfig)
  98356. +alldefconfig: $(conf)
  98357. + $(Q)$< -A $(Kconfig)
  98358. +randconfig: $(conf)
  98359. + $(Q)$< -r $(Kconfig)
  98360. -%_defconfig: $(conf)
  98361. - $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ extra/Configs/Config.in
  98362. +cmd_defconfig = $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ $(Kconfig)
  98363. +defconfig: $(conf) ; $(cmd_defconfig)
  98364. +%_defconfig: $(conf) ; $(cmd_defconfig)
  98365. +
  98366. +savedefconfig: $(conf)
  98367. + $(Q)$< -S defconfig $(Kconfig)
  98368. +listnewconfig: $(conf)
  98369. + $(Q)$< -l $(Kconfig)
  98370. +olddefconfig: $(conf)
  98371. + $(Q)$< -d $(Kconfig)
  98372. menuconfig-clean-y:
  98373. $(Q)$(MAKE) -C extra/config CLEAN_extra/config
  98374. @@ -484,11 +520,11 @@
  98375. $(Q)$(RM) $(top_builddir)extra/scripts/unifdef
  98376. $(Q)$(RM) -r $(LOCAL_INSTALL_PATH)
  98377. -distclean: clean
  98378. +distclean: realclean
  98379. -find . \( -name core -o -name \*.orig -o -name \*~ -o -name .\*.dep \) -exec $(RM) {} \;
  98380. $(RM) $(top_builddir).config $(top_builddir).config.old $(top_builddir).config.cmd
  98381. - $(RM) $(top_builddir)extra/locale/*.tgz
  98382. - $(MAKE) -C extra/config distclean
  98383. + $(Q)$(RM) $(top_builddir)extra/locale/*.tgz
  98384. + @$(MAKE) -C extra/config distclean
  98385. dist release:
  98386. $(RM) ../uClibc-$(VERSION).tar
  98387. @@ -499,7 +535,9 @@
  98388. du -b ../uClibc-$(VERSION).tar.{bz2,xz}
  98389. test check: test_compile
  98390. - $(Q)$(MAKE) -C test
  98391. + $(Q)$(MAKE) -C test \
  98392. + $(if $(O),top_builddir=$(O)/)
  98393. test_compile: $(LOCAL_INSTALL_PATH)
  98394. - $(Q)$(MAKE) -C test compile
  98395. + $(Q)$(MAKE) -C test compile \
  98396. + $(if $(O),top_builddir=$(O)/)
  98397. diff -Nur uClibc-0.9.33.2/Makerules uClibc-git/Makerules
  98398. --- uClibc-0.9.33.2/Makerules 2012-05-15 09:20:09.000000000 +0200
  98399. +++ uClibc-git/Makerules 2014-02-03 12:32:56.000000000 +0100
  98400. @@ -50,6 +50,10 @@
  98401. endif
  98402. $(shared_objs) $(ar_objs): | $(sub_headers)
  98403. +define objects_with_syms
  98404. + $(foreach o,$(2),$(if $(shell $(NM) $(1) $(o) | grep .),$(o)))
  98405. +endef
  98406. +
  98407. headers-y: $(headers-y)
  98408. @true
  98409. @@ -243,7 +247,7 @@
  98410. cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@)) $(sort $(foreach d,$(^:$(top_srcdir)=),$(collect_multi_flags)))
  98411. cmd_strip = $(STRIPTOOL) $(STRIP_FLAGS) $^
  98412. cmd_t_strip = $(STRIPTOOL) $(STRIP_FLAGS) $@
  98413. -cmd_ar = $(AR) $(ARFLAGS) $@ $^
  98414. +cmd_ar = $(AR) $(ARFLAGS) $@ $(call objects_with_syms,,$^)
  98415. define do_ln
  98416. @$(disp_ln)
  98417. @@ -300,7 +304,7 @@
  98418. -Wl,-z,relro -Wl,--hash-style=gnu -Wl,-z,defs \
  98419. -Wl,--verbose 2>&1 | LC_ALL=C \
  98420. sed -e '/^=========/,/^=========/!d;/^=========/d' \
  98421. - -e 's/\. = .* + SIZEOF_HEADERS;/& _begin = . - SIZEOF_HEADERS;/' > $@.lds
  98422. + -e 's/\. = .* + SIZEOF_HEADERS;/& $(SYMBOL_PREFIX)_begin = . - SIZEOF_HEADERS;/' > $@.lds
  98423. endef
  98424. define link.so
  98425. @@ -373,14 +377,9 @@
  98426. $(top_builddir)lib/interp.c: | $(top_builddir)lib
  98427. $(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@.tmp
  98428. $(Q)echo "#include <features.h>" >> $@.tmp
  98429. -ifeq ($(HARDWIRED_ABSPATH),y)
  98430. $(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
  98431. "(\".interp\"))) =\""$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO)"\";" >> $@.tmp
  98432. $(Q)$(SED) -i -e 's://:/:g' $@.tmp
  98433. -else
  98434. - $(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
  98435. - "(\".interp\"))) =\""$(UCLIBC_LDSO)"\";" >> $@.tmp
  98436. -endif
  98437. $(Q)mv $@.tmp $@
  98438. $(interp): $(top_builddir)lib/interp.c | $(sub_headers)
  98439. @@ -470,6 +469,8 @@
  98440. $(libm-a-y) $(libm-so-y) \
  98441. $(libpthread-a-y) $(libpthread-so-y) $(libpthread-nonshared-y) \
  98442. $(libthread_db-a-y) $(libthread_db-so-y) $(libpthread-generated-y) \
  98443. + $(START_FILE-libpthread.so) $(END_FILE-libpthread.so) \
  98444. + $(PTHREAD_INITFINI:.c=.s) \
  98445. $(librt-a-y) $(librt-so-y) $(libresolv-a-y) $(libresolv-so-y) \
  98446. $(libcrypt-a-y) $(libcrypt-so-y) $(libutil-a-y) $(libutil-so-y) \
  98447. $(libnsl-a-y) $(libnsl-so-y) $(ldso-y) $(libdl-a-y) $(libdl-so-y) \
  98448. diff -Nur uClibc-0.9.33.2/Rules.mak uClibc-git/Rules.mak
  98449. --- uClibc-0.9.33.2/Rules.mak 2012-05-15 09:20:09.000000000 +0200
  98450. +++ uClibc-git/Rules.mak 2014-02-17 12:32:28.000000000 +0100
  98451. @@ -27,6 +27,15 @@
  98452. # file named ".config". Don't mess with this file unless
  98453. # you know what you are doing.
  98454. +clean_targets := clean realclean distclean \
  98455. + objclean-y headers_clean-y CLEAN_utils
  98456. +noconfig_targets := menuconfig config nconfig \
  98457. + oldaskconfig silentoldconfig oldconfig allnoconfig allyesconfig \
  98458. + alldefconfig randconfig defconfig savedefconfig listnewconfig \
  98459. + olddefconfig \
  98460. + xconfig gconfig update-po-config mconf qconf gconf nconf conf \
  98461. + release dist tags help
  98462. +
  98463. #-----------------------------------------------------------
  98464. # If you are running a cross compiler, you will want to set
  98465. @@ -63,7 +72,7 @@
  98466. # Select the compiler needed to build binaries for your development system
  98467. HOSTCC = gcc
  98468. -BUILD_CFLAGS = -Os -Wall
  98469. +BUILD_CFLAGS = -Os
  98470. #---------------------------------------------------------
  98471. # Nothing beyond this point should ever be touched by mere
  98472. @@ -74,10 +83,25 @@
  98473. qstrip = $(strip $(subst ",,$(1)))
  98474. #"))
  98475. +# kconfig stuff
  98476. +KCONFIG_CONFIG ?= $(top_builddir).config
  98477. +KCONFIG_CONFIG := $(abspath $(KCONFIG_CONFIG))
  98478. +export KCONFIG_CONFIG
  98479. +KCONFIG_AUTOCONFIG := $(dir $(KCONFIG_CONFIG))include/config/auto.conf
  98480. +export KCONFIG_AUTOCONFIG
  98481. +KCONFIG_TRISTATE := $(dir $(KCONFIG_CONFIG))include/config/tristate.conf
  98482. +export KCONFIG_TRISTATE
  98483. +srctree := $(abspath $(top_srcdir))
  98484. +export srctree
  98485. +KCONFIG_AUTOHEADER := $(dir $(KCONFIG_CONFIG))include/generated/autoconf.h
  98486. +export KCONFIG_AUTOHEADER
  98487. +Kconfig := $(abspath $(top_srcdir)extra/Configs/Config.in)
  98488. +
  98489. # Pull in the user's uClibc configuration
  98490. -ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
  98491. --include $(top_builddir).config
  98492. +ifeq ($(filter $(noconfig_targets) clean CLEAN_%,$(MAKECMDGOALS)),)
  98493. +-include $(KCONFIG_CONFIG)
  98494. endif
  98495. +
  98496. TARGET_ARCH:=$(call qstrip,$(TARGET_ARCH))
  98497. ifeq ($(TARGET_ARCH),)
  98498. ARCH ?= $(shell uname -m | $(SED) -e s/i.86/i386/ \
  98499. @@ -93,19 +117,20 @@
  98500. export ARCH
  98501. # Make certain these contain a final "/", but no "//"s.
  98502. -TARGET_SUBARCH:=$(call qstrip,$(TARGET_SUBARCH))
  98503. -RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(RUNTIME_PREFIX)))))
  98504. -DEVEL_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(DEVEL_PREFIX)))))
  98505. -MULTILIB_DIR:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(MULTILIB_DIR)))))
  98506. -KERNEL_HEADERS:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(KERNEL_HEADERS)))))
  98507. +scrub_path = $(strip $(subst //,/, $(subst ,/, $(call qstrip,$(1)))))
  98508. +TARGET_SUBARCH := $(call qstrip,$(TARGET_SUBARCH))
  98509. +RUNTIME_PREFIX := $(call scrub_path,$(RUNTIME_PREFIX))
  98510. +DEVEL_PREFIX := $(call scrub_path,$(DEVEL_PREFIX))
  98511. +MULTILIB_DIR := $(call scrub_path,$(MULTILIB_DIR))
  98512. +KERNEL_HEADERS := $(call scrub_path,$(KERNEL_HEADERS))
  98513. export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR
  98514. # Now config hard core
  98515. MAJOR_VERSION := 0
  98516. MINOR_VERSION := 9
  98517. -SUBLEVEL := 33
  98518. -EXTRAVERSION :=.2
  98519. +SUBLEVEL := 34
  98520. +EXTRAVERSION :=-git
  98521. VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
  98522. ABI_VERSION := $(MAJOR_VERSION)
  98523. ifneq ($(EXTRAVERSION),)
  98524. @@ -118,13 +143,19 @@
  98525. LIBC := libc
  98526. SHARED_LIBNAME := $(LIBC).so.$(ABI_VERSION)
  98527. UBACKTRACE_DSO := libubacktrace.so.$(ABI_VERSION)
  98528. -ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 mips64 powerpc64 s390x sparc64 x86_64 ),)
  98529. +
  98530. +UCLIBC_LDSO_NAME := ld-uClibc
  98531. +ARCH_NATIVE_BIT := 32
  98532. +ifneq ($(findstring $(TARGET_ARCH) , hppa64 ia64 powerpc64 s390x sparc64 x86_64 ),)
  98533. UCLIBC_LDSO_NAME := ld64-uClibc
  98534. ARCH_NATIVE_BIT := 64
  98535. else
  98536. -UCLIBC_LDSO_NAME := ld-uClibc
  98537. -ARCH_NATIVE_BIT := 32
  98538. +ifeq ($(CONFIG_MIPS_N64_ABI),y)
  98539. +UCLIBC_LDSO_NAME := ld64-uClibc
  98540. +ARCH_NATIVE_BIT := 64
  98541. +endif
  98542. endif
  98543. +
  98544. UCLIBC_LDSO := $(UCLIBC_LDSO_NAME).so.$(ABI_VERSION)
  98545. NONSHARED_LIBNAME := uclibc_nonshared.a
  98546. libc := $(top_builddir)lib/$(SHARED_LIBNAME)
  98547. @@ -170,7 +201,7 @@
  98548. if $(CC) -Wa,$(1) -Wa,-Z -c -o /dev/null -xassembler /dev/null > /dev/null 2>&1; \
  98549. then echo "-Wa,$(1)"; fi)
  98550. check_ld=$(shell \
  98551. - if $(LD) $(1) -o /dev/null -b binary /dev/null > /dev/null 2>&1; \
  98552. + if $(CC) $(LDFLAG-fuse-ld) -Wl,$(1) $(CFLAG_-nostdlib) -o /dev/null -Wl,-b,binary /dev/null > /dev/null 2>&1; \
  98553. then echo "$(1)"; fi)
  98554. # Use variable indirection here so that we can have variable
  98555. @@ -221,6 +252,10 @@
  98556. ARFLAGS:=cr
  98557. +# Note: The check for -nostdlib has to be before all calls to check_ld
  98558. +$(eval $(call check-gcc-var,-nostdlib))
  98559. +LDFLAG-fuse-ld := $(filter -fuse-ld=%,$(EXTRA_UCLIBC_FLAGS))
  98560. +# deliberately not named CFLAG-fuse-ld since unchecked and from user
  98561. # Flags in OPTIMIZATION are used only for non-debug builds
  98562. @@ -246,6 +281,7 @@
  98563. GCC_MAJOR_VER ?= $(word 1,$(GCC_VER))
  98564. #GCC_MINOR_VER ?= $(word 2,$(GCC_VER))
  98565. +ifneq ($(TARGET_ARCH),arc)
  98566. ifeq ($(GCC_MAJOR_VER),4)
  98567. # shrinks code, results are from 4.0.2
  98568. # 0.36%
  98569. @@ -258,7 +294,7 @@
  98570. $(eval $(call check-gcc-var,-fno-strength-reduce))
  98571. OPTIMIZATION += $(CFLAG_-fno-strength-reduce)
  98572. endif
  98573. -
  98574. +endif
  98575. # CPU_CFLAGS-y contain options which are not warnings,
  98576. # not include or library paths, and not optimizations.
  98577. @@ -311,7 +347,9 @@
  98578. $(eval $(call check-gcc-var,-fomit-frame-pointer))
  98579. OPTIMIZATION += $(CFLAG_-fomit-frame-pointer)
  98580. -ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586)$(CONFIG_586MMX),y)
  98581. +ifeq ($(CONFIG_386)$(CONFIG_486)$(CONFIG_586),y)
  98582. + # TODO: Change this to a gcc version check. This bug
  98583. + # should be fixed with at least gcc-4.3.
  98584. # Non-SSE capable processor.
  98585. # NB: this may make SSE insns segfault!
  98586. # -O1 -march=pentium3, -Os -msse etc are known to be affected.
  98587. @@ -330,18 +368,6 @@
  98588. # -falign-jumps: reachable only by a jump
  98589. # Generic: no alignment at all (smallest code)
  98590. GCC_FALIGN=$(call check_gcc,-falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1,-malign-jumps=1 -malign-loops=1)
  98591. -ifeq ($(CONFIG_K7),y)
  98592. - # Align functions to four bytes, use default for jumps and loops (why?)
  98593. - GCC_FALIGN=$(call check_gcc,-falign-functions=4 -falign-labels=1,-malign-functions=4)
  98594. -endif
  98595. -ifeq ($(CONFIG_CRUSOE),y)
  98596. - # Use compiler's default for functions, jumps and loops (why?)
  98597. - GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
  98598. -endif
  98599. -ifeq ($(CONFIG_CYRIXIII),y)
  98600. - # Use compiler's default for functions, jumps and loops (why?)
  98601. - GCC_FALIGN=$(call check_gcc,-falign-functions=0 -falign-labels=1,-malign-functions=0)
  98602. -endif
  98603. OPTIMIZATION+=$(GCC_FALIGN)
  98604. # Putting each function and data object into its own section
  98605. @@ -366,22 +392,6 @@
  98606. CPU_LDFLAGS-y+=-m32
  98607. CPU_CFLAGS-y+=-m32
  98608. - CPU_CFLAGS-$(CONFIG_386)+=-march=i386
  98609. - CPU_CFLAGS-$(CONFIG_486)+=-march=i486
  98610. - CPU_CFLAGS-$(CONFIG_ELAN)+=-march=i486
  98611. - CPU_CFLAGS-$(CONFIG_586)+=-march=i586
  98612. - CPU_CFLAGS-$(CONFIG_586MMX)+=$(call check_gcc,-march=pentium-mmx,-march=i586)
  98613. - CPU_CFLAGS-$(CONFIG_686)+=-march=i686
  98614. - CPU_CFLAGS-$(CONFIG_PENTIUMII)+=$(call check_gcc,-march=pentium2,-march=i686)
  98615. - CPU_CFLAGS-$(CONFIG_PENTIUMIII)+=$(call check_gcc,-march=pentium3,-march=i686)
  98616. - CPU_CFLAGS-$(CONFIG_PENTIUM4)+=$(call check_gcc,-march=pentium4,-march=i686)
  98617. - CPU_CFLAGS-$(CONFIG_K6)+=$(call check_gcc,-march=k6,-march=i586)
  98618. - CPU_CFLAGS-$(CONFIG_K7)+=$(call check_gcc,-march=athlon,-march=i686)
  98619. - CPU_CFLAGS-$(CONFIG_CRUSOE)+=-march=i686
  98620. - CPU_CFLAGS-$(CONFIG_WINCHIPC6)+=$(call check_gcc,-march=winchip-c6,-march=i586)
  98621. - CPU_CFLAGS-$(CONFIG_WINCHIP2)+=$(call check_gcc,-march=winchip2,-march=i586)
  98622. - CPU_CFLAGS-$(CONFIG_CYRIXIII)+=$(call check_gcc,-march=c3,-march=i486)
  98623. - CPU_CFLAGS-$(CONFIG_NEHEMIAH)+=$(call check_gcc,-march=c3-2,-march=i686)
  98624. endif
  98625. ifeq ($(TARGET_ARCH),sparc)
  98626. @@ -397,6 +407,12 @@
  98627. CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb
  98628. endif
  98629. +ifeq ($(TARGET_ARCH),metag)
  98630. + SYMBOL_PREFIX=_
  98631. + CPU_CFLAGS-$(CONFIG_META_1_2)+=
  98632. + CPU_CFLAGS-$(CONFIG_META_2_1)+=-Wa,-mcpu=metac21
  98633. +endif
  98634. +
  98635. ifeq ($(TARGET_ARCH),mips)
  98636. OPTIMIZATION+=-mno-split-addresses
  98637. CPU_CFLAGS-$(CONFIG_MIPS_ISA_1)+=-mips1
  98638. @@ -406,6 +422,7 @@
  98639. CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32
  98640. CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32R2)+=-march=mips32r2 -mtune=mips32r2
  98641. CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32
  98642. + CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64R2)+=-mips64r2 -mtune=mips64r2
  98643. ifeq ($(strip $(ARCH_BIG_ENDIAN)),y)
  98644. CPU_LDFLAGS-$(CONFIG_MIPS_N64_ABI)+=-Wl,-melf64btsmip
  98645. CPU_LDFLAGS-$(CONFIG_MIPS_O32_ABI)+=-Wl,-melf32btsmip
  98646. @@ -537,6 +554,12 @@
  98647. CPU_LDFLAGS-y += $(CPU_CFLAGS)
  98648. endif
  98649. +ifeq ($(TARGET_ARCH),arc)
  98650. + CPU_CFLAGS-y += -mlock -mswape
  98651. + CPU_CFLAGS-$(CONFIG_ARC_CPU_700) += -mA7
  98652. + CPU_LDFLAGS-y += $(CPU_CFLAGS) -marclinux
  98653. +endif
  98654. +
  98655. $(eval $(call check-gcc-var,$(PIEFLAG_NAME)))
  98656. PIEFLAG := $(CFLAG_$(PIEFLAG_NAME))
  98657. ifeq ($(PIEFLAG),)
  98658. @@ -546,11 +569,11 @@
  98659. # well as the LD PIE flag (below) because we can't rely on
  98660. # gcc passing -pie if we used -fPIE. We need to directly use -pie
  98661. # instead of -Wl,-pie as gcc picks up the wrong startfile/endfile
  98662. -$(eval $(call cache-output-var,LDPIEFLAG,$(LD) --help 2>/dev/null | grep -q -- -pie && echo "-pie"))
  98663. +$(eval $(call cache-output-var,LDPIEFLAG,$(CC) -Wl$(comma)--help 2>/dev/null | grep -q -- -pie && echo "-pie"))
  98664. # Check for --as-needed support in linker
  98665. ifndef LD_FLAG_ASNEEDED
  98666. -_LD_FLAG_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -- --as-needed)
  98667. +_LD_FLAG_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -- --as-needed)
  98668. ifneq ($(_LD_FLAG_ASNEEDED),)
  98669. export LD_FLAG_ASNEEDED:=--as-needed
  98670. endif
  98671. @@ -574,11 +597,18 @@
  98672. # Check for AS_NEEDED support in linker script (binutils>=2.16.1 has it)
  98673. ifndef ASNEEDED
  98674. -export ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)")
  98675. -ifeq ($(UCLIBC_HAS_BACKTRACE),y)
  98676. +export ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UCLIBC_LDSO) )" || echo "$(UCLIBC_LDSO)")
  98677. +
  98678. # Only used in installed libc.so linker script
  98679. -UBACKTRACE_FULL_NAME := $(RUNTIME_PREFIX)lib/$(UBACKTRACE_DSO)
  98680. -export UBACKTRACE_ASNEEDED:=$(shell $(LD) --help 2>/dev/null | grep -q -- --as-needed && echo "AS_NEEDED ( $(UBACKTRACE_FULL_NAME) )" || echo "$(UBACKTRACE_FULL_NAME)")
  98681. +ifeq ($(UCLIBC_HAS_BACKTRACE),y)
  98682. +ifeq ($(HARDWIRED_ABSPATH),y)
  98683. +UBACKTRACE_FULL_NAME := $(subst //,/,$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UBACKTRACE_DSO))
  98684. +else
  98685. +UBACKTRACE_FULL_NAME := $(UBACKTRACE_DSO)
  98686. +endif
  98687. +export UBACKTRACE_ASNEEDED:=$(shell $(CC) -Wl,--help 2>/dev/null | grep -q -- --as-needed && \
  98688. + echo "GROUP ( AS_NEEDED ( $(UBACKTRACE_FULL_NAME) ) )" || \
  98689. + echo "GROUP ( $(UBACKTRACE_FULL_NAME) )")
  98690. else
  98691. export UBACKTRACE_ASNEEDED:=""
  98692. endif
  98693. @@ -623,14 +653,17 @@
  98694. SSP_CFLAGS := $(SSP_DISABLE_FLAGS)
  98695. endif
  98696. -$(eval $(call check-gcc-var,-nostdlib))
  98697. -
  98698. # Collect all CFLAGS components
  98699. -CFLAGS := -include $(top_srcdir)include/libc-symbols.h \
  98700. - $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
  98701. - -nostdinc -I$(top_builddir)include -I$(top_srcdir)include -I. \
  98702. +CFLAGS := $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \
  98703. + -nostdinc -I$(top_builddir)include \
  98704. + -I$(top_srcdir)include -include libc-symbols.h \
  98705. + -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) \
  98706. -I$(top_srcdir)libc/sysdeps/linux \
  98707. - -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
  98708. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  98709. + -I$(top_srcdir)ldso/include -I.
  98710. +ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"")
  98711. +CFLAGS += $(call qstrip,$(UCLIBC_EXTRA_CFLAGS))
  98712. +endif
  98713. # We need this to be checked within libc-symbols.h
  98714. ifneq ($(HAVE_SHARED),y)
  98715. @@ -640,7 +673,7 @@
  98716. $(eval $(call check-ld-var,--warn-once))
  98717. $(eval $(call check-ld-var,--sort-common))
  98718. $(eval $(call check-ld-var,--discard-all))
  98719. -LDFLAGS_NOSTRIP:=$(CPU_LDFLAGS-y) -shared \
  98720. +LDFLAGS_NOSTRIP:=$(LDFLAG-fuse-ld) $(CPU_LDFLAGS-y) -shared \
  98721. -Wl,--warn-common $(CFLAG_-Wl--warn-once) -Wl,-z,combreloc
  98722. # binutils-2.16.1 warns about ignored sections, 2.16.91.0.3 and newer are ok
  98723. #$(eval $(call check-ld-var,--gc-sections))
  98724. @@ -720,7 +753,7 @@
  98725. ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
  98726. PTINC:= -I$(top_builddir)$(PTDIR) \
  98727. -I$(top_srcdir)$(PTDIR) \
  98728. - $(if $(TARGET_ARCH),-I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/$(TARGET_SUBARCH)) \
  98729. + $(if $(TARGET_SUBARCH),-I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH)/$(TARGET_SUBARCH)) \
  98730. -I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux/$(TARGET_ARCH) \
  98731. -I$(top_builddir)$(PTDIR)/sysdeps/$(TARGET_ARCH) \
  98732. -I$(top_srcdir)$(PTDIR)/sysdeps/$(TARGET_ARCH) \
  98733. @@ -728,9 +761,7 @@
  98734. -I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux \
  98735. -I$(top_srcdir)$(PTDIR)/sysdeps/pthread \
  98736. -I$(top_srcdir)$(PTDIR)/sysdeps/pthread/bits \
  98737. - -I$(top_srcdir)$(PTDIR)/sysdeps/generic \
  98738. - -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  98739. - -I$(top_srcdir)ldso/include
  98740. + -I$(top_srcdir)$(PTDIR)/sysdeps/generic
  98741. #
  98742. # Test for TLS if NPTL support was selected.
  98743. #
  98744. @@ -763,13 +794,14 @@
  98745. PTINC :=
  98746. endif
  98747. CFLAGS += -I$(top_srcdir)libc/sysdeps/linux/common
  98748. -CFLAGS += -I$(KERNEL_HEADERS)
  98749. #CFLAGS += -iwithprefix include-fixed -iwithprefix include
  98750. $(eval $(call cache-output-var,CC_IPREFIX,$(CC) -print-file-name=include))
  98751. CC_INC := -isystem $(dir $(CC_IPREFIX))include-fixed -isystem $(CC_IPREFIX)
  98752. CFLAGS += $(CC_INC)
  98753. +CFLAGS += -I$(KERNEL_HEADERS)
  98754. +
  98755. ifneq ($(DOASSERTS),y)
  98756. CFLAGS+=-DNDEBUG
  98757. endif
  98758. @@ -786,7 +818,11 @@
  98759. LIBGCC_CFLAGS ?= $(CFLAGS) $(CPU_CFLAGS-y)
  98760. $(eval $(call cache-output-var,LIBGCC,$(CC) $(LIBGCC_CFLAGS) -print-libgcc-file-name))
  98761. +$(eval $(call cache-output-var,LIBGCC_EH,$(CC) $(LIBGCC_CFLAGS) -print-file-name=libgcc_eh.a))
  98762. +# with -O0 we (e.g. lockf) might end up with references to
  98763. +# _Unwind_Resume, so pull in gcc_eh in this case..
  98764. LIBGCC_DIR:=$(dir $(LIBGCC))
  98765. +LIBGCC += $(if $(DODEBUG),$(LIBGCC_EH))
  98766. # moved from libpthread/linuxthreads
  98767. ifeq ($(UCLIBC_CTOR_DTOR),y)
  98768. @@ -794,4 +830,6 @@
  98769. SHARED_END_FILES:=$(LIBGCC_DIR)crtendS.o $(top_builddir)lib/crtn.o
  98770. endif
  98771. -LOCAL_INSTALL_PATH := install_dir
  98772. +LOCAL_INSTALL_PATH := $(if $(O),$(O)/)install_dir
  98773. +
  98774. +PTHREAD_GENERATE_MANGLE ?= -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*\$$/\#define \1 \2/p"
  98775. diff -Nur uClibc-0.9.33.2/test/API/Makefile uClibc-git/test/API/Makefile
  98776. --- uClibc-0.9.33.2/test/API/Makefile 2012-05-15 09:20:09.000000000 +0200
  98777. +++ uClibc-git/test/API/Makefile 2014-02-03 12:32:57.000000000 +0100
  98778. @@ -2,6 +2,7 @@
  98779. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98780. top_builddir=../../
  98781. +top_srcdir=../../
  98782. include ../Rules.mak
  98783. -include Makefile.in
  98784. include ../Test.mak
  98785. diff -Nur uClibc-0.9.33.2/test/args/Makefile uClibc-git/test/args/Makefile
  98786. --- uClibc-0.9.33.2/test/args/Makefile 2012-05-15 09:20:09.000000000 +0200
  98787. +++ uClibc-git/test/args/Makefile 2014-02-03 12:32:57.000000000 +0100
  98788. @@ -2,6 +2,7 @@
  98789. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98790. top_builddir=../../
  98791. +top_srcdir=../../
  98792. include ../Rules.mak
  98793. -include Makefile.in
  98794. include ../Test.mak
  98795. diff -Nur uClibc-0.9.33.2/test/assert/Makefile uClibc-git/test/assert/Makefile
  98796. --- uClibc-0.9.33.2/test/assert/Makefile 2012-05-15 09:20:09.000000000 +0200
  98797. +++ uClibc-git/test/assert/Makefile 2014-02-03 12:32:57.000000000 +0100
  98798. @@ -2,6 +2,7 @@
  98799. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98800. top_builddir=../../
  98801. +top_srcdir=../../
  98802. include ../Rules.mak
  98803. -include Makefile.in
  98804. include ../Test.mak
  98805. diff -Nur uClibc-0.9.33.2/test/build/Makefile uClibc-git/test/build/Makefile
  98806. --- uClibc-0.9.33.2/test/build/Makefile 2012-05-15 09:20:09.000000000 +0200
  98807. +++ uClibc-git/test/build/Makefile 2014-02-03 12:32:57.000000000 +0100
  98808. @@ -2,6 +2,7 @@
  98809. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98810. top_builddir=../../
  98811. +top_srcdir=../../
  98812. include ../Rules.mak
  98813. -include Makefile.in
  98814. include ../Test.mak
  98815. diff -Nur uClibc-0.9.33.2/test/crypt/Makefile uClibc-git/test/crypt/Makefile
  98816. --- uClibc-0.9.33.2/test/crypt/Makefile 2012-05-15 09:20:09.000000000 +0200
  98817. +++ uClibc-git/test/crypt/Makefile 2014-02-03 12:32:57.000000000 +0100
  98818. @@ -2,6 +2,7 @@
  98819. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98820. top_builddir=../../
  98821. +top_srcdir=../../
  98822. include ../Rules.mak
  98823. -include Makefile.in
  98824. include ../Test.mak
  98825. diff -Nur uClibc-0.9.33.2/test/ctype/Makefile uClibc-git/test/ctype/Makefile
  98826. --- uClibc-0.9.33.2/test/ctype/Makefile 2012-05-15 09:20:09.000000000 +0200
  98827. +++ uClibc-git/test/ctype/Makefile 2014-02-03 12:32:57.000000000 +0100
  98828. @@ -2,6 +2,7 @@
  98829. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98830. top_builddir=../../
  98831. +top_srcdir=../../
  98832. include ../Rules.mak
  98833. -include Makefile.in
  98834. include ../Test.mak
  98835. diff -Nur uClibc-0.9.33.2/test/dlopen/libA.c uClibc-git/test/dlopen/libA.c
  98836. --- uClibc-0.9.33.2/test/dlopen/libA.c 1970-01-01 01:00:00.000000000 +0100
  98837. +++ uClibc-git/test/dlopen/libA.c 2014-02-03 12:32:57.000000000 +0100
  98838. @@ -0,0 +1,7 @@
  98839. +extern void libB_func(void);
  98840. +
  98841. +void libA_func(void);
  98842. +void libA_func(void)
  98843. +{
  98844. + libB_func();
  98845. +}
  98846. diff -Nur uClibc-0.9.33.2/test/dlopen/libB.c uClibc-git/test/dlopen/libB.c
  98847. --- uClibc-0.9.33.2/test/dlopen/libB.c 1970-01-01 01:00:00.000000000 +0100
  98848. +++ uClibc-git/test/dlopen/libB.c 2014-02-03 12:32:57.000000000 +0100
  98849. @@ -0,0 +1,7 @@
  98850. +extern void libC_func(void);
  98851. +
  98852. +void libB_func(void);
  98853. +void libB_func(void)
  98854. +{
  98855. + libC_func();
  98856. +}
  98857. diff -Nur uClibc-0.9.33.2/test/dlopen/libC.c uClibc-git/test/dlopen/libC.c
  98858. --- uClibc-0.9.33.2/test/dlopen/libC.c 1970-01-01 01:00:00.000000000 +0100
  98859. +++ uClibc-git/test/dlopen/libC.c 2014-02-03 12:32:57.000000000 +0100
  98860. @@ -0,0 +1,30 @@
  98861. +#include <dlfcn.h>
  98862. +#include <stdio.h>
  98863. +#include <stdlib.h>
  98864. +
  98865. +#define LIBNAME "libB.so"
  98866. +void _libC_fini(void);
  98867. +void _libC_fini(void)
  98868. +{
  98869. + printf("libC_fini():finish - atexit()\n");
  98870. +}
  98871. +
  98872. +void libC_fini(void);
  98873. +void libC_fini(void)
  98874. +{
  98875. + _libC_fini();
  98876. +}
  98877. +
  98878. +void libC_func(void);
  98879. +void libC_func(void)
  98880. +{
  98881. + void *libB;
  98882. +
  98883. + libB = dlopen(LIBNAME, RTLD_LAZY);
  98884. + if (!libB) {
  98885. + fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror());
  98886. + exit(1);
  98887. + }
  98888. +
  98889. + atexit(libC_fini);
  98890. +}
  98891. diff -Nur uClibc-0.9.33.2/test/dlopen/Makefile uClibc-git/test/dlopen/Makefile
  98892. --- uClibc-0.9.33.2/test/dlopen/Makefile 2012-05-15 09:20:09.000000000 +0200
  98893. +++ uClibc-git/test/dlopen/Makefile 2014-02-03 12:32:57.000000000 +0100
  98894. @@ -2,11 +2,7 @@
  98895. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  98896. top_builddir=../../
  98897. +top_srcdir=../../
  98898. include ../Rules.mak
  98899. -include Makefile.in
  98900. -ifneq ($(HAVE_SHARED),y)
  98901. -TESTS_DISABLED := test3
  98902. -LDFLAGS_libtest.so := -lpthread
  98903. -endif
  98904. -
  98905. include ../Test.mak
  98906. diff -Nur uClibc-0.9.33.2/test/dlopen/Makefile.in uClibc-git/test/dlopen/Makefile.in
  98907. --- uClibc-0.9.33.2/test/dlopen/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  98908. +++ uClibc-git/test/dlopen/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  98909. @@ -4,7 +4,13 @@
  98910. # rules need a little love to work with glibc ...
  98911. export UCLIBC_ONLY := 1
  98912. -TESTS := dltest dltest2 dlstatic test1 test2 test3 dlundef dlafk dladdr
  98913. +TESTS := dltest dltest2 dlstatic test1 test2 test3 dlundef dlafk dladdr \
  98914. + testscope
  98915. +
  98916. +ifneq ($(HAVE_SHARED),y)
  98917. +TESTS_DISABLED := test3
  98918. +LDFLAGS_libtest.so := -lpthread
  98919. +endif
  98920. CFLAGS_dltest := -DLIBNAME="\"./libtest.so\""
  98921. CFLAGS_dltest2 := -DLIBNAME="\"./libtest3.so\""
  98922. @@ -18,22 +24,42 @@
  98923. LDFLAGS_test2 := -ldl
  98924. LDFLAGS_test3 := -ldl ./libtest1.so ./libtest2.so -Wl,-rpath,.
  98925. LDFLAGS_dladdr := -ldl
  98926. +LDFLAGS_testscope:= -ldl
  98927. DEBUG_LIBS := X
  98928. WRAPPER := env $(DEBUG_LIBS)=all LD_LIBRARY_PATH="$$PWD:.:$(LD_LIBRARY_PATH)"
  98929. +# Build libC.so without -mprefergot compilation flag to force a
  98930. +# R_SH_JMP_SLOT relocation instead of R_SH_GLOB_DAT for _libC_fini. This is
  98931. +# needed to resolve the _libC_fini symbol when used (by libC.so destructor),
  98932. +# whereas with GLOB_DAT relocation the resolution happens in the GOT entry
  98933. +# when the libC is loaded, for the same reason remove also the "-z now"
  98934. +# linker flag.
  98935. +# These are needed to spot the issue test case want raise.
  98936. +
  98937. +ifeq ($(TARGET_ARCH),sh)
  98938. +CFLAGS-OMIT-libC.c = -mprefergot
  98939. +endif
  98940. +LDFLAGS-OMIT-libC.c = -Wl,-z,now
  98941. +
  98942. dltest: libtest.so
  98943. dltest2: libtest3.so
  98944. dlstatic: libstatic.so
  98945. dlundef: libundef.so
  98946. dlafk: libafk.so
  98947. +testscope:libA.so
  98948. libafk.so: libafk-temp.so
  98949. LDFLAGS_libafk.so := ./libafk-temp.so -Wl,-rpath,.
  98950. test1: libtest1.so
  98951. test2: libtest1.so libtest2.so
  98952. test3: libtest1.so libtest2.so
  98953. libtest1.so: libtest2.so
  98954. +libB.so: libC.so
  98955. +libA.so: libB.so
  98956. LDFLAGS_libtest.so := -lpthread
  98957. LDFLAGS_libtest1.so := ./libtest2.so -Wl,-rpath,.
  98958. LDFLAGS_libtest2.so := -Wl,-rpath,.
  98959. LDFLAGS_libtest3.so := -lpthread -Wl,-rpath,.
  98960. +LDFLAGS_libC.so := -ldl
  98961. +LDFLAGS_libB.so := ./libC.so -Wl,-rpath,.
  98962. +LDFLAGS_libA.so := ./libB.so -Wl,-rpath,.
  98963. diff -Nur uClibc-0.9.33.2/test/dlopen/testscope.c uClibc-git/test/dlopen/testscope.c
  98964. --- uClibc-0.9.33.2/test/dlopen/testscope.c 1970-01-01 01:00:00.000000000 +0100
  98965. +++ uClibc-git/test/dlopen/testscope.c 2014-02-03 12:32:57.000000000 +0100
  98966. @@ -0,0 +1,29 @@
  98967. +#include <dlfcn.h>
  98968. +#include <stdio.h>
  98969. +#include <stdlib.h>
  98970. +
  98971. +#define LIBNAME "libA.so"
  98972. +int main(int argc, char **argv)
  98973. +{
  98974. + void *libA;
  98975. + void (*libAfn)(void);
  98976. + char *error;
  98977. +
  98978. + libA = dlopen(LIBNAME, RTLD_LAZY);
  98979. + if (!libA) {
  98980. + fprintf(stderr, "Could not open ./%s: %s\n", LIBNAME, dlerror());
  98981. + exit(1);
  98982. + }
  98983. +
  98984. + libAfn = dlsym(libA, "libA_func");
  98985. + if ((error = dlerror()) != NULL) {
  98986. + fprintf(stderr, "Could not locate symbol 'libA_func': %s\n", error);
  98987. + exit(1);
  98988. + }
  98989. +
  98990. + libAfn();
  98991. +
  98992. + dlclose(libA);
  98993. +
  98994. + return EXIT_SUCCESS;
  98995. +}
  98996. diff -Nur uClibc-0.9.33.2/test/.gitignore uClibc-git/test/.gitignore
  98997. --- uClibc-0.9.33.2/test/.gitignore 2012-05-15 09:20:09.000000000 +0200
  98998. +++ uClibc-git/test/.gitignore 2014-02-03 12:32:57.000000000 +0100
  98999. @@ -29,13 +29,19 @@
  99000. dlopen/dlundef
  99001. dlopen/libafk.so
  99002. dlopen/libafk-temp.so
  99003. +dlopen/libA.so
  99004. +dlopen/libB.so
  99005. +dlopen/libC.so
  99006. dlopen/libstatic.so
  99007. dlopen/libtest[123].so
  99008. dlopen/libtest.so
  99009. dlopen/libundef.so
  99010. dlopen/test[1-3]
  99011. +dlopen/testscope
  99012. inet/bug-if1
  99013. inet/gethost_r-align
  99014. +inet/gethostid
  99015. +inet/getnetent
  99016. inet/if_nameindex
  99017. inet/tst-aton
  99018. inet/tst-ether_aton
  99019. @@ -43,13 +49,28 @@
  99020. inet/tst-ethers-line
  99021. inet/tst-network
  99022. inet/tst-ntoa
  99023. -inet/gethostid
  99024. -inet/getnetent
  99025. +inet/tst-res
  99026. +inet/tst-sock-nonblock
  99027. librt/shmtest
  99028. locale/bug-iconv-trans
  99029. +locale/bug-usesetlocale
  99030. +locale/C
  99031. locale/collate-test
  99032. locale/dump-ctype
  99033. locale/gen-unicode-ctype
  99034. +locale/show-ucs-data
  99035. +locale/tst-digits
  99036. +locale/tst-langinfo
  99037. +locale/tst-mbswcs[1-6]
  99038. +locale/tst_nl_langinfo
  99039. +locale/tst-numeric
  99040. +locale/tst-setlocale
  99041. +locale/tst-sscanf
  99042. +locale/tst-trans
  99043. +locale/tst-wctype
  99044. +locale/tst-xlocale1
  99045. +locale/tst-xlocale2
  99046. +locale/xfrm-test
  99047. locale-mbwc/tst_iswalnum
  99048. locale-mbwc/tst_iswalpha
  99049. locale-mbwc/tst_iswcntrl
  99050. @@ -100,16 +121,6 @@
  99051. locale-mbwc/tst_wctype
  99052. locale-mbwc/tst_wcwidth
  99053. locale-mbwc/tst2_mbrtowc
  99054. -locale/show-ucs-data
  99055. -locale/tst-digits
  99056. -locale/tst-langinfo
  99057. -locale/tst-mbswcs[1-6]
  99058. -locale/tst_nl_langinfo
  99059. -locale/tst-numeric
  99060. -locale/tst-setlocale
  99061. -locale/tst-sscanf
  99062. -locale/tst-trans
  99063. -locale/tst-wctype
  99064. malloc/malloc
  99065. malloc/mallocbug
  99066. malloc/malloc-standard-alignment
  99067. @@ -146,8 +157,11 @@
  99068. misc/seek
  99069. misc/sem
  99070. misc/stdarg
  99071. +misc/tst-inotify
  99072. misc/tst-scandir
  99073. misc/tst-seekdir
  99074. +misc/tst-statfs
  99075. +misc/tst-statvfs
  99076. misc/tst-utmp
  99077. mmap/mmap
  99078. mmap/mmap2
  99079. @@ -243,6 +257,7 @@
  99080. signal/signal
  99081. signal/tst-raise
  99082. signal/tst-signal
  99083. +signal/tst-signalfd
  99084. signal/tst-sigset
  99085. signal/tst-sigsimple
  99086. silly/hello
  99087. @@ -250,10 +265,12 @@
  99088. stat/memcmp-stat
  99089. stat/stat
  99090. stat/stat64
  99091. +stat/stat-loop256
  99092. stdio/64bit
  99093. stdio/fclose-loop
  99094. stdlib/ptytest
  99095. stdlib/qsort
  99096. +stdlib/testarc4random
  99097. stdlib/testatexit
  99098. stdlib/test-canon
  99099. stdlib/test-canon2
  99100. @@ -282,6 +299,7 @@
  99101. time/tst-mktime
  99102. time/tst-mktime3
  99103. time/tst-strptime2
  99104. +time/tst-timerfd
  99105. time/tst_wcsftime
  99106. tls/tst-tls[1-9]
  99107. tls/tst-tls1[0-8]
  99108. @@ -302,6 +320,8 @@
  99109. unistd/getopt
  99110. unistd/getopt_long
  99111. unistd/tstgetopt
  99112. +unistd/tst-posix_fallocate
  99113. +unistd/tst-posix_fallocate64
  99114. unistd/tst-preadwrite
  99115. unistd/tst-preadwrite64
  99116. unistd/vfork
  99117. diff -Nur uClibc-0.9.33.2/test/inet/bug-if1.c uClibc-git/test/inet/bug-if1.c
  99118. --- uClibc-0.9.33.2/test/inet/bug-if1.c 2012-05-15 09:20:09.000000000 +0200
  99119. +++ uClibc-git/test/inet/bug-if1.c 2014-02-03 12:32:57.000000000 +0100
  99120. @@ -13,9 +13,8 @@
  99121. Lesser General Public License for more details.
  99122. You should have received a copy of the GNU Lesser General Public
  99123. - License along with the GNU C Library; if not, write to the Free
  99124. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99125. - 02111-1307 USA. */
  99126. + License along with the GNU C Library; if not, see
  99127. + <http://www.gnu.org/licenses/>. */
  99128. #include <errno.h>
  99129. #include <limits.h>
  99130. diff -Nur uClibc-0.9.33.2/test/inet/gethostid.c uClibc-git/test/inet/gethostid.c
  99131. --- uClibc-0.9.33.2/test/inet/gethostid.c 2012-05-15 09:20:09.000000000 +0200
  99132. +++ uClibc-git/test/inet/gethostid.c 2014-02-03 12:32:57.000000000 +0100
  99133. @@ -1,6 +1,6 @@
  99134. #include <unistd.h>
  99135. #include <stdio.h>
  99136. int main(void) {
  99137. - printf("hostid=%d\n", gethostid());
  99138. + printf("hostid=%ld\n", gethostid());
  99139. return 0;
  99140. }
  99141. diff -Nur uClibc-0.9.33.2/test/inet/getnetent.c uClibc-git/test/inet/getnetent.c
  99142. --- uClibc-0.9.33.2/test/inet/getnetent.c 2012-05-15 09:20:09.000000000 +0200
  99143. +++ uClibc-git/test/inet/getnetent.c 2014-02-03 12:32:57.000000000 +0100
  99144. @@ -8,7 +8,7 @@
  99145. while (net->n_net && !((net->n_net >> 24) & 0xff)) {
  99146. net->n_net <<= 8;
  99147. }
  99148. - printf("%lu.%lu.%lu.%lu\n",
  99149. + printf("%u.%u.%u.%u\n",
  99150. (net->n_net >> 24) & 0xff, (net->n_net >> 16) & 0xff,
  99151. (net->n_net >> 8) & 0xff, net->n_net & 0xff);
  99152. }
  99153. diff -Nur uClibc-0.9.33.2/test/inet/Makefile uClibc-git/test/inet/Makefile
  99154. --- uClibc-0.9.33.2/test/inet/Makefile 2012-05-15 09:20:09.000000000 +0200
  99155. +++ uClibc-git/test/inet/Makefile 2014-02-03 12:32:57.000000000 +0100
  99156. @@ -2,6 +2,7 @@
  99157. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99158. top_builddir=../../
  99159. +top_srcdir=../../
  99160. include ../Rules.mak
  99161. -include Makefile.in
  99162. include ../Test.mak
  99163. diff -Nur uClibc-0.9.33.2/test/inet/Makefile.in uClibc-git/test/inet/Makefile.in
  99164. --- uClibc-0.9.33.2/test/inet/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  99165. +++ uClibc-git/test/inet/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  99166. @@ -7,5 +7,11 @@
  99167. endif
  99168. ifeq ($(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
  99169. -TESTS_DISABLED := tst-ether_aton tst-ethers tst-ethers-line
  99170. +TESTS_DISABLED += tst-ether_aton tst-ethers tst-ethers-line
  99171. +endif
  99172. +
  99173. +ifeq ($(UCLIBC_HAS_RESOLVER_SUPPORT),)
  99174. +TESTS_DISABLED += tst-res
  99175. +else
  99176. +LDFLAGS_tst-res_glibc := -lresolv # assume it's glibc or somebody with that lib
  99177. endif
  99178. diff -Nur uClibc-0.9.33.2/test/inet/tst-network.c uClibc-git/test/inet/tst-network.c
  99179. --- uClibc-0.9.33.2/test/inet/tst-network.c 2012-05-15 09:20:09.000000000 +0200
  99180. +++ uClibc-git/test/inet/tst-network.c 2014-02-03 12:32:57.000000000 +0100
  99181. @@ -14,9 +14,8 @@
  99182. Lesser General Public License for more details.
  99183. You should have received a copy of the GNU Lesser General Public
  99184. - License along with the GNU C Library; if not, write to the Free
  99185. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99186. - 02111-1307 USA. */
  99187. + License along with the GNU C Library; if not, see
  99188. + <http://www.gnu.org/licenses/>. */
  99189. #include <stdio.h>
  99190. #include <sys/socket.h>
  99191. diff -Nur uClibc-0.9.33.2/test/inet/tst-res.c uClibc-git/test/inet/tst-res.c
  99192. --- uClibc-0.9.33.2/test/inet/tst-res.c 1970-01-01 01:00:00.000000000 +0100
  99193. +++ uClibc-git/test/inet/tst-res.c 2014-02-03 12:32:57.000000000 +0100
  99194. @@ -0,0 +1,44 @@
  99195. +#include <stdlib.h>
  99196. +#include <assert.h>
  99197. +#include <sys/types.h>
  99198. +#include <netinet/in.h>
  99199. +#include <arpa/nameser.h>
  99200. +#include <resolv.h>
  99201. +#include <netdb.h>
  99202. +
  99203. +int main(int argc, char **argv)
  99204. +{
  99205. + int r;
  99206. + struct __res_state state;
  99207. +
  99208. + r = res_ninit(&state);
  99209. + if (r) {
  99210. + herror("ninit");
  99211. + abort();
  99212. + }
  99213. + r = res_init();
  99214. + if (r) {
  99215. + herror("init");
  99216. + abort();
  99217. + }
  99218. +
  99219. +#ifdef __UCLIBC_HAS_BSD_RES_CLOSE__
  99220. + res_close();
  99221. +#endif
  99222. +#ifdef __UCLIBC__
  99223. + /* assume there is at least one resolver configured */
  99224. + assert (state._u._ext.nscount > 0);
  99225. +#else
  99226. + assert (state._u._ext.nscount == 0);
  99227. +#endif
  99228. + assert (state.options & RES_INIT);
  99229. + res_nclose(&state);
  99230. +#ifdef __UCLIBC__
  99231. + /* We wipe the whole thing */
  99232. + assert ((state.options & RES_INIT) == 0);
  99233. +#endif
  99234. + assert (state._u._ext.nscount == 0);
  99235. +
  99236. + return 0;
  99237. +}
  99238. +
  99239. diff -Nur uClibc-0.9.33.2/test/inet/tst-sock-nonblock.c uClibc-git/test/inet/tst-sock-nonblock.c
  99240. --- uClibc-0.9.33.2/test/inet/tst-sock-nonblock.c 1970-01-01 01:00:00.000000000 +0100
  99241. +++ uClibc-git/test/inet/tst-sock-nonblock.c 2014-02-03 12:32:57.000000000 +0100
  99242. @@ -0,0 +1,53 @@
  99243. +/* vi: set sw=4 ts=4 sts=4: */
  99244. +/*
  99245. + * Nonblocking socket test for uClibc
  99246. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  99247. + *
  99248. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99249. + */
  99250. +
  99251. +#include <stdio.h>
  99252. +#include <stdlib.h>
  99253. +#include <string.h>
  99254. +#include <unistd.h>
  99255. +#include <errno.h>
  99256. +#include <error.h>
  99257. +#include <sys/types.h>
  99258. +#include <sys/socket.h>
  99259. +#include <sys/un.h>
  99260. +#include <sys/fcntl.h>
  99261. +
  99262. +static int
  99263. +do_test(void)
  99264. +{
  99265. + int fd, ret, result = 0;
  99266. + struct sockaddr_un sa;
  99267. + char buf;
  99268. +
  99269. + fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_NONBLOCK, 0);
  99270. + if (fd < 0) {
  99271. + perror("socket()");
  99272. + result = 1;
  99273. + }
  99274. +
  99275. + memset(&sa, 0, sizeof(sa));
  99276. + sa.sun_family = AF_UNIX;
  99277. + strcpy(sa.sun_path, "socktest");
  99278. + unlink("socktest");
  99279. + if (bind(fd, (const struct sockaddr *)&sa, sizeof(sa)) < 0) {
  99280. + perror("bind()");
  99281. + result = 1;
  99282. + }
  99283. +
  99284. + ret = read(fd, &buf, sizeof(buf));
  99285. + if (ret != -1 || errno != EAGAIN) {
  99286. + error(0, 0, "Nonblocking read returned %d", ret);
  99287. + result = 1;
  99288. + }
  99289. +
  99290. + return result;
  99291. +}
  99292. +
  99293. +#define TIMEOUT 5
  99294. +#define TEST_FUNCTION do_test ()
  99295. +#include "../test-skeleton.c"
  99296. diff -Nur uClibc-0.9.33.2/test/librt/Makefile uClibc-git/test/librt/Makefile
  99297. --- uClibc-0.9.33.2/test/librt/Makefile 2012-05-15 09:20:09.000000000 +0200
  99298. +++ uClibc-git/test/librt/Makefile 2014-02-03 12:32:57.000000000 +0100
  99299. @@ -2,6 +2,7 @@
  99300. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99301. top_builddir=../../
  99302. +top_srcdir=../../
  99303. include ../Rules.mak
  99304. -include Makefile.in
  99305. include ../Test.mak
  99306. diff -Nur uClibc-0.9.33.2/test/locale/collate-test.c uClibc-git/test/locale/collate-test.c
  99307. --- uClibc-0.9.33.2/test/locale/collate-test.c 2012-05-15 09:20:09.000000000 +0200
  99308. +++ uClibc-git/test/locale/collate-test.c 2014-02-03 12:32:57.000000000 +0100
  99309. @@ -14,9 +14,8 @@
  99310. Lesser General Public License for more details.
  99311. You should have received a copy of the GNU Lesser General Public
  99312. - License along with the GNU C Library; if not, write to the Free
  99313. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99314. - 02111-1307 USA. */
  99315. + License along with the GNU C Library; if not, see
  99316. + <http://www.gnu.org/licenses/>. */
  99317. #include <ctype.h>
  99318. #include <error.h>
  99319. diff -Nur uClibc-0.9.33.2/test/locale/dump-ctype.c uClibc-git/test/locale/dump-ctype.c
  99320. --- uClibc-0.9.33.2/test/locale/dump-ctype.c 2012-05-15 09:20:09.000000000 +0200
  99321. +++ uClibc-git/test/locale/dump-ctype.c 2014-02-03 12:32:57.000000000 +0100
  99322. @@ -15,9 +15,8 @@
  99323. Lesser General Public License for more details.
  99324. You should have received a copy of the GNU Lesser General Public
  99325. - License along with the GNU C Library; if not, write to the Free
  99326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99327. - 02111-1307 USA. */
  99328. + License along with the GNU C Library; if not, see
  99329. + <http://www.gnu.org/licenses/>. */
  99330. /* Usage example:
  99331. $ dump-ctype de_DE.UTF-8
  99332. diff -Nur uClibc-0.9.33.2/test/locale/gen-unicode-ctype.c uClibc-git/test/locale/gen-unicode-ctype.c
  99333. --- uClibc-0.9.33.2/test/locale/gen-unicode-ctype.c 2012-05-15 09:20:09.000000000 +0200
  99334. +++ uClibc-git/test/locale/gen-unicode-ctype.c 2014-02-03 12:32:57.000000000 +0100
  99335. @@ -14,9 +14,8 @@
  99336. Lesser General Public License for more details.
  99337. You should have received a copy of the GNU Lesser General Public
  99338. - License along with the GNU C Library; if not, write to the Free
  99339. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99340. - 02111-1307 USA. */
  99341. + License along with the GNU C Library; if not, see
  99342. + <http://www.gnu.org/licenses/>. */
  99343. /* Usage example:
  99344. $ gen-unicode /usr/local/share/Unidata/UnicodeData.txt 3.1
  99345. diff -Nur uClibc-0.9.33.2/test/locale/Makefile uClibc-git/test/locale/Makefile
  99346. --- uClibc-0.9.33.2/test/locale/Makefile 2012-05-15 09:20:09.000000000 +0200
  99347. +++ uClibc-git/test/locale/Makefile 2014-02-03 12:32:57.000000000 +0100
  99348. @@ -2,6 +2,7 @@
  99349. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99350. top_builddir=../../
  99351. +top_srcdir=../../
  99352. include ../Rules.mak
  99353. -include Makefile.in
  99354. include ../Test.mak
  99355. diff -Nur uClibc-0.9.33.2/test/locale/tst-C-locale.c uClibc-git/test/locale/tst-C-locale.c
  99356. --- uClibc-0.9.33.2/test/locale/tst-C-locale.c 2012-05-15 09:20:09.000000000 +0200
  99357. +++ uClibc-git/test/locale/tst-C-locale.c 2014-02-03 12:32:57.000000000 +0100
  99358. @@ -14,9 +14,8 @@
  99359. Lesser General Public License for more details.
  99360. You should have received a copy of the GNU Lesser General Public
  99361. - License along with the GNU C Library; if not, write to the Free
  99362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99363. - 02111-1307 USA. */
  99364. + License along with the GNU C Library; if not, see
  99365. + <http://www.gnu.org/licenses/>. */
  99366. #include <ctype.h>
  99367. #include <langinfo.h>
  99368. diff -Nur uClibc-0.9.33.2/test/locale/tst-ctype.c uClibc-git/test/locale/tst-ctype.c
  99369. --- uClibc-0.9.33.2/test/locale/tst-ctype.c 2012-05-15 09:20:09.000000000 +0200
  99370. +++ uClibc-git/test/locale/tst-ctype.c 2014-02-03 12:32:57.000000000 +0100
  99371. @@ -13,9 +13,8 @@
  99372. Lesser General Public License for more details.
  99373. You should have received a copy of the GNU Lesser General Public
  99374. - License along with the GNU C Library; if not, write to the Free
  99375. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99376. - 02111-1307 USA. */
  99377. + License along with the GNU C Library; if not, see
  99378. + <http://www.gnu.org/licenses/>. */
  99379. #include <ctype.h>
  99380. #include <locale.h>
  99381. diff -Nur uClibc-0.9.33.2/test/locale/tst-digits.c uClibc-git/test/locale/tst-digits.c
  99382. --- uClibc-0.9.33.2/test/locale/tst-digits.c 2012-05-15 09:20:09.000000000 +0200
  99383. +++ uClibc-git/test/locale/tst-digits.c 2014-02-03 12:32:57.000000000 +0100
  99384. @@ -13,9 +13,8 @@
  99385. Lesser General Public License for more details.
  99386. You should have received a copy of the GNU Lesser General Public
  99387. - License along with the GNU C Library; if not, write to the Free
  99388. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99389. - 02111-1307 USA. */
  99390. + License along with the GNU C Library; if not, see
  99391. + <http://www.gnu.org/licenses/>. */
  99392. #include <ctype.h>
  99393. #include <langinfo.h>
  99394. diff -Nur uClibc-0.9.33.2/test/locale/tst-fmon.c uClibc-git/test/locale/tst-fmon.c
  99395. --- uClibc-0.9.33.2/test/locale/tst-fmon.c 2012-05-15 09:20:09.000000000 +0200
  99396. +++ uClibc-git/test/locale/tst-fmon.c 2014-02-03 12:32:57.000000000 +0100
  99397. @@ -14,9 +14,8 @@
  99398. Lesser General Public License for more details.
  99399. You should have received a copy of the GNU Lesser General Public
  99400. - License along with the GNU C Library; if not, write to the Free
  99401. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99402. - 02111-1307 USA. */
  99403. + License along with the GNU C Library; if not, see
  99404. + <http://www.gnu.org/licenses/>. */
  99405. #include <stdio.h>
  99406. #include <locale.h>
  99407. diff -Nur uClibc-0.9.33.2/test/locale/tst-langinfo.c uClibc-git/test/locale/tst-langinfo.c
  99408. --- uClibc-0.9.33.2/test/locale/tst-langinfo.c 2012-05-15 09:20:09.000000000 +0200
  99409. +++ uClibc-git/test/locale/tst-langinfo.c 2014-02-03 12:32:57.000000000 +0100
  99410. @@ -14,9 +14,8 @@
  99411. Lesser General Public License for more details.
  99412. You should have received a copy of the GNU Lesser General Public
  99413. - License along with the GNU C Library; if not, write to the Free
  99414. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99415. - 02111-1307 USA. */
  99416. + License along with the GNU C Library; if not, see
  99417. + <http://www.gnu.org/licenses/>. */
  99418. #include <langinfo.h>
  99419. #include <locale.h>
  99420. diff -Nur uClibc-0.9.33.2/test/locale/tst-langinfo.input uClibc-git/test/locale/tst-langinfo.input
  99421. --- uClibc-0.9.33.2/test/locale/tst-langinfo.input 2012-05-15 09:20:09.000000000 +0200
  99422. +++ uClibc-git/test/locale/tst-langinfo.input 2014-02-03 12:32:57.000000000 +0100
  99423. @@ -15,9 +15,8 @@
  99424. # Lesser General Public License for more details.
  99425. # You should have received a copy of the GNU Lesser General Public
  99426. -# License along with the GNU C Library; if not, write to the Free
  99427. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99428. -# 02111-1307 USA.
  99429. +# License along with the GNU C Library; see the file COPYING.LIB. If
  99430. +# not, see <http://www.gnu.org/licenses/>.
  99431. # Run the test program.
  99432. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs1.c uClibc-git/test/locale/tst-mbswcs1.c
  99433. --- uClibc-0.9.33.2/test/locale/tst-mbswcs1.c 2012-05-15 09:20:09.000000000 +0200
  99434. +++ uClibc-git/test/locale/tst-mbswcs1.c 2014-02-03 12:32:57.000000000 +0100
  99435. @@ -14,9 +14,8 @@
  99436. Lesser General Public License for more details.
  99437. You should have received a copy of the GNU Lesser General Public
  99438. - License along with the GNU C Library; if not, write to the Free
  99439. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99440. - 02111-1307 USA. */
  99441. + License along with the GNU C Library; if not, see
  99442. + <http://www.gnu.org/licenses/>. */
  99443. #include <stdio.h>
  99444. #include <string.h>
  99445. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs2.c uClibc-git/test/locale/tst-mbswcs2.c
  99446. --- uClibc-0.9.33.2/test/locale/tst-mbswcs2.c 2012-05-15 09:20:09.000000000 +0200
  99447. +++ uClibc-git/test/locale/tst-mbswcs2.c 2014-02-03 12:32:57.000000000 +0100
  99448. @@ -14,9 +14,8 @@
  99449. Lesser General Public License for more details.
  99450. You should have received a copy of the GNU Lesser General Public
  99451. - License along with the GNU C Library; if not, write to the Free
  99452. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99453. - 02111-1307 USA. */
  99454. + License along with the GNU C Library; if not, see
  99455. + <http://www.gnu.org/licenses/>. */
  99456. #include <stdio.h>
  99457. #include <string.h>
  99458. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs3.c uClibc-git/test/locale/tst-mbswcs3.c
  99459. --- uClibc-0.9.33.2/test/locale/tst-mbswcs3.c 2012-05-15 09:20:09.000000000 +0200
  99460. +++ uClibc-git/test/locale/tst-mbswcs3.c 2014-02-03 12:32:57.000000000 +0100
  99461. @@ -14,9 +14,8 @@
  99462. Lesser General Public License for more details.
  99463. You should have received a copy of the GNU Lesser General Public
  99464. - License along with the GNU C Library; if not, write to the Free
  99465. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99466. - 02111-1307 USA. */
  99467. + License along with the GNU C Library; if not, see
  99468. + <http://www.gnu.org/licenses/>. */
  99469. #include <stdio.h>
  99470. #include <string.h>
  99471. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs4.c uClibc-git/test/locale/tst-mbswcs4.c
  99472. --- uClibc-0.9.33.2/test/locale/tst-mbswcs4.c 2012-05-15 09:20:09.000000000 +0200
  99473. +++ uClibc-git/test/locale/tst-mbswcs4.c 2014-02-03 12:32:57.000000000 +0100
  99474. @@ -13,9 +13,8 @@
  99475. Lesser General Public License for more details.
  99476. You should have received a copy of the GNU Lesser General Public
  99477. - License along with the GNU C Library; if not, write to the Free
  99478. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99479. - 02111-1307 USA. */
  99480. + License along with the GNU C Library; if not, see
  99481. + <http://www.gnu.org/licenses/>. */
  99482. #include <stdio.h>
  99483. #include <string.h>
  99484. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs5.c uClibc-git/test/locale/tst-mbswcs5.c
  99485. --- uClibc-0.9.33.2/test/locale/tst-mbswcs5.c 2012-05-15 09:20:09.000000000 +0200
  99486. +++ uClibc-git/test/locale/tst-mbswcs5.c 2014-02-03 12:32:57.000000000 +0100
  99487. @@ -14,9 +14,8 @@
  99488. Lesser General Public License for more details.
  99489. You should have received a copy of the GNU Lesser General Public
  99490. - License along with the GNU C Library; if not, write to the Free
  99491. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99492. - 02111-1307 USA. */
  99493. + License along with the GNU C Library; if not, see
  99494. + <http://www.gnu.org/licenses/>. */
  99495. #include <stdio.h>
  99496. #include <string.h>
  99497. diff -Nur uClibc-0.9.33.2/test/locale/tst-mbswcs6.c uClibc-git/test/locale/tst-mbswcs6.c
  99498. --- uClibc-0.9.33.2/test/locale/tst-mbswcs6.c 2012-05-15 09:20:09.000000000 +0200
  99499. +++ uClibc-git/test/locale/tst-mbswcs6.c 2014-02-03 12:32:57.000000000 +0100
  99500. @@ -14,9 +14,8 @@
  99501. Lesser General Public License for more details.
  99502. You should have received a copy of the GNU Lesser General Public
  99503. - License along with the GNU C Library; if not, write to the Free
  99504. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99505. - 02111-1307 USA. */
  99506. + License along with the GNU C Library; if not, see
  99507. + <http://www.gnu.org/licenses/>. */
  99508. #include <errno.h>
  99509. #include <locale.h>
  99510. diff -Nur uClibc-0.9.33.2/test/locale/tst-numeric.c uClibc-git/test/locale/tst-numeric.c
  99511. --- uClibc-0.9.33.2/test/locale/tst-numeric.c 2012-05-15 09:20:09.000000000 +0200
  99512. +++ uClibc-git/test/locale/tst-numeric.c 2014-02-03 12:32:57.000000000 +0100
  99513. @@ -16,9 +16,8 @@
  99514. Lesser General Public License for more details.
  99515. You should have received a copy of the GNU Lesser General Public
  99516. - License along with the GNU C Library; if not, write to the Free
  99517. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99518. - 02111-1307 USA. */
  99519. + License along with the GNU C Library; if not, see
  99520. + <http://www.gnu.org/licenses/>. */
  99521. #include <stdio.h>
  99522. #include <locale.h>
  99523. diff -Nur uClibc-0.9.33.2/test/locale/tst-rpmatch.c uClibc-git/test/locale/tst-rpmatch.c
  99524. --- uClibc-0.9.33.2/test/locale/tst-rpmatch.c 2012-05-15 09:20:09.000000000 +0200
  99525. +++ uClibc-git/test/locale/tst-rpmatch.c 2014-02-03 12:32:57.000000000 +0100
  99526. @@ -14,9 +14,8 @@
  99527. Lesser General Public License for more details.
  99528. You should have received a copy of the GNU Lesser General Public
  99529. - License along with the GNU C Library; if not, write to the Free
  99530. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99531. - 02111-1307 USA. */
  99532. + License along with the GNU C Library; if not, see
  99533. + <http://www.gnu.org/licenses/>. */
  99534. #include <locale.h>
  99535. #include <stdio.h>
  99536. diff -Nur uClibc-0.9.33.2/test/locale/tst-trans.c uClibc-git/test/locale/tst-trans.c
  99537. --- uClibc-0.9.33.2/test/locale/tst-trans.c 2012-05-15 09:20:09.000000000 +0200
  99538. +++ uClibc-git/test/locale/tst-trans.c 2014-02-03 12:32:57.000000000 +0100
  99539. @@ -14,9 +14,8 @@
  99540. Lesser General Public License for more details.
  99541. You should have received a copy of the GNU Lesser General Public
  99542. - License along with the GNU C Library; if not, write to the Free
  99543. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99544. - 02111-1307 USA. */
  99545. + License along with the GNU C Library; if not, see
  99546. + <http://www.gnu.org/licenses/>. */
  99547. #include <locale.h>
  99548. #include <stdio.h>
  99549. diff -Nur uClibc-0.9.33.2/test/locale/tst-wctype.c uClibc-git/test/locale/tst-wctype.c
  99550. --- uClibc-0.9.33.2/test/locale/tst-wctype.c 2012-05-15 09:20:09.000000000 +0200
  99551. +++ uClibc-git/test/locale/tst-wctype.c 2014-02-03 12:32:57.000000000 +0100
  99552. @@ -14,9 +14,8 @@
  99553. Lesser General Public License for more details.
  99554. You should have received a copy of the GNU Lesser General Public
  99555. - License along with the GNU C Library; if not, write to the Free
  99556. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99557. - 02111-1307 USA. */
  99558. + License along with the GNU C Library; if not, see
  99559. + <http://www.gnu.org/licenses/>. */
  99560. #include <error.h>
  99561. #include <locale.h>
  99562. diff -Nur uClibc-0.9.33.2/test/locale/xfrm-test.c uClibc-git/test/locale/xfrm-test.c
  99563. --- uClibc-0.9.33.2/test/locale/xfrm-test.c 2012-05-15 09:20:09.000000000 +0200
  99564. +++ uClibc-git/test/locale/xfrm-test.c 2014-02-03 12:32:57.000000000 +0100
  99565. @@ -14,9 +14,8 @@
  99566. Lesser General Public License for more details.
  99567. You should have received a copy of the GNU Lesser General Public
  99568. - License along with the GNU C Library; if not, write to the Free
  99569. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99570. - 02111-1307 USA. */
  99571. + License along with the GNU C Library; if not, see
  99572. + <http://www.gnu.org/licenses/>. */
  99573. #include <ctype.h>
  99574. #include <error.h>
  99575. diff -Nur uClibc-0.9.33.2/test/locale-mbwc/Makefile uClibc-git/test/locale-mbwc/Makefile
  99576. --- uClibc-0.9.33.2/test/locale-mbwc/Makefile 2012-05-15 09:20:09.000000000 +0200
  99577. +++ uClibc-git/test/locale-mbwc/Makefile 2014-02-03 12:32:57.000000000 +0100
  99578. @@ -2,6 +2,7 @@
  99579. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99580. top_builddir=../../
  99581. +top_srcdir=../../
  99582. include ../Rules.mak
  99583. -include Makefile.in
  99584. include ../Test.mak
  99585. diff -Nur uClibc-0.9.33.2/test/Makefile uClibc-git/test/Makefile
  99586. --- uClibc-0.9.33.2/test/Makefile 2012-05-15 09:20:09.000000000 +0200
  99587. +++ uClibc-git/test/Makefile 2014-02-03 12:32:57.000000000 +0100
  99588. @@ -5,6 +5,7 @@
  99589. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99590. #
  99591. +top_srcdir=../
  99592. top_builddir=../
  99593. include Rules.mak
  99594. @@ -46,9 +47,9 @@
  99595. run: compile subdirs_run
  99596. -compile: $(top_builddir)/$(LOCAL_INSTALL_PATH) subdirs_compile
  99597. +compile: $(top_builddir)$(LOCAL_INSTALL_PATH) subdirs_compile
  99598. -$(top_builddir)/$(LOCAL_INSTALL_PATH):
  99599. +$(top_builddir)$(LOCAL_INSTALL_PATH):
  99600. $(Q)$(MAKE) -C $(top_builddir) $(LOCAL_INSTALL_PATH)
  99601. tags:
  99602. @@ -62,13 +63,16 @@
  99603. subdirs_clean: $(patsubst %, _dirclean_%, $(ALL_SUBDIRS))
  99604. $(patsubst %, _dir_%, $(DIRS)) : dummy
  99605. - $(Q)$(MAKE) -C $(patsubst _dir_%, %, $@)
  99606. + $(Q)$(MAKE) -C $(patsubst _dir_%, %, $@) \
  99607. + KCONFIG_CONFIG=$(KCONFIG_CONFIG)
  99608. $(patsubst %, _dirrun_%, $(DIRS)) : dummy
  99609. - $(Q)$(MAKE) -C $(patsubst _dirrun_%, %, $@) run
  99610. + $(Q)$(MAKE) -C $(patsubst _dirrun_%, %, $@) run \
  99611. + KCONFIG_CONFIG=$(KCONFIG_CONFIG)
  99612. $(patsubst %, _dircompile_%, $(DIRS)) : dummy
  99613. - $(Q)$(MAKE) -C $(patsubst _dircompile_%, %, $@) compile
  99614. + $(Q)$(MAKE) -C $(patsubst _dircompile_%, %, $@) compile \
  99615. + KCONFIG_CONFIG=$(KCONFIG_CONFIG)
  99616. $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy
  99617. $(Q)$(MAKE) -C $(patsubst _dirclean_%, %, $@) clean
  99618. diff -Nur uClibc-0.9.33.2/test/malloc/Makefile uClibc-git/test/malloc/Makefile
  99619. --- uClibc-0.9.33.2/test/malloc/Makefile 2012-05-15 09:20:09.000000000 +0200
  99620. +++ uClibc-git/test/malloc/Makefile 2014-02-03 12:32:57.000000000 +0100
  99621. @@ -2,6 +2,7 @@
  99622. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99623. top_builddir=../../
  99624. +top_srcdir=../../
  99625. include ../Rules.mak
  99626. -include Makefile.in
  99627. include ../Test.mak
  99628. diff -Nur uClibc-0.9.33.2/test/malloc/Makefile.in uClibc-git/test/malloc/Makefile.in
  99629. --- uClibc-0.9.33.2/test/malloc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  99630. +++ uClibc-git/test/malloc/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  99631. @@ -2,3 +2,11 @@
  99632. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  99633. TESTS_DISABLED := time_malloc
  99634. +
  99635. +ifneq ($(UCLIBC_SUSV2_LEGACY),y)
  99636. +TESTS_DISABLED += tst-valloc
  99637. +endif
  99638. +
  99639. +ifneq ($(UCLIBC_HAS_OBSTACK),y)
  99640. +TESTS_DISABLED += tst-obstack
  99641. +endif
  99642. diff -Nur uClibc-0.9.33.2/test/malloc/tst-calloc.c uClibc-git/test/malloc/tst-calloc.c
  99643. --- uClibc-0.9.33.2/test/malloc/tst-calloc.c 2012-05-15 09:20:09.000000000 +0200
  99644. +++ uClibc-git/test/malloc/tst-calloc.c 2014-02-03 12:32:57.000000000 +0100
  99645. @@ -13,9 +13,8 @@
  99646. Lesser General Public License for more details.
  99647. You should have received a copy of the GNU Lesser General Public
  99648. - License along with the GNU C Library; if not, write to the Free
  99649. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99650. - 02111-1307 USA. */
  99651. + License along with the GNU C Library; if not, see
  99652. + <http://www.gnu.org/licenses/>. */
  99653. #include <errno.h>
  99654. #include <limits.h>
  99655. diff -Nur uClibc-0.9.33.2/test/malloc/tst-malloc.c uClibc-git/test/malloc/tst-malloc.c
  99656. --- uClibc-0.9.33.2/test/malloc/tst-malloc.c 2012-05-15 09:20:09.000000000 +0200
  99657. +++ uClibc-git/test/malloc/tst-malloc.c 2014-02-03 12:32:57.000000000 +0100
  99658. @@ -13,9 +13,8 @@
  99659. Lesser General Public License for more details.
  99660. You should have received a copy of the GNU Lesser General Public
  99661. - License along with the GNU C Library; if not, write to the Free
  99662. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99663. - 02111-1307 USA. */
  99664. + License along with the GNU C Library; if not, see
  99665. + <http://www.gnu.org/licenses/>. */
  99666. #include <errno.h>
  99667. #include <malloc.h>
  99668. diff -Nur uClibc-0.9.33.2/test/malloc/tst-mcheck.c uClibc-git/test/malloc/tst-mcheck.c
  99669. --- uClibc-0.9.33.2/test/malloc/tst-mcheck.c 2012-05-15 09:20:09.000000000 +0200
  99670. +++ uClibc-git/test/malloc/tst-mcheck.c 2014-02-03 12:32:57.000000000 +0100
  99671. @@ -13,9 +13,8 @@
  99672. Lesser General Public License for more details.
  99673. You should have received a copy of the GNU Lesser General Public
  99674. - License along with the GNU C Library; if not, write to the Free
  99675. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99676. - 02111-1307 USA. */
  99677. + License along with the GNU C Library; if not, see
  99678. + <http://www.gnu.org/licenses/>. */
  99679. #include <errno.h>
  99680. #include <stdio.h>
  99681. diff -Nur uClibc-0.9.33.2/test/malloc/tst-obstack.c uClibc-git/test/malloc/tst-obstack.c
  99682. --- uClibc-0.9.33.2/test/malloc/tst-obstack.c 2012-05-15 09:20:09.000000000 +0200
  99683. +++ uClibc-git/test/malloc/tst-obstack.c 2014-02-03 12:32:57.000000000 +0100
  99684. @@ -1,4 +1,8 @@
  99685. -/* Test case by Alexandre Duret-Lutz <duret_g@epita.fr>. */
  99686. +/* Test case by Alexandre Duret-Lutz <duret_g@epita.fr>.
  99687. + * test_obstack_printf() added by Anthony G. Basile <blueness.gentoo.org>.
  99688. + */
  99689. +
  99690. +#include <features.h>
  99691. #include <obstack.h>
  99692. #include <stdint.h>
  99693. #include <stdio.h>
  99694. @@ -26,7 +30,7 @@
  99695. }
  99696. int
  99697. -main (void)
  99698. +test_obstack_alloc (void)
  99699. {
  99700. int result = 0;
  99701. int align = 2;
  99702. @@ -62,3 +66,39 @@
  99703. return result;
  99704. }
  99705. +
  99706. +int
  99707. +test_obstack_printf (void)
  99708. +{
  99709. + int result = 0;
  99710. + int n;
  99711. + char *s;
  99712. + struct obstack ob;
  99713. +
  99714. + obstack_init (&ob);
  99715. +
  99716. + n = obstack_printf (&ob, "%s%d%c", "testing 1 ... 2 ... ", 3, '\n');
  99717. + result |= (n != 22);
  99718. + printf("obstack_printf => %d\n", n);
  99719. +
  99720. + n = obstack_printf (&ob, "%s%d%c", "testing 3 ... 2 ... ", 1, '\0');
  99721. + result |= (n != 22);
  99722. + printf("obstack_printf => %d\n", n);
  99723. +
  99724. + s = obstack_finish (&ob);
  99725. + printf("obstack_printf => %s\n", s);
  99726. + obstack_free (&ob, NULL);
  99727. +
  99728. + return result;
  99729. +}
  99730. +
  99731. +int
  99732. +main (void)
  99733. +{
  99734. + int result = 0;
  99735. +
  99736. + result |= test_obstack_alloc();
  99737. + result |= test_obstack_printf();
  99738. +
  99739. + return result;
  99740. +}
  99741. diff -Nur uClibc-0.9.33.2/test/math/basic-test.c uClibc-git/test/math/basic-test.c
  99742. --- uClibc-0.9.33.2/test/math/basic-test.c 2012-05-15 09:20:09.000000000 +0200
  99743. +++ uClibc-git/test/math/basic-test.c 2014-02-03 12:32:57.000000000 +0100
  99744. @@ -13,9 +13,8 @@
  99745. Lesser General Public License for more details.
  99746. You should have received a copy of the GNU Lesser General Public
  99747. - License along with the GNU C Library; if not, write to the Free
  99748. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99749. - 02111-1307 USA. */
  99750. + License along with the GNU C Library; if not, see
  99751. + <http://www.gnu.org/licenses/>. */
  99752. #define _ISOC99_SOURCE
  99753. @@ -65,11 +64,6 @@
  99754. check (#FLOAT " !isnan (1)", !(isnan (one_var))); \
  99755. check (#FLOAT " !isnan (inf)", !(isnan (Inf_var))); \
  99756. \
  99757. - check (#FLOAT " inf == inf", Inf_var == Inf_var); \
  99758. - check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \
  99759. - check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \
  99760. - check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \
  99761. - \
  99762. /* \
  99763. the same tests but this time with NAN from <bits/nan.h> \
  99764. NAN is a double const \
  99765. @@ -78,7 +72,6 @@
  99766. check (#FLOAT " isnan (-NAN)", isnan (-NAN)); \
  99767. check (#FLOAT " !isinf (NAN)", !(isinf (NAN))); \
  99768. check (#FLOAT " !isinf (-NAN)", !(isinf (-NAN))); \
  99769. - check (#FLOAT " NAN != NAN", NAN != NAN); \
  99770. \
  99771. /* \
  99772. And again with the value returned by the `nan' function. \
  99773. @@ -89,6 +82,48 @@
  99774. check (#FLOAT " !isinf (-NAN)", !(isinf (-NANFUNC ("")))); \
  99775. check (#FLOAT " NAN != NAN", NANFUNC ("") != NANFUNC ("")); \
  99776. \
  99777. + /* test if HUGE_VALx is ok */ \
  99778. + x1 = HUGEVAL; \
  99779. + check (#FLOAT " isinf (HUGE_VALx) == +1", isinf (x1) == +1); \
  99780. + x1 = - HUGEVAL; \
  99781. + check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \
  99782. +}
  99783. +#ifndef DO_C99_MATH
  99784. +# undef TEST_FUNC
  99785. +# define TEST_FUNC(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \
  99786. +static void \
  99787. +NAME(void) \
  99788. +{ /* nothing */ }
  99789. +#endif
  99790. +
  99791. +#define TEST_VAL(NAME, FLOAT, NANFUNC, EPSILON, HUGEVAL) \
  99792. +static void \
  99793. +NAME (void) \
  99794. +{ \
  99795. + /* Variables are declared volatile to forbid some compiler \
  99796. + optimizations. */ \
  99797. + volatile FLOAT Inf_var, NaN_var, zero_var, one_var; \
  99798. + FLOAT x1, x2; \
  99799. + \
  99800. + zero_var = 0.0; \
  99801. + one_var = 1.0; \
  99802. + NaN_var = zero_var/zero_var; \
  99803. + Inf_var = one_var / zero_var; \
  99804. + \
  99805. + (void) &zero_var; \
  99806. + (void) &one_var; \
  99807. + (void) &NaN_var; \
  99808. + (void) &Inf_var; \
  99809. + \
  99810. + \
  99811. + check (#FLOAT " inf == inf", Inf_var == Inf_var); \
  99812. + check (#FLOAT " -inf == -inf", -Inf_var == -Inf_var); \
  99813. + check (#FLOAT " inf != -inf", Inf_var != -Inf_var); \
  99814. + check (#FLOAT " NaN != NaN", NaN_var != NaN_var); \
  99815. + \
  99816. + check (#FLOAT " NAN != NAN", NAN != NAN); \
  99817. + \
  99818. + \
  99819. /* test if EPSILON is ok */ \
  99820. x1 = 1.0; \
  99821. x2 = x1 + EPSILON; \
  99822. @@ -98,27 +133,28 @@
  99823. x2 = x1 - EPSILON; \
  99824. check (#FLOAT " 1 != 1-EPSILON", x1 != x2); \
  99825. \
  99826. - /* test if HUGE_VALx is ok */ \
  99827. - x1 = HUGEVAL; \
  99828. - check (#FLOAT " isinf (HUGE_VALx) == +1", isinf (x1) == +1); \
  99829. - x1 = - HUGEVAL; \
  99830. - check (#FLOAT " isinf (-HUGE_VALx) == -1", isinf (x1) == -1); \
  99831. }
  99832. -TEST_FUNC (float_test, float, nanf, FLT_EPSILON, HUGE_VALF)
  99833. -TEST_FUNC (double_test, double, nan, DBL_EPSILON, HUGE_VAL)
  99834. +TEST_VAL (float_test_value, float, nanf, FLT_EPSILON, HUGE_VALF)
  99835. +TEST_FUNC (float_test_call, float, nanf, FLT_EPSILON, HUGE_VALF)
  99836. +TEST_VAL (double_test_value, double, nan, DBL_EPSILON, HUGE_VAL)
  99837. +TEST_FUNC (double_test_call, double, nan, DBL_EPSILON, HUGE_VAL)
  99838. #ifndef NO_LONG_DOUBLE
  99839. -TEST_FUNC (ldouble_test, long double, nanl, LDBL_EPSILON, HUGE_VALL)
  99840. +TEST_VAL (ldouble_test_value, long double, nanl, LDBL_EPSILON, HUGE_VALL)
  99841. +TEST_FUNC (ldouble_test_call, long double, nanl, LDBL_EPSILON, HUGE_VALL)
  99842. #endif
  99843. int
  99844. main (void)
  99845. {
  99846. - float_test ();
  99847. - double_test ();
  99848. + float_test_value ();
  99849. + float_test_call ();
  99850. + double_test_value ();
  99851. + double_test_call ();
  99852. #ifndef NO_LONG_DOUBLE
  99853. - ldouble_test ();
  99854. + ldouble_test_value ();
  99855. + ldouble_test_call ();
  99856. #endif
  99857. return errors != 0;
  99858. diff -Nur uClibc-0.9.33.2/test/math/gen-libm-test.pl uClibc-git/test/math/gen-libm-test.pl
  99859. --- uClibc-0.9.33.2/test/math/gen-libm-test.pl 2012-05-15 09:20:09.000000000 +0200
  99860. +++ uClibc-git/test/math/gen-libm-test.pl 2014-02-03 12:32:57.000000000 +0100
  99861. @@ -14,9 +14,8 @@
  99862. # Lesser General Public License for more details.
  99863. # You should have received a copy of the GNU Lesser General Public
  99864. -# License along with the GNU C Library; if not, write to the Free
  99865. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99866. -# 02111-1307 USA.
  99867. +# License along with the GNU C Library; see the file COPYING.LIB. If
  99868. +# not, see <http://www.gnu.org/licenses/>.
  99869. # This file needs to be tidied up
  99870. # Note that functions and tests share the same namespace.
  99871. diff -Nur uClibc-0.9.33.2/test/math/libm-test.inc uClibc-git/test/math/libm-test.inc
  99872. --- uClibc-0.9.33.2/test/math/libm-test.inc 2012-05-15 09:20:09.000000000 +0200
  99873. +++ uClibc-git/test/math/libm-test.inc 2014-02-03 12:32:57.000000000 +0100
  99874. @@ -13,9 +13,8 @@
  99875. Lesser General Public License for more details.
  99876. You should have received a copy of the GNU Lesser General Public
  99877. - License along with the GNU C Library; if not, write to the Free
  99878. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  99879. - 02111-1307 USA. */
  99880. + License along with the GNU C Library; if not, see
  99881. + <http://www.gnu.org/licenses/>. */
  99882. /* Part of testsuite for libm.
  99883. diff -Nur uClibc-0.9.33.2/test/math/libm-test-ulps-sh uClibc-git/test/math/libm-test-ulps-sh
  99884. --- uClibc-0.9.33.2/test/math/libm-test-ulps-sh 1970-01-01 01:00:00.000000000 +0100
  99885. +++ uClibc-git/test/math/libm-test-ulps-sh 2014-02-03 12:32:57.000000000 +0100
  99886. @@ -0,0 +1,1094 @@
  99887. +# Begin of automatic generation
  99888. +
  99889. +# asin
  99890. +Test "asin (-0.5) == -pi/6":
  99891. +float: 2
  99892. +ifloat: 2
  99893. +Test "asin (0.5) == pi/6":
  99894. +float: 2
  99895. +ifloat: 2
  99896. +Test "asin (0.7) == 0.7753974966107530637":
  99897. +double: 1
  99898. +float: 2
  99899. +idouble: 1
  99900. +ifloat: 2
  99901. +
  99902. +# atan2
  99903. +Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
  99904. +float: 3
  99905. +ifloat: 3
  99906. +Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
  99907. +float: 3
  99908. +ifloat: 3
  99909. +Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
  99910. +float: 4
  99911. +ifloat: 4
  99912. +
  99913. +# atanh
  99914. +Test "atanh (0.7) == 0.8673005276940531944":
  99915. +double: 1
  99916. +idouble: 1
  99917. +
  99918. +# cabs
  99919. +Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  99920. +float: 1
  99921. +ifloat: 1
  99922. +Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
  99923. +float: 1
  99924. +ifloat: 1
  99925. +Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
  99926. +float: 1
  99927. +ifloat: 1
  99928. +Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
  99929. +float: 1
  99930. +ifloat: 1
  99931. +Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
  99932. +double: 1
  99933. +idouble: 1
  99934. +Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  99935. +float: 1
  99936. +ifloat: 1
  99937. +
  99938. +# cacos
  99939. +Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  99940. +double: 1
  99941. +float: 1
  99942. +idouble: 1
  99943. +ifloat: 1
  99944. +Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  99945. +float: 1
  99946. +ifloat: 1
  99947. +
  99948. +# cacosh
  99949. +Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  99950. +double: 1
  99951. +float: 7
  99952. +idouble: 1
  99953. +ifloat: 7
  99954. +Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  99955. +double: 1
  99956. +float: 3
  99957. +idouble: 1
  99958. +ifloat: 3
  99959. +Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
  99960. +double: 1
  99961. +float: 1
  99962. +idouble: 1
  99963. +ifloat: 1
  99964. +
  99965. +# casin
  99966. +Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  99967. +double: 3
  99968. +float: 2
  99969. +idouble: 3
  99970. +ifloat: 2
  99971. +Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  99972. +float: 1
  99973. +ifloat: 1
  99974. +
  99975. +# casinh
  99976. +Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  99977. +double: 5
  99978. +float: 1
  99979. +idouble: 5
  99980. +ifloat: 1
  99981. +Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  99982. +double: 3
  99983. +float: 6
  99984. +idouble: 3
  99985. +ifloat: 6
  99986. +Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  99987. +double: 1
  99988. +idouble: 1
  99989. +Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  99990. +float: 1
  99991. +ifloat: 1
  99992. +
  99993. +# catan
  99994. +Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  99995. +float: 3
  99996. +ifloat: 3
  99997. +Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  99998. +double: 1
  99999. +float: 1
  100000. +idouble: 1
  100001. +ifloat: 1
  100002. +Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  100003. +float: 4
  100004. +ifloat: 4
  100005. +Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  100006. +double: 1
  100007. +idouble: 1
  100008. +
  100009. +# catanh
  100010. +Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  100011. +double: 4
  100012. +idouble: 4
  100013. +Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  100014. +float: 4
  100015. +ifloat: 4
  100016. +Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  100017. +float: 1
  100018. +ifloat: 1
  100019. +Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  100020. +double: 1
  100021. +float: 6
  100022. +idouble: 1
  100023. +ifloat: 6
  100024. +
  100025. +# cbrt
  100026. +Test "cbrt (-27.0) == -3.0":
  100027. +double: 1
  100028. +idouble: 1
  100029. +Test "cbrt (0.970299) == 0.99":
  100030. +double: 1
  100031. +idouble: 1
  100032. +
  100033. +# ccos
  100034. +Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
  100035. +float: 1
  100036. +ifloat: 1
  100037. +Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  100038. +double: 1
  100039. +idouble: 1
  100040. +Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  100041. +double: 1
  100042. +idouble: 1
  100043. +
  100044. +# ccosh
  100045. +Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  100046. +float: 1
  100047. +ifloat: 1
  100048. +Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  100049. +float: 1
  100050. +ifloat: 1
  100051. +Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  100052. +double: 1
  100053. +float: 1
  100054. +idouble: 1
  100055. +ifloat: 1
  100056. +Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  100057. +double: 1
  100058. +idouble: 1
  100059. +
  100060. +# cexp
  100061. +Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
  100062. +float: 1
  100063. +ifloat: 1
  100064. +Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  100065. +double: 1
  100066. +float: 1
  100067. +idouble: 1
  100068. +ifloat: 1
  100069. +Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  100070. +float: 1
  100071. +ifloat: 1
  100072. +
  100073. +# clog
  100074. +Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
  100075. +double: 1
  100076. +float: 3
  100077. +idouble: 1
  100078. +ifloat: 3
  100079. +
  100080. +# clog10
  100081. +Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
  100082. +float: 1
  100083. +ifloat: 1
  100084. +Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
  100085. +float: 1
  100086. +ifloat: 1
  100087. +Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
  100088. +double: 1
  100089. +float: 5
  100090. +idouble: 1
  100091. +ifloat: 5
  100092. +Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
  100093. +float: 1
  100094. +ifloat: 1
  100095. +Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
  100096. +float: 1
  100097. +ifloat: 1
  100098. +Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
  100099. +float: 1
  100100. +ifloat: 1
  100101. +Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
  100102. +float: 1
  100103. +ifloat: 1
  100104. +Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
  100105. +float: 1
  100106. +ifloat: 1
  100107. +Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
  100108. +float: 1
  100109. +ifloat: 1
  100110. +Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
  100111. +float: 1
  100112. +ifloat: 1
  100113. +Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
  100114. +float: 1
  100115. +ifloat: 1
  100116. +Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  100117. +double: 1
  100118. +float: 1
  100119. +idouble: 1
  100120. +ifloat: 1
  100121. +Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  100122. +double: 1
  100123. +idouble: 1
  100124. +Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
  100125. +float: 1
  100126. +ifloat: 1
  100127. +Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
  100128. +float: 1
  100129. +ifloat: 1
  100130. +Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
  100131. +float: 1
  100132. +ifloat: 1
  100133. +Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
  100134. +float: 1
  100135. +ifloat: 1
  100136. +
  100137. +# cos
  100138. +Test "cos (0.7) == 0.7648421872844884262":
  100139. +double: 1
  100140. +float: 1
  100141. +idouble: 1
  100142. +ifloat: 1
  100143. +Test "cos (M_PI_6l * 2.0) == 0.5":
  100144. +double: 1
  100145. +float: 0.5
  100146. +idouble: 1
  100147. +ifloat: 0.5
  100148. +Test "cos (M_PI_6l * 4.0) == -0.5":
  100149. +double: 2
  100150. +float: 1
  100151. +idouble: 2
  100152. +ifloat: 1
  100153. +Test "cos (pi/2) == 0":
  100154. +double: 0.2758
  100155. +float: 0.3667
  100156. +idouble: 0.2758
  100157. +ifloat: 0.3667
  100158. +
  100159. +# cpow
  100160. +Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  100161. +double: 1
  100162. +float: 4
  100163. +idouble: 1
  100164. +ifloat: 4
  100165. +Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  100166. +float: 2
  100167. +ifloat: 2
  100168. +Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
  100169. +double: 1.1031
  100170. +float: 1.5
  100171. +idouble: 1.1031
  100172. +ifloat: 1.5
  100173. +
  100174. +# csin
  100175. +Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
  100176. +float: 1
  100177. +ifloat: 1
  100178. +
  100179. +# csinh
  100180. +Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
  100181. +double: 1
  100182. +idouble: 1
  100183. +Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  100184. +float: 1
  100185. +ifloat: 1
  100186. +Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  100187. +float: 1
  100188. +ifloat: 1
  100189. +
  100190. +# csqrt
  100191. +Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
  100192. +float: 1
  100193. +ifloat: 1
  100194. +Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
  100195. +float: 1
  100196. +ifloat: 1
  100197. +Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  100198. +double: 1
  100199. +float: 1
  100200. +idouble: 1
  100201. +ifloat: 1
  100202. +Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  100203. +float: 1
  100204. +ifloat: 1
  100205. +
  100206. +# ctan
  100207. +Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
  100208. +double: 1
  100209. +idouble: 1
  100210. +Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  100211. +float: 1
  100212. +ifloat: 1
  100213. +Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  100214. +double: 1
  100215. +float: 1
  100216. +idouble: 1
  100217. +ifloat: 1
  100218. +
  100219. +# ctanh
  100220. +Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
  100221. +double: 1
  100222. +float: 2
  100223. +idouble: 1
  100224. +ifloat: 2
  100225. +Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
  100226. +float: 1
  100227. +ifloat: 1
  100228. +Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  100229. +double: 2
  100230. +float: 1
  100231. +idouble: 2
  100232. +ifloat: 1
  100233. +Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  100234. +double: 2
  100235. +float: 1
  100236. +idouble: 2
  100237. +ifloat: 1
  100238. +
  100239. +# erfc
  100240. +Test "erfc (0.7) == 0.32219880616258152702":
  100241. +double: 1
  100242. +idouble: 1
  100243. +Test "erfc (1.2) == 0.089686021770364619762":
  100244. +double: 2
  100245. +float: 2
  100246. +idouble: 2
  100247. +ifloat: 2
  100248. +Test "erfc (2.0) == 0.0046777349810472658379":
  100249. +double: 1
  100250. +idouble: 1
  100251. +Test "erfc (4.1) == 0.67000276540848983727e-8":
  100252. +double: 24
  100253. +float: 12
  100254. +idouble: 24
  100255. +ifloat: 12
  100256. +
  100257. +# exp10
  100258. +Test "exp10 (-1) == 0.1":
  100259. +double: 2
  100260. +float: 1
  100261. +idouble: 2
  100262. +ifloat: 1
  100263. +Test "exp10 (0.7) == 5.0118723362727228500":
  100264. +float: 1
  100265. +ifloat: 1
  100266. +Test "exp10 (3) == 1000":
  100267. +double: 6
  100268. +float: 2
  100269. +idouble: 6
  100270. +ifloat: 2
  100271. +
  100272. +# expm1
  100273. +Test "expm1 (1) == M_El - 1.0":
  100274. +float: 1
  100275. +ifloat: 1
  100276. +
  100277. +# fmod
  100278. +Test "fmod (-6.5, -2.3) == -1.9":
  100279. +double: 2
  100280. +float: 1
  100281. +idouble: 2
  100282. +ifloat: 1
  100283. +Test "fmod (-6.5, 2.3) == -1.9":
  100284. +double: 2
  100285. +float: 1
  100286. +idouble: 2
  100287. +ifloat: 1
  100288. +Test "fmod (6.5, -2.3) == 1.9":
  100289. +double: 2
  100290. +float: 1
  100291. +idouble: 2
  100292. +ifloat: 1
  100293. +Test "fmod (6.5, 2.3) == 1.9":
  100294. +double: 2
  100295. +float: 1
  100296. +idouble: 2
  100297. +ifloat: 1
  100298. +
  100299. +# hypot
  100300. +Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
  100301. +float: 1
  100302. +ifloat: 1
  100303. +Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
  100304. +float: 1
  100305. +ifloat: 1
  100306. +Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
  100307. +float: 1
  100308. +ifloat: 1
  100309. +Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
  100310. +float: 1
  100311. +ifloat: 1
  100312. +Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
  100313. +float: 1
  100314. +ifloat: 1
  100315. +Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
  100316. +double: 1
  100317. +idouble: 1
  100318. +Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
  100319. +float: 1
  100320. +ifloat: 1
  100321. +Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
  100322. +float: 1
  100323. +ifloat: 1
  100324. +Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
  100325. +float: 1
  100326. +ifloat: 1
  100327. +
  100328. +# j0
  100329. +Test "j0 (10.0) == -0.24593576445134833520":
  100330. +double: 2
  100331. +float: 1
  100332. +idouble: 2
  100333. +ifloat: 1
  100334. +Test "j0 (2.0) == 0.22389077914123566805":
  100335. +float: 2
  100336. +ifloat: 2
  100337. +Test "j0 (8.0) == 0.17165080713755390609":
  100338. +float: 1
  100339. +ifloat: 1
  100340. +
  100341. +# j1
  100342. +Test "j1 (10.0) == 0.043472746168861436670":
  100343. +float: 2
  100344. +ifloat: 2
  100345. +Test "j1 (2.0) == 0.57672480775687338720":
  100346. +double: 1
  100347. +idouble: 1
  100348. +Test "j1 (8.0) == 0.23463634685391462438":
  100349. +double: 1
  100350. +idouble: 1
  100351. +
  100352. +# jn
  100353. +Test "jn (0, 10.0) == -0.24593576445134833520":
  100354. +double: 2
  100355. +float: 1
  100356. +idouble: 2
  100357. +ifloat: 1
  100358. +Test "jn (0, 2.0) == 0.22389077914123566805":
  100359. +float: 2
  100360. +ifloat: 2
  100361. +Test "jn (0, 8.0) == 0.17165080713755390609":
  100362. +float: 1
  100363. +ifloat: 1
  100364. +Test "jn (1, 10.0) == 0.043472746168861436670":
  100365. +float: 2
  100366. +ifloat: 2
  100367. +Test "jn (1, 2.0) == 0.57672480775687338720":
  100368. +double: 1
  100369. +idouble: 1
  100370. +Test "jn (1, 8.0) == 0.23463634685391462438":
  100371. +double: 1
  100372. +idouble: 1
  100373. +Test "jn (10, 0.1) == 0.26905328954342155795e-19":
  100374. +double: 6
  100375. +float: 4
  100376. +idouble: 6
  100377. +ifloat: 4
  100378. +Test "jn (10, 0.7) == 0.75175911502153953928e-11":
  100379. +double: 3
  100380. +float: 1
  100381. +idouble: 3
  100382. +ifloat: 1
  100383. +Test "jn (10, 10.0) == 0.20748610663335885770":
  100384. +double: 4
  100385. +float: 3
  100386. +idouble: 4
  100387. +ifloat: 3
  100388. +Test "jn (10, 2.0) == 0.25153862827167367096e-6":
  100389. +float: 4
  100390. +ifloat: 4
  100391. +Test "jn (3, 0.1) == 0.000020820315754756261429":
  100392. +double: 1
  100393. +idouble: 1
  100394. +Test "jn (3, 0.7) == 0.0069296548267508408077":
  100395. +float: 1
  100396. +ifloat: 1
  100397. +Test "jn (3, 10.0) == 0.058379379305186812343":
  100398. +double: 3
  100399. +float: 1
  100400. +idouble: 3
  100401. +ifloat: 1
  100402. +Test "jn (3, 2.0) == 0.12894324947440205110":
  100403. +double: 1
  100404. +float: 2
  100405. +idouble: 1
  100406. +ifloat: 2
  100407. +
  100408. +# lgamma
  100409. +Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
  100410. +double: 1
  100411. +float: 1
  100412. +idouble: 1
  100413. +ifloat: 1
  100414. +Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
  100415. +double: 1
  100416. +float: 2
  100417. +idouble: 1
  100418. +ifloat: 2
  100419. +
  100420. +# log
  100421. +Test "log (0.7) == -0.35667494393873237891263871124118447":
  100422. +double: 1
  100423. +float: 1
  100424. +idouble: 1
  100425. +ifloat: 1
  100426. +
  100427. +# log10
  100428. +Test "log10 (0.7) == -0.15490195998574316929":
  100429. +double: 1
  100430. +float: 1
  100431. +idouble: 1
  100432. +ifloat: 1
  100433. +Test "log10 (e) == log10(e)":
  100434. +float: 1
  100435. +ifloat: 1
  100436. +
  100437. +# log1p
  100438. +Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
  100439. +double: 1
  100440. +float: 1
  100441. +idouble: 1
  100442. +ifloat: 1
  100443. +
  100444. +# log2
  100445. +Test "log2 (0.7) == -0.51457317282975824043":
  100446. +double: 1
  100447. +float: 1
  100448. +idouble: 1
  100449. +ifloat: 1
  100450. +
  100451. +# sincos
  100452. +Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res":
  100453. +double: 1
  100454. +float: 1
  100455. +idouble: 1
  100456. +ifloat: 1
  100457. +Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
  100458. +double: 1
  100459. +float: 0.5
  100460. +idouble: 1
  100461. +ifloat: 0.5
  100462. +Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res":
  100463. +double: 1
  100464. +float: 1
  100465. +idouble: 1
  100466. +ifloat: 1
  100467. +Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
  100468. +double: 0.2758
  100469. +float: 0.3667
  100470. +idouble: 0.2758
  100471. +ifloat: 0.3667
  100472. +Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res":
  100473. +float: 1
  100474. +ifloat: 1
  100475. +
  100476. +# sinh
  100477. +Test "sinh (0.7) == 0.75858370183953350346":
  100478. +double: 1
  100479. +float: 1
  100480. +idouble: 1
  100481. +ifloat: 1
  100482. +
  100483. +# tan
  100484. +Test "tan (pi/4) == 1":
  100485. +double: 0.5
  100486. +idouble: 0.5
  100487. +
  100488. +# tanh
  100489. +Test "tanh (0.7) == 0.60436777711716349631":
  100490. +double: 1
  100491. +float: 1
  100492. +idouble: 1
  100493. +ifloat: 1
  100494. +
  100495. +# tgamma
  100496. +Test "tgamma (-0.5) == -2 sqrt (pi)":
  100497. +double: 1
  100498. +float: 1
  100499. +idouble: 1
  100500. +ifloat: 1
  100501. +Test "tgamma (0.5) == sqrt (pi)":
  100502. +float: 1
  100503. +ifloat: 1
  100504. +Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
  100505. +double: 1
  100506. +float: 1
  100507. +idouble: 1
  100508. +ifloat: 1
  100509. +
  100510. +# y0
  100511. +Test "y0 (0.7) == -0.19066492933739506743":
  100512. +double: 2
  100513. +float: 1
  100514. +idouble: 2
  100515. +ifloat: 1
  100516. +Test "y0 (1.0) == 0.088256964215676957983":
  100517. +double: 2
  100518. +float: 1
  100519. +idouble: 2
  100520. +ifloat: 1
  100521. +Test "y0 (1.5) == 0.38244892379775884396":
  100522. +double: 2
  100523. +float: 1
  100524. +idouble: 2
  100525. +ifloat: 1
  100526. +Test "y0 (10.0) == 0.055671167283599391424":
  100527. +float: 1
  100528. +ifloat: 1
  100529. +Test "y0 (8.0) == 0.22352148938756622053":
  100530. +double: 1
  100531. +float: 1
  100532. +idouble: 1
  100533. +ifloat: 1
  100534. +
  100535. +# y1
  100536. +Test "y1 (0.1) == -6.4589510947020269877":
  100537. +double: 1
  100538. +idouble: 1
  100539. +Test "y1 (0.7) == -1.1032498719076333697":
  100540. +double: 1
  100541. +float: 1
  100542. +idouble: 1
  100543. +ifloat: 1
  100544. +Test "y1 (1.5) == -0.41230862697391129595":
  100545. +float: 1
  100546. +ifloat: 1
  100547. +Test "y1 (10.0) == 0.24901542420695388392":
  100548. +double: 3
  100549. +float: 1
  100550. +idouble: 3
  100551. +ifloat: 1
  100552. +Test "y1 (2.0) == -0.10703243154093754689":
  100553. +double: 1
  100554. +float: 1
  100555. +idouble: 1
  100556. +ifloat: 1
  100557. +Test "y1 (8.0) == -0.15806046173124749426":
  100558. +double: 1
  100559. +float: 2
  100560. +idouble: 1
  100561. +ifloat: 2
  100562. +
  100563. +# yn
  100564. +Test "yn (0, 0.7) == -0.19066492933739506743":
  100565. +double: 2
  100566. +float: 1
  100567. +idouble: 2
  100568. +ifloat: 1
  100569. +Test "yn (0, 1.0) == 0.088256964215676957983":
  100570. +double: 2
  100571. +float: 1
  100572. +idouble: 2
  100573. +ifloat: 1
  100574. +Test "yn (0, 1.5) == 0.38244892379775884396":
  100575. +double: 2
  100576. +float: 1
  100577. +idouble: 2
  100578. +ifloat: 1
  100579. +Test "yn (0, 10.0) == 0.055671167283599391424":
  100580. +float: 1
  100581. +ifloat: 1
  100582. +Test "yn (0, 8.0) == 0.22352148938756622053":
  100583. +double: 1
  100584. +float: 1
  100585. +idouble: 1
  100586. +ifloat: 1
  100587. +Test "yn (1, 0.1) == -6.4589510947020269877":
  100588. +double: 1
  100589. +idouble: 1
  100590. +Test "yn (1, 0.7) == -1.1032498719076333697":
  100591. +double: 1
  100592. +float: 1
  100593. +idouble: 1
  100594. +ifloat: 1
  100595. +Test "yn (1, 1.5) == -0.41230862697391129595":
  100596. +float: 1
  100597. +ifloat: 1
  100598. +Test "yn (1, 10.0) == 0.24901542420695388392":
  100599. +double: 3
  100600. +float: 1
  100601. +idouble: 3
  100602. +ifloat: 1
  100603. +Test "yn (1, 2.0) == -0.10703243154093754689":
  100604. +double: 1
  100605. +float: 1
  100606. +idouble: 1
  100607. +ifloat: 1
  100608. +Test "yn (1, 8.0) == -0.15806046173124749426":
  100609. +double: 1
  100610. +float: 2
  100611. +idouble: 1
  100612. +ifloat: 2
  100613. +Test "yn (10, 0.1) == -0.11831335132045197885e19":
  100614. +double: 2
  100615. +float: 2
  100616. +idouble: 2
  100617. +ifloat: 2
  100618. +Test "yn (10, 0.7) == -0.42447194260703866924e10":
  100619. +double: 3
  100620. +idouble: 3
  100621. +Test "yn (10, 1.0) == -0.12161801427868918929e9":
  100622. +double: 1
  100623. +idouble: 1
  100624. +Test "yn (10, 10.0) == -0.35981415218340272205":
  100625. +double: 1
  100626. +float: 1
  100627. +idouble: 1
  100628. +ifloat: 1
  100629. +Test "yn (10, 2.0) == -129184.54220803928264":
  100630. +double: 2
  100631. +idouble: 2
  100632. +Test "yn (3, 0.1) == -5099.3323786129048894":
  100633. +double: 1
  100634. +float: 1
  100635. +idouble: 1
  100636. +ifloat: 1
  100637. +Test "yn (3, 0.7) == -15.819479052819633505":
  100638. +double: 3
  100639. +float: 1
  100640. +idouble: 3
  100641. +ifloat: 1
  100642. +Test "yn (3, 10.0) == -0.25136265718383732978":
  100643. +double: 1
  100644. +float: 1
  100645. +idouble: 1
  100646. +ifloat: 1
  100647. +Test "yn (3, 2.0) == -1.1277837768404277861":
  100648. +double: 1
  100649. +idouble: 1
  100650. +
  100651. +# Maximal error of functions:
  100652. +Function: "asin":
  100653. +double: 1
  100654. +float: 2
  100655. +idouble: 1
  100656. +ifloat: 2
  100657. +
  100658. +Function: "atan2":
  100659. +float: 4
  100660. +ifloat: 4
  100661. +
  100662. +Function: "atanh":
  100663. +double: 1
  100664. +idouble: 1
  100665. +
  100666. +Function: "cabs":
  100667. +double: 1
  100668. +float: 1
  100669. +idouble: 1
  100670. +ifloat: 1
  100671. +
  100672. +Function: Real part of "cacos":
  100673. +double: 1
  100674. +float: 1
  100675. +idouble: 1
  100676. +ifloat: 1
  100677. +
  100678. +Function: Imaginary part of "cacos":
  100679. +float: 1
  100680. +ifloat: 1
  100681. +
  100682. +Function: Real part of "cacosh":
  100683. +double: 1
  100684. +float: 7
  100685. +idouble: 1
  100686. +ifloat: 7
  100687. +
  100688. +Function: Imaginary part of "cacosh":
  100689. +double: 1
  100690. +float: 3
  100691. +idouble: 1
  100692. +ifloat: 3
  100693. +
  100694. +Function: Real part of "casin":
  100695. +double: 3
  100696. +float: 2
  100697. +idouble: 3
  100698. +ifloat: 2
  100699. +
  100700. +Function: Imaginary part of "casin":
  100701. +float: 1
  100702. +ifloat: 1
  100703. +
  100704. +Function: Real part of "casinh":
  100705. +double: 5
  100706. +float: 1
  100707. +idouble: 5
  100708. +ifloat: 1
  100709. +
  100710. +Function: Imaginary part of "casinh":
  100711. +double: 3
  100712. +float: 6
  100713. +idouble: 3
  100714. +ifloat: 6
  100715. +
  100716. +Function: Real part of "catan":
  100717. +float: 4
  100718. +ifloat: 4
  100719. +
  100720. +Function: Imaginary part of "catan":
  100721. +double: 1
  100722. +float: 1
  100723. +idouble: 1
  100724. +ifloat: 1
  100725. +
  100726. +Function: Real part of "catanh":
  100727. +double: 4
  100728. +float: 1
  100729. +idouble: 4
  100730. +ifloat: 1
  100731. +
  100732. +Function: Imaginary part of "catanh":
  100733. +double: 1
  100734. +float: 6
  100735. +idouble: 1
  100736. +ifloat: 6
  100737. +
  100738. +Function: "cbrt":
  100739. +double: 1
  100740. +idouble: 1
  100741. +
  100742. +Function: Real part of "ccos":
  100743. +double: 1
  100744. +idouble: 1
  100745. +
  100746. +Function: Imaginary part of "ccos":
  100747. +double: 1
  100748. +float: 1
  100749. +idouble: 1
  100750. +ifloat: 1
  100751. +
  100752. +Function: Real part of "ccosh":
  100753. +double: 1
  100754. +float: 1
  100755. +idouble: 1
  100756. +ifloat: 1
  100757. +
  100758. +Function: Imaginary part of "ccosh":
  100759. +double: 1
  100760. +float: 1
  100761. +idouble: 1
  100762. +ifloat: 1
  100763. +
  100764. +Function: Real part of "cexp":
  100765. +double: 1
  100766. +float: 1
  100767. +idouble: 1
  100768. +ifloat: 1
  100769. +
  100770. +Function: Imaginary part of "cexp":
  100771. +float: 1
  100772. +ifloat: 1
  100773. +
  100774. +Function: Imaginary part of "clog":
  100775. +double: 1
  100776. +float: 3
  100777. +idouble: 1
  100778. +ifloat: 3
  100779. +
  100780. +Function: Real part of "clog10":
  100781. +double: 1
  100782. +float: 1
  100783. +idouble: 1
  100784. +ifloat: 1
  100785. +
  100786. +Function: Imaginary part of "clog10":
  100787. +double: 1
  100788. +float: 5
  100789. +idouble: 1
  100790. +ifloat: 5
  100791. +
  100792. +Function: "cos":
  100793. +double: 2
  100794. +float: 1
  100795. +idouble: 2
  100796. +ifloat: 1
  100797. +
  100798. +Function: Real part of "cpow":
  100799. +double: 1
  100800. +float: 4
  100801. +idouble: 1
  100802. +ifloat: 4
  100803. +
  100804. +Function: Imaginary part of "cpow":
  100805. +double: 1.1031
  100806. +float: 2
  100807. +idouble: 1.1031
  100808. +ifloat: 2
  100809. +
  100810. +Function: Imaginary part of "csin":
  100811. +float: 1
  100812. +ifloat: 1
  100813. +
  100814. +Function: Real part of "csinh":
  100815. +float: 1
  100816. +ifloat: 1
  100817. +
  100818. +Function: Imaginary part of "csinh":
  100819. +double: 1
  100820. +float: 1
  100821. +idouble: 1
  100822. +ifloat: 1
  100823. +
  100824. +Function: Real part of "csqrt":
  100825. +double: 1
  100826. +float: 1
  100827. +idouble: 1
  100828. +ifloat: 1
  100829. +
  100830. +Function: Imaginary part of "csqrt":
  100831. +float: 1
  100832. +ifloat: 1
  100833. +
  100834. +Function: Real part of "ctan":
  100835. +double: 1
  100836. +float: 1
  100837. +idouble: 1
  100838. +ifloat: 1
  100839. +
  100840. +Function: Imaginary part of "ctan":
  100841. +double: 1
  100842. +float: 1
  100843. +idouble: 1
  100844. +ifloat: 1
  100845. +
  100846. +Function: Real part of "ctanh":
  100847. +double: 2
  100848. +float: 2
  100849. +idouble: 2
  100850. +ifloat: 2
  100851. +
  100852. +Function: Imaginary part of "ctanh":
  100853. +double: 2
  100854. +float: 1
  100855. +idouble: 2
  100856. +ifloat: 1
  100857. +
  100858. +Function: "erfc":
  100859. +double: 24
  100860. +float: 12
  100861. +idouble: 24
  100862. +ifloat: 12
  100863. +
  100864. +Function: "exp10":
  100865. +double: 6
  100866. +float: 2
  100867. +idouble: 6
  100868. +ifloat: 2
  100869. +
  100870. +Function: "expm1":
  100871. +float: 1
  100872. +ifloat: 1
  100873. +
  100874. +Function: "fmod":
  100875. +double: 2
  100876. +float: 1
  100877. +idouble: 2
  100878. +ifloat: 1
  100879. +
  100880. +Function: "hypot":
  100881. +double: 1
  100882. +float: 1
  100883. +idouble: 1
  100884. +ifloat: 1
  100885. +
  100886. +Function: "j0":
  100887. +double: 2
  100888. +float: 2
  100889. +idouble: 2
  100890. +ifloat: 2
  100891. +
  100892. +Function: "j1":
  100893. +double: 1
  100894. +float: 2
  100895. +idouble: 1
  100896. +ifloat: 2
  100897. +
  100898. +Function: "jn":
  100899. +double: 6
  100900. +float: 4
  100901. +idouble: 6
  100902. +ifloat: 4
  100903. +
  100904. +Function: "lgamma":
  100905. +double: 1
  100906. +float: 2
  100907. +idouble: 1
  100908. +ifloat: 2
  100909. +
  100910. +Function: "log":
  100911. +double: 1
  100912. +float: 1
  100913. +idouble: 1
  100914. +ifloat: 1
  100915. +
  100916. +Function: "log10":
  100917. +double: 1
  100918. +float: 1
  100919. +idouble: 1
  100920. +ifloat: 1
  100921. +
  100922. +Function: "log1p":
  100923. +double: 1
  100924. +float: 1
  100925. +idouble: 1
  100926. +ifloat: 1
  100927. +
  100928. +Function: "log2":
  100929. +double: 1
  100930. +float: 1
  100931. +idouble: 1
  100932. +ifloat: 1
  100933. +
  100934. +Function: "sincos":
  100935. +double: 1
  100936. +float: 1
  100937. +idouble: 1
  100938. +ifloat: 1
  100939. +
  100940. +Function: "sinh":
  100941. +double: 1
  100942. +float: 1
  100943. +idouble: 1
  100944. +ifloat: 1
  100945. +
  100946. +Function: "tan":
  100947. +double: 0.5
  100948. +idouble: 0.5
  100949. +
  100950. +Function: "tanh":
  100951. +double: 1
  100952. +float: 1
  100953. +idouble: 1
  100954. +ifloat: 1
  100955. +
  100956. +Function: "tgamma":
  100957. +double: 1
  100958. +float: 1
  100959. +idouble: 1
  100960. +ifloat: 1
  100961. +
  100962. +Function: "y0":
  100963. +double: 2
  100964. +float: 1
  100965. +idouble: 2
  100966. +ifloat: 1
  100967. +
  100968. +Function: "y1":
  100969. +double: 3
  100970. +float: 2
  100971. +idouble: 3
  100972. +ifloat: 2
  100973. +
  100974. +Function: "yn":
  100975. +double: 3
  100976. +float: 2
  100977. +idouble: 3
  100978. +ifloat: 2
  100979. +
  100980. +# end of automatic generation
  100981. diff -Nur uClibc-0.9.33.2/test/math/libm-test-ulps-sh4 uClibc-git/test/math/libm-test-ulps-sh4
  100982. --- uClibc-0.9.33.2/test/math/libm-test-ulps-sh4 2012-05-15 09:20:09.000000000 +0200
  100983. +++ uClibc-git/test/math/libm-test-ulps-sh4 1970-01-01 01:00:00.000000000 +0100
  100984. @@ -1,1094 +0,0 @@
  100985. -# Begin of automatic generation
  100986. -
  100987. -# asin
  100988. -Test "asin (-0.5) == -pi/6":
  100989. -float: 2
  100990. -ifloat: 2
  100991. -Test "asin (0.5) == pi/6":
  100992. -float: 2
  100993. -ifloat: 2
  100994. -Test "asin (0.7) == 0.7753974966107530637":
  100995. -double: 1
  100996. -float: 2
  100997. -idouble: 1
  100998. -ifloat: 2
  100999. -
  101000. -# atan2
  101001. -Test "atan2 (0.7, -1.0) == 2.530866689200584621918884506789267":
  101002. -float: 3
  101003. -ifloat: 3
  101004. -Test "atan2 (-0.7, -1.0) == -2.530866689200584621918884506789267":
  101005. -float: 3
  101006. -ifloat: 3
  101007. -Test "atan2 (1.4, -0.93) == 2.1571487668237843754887415992772736":
  101008. -float: 4
  101009. -ifloat: 4
  101010. -
  101011. -# atanh
  101012. -Test "atanh (0.7) == 0.8673005276940531944":
  101013. -double: 1
  101014. -idouble: 1
  101015. -
  101016. -# cabs
  101017. -Test "cabs (-0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  101018. -float: 1
  101019. -ifloat: 1
  101020. -Test "cabs (-0.7 - 12.4 i) == 12.419742348374220601176836866763271":
  101021. -float: 1
  101022. -ifloat: 1
  101023. -Test "cabs (-12.4 + 0.7 i) == 12.419742348374220601176836866763271":
  101024. -float: 1
  101025. -ifloat: 1
  101026. -Test "cabs (-12.4 - 0.7 i) == 12.419742348374220601176836866763271":
  101027. -float: 1
  101028. -ifloat: 1
  101029. -Test "cabs (0.7 + 1.2 i) == 1.3892443989449804508432547041028554":
  101030. -double: 1
  101031. -idouble: 1
  101032. -Test "cabs (0.7 + 12.4 i) == 12.419742348374220601176836866763271":
  101033. -float: 1
  101034. -ifloat: 1
  101035. -
  101036. -# cacos
  101037. -Test "Real part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  101038. -double: 1
  101039. -float: 1
  101040. -idouble: 1
  101041. -ifloat: 1
  101042. -Test "Imaginary part of: cacos (0.7 + 1.2 i) == 1.1351827477151551088992008271819053 - 1.0927647857577371459105272080819308 i":
  101043. -float: 1
  101044. -ifloat: 1
  101045. -
  101046. -# cacosh
  101047. -Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  101048. -double: 1
  101049. -float: 7
  101050. -idouble: 1
  101051. -ifloat: 7
  101052. -Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
  101053. -double: 1
  101054. -float: 3
  101055. -idouble: 1
  101056. -ifloat: 3
  101057. -Test "Real part of: cacosh (0.7 + 1.2 i) == 1.0927647857577371459105272080819308 + 1.1351827477151551088992008271819053 i":
  101058. -double: 1
  101059. -float: 1
  101060. -idouble: 1
  101061. -ifloat: 1
  101062. -
  101063. -# casin
  101064. -Test "Real part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  101065. -double: 3
  101066. -float: 2
  101067. -idouble: 3
  101068. -ifloat: 2
  101069. -Test "Imaginary part of: casin (0.7 + 1.2 i) == 0.4356135790797415103321208644578462 + 1.0927647857577371459105272080819308 i":
  101070. -float: 1
  101071. -ifloat: 1
  101072. -
  101073. -# casinh
  101074. -Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  101075. -double: 5
  101076. -float: 1
  101077. -idouble: 5
  101078. -ifloat: 1
  101079. -Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
  101080. -double: 3
  101081. -float: 6
  101082. -idouble: 3
  101083. -ifloat: 6
  101084. -Test "Real part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  101085. -double: 1
  101086. -idouble: 1
  101087. -Test "Imaginary part of: casinh (0.7 + 1.2 i) == 0.97865459559367387689317593222160964 + 0.91135418953156011567903546856170941 i":
  101088. -float: 1
  101089. -ifloat: 1
  101090. -
  101091. -# catan
  101092. -Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  101093. -float: 3
  101094. -ifloat: 3
  101095. -Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
  101096. -double: 1
  101097. -float: 1
  101098. -idouble: 1
  101099. -ifloat: 1
  101100. -Test "Real part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  101101. -float: 4
  101102. -ifloat: 4
  101103. -Test "Imaginary part of: catan (0.7 + 1.2 i) == 1.0785743834118921877443707996386368 + 0.57705737765343067644394541889341712 i":
  101104. -double: 1
  101105. -idouble: 1
  101106. -
  101107. -# catanh
  101108. -Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  101109. -double: 4
  101110. -idouble: 4
  101111. -Test "Imaginary part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
  101112. -float: 4
  101113. -ifloat: 4
  101114. -Test "Real part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  101115. -float: 1
  101116. -ifloat: 1
  101117. -Test "Imaginary part of: catanh (0.7 + 1.2 i) == 0.2600749516525135959200648705635915 + 0.97024030779509898497385130162655963 i":
  101118. -double: 1
  101119. -float: 6
  101120. -idouble: 1
  101121. -ifloat: 6
  101122. -
  101123. -# cbrt
  101124. -Test "cbrt (-27.0) == -3.0":
  101125. -double: 1
  101126. -idouble: 1
  101127. -Test "cbrt (0.970299) == 0.99":
  101128. -double: 1
  101129. -idouble: 1
  101130. -
  101131. -# ccos
  101132. -Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
  101133. -float: 1
  101134. -ifloat: 1
  101135. -Test "Real part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  101136. -double: 1
  101137. -idouble: 1
  101138. -Test "Imaginary part of: ccos (0.7 + 1.2 i) == 1.3848657645312111080 - 0.97242170335830028619 i":
  101139. -double: 1
  101140. -idouble: 1
  101141. -
  101142. -# ccosh
  101143. -Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  101144. -float: 1
  101145. -ifloat: 1
  101146. -Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
  101147. -float: 1
  101148. -ifloat: 1
  101149. -Test "Real part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  101150. -double: 1
  101151. -float: 1
  101152. -idouble: 1
  101153. -ifloat: 1
  101154. -Test "Imaginary part of: ccosh (0.7 + 1.2 i) == 0.4548202223691477654 + 0.7070296600921537682 i":
  101155. -double: 1
  101156. -idouble: 1
  101157. -
  101158. -# cexp
  101159. -Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
  101160. -float: 1
  101161. -ifloat: 1
  101162. -Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  101163. -double: 1
  101164. -float: 1
  101165. -idouble: 1
  101166. -ifloat: 1
  101167. -Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i":
  101168. -float: 1
  101169. -ifloat: 1
  101170. -
  101171. -# clog
  101172. -Test "Imaginary part of: clog (-2 - 3 i) == 1.2824746787307683680267437207826593 - 2.1587989303424641704769327722648368 i":
  101173. -double: 1
  101174. -float: 3
  101175. -idouble: 1
  101176. -ifloat: 3
  101177. -
  101178. -# clog10
  101179. -Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
  101180. -float: 1
  101181. -ifloat: 1
  101182. -Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
  101183. -float: 1
  101184. -ifloat: 1
  101185. -Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
  101186. -double: 1
  101187. -float: 5
  101188. -idouble: 1
  101189. -ifloat: 5
  101190. -Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
  101191. -float: 1
  101192. -ifloat: 1
  101193. -Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
  101194. -float: 1
  101195. -ifloat: 1
  101196. -Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
  101197. -float: 1
  101198. -ifloat: 1
  101199. -Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
  101200. -float: 1
  101201. -ifloat: 1
  101202. -Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
  101203. -float: 1
  101204. -ifloat: 1
  101205. -Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
  101206. -float: 1
  101207. -ifloat: 1
  101208. -Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
  101209. -float: 1
  101210. -ifloat: 1
  101211. -Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
  101212. -float: 1
  101213. -ifloat: 1
  101214. -Test "Real part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  101215. -double: 1
  101216. -float: 1
  101217. -idouble: 1
  101218. -ifloat: 1
  101219. -Test "Imaginary part of: clog10 (0.7 + 1.2 i) == 0.1427786545038868803 + 0.4528483579352493248 i":
  101220. -double: 1
  101221. -idouble: 1
  101222. -Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
  101223. -float: 1
  101224. -ifloat: 1
  101225. -Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
  101226. -float: 1
  101227. -ifloat: 1
  101228. -Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
  101229. -float: 1
  101230. -ifloat: 1
  101231. -Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
  101232. -float: 1
  101233. -ifloat: 1
  101234. -
  101235. -# cos
  101236. -Test "cos (0.7) == 0.7648421872844884262":
  101237. -double: 1
  101238. -float: 1
  101239. -idouble: 1
  101240. -ifloat: 1
  101241. -Test "cos (M_PI_6l * 2.0) == 0.5":
  101242. -double: 1
  101243. -float: 0.5
  101244. -idouble: 1
  101245. -ifloat: 0.5
  101246. -Test "cos (M_PI_6l * 4.0) == -0.5":
  101247. -double: 2
  101248. -float: 1
  101249. -idouble: 2
  101250. -ifloat: 1
  101251. -Test "cos (pi/2) == 0":
  101252. -double: 0.2758
  101253. -float: 0.3667
  101254. -idouble: 0.2758
  101255. -ifloat: 0.3667
  101256. -
  101257. -# cpow
  101258. -Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  101259. -double: 1
  101260. -float: 4
  101261. -idouble: 1
  101262. -ifloat: 4
  101263. -Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
  101264. -float: 2
  101265. -ifloat: 2
  101266. -Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
  101267. -double: 1.1031
  101268. -float: 1.5
  101269. -idouble: 1.1031
  101270. -ifloat: 1.5
  101271. -
  101272. -# csin
  101273. -Test "Imaginary part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i":
  101274. -float: 1
  101275. -ifloat: 1
  101276. -
  101277. -# csinh
  101278. -Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
  101279. -double: 1
  101280. -idouble: 1
  101281. -Test "Real part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  101282. -float: 1
  101283. -ifloat: 1
  101284. -Test "Imaginary part of: csinh (0.7 + 1.2 i) == 0.27487868678117583582 + 1.1698665727426565139 i":
  101285. -float: 1
  101286. -ifloat: 1
  101287. -
  101288. -# csqrt
  101289. -Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
  101290. -float: 1
  101291. -ifloat: 1
  101292. -Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
  101293. -float: 1
  101294. -ifloat: 1
  101295. -Test "Real part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  101296. -double: 1
  101297. -float: 1
  101298. -idouble: 1
  101299. -ifloat: 1
  101300. -Test "Imaginary part of: csqrt (0.7 + 1.2 i) == 1.022067610030026450706487883081139 + 0.58704531296356521154977678719838035 i":
  101301. -float: 1
  101302. -ifloat: 1
  101303. -
  101304. -# ctan
  101305. -Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
  101306. -double: 1
  101307. -idouble: 1
  101308. -Test "Real part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  101309. -float: 1
  101310. -ifloat: 1
  101311. -Test "Imaginary part of: ctan (0.7 + 1.2 i) == 0.1720734197630349001 + 0.9544807059989405538 i":
  101312. -double: 1
  101313. -float: 1
  101314. -idouble: 1
  101315. -ifloat: 1
  101316. -
  101317. -# ctanh
  101318. -Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
  101319. -double: 1
  101320. -float: 2
  101321. -idouble: 1
  101322. -ifloat: 2
  101323. -Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
  101324. -float: 1
  101325. -ifloat: 1
  101326. -Test "Real part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  101327. -double: 2
  101328. -float: 1
  101329. -idouble: 2
  101330. -ifloat: 1
  101331. -Test "Imaginary part of: ctanh (0.7 + 1.2 i) == 1.3472197399061191630 + 0.4778641038326365540 i":
  101332. -double: 2
  101333. -float: 1
  101334. -idouble: 2
  101335. -ifloat: 1
  101336. -
  101337. -# erfc
  101338. -Test "erfc (0.7) == 0.32219880616258152702":
  101339. -double: 1
  101340. -idouble: 1
  101341. -Test "erfc (1.2) == 0.089686021770364619762":
  101342. -double: 2
  101343. -float: 2
  101344. -idouble: 2
  101345. -ifloat: 2
  101346. -Test "erfc (2.0) == 0.0046777349810472658379":
  101347. -double: 1
  101348. -idouble: 1
  101349. -Test "erfc (4.1) == 0.67000276540848983727e-8":
  101350. -double: 24
  101351. -float: 12
  101352. -idouble: 24
  101353. -ifloat: 12
  101354. -
  101355. -# exp10
  101356. -Test "exp10 (-1) == 0.1":
  101357. -double: 2
  101358. -float: 1
  101359. -idouble: 2
  101360. -ifloat: 1
  101361. -Test "exp10 (0.7) == 5.0118723362727228500":
  101362. -float: 1
  101363. -ifloat: 1
  101364. -Test "exp10 (3) == 1000":
  101365. -double: 6
  101366. -float: 2
  101367. -idouble: 6
  101368. -ifloat: 2
  101369. -
  101370. -# expm1
  101371. -Test "expm1 (1) == M_El - 1.0":
  101372. -float: 1
  101373. -ifloat: 1
  101374. -
  101375. -# fmod
  101376. -Test "fmod (-6.5, -2.3) == -1.9":
  101377. -double: 2
  101378. -float: 1
  101379. -idouble: 2
  101380. -ifloat: 1
  101381. -Test "fmod (-6.5, 2.3) == -1.9":
  101382. -double: 2
  101383. -float: 1
  101384. -idouble: 2
  101385. -ifloat: 1
  101386. -Test "fmod (6.5, -2.3) == 1.9":
  101387. -double: 2
  101388. -float: 1
  101389. -idouble: 2
  101390. -ifloat: 1
  101391. -Test "fmod (6.5, 2.3) == 1.9":
  101392. -double: 2
  101393. -float: 1
  101394. -idouble: 2
  101395. -ifloat: 1
  101396. -
  101397. -# hypot
  101398. -Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
  101399. -float: 1
  101400. -ifloat: 1
  101401. -Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
  101402. -float: 1
  101403. -ifloat: 1
  101404. -Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
  101405. -float: 1
  101406. -ifloat: 1
  101407. -Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
  101408. -float: 1
  101409. -ifloat: 1
  101410. -Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
  101411. -float: 1
  101412. -ifloat: 1
  101413. -Test "hypot (0.7, 1.2) == 1.3892443989449804508432547041028554":
  101414. -double: 1
  101415. -idouble: 1
  101416. -Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
  101417. -float: 1
  101418. -ifloat: 1
  101419. -Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
  101420. -float: 1
  101421. -ifloat: 1
  101422. -Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
  101423. -float: 1
  101424. -ifloat: 1
  101425. -
  101426. -# j0
  101427. -Test "j0 (10.0) == -0.24593576445134833520":
  101428. -double: 2
  101429. -float: 1
  101430. -idouble: 2
  101431. -ifloat: 1
  101432. -Test "j0 (2.0) == 0.22389077914123566805":
  101433. -float: 2
  101434. -ifloat: 2
  101435. -Test "j0 (8.0) == 0.17165080713755390609":
  101436. -float: 1
  101437. -ifloat: 1
  101438. -
  101439. -# j1
  101440. -Test "j1 (10.0) == 0.043472746168861436670":
  101441. -float: 2
  101442. -ifloat: 2
  101443. -Test "j1 (2.0) == 0.57672480775687338720":
  101444. -double: 1
  101445. -idouble: 1
  101446. -Test "j1 (8.0) == 0.23463634685391462438":
  101447. -double: 1
  101448. -idouble: 1
  101449. -
  101450. -# jn
  101451. -Test "jn (0, 10.0) == -0.24593576445134833520":
  101452. -double: 2
  101453. -float: 1
  101454. -idouble: 2
  101455. -ifloat: 1
  101456. -Test "jn (0, 2.0) == 0.22389077914123566805":
  101457. -float: 2
  101458. -ifloat: 2
  101459. -Test "jn (0, 8.0) == 0.17165080713755390609":
  101460. -float: 1
  101461. -ifloat: 1
  101462. -Test "jn (1, 10.0) == 0.043472746168861436670":
  101463. -float: 2
  101464. -ifloat: 2
  101465. -Test "jn (1, 2.0) == 0.57672480775687338720":
  101466. -double: 1
  101467. -idouble: 1
  101468. -Test "jn (1, 8.0) == 0.23463634685391462438":
  101469. -double: 1
  101470. -idouble: 1
  101471. -Test "jn (10, 0.1) == 0.26905328954342155795e-19":
  101472. -double: 6
  101473. -float: 4
  101474. -idouble: 6
  101475. -ifloat: 4
  101476. -Test "jn (10, 0.7) == 0.75175911502153953928e-11":
  101477. -double: 3
  101478. -float: 1
  101479. -idouble: 3
  101480. -ifloat: 1
  101481. -Test "jn (10, 10.0) == 0.20748610663335885770":
  101482. -double: 4
  101483. -float: 3
  101484. -idouble: 4
  101485. -ifloat: 3
  101486. -Test "jn (10, 2.0) == 0.25153862827167367096e-6":
  101487. -float: 4
  101488. -ifloat: 4
  101489. -Test "jn (3, 0.1) == 0.000020820315754756261429":
  101490. -double: 1
  101491. -idouble: 1
  101492. -Test "jn (3, 0.7) == 0.0069296548267508408077":
  101493. -float: 1
  101494. -ifloat: 1
  101495. -Test "jn (3, 10.0) == 0.058379379305186812343":
  101496. -double: 3
  101497. -float: 1
  101498. -idouble: 3
  101499. -ifloat: 1
  101500. -Test "jn (3, 2.0) == 0.12894324947440205110":
  101501. -double: 1
  101502. -float: 2
  101503. -idouble: 1
  101504. -ifloat: 2
  101505. -
  101506. -# lgamma
  101507. -Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
  101508. -double: 1
  101509. -float: 1
  101510. -idouble: 1
  101511. -ifloat: 1
  101512. -Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
  101513. -double: 1
  101514. -float: 2
  101515. -idouble: 1
  101516. -ifloat: 2
  101517. -
  101518. -# log
  101519. -Test "log (0.7) == -0.35667494393873237891263871124118447":
  101520. -double: 1
  101521. -float: 1
  101522. -idouble: 1
  101523. -ifloat: 1
  101524. -
  101525. -# log10
  101526. -Test "log10 (0.7) == -0.15490195998574316929":
  101527. -double: 1
  101528. -float: 1
  101529. -idouble: 1
  101530. -ifloat: 1
  101531. -Test "log10 (e) == log10(e)":
  101532. -float: 1
  101533. -ifloat: 1
  101534. -
  101535. -# log1p
  101536. -Test "log1p (-0.3) == -0.35667494393873237891263871124118447":
  101537. -double: 1
  101538. -float: 1
  101539. -idouble: 1
  101540. -ifloat: 1
  101541. -
  101542. -# log2
  101543. -Test "log2 (0.7) == -0.51457317282975824043":
  101544. -double: 1
  101545. -float: 1
  101546. -idouble: 1
  101547. -ifloat: 1
  101548. -
  101549. -# sincos
  101550. -Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res":
  101551. -double: 1
  101552. -float: 1
  101553. -idouble: 1
  101554. -ifloat: 1
  101555. -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
  101556. -double: 1
  101557. -float: 0.5
  101558. -idouble: 1
  101559. -ifloat: 0.5
  101560. -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res":
  101561. -double: 1
  101562. -float: 1
  101563. -idouble: 1
  101564. -ifloat: 1
  101565. -Test "sincos (pi/2, &sin_res, &cos_res) puts 0 in cos_res":
  101566. -double: 0.2758
  101567. -float: 0.3667
  101568. -idouble: 0.2758
  101569. -ifloat: 0.3667
  101570. -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res":
  101571. -float: 1
  101572. -ifloat: 1
  101573. -
  101574. -# sinh
  101575. -Test "sinh (0.7) == 0.75858370183953350346":
  101576. -double: 1
  101577. -float: 1
  101578. -idouble: 1
  101579. -ifloat: 1
  101580. -
  101581. -# tan
  101582. -Test "tan (pi/4) == 1":
  101583. -double: 0.5
  101584. -idouble: 0.5
  101585. -
  101586. -# tanh
  101587. -Test "tanh (0.7) == 0.60436777711716349631":
  101588. -double: 1
  101589. -float: 1
  101590. -idouble: 1
  101591. -ifloat: 1
  101592. -
  101593. -# tgamma
  101594. -Test "tgamma (-0.5) == -2 sqrt (pi)":
  101595. -double: 1
  101596. -float: 1
  101597. -idouble: 1
  101598. -ifloat: 1
  101599. -Test "tgamma (0.5) == sqrt (pi)":
  101600. -float: 1
  101601. -ifloat: 1
  101602. -Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
  101603. -double: 1
  101604. -float: 1
  101605. -idouble: 1
  101606. -ifloat: 1
  101607. -
  101608. -# y0
  101609. -Test "y0 (0.7) == -0.19066492933739506743":
  101610. -double: 2
  101611. -float: 1
  101612. -idouble: 2
  101613. -ifloat: 1
  101614. -Test "y0 (1.0) == 0.088256964215676957983":
  101615. -double: 2
  101616. -float: 1
  101617. -idouble: 2
  101618. -ifloat: 1
  101619. -Test "y0 (1.5) == 0.38244892379775884396":
  101620. -double: 2
  101621. -float: 1
  101622. -idouble: 2
  101623. -ifloat: 1
  101624. -Test "y0 (10.0) == 0.055671167283599391424":
  101625. -float: 1
  101626. -ifloat: 1
  101627. -Test "y0 (8.0) == 0.22352148938756622053":
  101628. -double: 1
  101629. -float: 1
  101630. -idouble: 1
  101631. -ifloat: 1
  101632. -
  101633. -# y1
  101634. -Test "y1 (0.1) == -6.4589510947020269877":
  101635. -double: 1
  101636. -idouble: 1
  101637. -Test "y1 (0.7) == -1.1032498719076333697":
  101638. -double: 1
  101639. -float: 1
  101640. -idouble: 1
  101641. -ifloat: 1
  101642. -Test "y1 (1.5) == -0.41230862697391129595":
  101643. -float: 1
  101644. -ifloat: 1
  101645. -Test "y1 (10.0) == 0.24901542420695388392":
  101646. -double: 3
  101647. -float: 1
  101648. -idouble: 3
  101649. -ifloat: 1
  101650. -Test "y1 (2.0) == -0.10703243154093754689":
  101651. -double: 1
  101652. -float: 1
  101653. -idouble: 1
  101654. -ifloat: 1
  101655. -Test "y1 (8.0) == -0.15806046173124749426":
  101656. -double: 1
  101657. -float: 2
  101658. -idouble: 1
  101659. -ifloat: 2
  101660. -
  101661. -# yn
  101662. -Test "yn (0, 0.7) == -0.19066492933739506743":
  101663. -double: 2
  101664. -float: 1
  101665. -idouble: 2
  101666. -ifloat: 1
  101667. -Test "yn (0, 1.0) == 0.088256964215676957983":
  101668. -double: 2
  101669. -float: 1
  101670. -idouble: 2
  101671. -ifloat: 1
  101672. -Test "yn (0, 1.5) == 0.38244892379775884396":
  101673. -double: 2
  101674. -float: 1
  101675. -idouble: 2
  101676. -ifloat: 1
  101677. -Test "yn (0, 10.0) == 0.055671167283599391424":
  101678. -float: 1
  101679. -ifloat: 1
  101680. -Test "yn (0, 8.0) == 0.22352148938756622053":
  101681. -double: 1
  101682. -float: 1
  101683. -idouble: 1
  101684. -ifloat: 1
  101685. -Test "yn (1, 0.1) == -6.4589510947020269877":
  101686. -double: 1
  101687. -idouble: 1
  101688. -Test "yn (1, 0.7) == -1.1032498719076333697":
  101689. -double: 1
  101690. -float: 1
  101691. -idouble: 1
  101692. -ifloat: 1
  101693. -Test "yn (1, 1.5) == -0.41230862697391129595":
  101694. -float: 1
  101695. -ifloat: 1
  101696. -Test "yn (1, 10.0) == 0.24901542420695388392":
  101697. -double: 3
  101698. -float: 1
  101699. -idouble: 3
  101700. -ifloat: 1
  101701. -Test "yn (1, 2.0) == -0.10703243154093754689":
  101702. -double: 1
  101703. -float: 1
  101704. -idouble: 1
  101705. -ifloat: 1
  101706. -Test "yn (1, 8.0) == -0.15806046173124749426":
  101707. -double: 1
  101708. -float: 2
  101709. -idouble: 1
  101710. -ifloat: 2
  101711. -Test "yn (10, 0.1) == -0.11831335132045197885e19":
  101712. -double: 2
  101713. -float: 2
  101714. -idouble: 2
  101715. -ifloat: 2
  101716. -Test "yn (10, 0.7) == -0.42447194260703866924e10":
  101717. -double: 3
  101718. -idouble: 3
  101719. -Test "yn (10, 1.0) == -0.12161801427868918929e9":
  101720. -double: 1
  101721. -idouble: 1
  101722. -Test "yn (10, 10.0) == -0.35981415218340272205":
  101723. -double: 1
  101724. -float: 1
  101725. -idouble: 1
  101726. -ifloat: 1
  101727. -Test "yn (10, 2.0) == -129184.54220803928264":
  101728. -double: 2
  101729. -idouble: 2
  101730. -Test "yn (3, 0.1) == -5099.3323786129048894":
  101731. -double: 1
  101732. -float: 1
  101733. -idouble: 1
  101734. -ifloat: 1
  101735. -Test "yn (3, 0.7) == -15.819479052819633505":
  101736. -double: 3
  101737. -float: 1
  101738. -idouble: 3
  101739. -ifloat: 1
  101740. -Test "yn (3, 10.0) == -0.25136265718383732978":
  101741. -double: 1
  101742. -float: 1
  101743. -idouble: 1
  101744. -ifloat: 1
  101745. -Test "yn (3, 2.0) == -1.1277837768404277861":
  101746. -double: 1
  101747. -idouble: 1
  101748. -
  101749. -# Maximal error of functions:
  101750. -Function: "asin":
  101751. -double: 1
  101752. -float: 2
  101753. -idouble: 1
  101754. -ifloat: 2
  101755. -
  101756. -Function: "atan2":
  101757. -float: 4
  101758. -ifloat: 4
  101759. -
  101760. -Function: "atanh":
  101761. -double: 1
  101762. -idouble: 1
  101763. -
  101764. -Function: "cabs":
  101765. -double: 1
  101766. -float: 1
  101767. -idouble: 1
  101768. -ifloat: 1
  101769. -
  101770. -Function: Real part of "cacos":
  101771. -double: 1
  101772. -float: 1
  101773. -idouble: 1
  101774. -ifloat: 1
  101775. -
  101776. -Function: Imaginary part of "cacos":
  101777. -float: 1
  101778. -ifloat: 1
  101779. -
  101780. -Function: Real part of "cacosh":
  101781. -double: 1
  101782. -float: 7
  101783. -idouble: 1
  101784. -ifloat: 7
  101785. -
  101786. -Function: Imaginary part of "cacosh":
  101787. -double: 1
  101788. -float: 3
  101789. -idouble: 1
  101790. -ifloat: 3
  101791. -
  101792. -Function: Real part of "casin":
  101793. -double: 3
  101794. -float: 2
  101795. -idouble: 3
  101796. -ifloat: 2
  101797. -
  101798. -Function: Imaginary part of "casin":
  101799. -float: 1
  101800. -ifloat: 1
  101801. -
  101802. -Function: Real part of "casinh":
  101803. -double: 5
  101804. -float: 1
  101805. -idouble: 5
  101806. -ifloat: 1
  101807. -
  101808. -Function: Imaginary part of "casinh":
  101809. -double: 3
  101810. -float: 6
  101811. -idouble: 3
  101812. -ifloat: 6
  101813. -
  101814. -Function: Real part of "catan":
  101815. -float: 4
  101816. -ifloat: 4
  101817. -
  101818. -Function: Imaginary part of "catan":
  101819. -double: 1
  101820. -float: 1
  101821. -idouble: 1
  101822. -ifloat: 1
  101823. -
  101824. -Function: Real part of "catanh":
  101825. -double: 4
  101826. -float: 1
  101827. -idouble: 4
  101828. -ifloat: 1
  101829. -
  101830. -Function: Imaginary part of "catanh":
  101831. -double: 1
  101832. -float: 6
  101833. -idouble: 1
  101834. -ifloat: 6
  101835. -
  101836. -Function: "cbrt":
  101837. -double: 1
  101838. -idouble: 1
  101839. -
  101840. -Function: Real part of "ccos":
  101841. -double: 1
  101842. -idouble: 1
  101843. -
  101844. -Function: Imaginary part of "ccos":
  101845. -double: 1
  101846. -float: 1
  101847. -idouble: 1
  101848. -ifloat: 1
  101849. -
  101850. -Function: Real part of "ccosh":
  101851. -double: 1
  101852. -float: 1
  101853. -idouble: 1
  101854. -ifloat: 1
  101855. -
  101856. -Function: Imaginary part of "ccosh":
  101857. -double: 1
  101858. -float: 1
  101859. -idouble: 1
  101860. -ifloat: 1
  101861. -
  101862. -Function: Real part of "cexp":
  101863. -double: 1
  101864. -float: 1
  101865. -idouble: 1
  101866. -ifloat: 1
  101867. -
  101868. -Function: Imaginary part of "cexp":
  101869. -float: 1
  101870. -ifloat: 1
  101871. -
  101872. -Function: Imaginary part of "clog":
  101873. -double: 1
  101874. -float: 3
  101875. -idouble: 1
  101876. -ifloat: 3
  101877. -
  101878. -Function: Real part of "clog10":
  101879. -double: 1
  101880. -float: 1
  101881. -idouble: 1
  101882. -ifloat: 1
  101883. -
  101884. -Function: Imaginary part of "clog10":
  101885. -double: 1
  101886. -float: 5
  101887. -idouble: 1
  101888. -ifloat: 5
  101889. -
  101890. -Function: "cos":
  101891. -double: 2
  101892. -float: 1
  101893. -idouble: 2
  101894. -ifloat: 1
  101895. -
  101896. -Function: Real part of "cpow":
  101897. -double: 1
  101898. -float: 4
  101899. -idouble: 1
  101900. -ifloat: 4
  101901. -
  101902. -Function: Imaginary part of "cpow":
  101903. -double: 1.1031
  101904. -float: 2
  101905. -idouble: 1.1031
  101906. -ifloat: 2
  101907. -
  101908. -Function: Imaginary part of "csin":
  101909. -float: 1
  101910. -ifloat: 1
  101911. -
  101912. -Function: Real part of "csinh":
  101913. -float: 1
  101914. -ifloat: 1
  101915. -
  101916. -Function: Imaginary part of "csinh":
  101917. -double: 1
  101918. -float: 1
  101919. -idouble: 1
  101920. -ifloat: 1
  101921. -
  101922. -Function: Real part of "csqrt":
  101923. -double: 1
  101924. -float: 1
  101925. -idouble: 1
  101926. -ifloat: 1
  101927. -
  101928. -Function: Imaginary part of "csqrt":
  101929. -float: 1
  101930. -ifloat: 1
  101931. -
  101932. -Function: Real part of "ctan":
  101933. -double: 1
  101934. -float: 1
  101935. -idouble: 1
  101936. -ifloat: 1
  101937. -
  101938. -Function: Imaginary part of "ctan":
  101939. -double: 1
  101940. -float: 1
  101941. -idouble: 1
  101942. -ifloat: 1
  101943. -
  101944. -Function: Real part of "ctanh":
  101945. -double: 2
  101946. -float: 2
  101947. -idouble: 2
  101948. -ifloat: 2
  101949. -
  101950. -Function: Imaginary part of "ctanh":
  101951. -double: 2
  101952. -float: 1
  101953. -idouble: 2
  101954. -ifloat: 1
  101955. -
  101956. -Function: "erfc":
  101957. -double: 24
  101958. -float: 12
  101959. -idouble: 24
  101960. -ifloat: 12
  101961. -
  101962. -Function: "exp10":
  101963. -double: 6
  101964. -float: 2
  101965. -idouble: 6
  101966. -ifloat: 2
  101967. -
  101968. -Function: "expm1":
  101969. -float: 1
  101970. -ifloat: 1
  101971. -
  101972. -Function: "fmod":
  101973. -double: 2
  101974. -float: 1
  101975. -idouble: 2
  101976. -ifloat: 1
  101977. -
  101978. -Function: "hypot":
  101979. -double: 1
  101980. -float: 1
  101981. -idouble: 1
  101982. -ifloat: 1
  101983. -
  101984. -Function: "j0":
  101985. -double: 2
  101986. -float: 2
  101987. -idouble: 2
  101988. -ifloat: 2
  101989. -
  101990. -Function: "j1":
  101991. -double: 1
  101992. -float: 2
  101993. -idouble: 1
  101994. -ifloat: 2
  101995. -
  101996. -Function: "jn":
  101997. -double: 6
  101998. -float: 4
  101999. -idouble: 6
  102000. -ifloat: 4
  102001. -
  102002. -Function: "lgamma":
  102003. -double: 1
  102004. -float: 2
  102005. -idouble: 1
  102006. -ifloat: 2
  102007. -
  102008. -Function: "log":
  102009. -double: 1
  102010. -float: 1
  102011. -idouble: 1
  102012. -ifloat: 1
  102013. -
  102014. -Function: "log10":
  102015. -double: 1
  102016. -float: 1
  102017. -idouble: 1
  102018. -ifloat: 1
  102019. -
  102020. -Function: "log1p":
  102021. -double: 1
  102022. -float: 1
  102023. -idouble: 1
  102024. -ifloat: 1
  102025. -
  102026. -Function: "log2":
  102027. -double: 1
  102028. -float: 1
  102029. -idouble: 1
  102030. -ifloat: 1
  102031. -
  102032. -Function: "sincos":
  102033. -double: 1
  102034. -float: 1
  102035. -idouble: 1
  102036. -ifloat: 1
  102037. -
  102038. -Function: "sinh":
  102039. -double: 1
  102040. -float: 1
  102041. -idouble: 1
  102042. -ifloat: 1
  102043. -
  102044. -Function: "tan":
  102045. -double: 0.5
  102046. -idouble: 0.5
  102047. -
  102048. -Function: "tanh":
  102049. -double: 1
  102050. -float: 1
  102051. -idouble: 1
  102052. -ifloat: 1
  102053. -
  102054. -Function: "tgamma":
  102055. -double: 1
  102056. -float: 1
  102057. -idouble: 1
  102058. -ifloat: 1
  102059. -
  102060. -Function: "y0":
  102061. -double: 2
  102062. -float: 1
  102063. -idouble: 2
  102064. -ifloat: 1
  102065. -
  102066. -Function: "y1":
  102067. -double: 3
  102068. -float: 2
  102069. -idouble: 3
  102070. -ifloat: 2
  102071. -
  102072. -Function: "yn":
  102073. -double: 3
  102074. -float: 2
  102075. -idouble: 3
  102076. -ifloat: 2
  102077. -
  102078. -# end of automatic generation
  102079. diff -Nur uClibc-0.9.33.2/test/math/libm-test-ulps-xtensa uClibc-git/test/math/libm-test-ulps-xtensa
  102080. --- uClibc-0.9.33.2/test/math/libm-test-ulps-xtensa 1970-01-01 01:00:00.000000000 +0100
  102081. +++ uClibc-git/test/math/libm-test-ulps-xtensa 2014-02-03 12:32:57.000000000 +0100
  102082. @@ -0,0 +1,129 @@
  102083. +# Begin of automatic generation
  102084. +
  102085. +# cos
  102086. +Test "cos (M_PI_6l * 2.0) == 0.5":
  102087. +double: 1
  102088. +idouble: 1
  102089. +Test "cos (M_PI_6l * 4.0) == -0.5":
  102090. +double: 2
  102091. +float: 1
  102092. +idouble: 2
  102093. +ifloat: 1
  102094. +
  102095. +# erf
  102096. +Test "erf (0.75) == 0.711155633653515131598937834591410777":
  102097. +double: 1
  102098. +idouble: 1
  102099. +Test "erf (1.25) == 0.922900128256458230136523481197281140":
  102100. +double: 1
  102101. +idouble: 1
  102102. +
  102103. +# erfc
  102104. +Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
  102105. +double: 1
  102106. +idouble: 1
  102107. +
  102108. +# exp
  102109. +Test "exp (1) == e":
  102110. +double: 1
  102111. +idouble: 1
  102112. +
  102113. +# expm1
  102114. +Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
  102115. +double: 1
  102116. +idouble: 1
  102117. +
  102118. +# hypot
  102119. +Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
  102120. +float: 1
  102121. +ifloat: 1
  102122. +Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
  102123. +float: 1
  102124. +ifloat: 1
  102125. +Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
  102126. +float: 1
  102127. +ifloat: 1
  102128. +Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
  102129. +float: 1
  102130. +ifloat: 1
  102131. +Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
  102132. +float: 1
  102133. +ifloat: 1
  102134. +Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
  102135. +float: 1
  102136. +ifloat: 1
  102137. +Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
  102138. +float: 1
  102139. +ifloat: 1
  102140. +Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
  102141. +float: 1
  102142. +ifloat: 1
  102143. +
  102144. +# lgamma
  102145. +Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
  102146. +double: 1
  102147. +float: 1
  102148. +idouble: 1
  102149. +ifloat: 1
  102150. +Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
  102151. +double: 1
  102152. +float: 2
  102153. +idouble: 1
  102154. +ifloat: 2
  102155. +
  102156. +# log10
  102157. +Test "log10 (0.75) == -0.124938736608299953132449886193870744":
  102158. +double: 1
  102159. +idouble: 1
  102160. +Test "log10 (e) == log10(e)":
  102161. +float: 1
  102162. +ifloat: 1
  102163. +
  102164. +# Maximal error of functions:
  102165. +Function: "cos":
  102166. +double: 2
  102167. +float: 1
  102168. +idouble: 2
  102169. +ifloat: 1
  102170. +
  102171. +Function: "erf":
  102172. +double: 1
  102173. +idouble: 1
  102174. +
  102175. +Function: "erfc":
  102176. +double: 1
  102177. +idouble: 1
  102178. +
  102179. +Function: "exp":
  102180. +double: 1
  102181. +idouble: 1
  102182. +
  102183. +Function: "expm1":
  102184. +double: 1
  102185. +idouble: 1
  102186. +
  102187. +Function: "hypot":
  102188. +float: 1
  102189. +ifloat: 1
  102190. +
  102191. +Function: "lgamma":
  102192. +double: 1
  102193. +float: 2
  102194. +idouble: 1
  102195. +ifloat: 2
  102196. +
  102197. +Function: "log":
  102198. +float: 1
  102199. +ifloat: 1
  102200. +
  102201. +Function: "log10":
  102202. +double: 1
  102203. +float: 1
  102204. +idouble: 1
  102205. +ifloat: 1
  102206. +
  102207. +Function: "tan":
  102208. +double: 1
  102209. +idouble: 1
  102210. +
  102211. +# end of automatic generation
  102212. diff -Nur uClibc-0.9.33.2/test/math/Makefile uClibc-git/test/math/Makefile
  102213. --- uClibc-0.9.33.2/test/math/Makefile 2012-05-15 09:20:09.000000000 +0200
  102214. +++ uClibc-git/test/math/Makefile 2014-02-03 12:32:57.000000000 +0100
  102215. @@ -2,6 +2,7 @@
  102216. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102217. top_builddir=../../
  102218. +top_srcdir=../../
  102219. include ../Rules.mak
  102220. -include Makefile.in
  102221. include ../Test.mak
  102222. diff -Nur uClibc-0.9.33.2/test/math/Makefile.in uClibc-git/test/math/Makefile.in
  102223. --- uClibc-0.9.33.2/test/math/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  102224. +++ uClibc-git/test/math/Makefile.in 2014-02-23 19:06:59.000000000 +0100
  102225. @@ -1,14 +1,16 @@
  102226. # uClibc math tests
  102227. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102228. -TESTS := basic-test tst-definitions test-fpucw test-float test-ifloat test-double test-idouble \
  102229. - rint signgam ilogb
  102230. # gamma (removed from TESTS, need to add "small errors are ok" machinery there)
  102231. -ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),y)
  102232. -TESTS += test-ldouble test-ildoubl compile_test c99_test
  102233. +TESTS_DISABLED := gamma
  102234. +ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),)
  102235. +TESTS_DISABLED += test-ldouble test-ildoubl compile_test c99_test
  102236. else
  102237. CFLAGS_basic-test := -DNO_LONG_DOUBLE
  102238. endif
  102239. +ifeq ($(DO_C99_MATH),)
  102240. +TESTS_DISABLED += test-float test-ifloat test-double test-idouble rint signgam ilogb
  102241. +endif
  102242. DODIFF_rint := 1
  102243. DODIFF_signgam := 1
  102244. @@ -23,7 +25,8 @@
  102245. PERL := /usr/bin/perl
  102246. -$(TESTS): libm-test.c
  102247. +MDEPS := $(wildcard test-*.c)
  102248. +$(MDEPS): libm-test.c
  102249. libm-test.c: libm-test-ulps-$(TARGET_ARCH) libm-test.inc gen-libm-test.pl
  102250. $(Q)$(PERL) ./gen-libm-test.pl -u libm-test-ulps-$(TARGET_ARCH) ./libm-test.inc -o "." 2>&1 > /dev/null
  102251. diff -Nur uClibc-0.9.33.2/test/math/test-double.c uClibc-git/test/math/test-double.c
  102252. --- uClibc-0.9.33.2/test/math/test-double.c 2012-05-15 09:20:09.000000000 +0200
  102253. +++ uClibc-git/test/math/test-double.c 2014-02-03 12:32:57.000000000 +0100
  102254. @@ -13,9 +13,8 @@
  102255. Lesser General Public License for more details.
  102256. You should have received a copy of the GNU Lesser General Public
  102257. - License along with the GNU C Library; if not, write to the Free
  102258. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102259. - 02111-1307 USA. */
  102260. + License along with the GNU C Library; if not, see
  102261. + <http://www.gnu.org/licenses/>. */
  102262. #define FUNC(function) function
  102263. #define FLOAT double
  102264. diff -Nur uClibc-0.9.33.2/test/math/test-float.c uClibc-git/test/math/test-float.c
  102265. --- uClibc-0.9.33.2/test/math/test-float.c 2012-05-15 09:20:09.000000000 +0200
  102266. +++ uClibc-git/test/math/test-float.c 2014-02-03 12:32:57.000000000 +0100
  102267. @@ -13,9 +13,8 @@
  102268. Lesser General Public License for more details.
  102269. You should have received a copy of the GNU Lesser General Public
  102270. - License along with the GNU C Library; if not, write to the Free
  102271. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102272. - 02111-1307 USA. */
  102273. + License along with the GNU C Library; if not, see
  102274. + <http://www.gnu.org/licenses/>. */
  102275. #define FUNC(function) function ## f
  102276. #define FLOAT float
  102277. diff -Nur uClibc-0.9.33.2/test/math/test-fpucw.c uClibc-git/test/math/test-fpucw.c
  102278. --- uClibc-0.9.33.2/test/math/test-fpucw.c 2012-05-15 09:20:09.000000000 +0200
  102279. +++ uClibc-git/test/math/test-fpucw.c 2014-02-03 12:32:57.000000000 +0100
  102280. @@ -13,9 +13,8 @@
  102281. Lesser General Public License for more details.
  102282. You should have received a copy of the GNU Lesser General Public
  102283. - License along with the GNU C Library; if not, write to the Free
  102284. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102285. - 02111-1307 USA. */
  102286. + License along with the GNU C Library; if not, see
  102287. + <http://www.gnu.org/licenses/>. */
  102288. #include <fpu_control.h>
  102289. #include <stdio.h>
  102290. diff -Nur uClibc-0.9.33.2/test/math/test-idouble.c uClibc-git/test/math/test-idouble.c
  102291. --- uClibc-0.9.33.2/test/math/test-idouble.c 2012-05-15 09:20:09.000000000 +0200
  102292. +++ uClibc-git/test/math/test-idouble.c 2014-02-03 12:32:57.000000000 +0100
  102293. @@ -13,9 +13,8 @@
  102294. Lesser General Public License for more details.
  102295. You should have received a copy of the GNU Lesser General Public
  102296. - License along with the GNU C Library; if not, write to the Free
  102297. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102298. - 02111-1307 USA. */
  102299. + License along with the GNU C Library; if not, see
  102300. + <http://www.gnu.org/licenses/>. */
  102301. #define FUNC(function) function
  102302. #define FLOAT double
  102303. diff -Nur uClibc-0.9.33.2/test/math/test-ifloat.c uClibc-git/test/math/test-ifloat.c
  102304. --- uClibc-0.9.33.2/test/math/test-ifloat.c 2012-05-15 09:20:09.000000000 +0200
  102305. +++ uClibc-git/test/math/test-ifloat.c 2014-02-03 12:32:57.000000000 +0100
  102306. @@ -13,9 +13,8 @@
  102307. Lesser General Public License for more details.
  102308. You should have received a copy of the GNU Lesser General Public
  102309. - License along with the GNU C Library; if not, write to the Free
  102310. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102311. - 02111-1307 USA. */
  102312. + License along with the GNU C Library; if not, see
  102313. + <http://www.gnu.org/licenses/>. */
  102314. #define FUNC(function) function ## f
  102315. #define FLOAT float
  102316. diff -Nur uClibc-0.9.33.2/test/math/test-ildoubl.c uClibc-git/test/math/test-ildoubl.c
  102317. --- uClibc-0.9.33.2/test/math/test-ildoubl.c 2012-05-15 09:20:09.000000000 +0200
  102318. +++ uClibc-git/test/math/test-ildoubl.c 2014-02-03 12:32:57.000000000 +0100
  102319. @@ -13,9 +13,8 @@
  102320. Lesser General Public License for more details.
  102321. You should have received a copy of the GNU Lesser General Public
  102322. - License along with the GNU C Library; if not, write to the Free
  102323. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102324. - 02111-1307 USA. */
  102325. + License along with the GNU C Library; if not, see
  102326. + <http://www.gnu.org/licenses/>. */
  102327. #define FUNC(function) function##l
  102328. #define FLOAT long double
  102329. diff -Nur uClibc-0.9.33.2/test/math/test-ldouble.c uClibc-git/test/math/test-ldouble.c
  102330. --- uClibc-0.9.33.2/test/math/test-ldouble.c 2012-05-15 09:20:09.000000000 +0200
  102331. +++ uClibc-git/test/math/test-ldouble.c 2014-02-03 12:32:57.000000000 +0100
  102332. @@ -13,9 +13,8 @@
  102333. Lesser General Public License for more details.
  102334. You should have received a copy of the GNU Lesser General Public
  102335. - License along with the GNU C Library; if not, write to the Free
  102336. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102337. - 02111-1307 USA. */
  102338. + License along with the GNU C Library; if not, see
  102339. + <http://www.gnu.org/licenses/>. */
  102340. #define FUNC(function) function##l
  102341. #define FLOAT long double
  102342. diff -Nur uClibc-0.9.33.2/test/math/tst-definitions.c uClibc-git/test/math/tst-definitions.c
  102343. --- uClibc-0.9.33.2/test/math/tst-definitions.c 2012-05-15 09:20:09.000000000 +0200
  102344. +++ uClibc-git/test/math/tst-definitions.c 2014-02-03 12:32:57.000000000 +0100
  102345. @@ -13,9 +13,8 @@
  102346. Lesser General Public License for more details.
  102347. You should have received a copy of the GNU Lesser General Public
  102348. - License along with the GNU C Library; if not, write to the Free
  102349. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102350. - 02111-1307 USA. */
  102351. + License along with the GNU C Library; if not, see
  102352. + <http://www.gnu.org/licenses/>. */
  102353. #include <limits.h>
  102354. #include <math.h>
  102355. diff -Nur uClibc-0.9.33.2/test/misc/bug-glob2.c uClibc-git/test/misc/bug-glob2.c
  102356. --- uClibc-0.9.33.2/test/misc/bug-glob2.c 2012-05-15 09:20:09.000000000 +0200
  102357. +++ uClibc-git/test/misc/bug-glob2.c 2014-02-03 12:32:57.000000000 +0100
  102358. @@ -14,9 +14,8 @@
  102359. Lesser General Public License for more details.
  102360. You should have received a copy of the GNU Lesser General Public
  102361. - License along with the GNU C Library; if not, write to the Free
  102362. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102363. - 02111-1307 USA. */
  102364. + License along with the GNU C Library; if not, see
  102365. + <http://www.gnu.org/licenses/>. */
  102366. #include <errno.h>
  102367. #include <error.h>
  102368. diff -Nur uClibc-0.9.33.2/test/misc/Makefile uClibc-git/test/misc/Makefile
  102369. --- uClibc-0.9.33.2/test/misc/Makefile 2012-05-15 09:20:09.000000000 +0200
  102370. +++ uClibc-git/test/misc/Makefile 2014-02-03 12:32:57.000000000 +0100
  102371. @@ -2,6 +2,7 @@
  102372. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102373. top_builddir=../../
  102374. +top_srcdir=../../
  102375. include ../Rules.mak
  102376. -include Makefile.in
  102377. include ../Test.mak
  102378. diff -Nur uClibc-0.9.33.2/test/misc/Makefile.in uClibc-git/test/misc/Makefile.in
  102379. --- uClibc-0.9.33.2/test/misc/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  102380. +++ uClibc-git/test/misc/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  102381. @@ -4,11 +4,18 @@
  102382. TESTS_DISABLED := outb tst-fnmatch bug-glob1 tst-gnuglob
  102383. ifeq ($(UCLIBC_HAS_LFS),)
  102384. TESTS_DISABLED += dirent64
  102385. +TESTS_DISABLED += tst-statfs # assuming host has LFS on
  102386. endif
  102387. CFLAGS_dirent64 := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
  102388. DODIFF_dirent := 1
  102389. DODIFF_dirent64 := 1
  102390. +DODIFF_tst-statfs := 1
  102391. +DODIFF_tst-statvfs := 1
  102392. OPTS_bug-glob1 := $(PWD)
  102393. OPTS_tst-fnmatch := < tst-fnmatch.input
  102394. +
  102395. +MNTENTS = $(shell mount | while read dev on mp rest; do echo $$mp; done)
  102396. +OPTS_tst-statfs := $(MNTENTS)
  102397. +OPTS_tst-statvfs := $(MNTENTS)
  102398. diff -Nur uClibc-0.9.33.2/test/misc/opendir-tst1.c uClibc-git/test/misc/opendir-tst1.c
  102399. --- uClibc-0.9.33.2/test/misc/opendir-tst1.c 2012-05-15 09:20:09.000000000 +0200
  102400. +++ uClibc-git/test/misc/opendir-tst1.c 2014-02-03 12:32:57.000000000 +0100
  102401. @@ -13,9 +13,8 @@
  102402. Lesser General Public License for more details.
  102403. You should have received a copy of the GNU Lesser General Public
  102404. - License along with the GNU C Library; if not, write to the Free
  102405. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102406. - 02111-1307 USA. */
  102407. + License along with the GNU C Library; if not, see
  102408. + <http://www.gnu.org/licenses/>. */
  102409. #include <dirent.h>
  102410. #include <errno.h>
  102411. diff -Nur uClibc-0.9.33.2/test/misc/tst-fnmatch.c uClibc-git/test/misc/tst-fnmatch.c
  102412. --- uClibc-0.9.33.2/test/misc/tst-fnmatch.c 2012-05-15 09:20:09.000000000 +0200
  102413. +++ uClibc-git/test/misc/tst-fnmatch.c 2014-02-03 12:32:57.000000000 +0100
  102414. @@ -13,9 +13,8 @@
  102415. Lesser General Public License for more details.
  102416. You should have received a copy of the GNU Lesser General Public
  102417. - License along with the GNU C Library; if not, write to the Free
  102418. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102419. - 02111-1307 USA. */
  102420. + License along with the GNU C Library; if not, see
  102421. + <http://www.gnu.org/licenses/>. */
  102422. #include <errno.h>
  102423. #include <error.h>
  102424. diff -Nur uClibc-0.9.33.2/test/misc/tst-fnmatch.input uClibc-git/test/misc/tst-fnmatch.input
  102425. --- uClibc-0.9.33.2/test/misc/tst-fnmatch.input 2012-05-15 09:20:09.000000000 +0200
  102426. +++ uClibc-git/test/misc/tst-fnmatch.input 2014-02-03 12:32:57.000000000 +0100
  102427. @@ -15,9 +15,8 @@
  102428. # Lesser General Public License for more details.
  102429. # You should have received a copy of the GNU Lesser General Public
  102430. -# License along with the GNU C Library; if not, write to the Free
  102431. -# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102432. -# 02111-1307 USA.
  102433. +# License along with the GNU C Library; see the file COPYING.LIB. If
  102434. +# not, see <http://www.gnu.org/licenses/>.
  102435. # Derived from the IEEE 2003.2 text. The standard only contains some
  102436. diff -Nur uClibc-0.9.33.2/test/misc/tst-gnuglob.c uClibc-git/test/misc/tst-gnuglob.c
  102437. --- uClibc-0.9.33.2/test/misc/tst-gnuglob.c 2012-05-15 09:20:09.000000000 +0200
  102438. +++ uClibc-git/test/misc/tst-gnuglob.c 2014-02-03 12:32:57.000000000 +0100
  102439. @@ -15,9 +15,8 @@
  102440. Lesser General Public License for more details.
  102441. You should have received a copy of the GNU Lesser General Public
  102442. - License along with the GNU C Library; if not, write to the Free
  102443. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102444. - 02111-1307 USA. */
  102445. + License along with the GNU C Library; if not, see
  102446. + <http://www.gnu.org/licenses/>. */
  102447. #include <dirent.h>
  102448. #include <errno.h>
  102449. diff -Nur uClibc-0.9.33.2/test/misc/tst-inotify.c uClibc-git/test/misc/tst-inotify.c
  102450. --- uClibc-0.9.33.2/test/misc/tst-inotify.c 1970-01-01 01:00:00.000000000 +0100
  102451. +++ uClibc-git/test/misc/tst-inotify.c 2014-02-03 12:32:57.000000000 +0100
  102452. @@ -0,0 +1,66 @@
  102453. +/* vi: set sw=4 ts=4 sts=4: */
  102454. +/*
  102455. + * inotify test for uClibc
  102456. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  102457. + *
  102458. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102459. + */
  102460. +
  102461. +#include <stdio.h>
  102462. +#include <stdlib.h>
  102463. +#include <string.h>
  102464. +#include <unistd.h>
  102465. +#include <errno.h>
  102466. +#include <error.h>
  102467. +#include <inttypes.h>
  102468. +#include <sys/inotify.h>
  102469. +#include <sys/fcntl.h>
  102470. +
  102471. +static int
  102472. +do_test(void)
  102473. +{
  102474. + int ifd, fd, ret, result = 0;
  102475. + struct inotify_event e;
  102476. + char tfile[] = "/tmp/inotify.XXXXXX";
  102477. +
  102478. + fd = mkstemp(tfile);
  102479. + close(fd);
  102480. +
  102481. + ifd = inotify_init1(IN_NONBLOCK);
  102482. + if (ifd < 0) {
  102483. + perror("inotify_init1()");
  102484. + result = 1;
  102485. + }
  102486. + if (inotify_add_watch(ifd, tfile, IN_DELETE_SELF) < 0) {
  102487. + perror("inotify_add_watch()");
  102488. + result = 1;
  102489. + }
  102490. +
  102491. + /* nonblocking inotify should return immediately with no events */
  102492. + ret = read(ifd, &e, sizeof(e));
  102493. + if (ret != -1 || errno != EAGAIN) {
  102494. + error(0, 0, "first read() returned %d", ret);
  102495. + result = 1;
  102496. + }
  102497. +
  102498. + /* generate an event */
  102499. + unlink(tfile);
  102500. +
  102501. + /* now check whether our event was seen */
  102502. + ret = read(ifd, &e, sizeof(e));
  102503. + if (ret != sizeof(e)) {
  102504. + error(0, 0, "second read() returned %d", ret);
  102505. + result = 1;
  102506. + }
  102507. +
  102508. + if (!(e.mask & IN_DELETE_SELF)) {
  102509. + error(0, 0, "incorrect event mask: %" PRIx32, e.mask);
  102510. + result = 1;
  102511. + }
  102512. +
  102513. + return result;
  102514. +}
  102515. +
  102516. +#define TIMEOUT 5
  102517. +#define TEST_FUNCTION do_test ()
  102518. +#include "../test-skeleton.c"
  102519. diff -Nur uClibc-0.9.33.2/test/misc/tst-statfs.c uClibc-git/test/misc/tst-statfs.c
  102520. --- uClibc-0.9.33.2/test/misc/tst-statfs.c 1970-01-01 01:00:00.000000000 +0100
  102521. +++ uClibc-git/test/misc/tst-statfs.c 2014-02-03 12:32:57.000000000 +0100
  102522. @@ -0,0 +1,31 @@
  102523. +#include <sys/vfs.h>
  102524. +#include <errno.h>
  102525. +#include <stdio.h>
  102526. +#include <stdlib.h>
  102527. +#include <string.h>
  102528. +
  102529. +int
  102530. +main(int argc, char* argv[])
  102531. +{
  102532. + struct statfs s;
  102533. + int ret = 0, i;
  102534. +
  102535. + for (i = 1; i < argc; i++) {
  102536. + if (statfs(argv[i], &s) != 0) {
  102537. + fprintf(stderr, "%s: %s: statfs failed. %s\n",
  102538. + *argv, argv[i], strerror(errno));
  102539. + exit(EXIT_FAILURE);
  102540. + }
  102541. + ++ret;
  102542. + printf("statfs %s:\n\tblocks=%lld\n\tblkfree=%lld\n\tbsize=%d\n",
  102543. + argv[i], s.f_blocks, s.f_bfree, s.f_bsize);
  102544. +#ifdef _STATFS_F_FRSIZE
  102545. + printf("\tfrsize=%lld\n", s.f_frsize);
  102546. +#elif defined __mips__
  102547. + printf("\tfrsize=mips, unsupported?\n");
  102548. +#else
  102549. +# error no _STATFS_F_FRSIZE
  102550. +#endif
  102551. + }
  102552. + exit(ret ? EXIT_SUCCESS : EXIT_FAILURE);
  102553. +}
  102554. diff -Nur uClibc-0.9.33.2/test/misc/tst-statvfs.c uClibc-git/test/misc/tst-statvfs.c
  102555. --- uClibc-0.9.33.2/test/misc/tst-statvfs.c 1970-01-01 01:00:00.000000000 +0100
  102556. +++ uClibc-git/test/misc/tst-statvfs.c 2014-02-03 12:32:57.000000000 +0100
  102557. @@ -0,0 +1,26 @@
  102558. +#include <sys/statvfs.h>
  102559. +#include <errno.h>
  102560. +#include <stdio.h>
  102561. +#include <stdlib.h>
  102562. +#include <string.h>
  102563. +
  102564. +int
  102565. +main(int argc, char* argv[])
  102566. +{
  102567. + struct statvfs s;
  102568. + int i;
  102569. +
  102570. + for (i = 1; i < argc; i++) {
  102571. + if (statvfs(argv[i], &s) != 0) {
  102572. + fprintf(stderr, "%s: %s: statvfs failed. %s\n",
  102573. + *argv, argv[i], strerror(errno));
  102574. + exit(EXIT_FAILURE);
  102575. + }
  102576. + printf("statvfs %s:\n\tblocks=%lld\n\tblkfree=%lld\n\tbsize=%d\n",
  102577. + argv[i], s.f_blocks, s.f_bfree, s.f_bsize);
  102578. +#if 1 // def _STATFS_F_FRSIZE
  102579. + printf("\tfrsize=%lld\n", s.f_frsize);
  102580. +#endif
  102581. + }
  102582. + exit(EXIT_SUCCESS);
  102583. +}
  102584. diff -Nur uClibc-0.9.33.2/test/misc/tst-utmp.c uClibc-git/test/misc/tst-utmp.c
  102585. --- uClibc-0.9.33.2/test/misc/tst-utmp.c 2012-05-15 09:20:09.000000000 +0200
  102586. +++ uClibc-git/test/misc/tst-utmp.c 2014-02-03 12:32:57.000000000 +0100
  102587. @@ -14,9 +14,8 @@
  102588. Lesser General Public License for more details.
  102589. You should have received a copy of the GNU Lesser General Public
  102590. - License along with the GNU C Library; if not, write to the Free
  102591. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102592. - 02111-1307 USA. */
  102593. + License along with the GNU C Library; if not, see
  102594. + <http://www.gnu.org/licenses/>. */
  102595. #include <errno.h>
  102596. #include <error.h>
  102597. diff -Nur uClibc-0.9.33.2/test/mmap/Makefile uClibc-git/test/mmap/Makefile
  102598. --- uClibc-0.9.33.2/test/mmap/Makefile 2012-05-15 09:20:09.000000000 +0200
  102599. +++ uClibc-git/test/mmap/Makefile 2014-02-03 12:32:57.000000000 +0100
  102600. @@ -2,6 +2,7 @@
  102601. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  102602. top_builddir=../../
  102603. +top_srcdir=../../
  102604. include ../Rules.mak
  102605. -include Makefile.in
  102606. include ../Test.mak
  102607. diff -Nur uClibc-0.9.33.2/test/nptl/eintr.c uClibc-git/test/nptl/eintr.c
  102608. --- uClibc-0.9.33.2/test/nptl/eintr.c 2012-05-15 09:20:09.000000000 +0200
  102609. +++ uClibc-git/test/nptl/eintr.c 2014-02-03 12:32:57.000000000 +0100
  102610. @@ -13,9 +13,8 @@
  102611. Lesser General Public License for more details.
  102612. You should have received a copy of the GNU Lesser General Public
  102613. - License along with the GNU C Library; if not, write to the Free
  102614. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102615. - 02111-1307 USA. */
  102616. + License along with the GNU C Library; if not, see
  102617. + <http://www.gnu.org/licenses/>. */
  102618. #include <pthread.h>
  102619. #include <signal.h>
  102620. diff -Nur uClibc-0.9.33.2/test/nptl/tst-align2.c uClibc-git/test/nptl/tst-align2.c
  102621. --- uClibc-0.9.33.2/test/nptl/tst-align2.c 2012-05-15 09:20:09.000000000 +0200
  102622. +++ uClibc-git/test/nptl/tst-align2.c 2014-02-03 12:32:57.000000000 +0100
  102623. @@ -12,9 +12,8 @@
  102624. Lesser General Public License for more details.
  102625. You should have received a copy of the GNU Lesser General Public
  102626. - License along with the GNU C Library; if not, write to the Free
  102627. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102628. - 02111-1307 USA. */
  102629. + License along with the GNU C Library; if not, see
  102630. + <http://www.gnu.org/licenses/>. */
  102631. #include <sched.h>
  102632. #include <stdbool.h>
  102633. diff -Nur uClibc-0.9.33.2/test/nptl/tst-align3.c uClibc-git/test/nptl/tst-align3.c
  102634. --- uClibc-0.9.33.2/test/nptl/tst-align3.c 2012-05-15 09:20:09.000000000 +0200
  102635. +++ uClibc-git/test/nptl/tst-align3.c 2014-02-03 12:32:57.000000000 +0100
  102636. @@ -13,9 +13,8 @@
  102637. Lesser General Public License for more details.
  102638. You should have received a copy of the GNU Lesser General Public
  102639. - License along with the GNU C Library; if not, write to the Free
  102640. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102641. - 02111-1307 USA. */
  102642. + License along with the GNU C Library; if not, see
  102643. + <http://www.gnu.org/licenses/>. */
  102644. #include <pthread.h>
  102645. #include <stdbool.h>
  102646. diff -Nur uClibc-0.9.33.2/test/nptl/tst-align.c uClibc-git/test/nptl/tst-align.c
  102647. --- uClibc-0.9.33.2/test/nptl/tst-align.c 2012-05-15 09:20:09.000000000 +0200
  102648. +++ uClibc-git/test/nptl/tst-align.c 2014-02-03 12:32:57.000000000 +0100
  102649. @@ -13,9 +13,8 @@
  102650. Lesser General Public License for more details.
  102651. You should have received a copy of the GNU Lesser General Public
  102652. - License along with the GNU C Library; if not, write to the Free
  102653. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102654. - 02111-1307 USA. */
  102655. + License along with the GNU C Library; if not, see
  102656. + <http://www.gnu.org/licenses/>. */
  102657. #include <pthread.h>
  102658. #include <stdbool.h>
  102659. diff -Nur uClibc-0.9.33.2/test/nptl/tst-atfork1.c uClibc-git/test/nptl/tst-atfork1.c
  102660. --- uClibc-0.9.33.2/test/nptl/tst-atfork1.c 2012-05-15 09:20:09.000000000 +0200
  102661. +++ uClibc-git/test/nptl/tst-atfork1.c 2014-02-03 12:32:57.000000000 +0100
  102662. @@ -13,9 +13,8 @@
  102663. Lesser General Public License for more details.
  102664. You should have received a copy of the GNU Lesser General Public
  102665. - License along with the GNU C Library; if not, write to the Free
  102666. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102667. - 02111-1307 USA. */
  102668. + License along with the GNU C Library; if not, see
  102669. + <http://www.gnu.org/licenses/>. */
  102670. #include <errno.h>
  102671. #include <pthread.h>
  102672. diff -Nur uClibc-0.9.33.2/test/nptl/tst-attr1.c uClibc-git/test/nptl/tst-attr1.c
  102673. --- uClibc-0.9.33.2/test/nptl/tst-attr1.c 2012-05-15 09:20:09.000000000 +0200
  102674. +++ uClibc-git/test/nptl/tst-attr1.c 2014-02-03 12:32:57.000000000 +0100
  102675. @@ -13,9 +13,8 @@
  102676. Lesser General Public License for more details.
  102677. You should have received a copy of the GNU Lesser General Public
  102678. - License along with the GNU C Library; if not, write to the Free
  102679. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102680. - 02111-1307 USA. */
  102681. + License along with the GNU C Library; if not, see
  102682. + <http://www.gnu.org/licenses/>. */
  102683. #include <errno.h>
  102684. #include <pthread.h>
  102685. diff -Nur uClibc-0.9.33.2/test/nptl/tst-attr2.c uClibc-git/test/nptl/tst-attr2.c
  102686. --- uClibc-0.9.33.2/test/nptl/tst-attr2.c 2012-05-15 09:20:09.000000000 +0200
  102687. +++ uClibc-git/test/nptl/tst-attr2.c 2014-02-03 12:32:57.000000000 +0100
  102688. @@ -13,9 +13,8 @@
  102689. Lesser General Public License for more details.
  102690. You should have received a copy of the GNU Lesser General Public
  102691. - License along with the GNU C Library; if not, write to the Free
  102692. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102693. - 02111-1307 USA. */
  102694. + License along with the GNU C Library; if not, see
  102695. + <http://www.gnu.org/licenses/>. */
  102696. #include <errno.h>
  102697. #include <pthread.h>
  102698. diff -Nur uClibc-0.9.33.2/test/nptl/tst-attr3.c uClibc-git/test/nptl/tst-attr3.c
  102699. --- uClibc-0.9.33.2/test/nptl/tst-attr3.c 2012-05-15 09:20:09.000000000 +0200
  102700. +++ uClibc-git/test/nptl/tst-attr3.c 2014-02-03 12:32:57.000000000 +0100
  102701. @@ -14,9 +14,8 @@
  102702. Lesser General Public License for more details.
  102703. You should have received a copy of the GNU Lesser General Public
  102704. - License along with the GNU C Library; if not, write to the Free
  102705. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102706. - 02111-1307 USA. */
  102707. + License along with the GNU C Library; if not, see
  102708. + <http://www.gnu.org/licenses/>. */
  102709. #include <errno.h>
  102710. #include <error.h>
  102711. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier1.c uClibc-git/test/nptl/tst-barrier1.c
  102712. --- uClibc-0.9.33.2/test/nptl/tst-barrier1.c 2012-05-15 09:20:09.000000000 +0200
  102713. +++ uClibc-git/test/nptl/tst-barrier1.c 2014-02-03 12:32:57.000000000 +0100
  102714. @@ -13,9 +13,8 @@
  102715. Lesser General Public License for more details.
  102716. You should have received a copy of the GNU Lesser General Public
  102717. - License along with the GNU C Library; if not, write to the Free
  102718. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102719. - 02111-1307 USA. */
  102720. + License along with the GNU C Library; if not, see
  102721. + <http://www.gnu.org/licenses/>. */
  102722. #include <errno.h>
  102723. #include <pthread.h>
  102724. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier2.c uClibc-git/test/nptl/tst-barrier2.c
  102725. --- uClibc-0.9.33.2/test/nptl/tst-barrier2.c 2012-05-15 09:20:09.000000000 +0200
  102726. +++ uClibc-git/test/nptl/tst-barrier2.c 2014-02-03 12:32:57.000000000 +0100
  102727. @@ -13,9 +13,8 @@
  102728. Lesser General Public License for more details.
  102729. You should have received a copy of the GNU Lesser General Public
  102730. - License along with the GNU C Library; if not, write to the Free
  102731. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102732. - 02111-1307 USA. */
  102733. + License along with the GNU C Library; if not, see
  102734. + <http://www.gnu.org/licenses/>. */
  102735. #include <errno.h>
  102736. #include <pthread.h>
  102737. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier3.c uClibc-git/test/nptl/tst-barrier3.c
  102738. --- uClibc-0.9.33.2/test/nptl/tst-barrier3.c 2012-05-15 09:20:09.000000000 +0200
  102739. +++ uClibc-git/test/nptl/tst-barrier3.c 2014-02-03 12:32:57.000000000 +0100
  102740. @@ -13,9 +13,8 @@
  102741. Lesser General Public License for more details.
  102742. You should have received a copy of the GNU Lesser General Public
  102743. - License along with the GNU C Library; if not, write to the Free
  102744. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102745. - 02111-1307 USA. */
  102746. + License along with the GNU C Library; if not, see
  102747. + <http://www.gnu.org/licenses/>. */
  102748. /* Test of POSIX barriers. */
  102749. diff -Nur uClibc-0.9.33.2/test/nptl/tst-barrier4.c uClibc-git/test/nptl/tst-barrier4.c
  102750. --- uClibc-0.9.33.2/test/nptl/tst-barrier4.c 2012-05-15 09:20:09.000000000 +0200
  102751. +++ uClibc-git/test/nptl/tst-barrier4.c 2014-02-03 12:32:57.000000000 +0100
  102752. @@ -13,9 +13,8 @@
  102753. Lesser General Public License for more details.
  102754. You should have received a copy of the GNU Lesser General Public
  102755. - License along with the GNU C Library; if not, write to the Free
  102756. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102757. - 02111-1307 USA. */
  102758. + License along with the GNU C Library; if not, see
  102759. + <http://www.gnu.org/licenses/>. */
  102760. /* This is a test for behavior not guaranteed by POSIX. */
  102761. #include <errno.h>
  102762. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic1.c uClibc-git/test/nptl/tst-basic1.c
  102763. --- uClibc-0.9.33.2/test/nptl/tst-basic1.c 2012-05-15 09:20:09.000000000 +0200
  102764. +++ uClibc-git/test/nptl/tst-basic1.c 2014-02-03 12:32:57.000000000 +0100
  102765. @@ -13,9 +13,8 @@
  102766. Lesser General Public License for more details.
  102767. You should have received a copy of the GNU Lesser General Public
  102768. - License along with the GNU C Library; if not, write to the Free
  102769. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102770. - 02111-1307 USA. */
  102771. + License along with the GNU C Library; if not, see
  102772. + <http://www.gnu.org/licenses/>. */
  102773. #include <pthread.h>
  102774. #include <stdio.h>
  102775. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic2.c uClibc-git/test/nptl/tst-basic2.c
  102776. --- uClibc-0.9.33.2/test/nptl/tst-basic2.c 2012-05-15 09:20:09.000000000 +0200
  102777. +++ uClibc-git/test/nptl/tst-basic2.c 2014-02-03 12:32:57.000000000 +0100
  102778. @@ -13,9 +13,8 @@
  102779. Lesser General Public License for more details.
  102780. You should have received a copy of the GNU Lesser General Public
  102781. - License along with the GNU C Library; if not, write to the Free
  102782. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102783. - 02111-1307 USA. */
  102784. + License along with the GNU C Library; if not, see
  102785. + <http://www.gnu.org/licenses/>. */
  102786. #include <pthread.h>
  102787. #include <stdio.h>
  102788. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic3.c uClibc-git/test/nptl/tst-basic3.c
  102789. --- uClibc-0.9.33.2/test/nptl/tst-basic3.c 2012-05-15 09:20:09.000000000 +0200
  102790. +++ uClibc-git/test/nptl/tst-basic3.c 2014-02-03 12:32:57.000000000 +0100
  102791. @@ -13,9 +13,8 @@
  102792. Lesser General Public License for more details.
  102793. You should have received a copy of the GNU Lesser General Public
  102794. - License along with the GNU C Library; if not, write to the Free
  102795. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102796. - 02111-1307 USA. */
  102797. + License along with the GNU C Library; if not, see
  102798. + <http://www.gnu.org/licenses/>. */
  102799. #include <pthread.h>
  102800. #include <signal.h>
  102801. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic4.c uClibc-git/test/nptl/tst-basic4.c
  102802. --- uClibc-0.9.33.2/test/nptl/tst-basic4.c 2012-05-15 09:20:09.000000000 +0200
  102803. +++ uClibc-git/test/nptl/tst-basic4.c 2014-02-03 12:32:57.000000000 +0100
  102804. @@ -13,9 +13,8 @@
  102805. Lesser General Public License for more details.
  102806. You should have received a copy of the GNU Lesser General Public
  102807. - License along with the GNU C Library; if not, write to the Free
  102808. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102809. - 02111-1307 USA. */
  102810. + License along with the GNU C Library; if not, see
  102811. + <http://www.gnu.org/licenses/>. */
  102812. #include <errno.h>
  102813. #include <pthread.h>
  102814. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic5.c uClibc-git/test/nptl/tst-basic5.c
  102815. --- uClibc-0.9.33.2/test/nptl/tst-basic5.c 2012-05-15 09:20:09.000000000 +0200
  102816. +++ uClibc-git/test/nptl/tst-basic5.c 2014-02-03 12:32:57.000000000 +0100
  102817. @@ -13,9 +13,8 @@
  102818. Lesser General Public License for more details.
  102819. You should have received a copy of the GNU Lesser General Public
  102820. - License along with the GNU C Library; if not, write to the Free
  102821. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102822. - 02111-1307 USA. */
  102823. + License along with the GNU C Library; if not, see
  102824. + <http://www.gnu.org/licenses/>. */
  102825. #include <errno.h>
  102826. #include <pthread.h>
  102827. diff -Nur uClibc-0.9.33.2/test/nptl/tst-basic6.c uClibc-git/test/nptl/tst-basic6.c
  102828. --- uClibc-0.9.33.2/test/nptl/tst-basic6.c 2012-05-15 09:20:09.000000000 +0200
  102829. +++ uClibc-git/test/nptl/tst-basic6.c 2014-02-03 12:32:57.000000000 +0100
  102830. @@ -13,9 +13,8 @@
  102831. Lesser General Public License for more details.
  102832. You should have received a copy of the GNU Lesser General Public
  102833. - License along with the GNU C Library; if not, write to the Free
  102834. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102835. - 02111-1307 USA. */
  102836. + License along with the GNU C Library; if not, see
  102837. + <http://www.gnu.org/licenses/>. */
  102838. #include <pthread.h>
  102839. #include <stdio.h>
  102840. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel10.c uClibc-git/test/nptl/tst-cancel10.c
  102841. --- uClibc-0.9.33.2/test/nptl/tst-cancel10.c 2012-05-15 09:20:09.000000000 +0200
  102842. +++ uClibc-git/test/nptl/tst-cancel10.c 2014-02-03 12:32:57.000000000 +0100
  102843. @@ -13,9 +13,8 @@
  102844. Lesser General Public License for more details.
  102845. You should have received a copy of the GNU Lesser General Public
  102846. - License along with the GNU C Library; if not, write to the Free
  102847. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102848. - 02111-1307 USA. */
  102849. + License along with the GNU C Library; if not, see
  102850. + <http://www.gnu.org/licenses/>. */
  102851. #include <pthread.h>
  102852. #include <stdio.h>
  102853. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel11.c uClibc-git/test/nptl/tst-cancel11.c
  102854. --- uClibc-0.9.33.2/test/nptl/tst-cancel11.c 2012-05-15 09:20:09.000000000 +0200
  102855. +++ uClibc-git/test/nptl/tst-cancel11.c 2014-02-03 12:32:57.000000000 +0100
  102856. @@ -13,9 +13,8 @@
  102857. Lesser General Public License for more details.
  102858. You should have received a copy of the GNU Lesser General Public
  102859. - License along with the GNU C Library; if not, write to the Free
  102860. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102861. - 02111-1307 USA. */
  102862. + License along with the GNU C Library; if not, see
  102863. + <http://www.gnu.org/licenses/>. */
  102864. #include <errno.h>
  102865. #include <pthread.h>
  102866. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel12.c uClibc-git/test/nptl/tst-cancel12.c
  102867. --- uClibc-0.9.33.2/test/nptl/tst-cancel12.c 2012-05-15 09:20:09.000000000 +0200
  102868. +++ uClibc-git/test/nptl/tst-cancel12.c 2014-02-03 12:32:57.000000000 +0100
  102869. @@ -13,9 +13,8 @@
  102870. Lesser General Public License for more details.
  102871. You should have received a copy of the GNU Lesser General Public
  102872. - License along with the GNU C Library; if not, write to the Free
  102873. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102874. - 02111-1307 USA. */
  102875. + License along with the GNU C Library; if not, see
  102876. + <http://www.gnu.org/licenses/>. */
  102877. #include <errno.h>
  102878. #include <pthread.h>
  102879. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel13.c uClibc-git/test/nptl/tst-cancel13.c
  102880. --- uClibc-0.9.33.2/test/nptl/tst-cancel13.c 2012-05-15 09:20:09.000000000 +0200
  102881. +++ uClibc-git/test/nptl/tst-cancel13.c 2014-02-03 12:32:57.000000000 +0100
  102882. @@ -13,9 +13,8 @@
  102883. Lesser General Public License for more details.
  102884. You should have received a copy of the GNU Lesser General Public
  102885. - License along with the GNU C Library; if not, write to the Free
  102886. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102887. - 02111-1307 USA. */
  102888. + License along with the GNU C Library; if not, see
  102889. + <http://www.gnu.org/licenses/>. */
  102890. #include <errno.h>
  102891. #include <pthread.h>
  102892. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel14.c uClibc-git/test/nptl/tst-cancel14.c
  102893. --- uClibc-0.9.33.2/test/nptl/tst-cancel14.c 2012-05-15 09:20:09.000000000 +0200
  102894. +++ uClibc-git/test/nptl/tst-cancel14.c 2014-02-03 12:32:57.000000000 +0100
  102895. @@ -13,9 +13,8 @@
  102896. Lesser General Public License for more details.
  102897. You should have received a copy of the GNU Lesser General Public
  102898. - License along with the GNU C Library; if not, write to the Free
  102899. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102900. - 02111-1307 USA. */
  102901. + License along with the GNU C Library; if not, see
  102902. + <http://www.gnu.org/licenses/>. */
  102903. #include <errno.h>
  102904. #include <pthread.h>
  102905. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel15.c uClibc-git/test/nptl/tst-cancel15.c
  102906. --- uClibc-0.9.33.2/test/nptl/tst-cancel15.c 2012-05-15 09:20:09.000000000 +0200
  102907. +++ uClibc-git/test/nptl/tst-cancel15.c 2014-02-03 12:32:57.000000000 +0100
  102908. @@ -13,9 +13,8 @@
  102909. Lesser General Public License for more details.
  102910. You should have received a copy of the GNU Lesser General Public
  102911. - License along with the GNU C Library; if not, write to the Free
  102912. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102913. - 02111-1307 USA. */
  102914. + License along with the GNU C Library; if not, see
  102915. + <http://www.gnu.org/licenses/>. */
  102916. #include <errno.h>
  102917. #include <pthread.h>
  102918. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel16.c uClibc-git/test/nptl/tst-cancel16.c
  102919. --- uClibc-0.9.33.2/test/nptl/tst-cancel16.c 2012-05-15 09:20:09.000000000 +0200
  102920. +++ uClibc-git/test/nptl/tst-cancel16.c 2014-02-03 12:32:57.000000000 +0100
  102921. @@ -13,9 +13,8 @@
  102922. Lesser General Public License for more details.
  102923. You should have received a copy of the GNU Lesser General Public
  102924. - License along with the GNU C Library; if not, write to the Free
  102925. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102926. - 02111-1307 USA. */
  102927. + License along with the GNU C Library; if not, see
  102928. + <http://www.gnu.org/licenses/>. */
  102929. #include <errno.h>
  102930. #include <pthread.h>
  102931. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel18.c uClibc-git/test/nptl/tst-cancel18.c
  102932. --- uClibc-0.9.33.2/test/nptl/tst-cancel18.c 2012-05-15 09:20:09.000000000 +0200
  102933. +++ uClibc-git/test/nptl/tst-cancel18.c 2014-02-03 12:32:57.000000000 +0100
  102934. @@ -13,9 +13,8 @@
  102935. Lesser General Public License for more details.
  102936. You should have received a copy of the GNU Lesser General Public
  102937. - License along with the GNU C Library; if not, write to the Free
  102938. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102939. - 02111-1307 USA. */
  102940. + License along with the GNU C Library; if not, see
  102941. + <http://www.gnu.org/licenses/>. */
  102942. #include <errno.h>
  102943. #include <pthread.h>
  102944. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel19.c uClibc-git/test/nptl/tst-cancel19.c
  102945. --- uClibc-0.9.33.2/test/nptl/tst-cancel19.c 2012-05-15 09:20:09.000000000 +0200
  102946. +++ uClibc-git/test/nptl/tst-cancel19.c 2014-02-03 12:32:57.000000000 +0100
  102947. @@ -13,9 +13,8 @@
  102948. Lesser General Public License for more details.
  102949. You should have received a copy of the GNU Lesser General Public
  102950. - License along with the GNU C Library; if not, write to the Free
  102951. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102952. - 02111-1307 USA. */
  102953. + License along with the GNU C Library; if not, see
  102954. + <http://www.gnu.org/licenses/>. */
  102955. #include <errno.h>
  102956. #include <error.h>
  102957. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel1.c uClibc-git/test/nptl/tst-cancel1.c
  102958. --- uClibc-0.9.33.2/test/nptl/tst-cancel1.c 2012-05-15 09:20:09.000000000 +0200
  102959. +++ uClibc-git/test/nptl/tst-cancel1.c 2014-02-03 12:32:57.000000000 +0100
  102960. @@ -13,9 +13,8 @@
  102961. Lesser General Public License for more details.
  102962. You should have received a copy of the GNU Lesser General Public
  102963. - License along with the GNU C Library; if not, write to the Free
  102964. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102965. - 02111-1307 USA. */
  102966. + License along with the GNU C Library; if not, see
  102967. + <http://www.gnu.org/licenses/>. */
  102968. #include <pthread.h>
  102969. #include <signal.h>
  102970. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel20.c uClibc-git/test/nptl/tst-cancel20.c
  102971. --- uClibc-0.9.33.2/test/nptl/tst-cancel20.c 2012-05-15 09:20:09.000000000 +0200
  102972. +++ uClibc-git/test/nptl/tst-cancel20.c 2014-02-03 12:32:57.000000000 +0100
  102973. @@ -13,9 +13,8 @@
  102974. Lesser General Public License for more details.
  102975. You should have received a copy of the GNU Lesser General Public
  102976. - License along with the GNU C Library; if not, write to the Free
  102977. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102978. - 02111-1307 USA. */
  102979. + License along with the GNU C Library; if not, see
  102980. + <http://www.gnu.org/licenses/>. */
  102981. #include <errno.h>
  102982. #include <pthread.h>
  102983. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel21.c uClibc-git/test/nptl/tst-cancel21.c
  102984. --- uClibc-0.9.33.2/test/nptl/tst-cancel21.c 2012-05-15 09:20:09.000000000 +0200
  102985. +++ uClibc-git/test/nptl/tst-cancel21.c 2014-02-03 12:32:57.000000000 +0100
  102986. @@ -13,9 +13,8 @@
  102987. Lesser General Public License for more details.
  102988. You should have received a copy of the GNU Lesser General Public
  102989. - License along with the GNU C Library; if not, write to the Free
  102990. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  102991. - 02111-1307 USA. */
  102992. + License along with the GNU C Library; if not, see
  102993. + <http://www.gnu.org/licenses/>. */
  102994. #include <errno.h>
  102995. #include <pthread.h>
  102996. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel22.c uClibc-git/test/nptl/tst-cancel22.c
  102997. --- uClibc-0.9.33.2/test/nptl/tst-cancel22.c 2012-05-15 09:20:09.000000000 +0200
  102998. +++ uClibc-git/test/nptl/tst-cancel22.c 2014-02-03 12:32:57.000000000 +0100
  102999. @@ -13,9 +13,8 @@
  103000. Lesser General Public License for more details.
  103001. You should have received a copy of the GNU Lesser General Public
  103002. - License along with the GNU C Library; if not, write to the Free
  103003. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103004. - 02111-1307 USA. */
  103005. + License along with the GNU C Library; if not, see
  103006. + <http://www.gnu.org/licenses/>. */
  103007. #include <errno.h>
  103008. #include <pthread.h>
  103009. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel2.c uClibc-git/test/nptl/tst-cancel2.c
  103010. --- uClibc-0.9.33.2/test/nptl/tst-cancel2.c 2012-05-15 09:20:09.000000000 +0200
  103011. +++ uClibc-git/test/nptl/tst-cancel2.c 2014-02-03 12:32:57.000000000 +0100
  103012. @@ -13,9 +13,8 @@
  103013. Lesser General Public License for more details.
  103014. You should have received a copy of the GNU Lesser General Public
  103015. - License along with the GNU C Library; if not, write to the Free
  103016. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103017. - 02111-1307 USA. */
  103018. + License along with the GNU C Library; if not, see
  103019. + <http://www.gnu.org/licenses/>. */
  103020. #include <pthread.h>
  103021. #include <signal.h>
  103022. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel3.c uClibc-git/test/nptl/tst-cancel3.c
  103023. --- uClibc-0.9.33.2/test/nptl/tst-cancel3.c 2012-05-15 09:20:09.000000000 +0200
  103024. +++ uClibc-git/test/nptl/tst-cancel3.c 2014-02-03 12:32:57.000000000 +0100
  103025. @@ -13,9 +13,8 @@
  103026. Lesser General Public License for more details.
  103027. You should have received a copy of the GNU Lesser General Public
  103028. - License along with the GNU C Library; if not, write to the Free
  103029. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103030. - 02111-1307 USA. */
  103031. + License along with the GNU C Library; if not, see
  103032. + <http://www.gnu.org/licenses/>. */
  103033. #include <pthread.h>
  103034. #include <signal.h>
  103035. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel4.c uClibc-git/test/nptl/tst-cancel4.c
  103036. --- uClibc-0.9.33.2/test/nptl/tst-cancel4.c 2012-05-15 09:20:09.000000000 +0200
  103037. +++ uClibc-git/test/nptl/tst-cancel4.c 2014-02-03 12:32:57.000000000 +0100
  103038. @@ -13,9 +13,8 @@
  103039. Lesser General Public License for more details.
  103040. You should have received a copy of the GNU Lesser General Public
  103041. - License along with the GNU C Library; if not, write to the Free
  103042. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103043. - 02111-1307 USA. */
  103044. + License along with the GNU C Library; if not, see
  103045. + <http://www.gnu.org/licenses/>. */
  103046. /* NOTE: this tests functionality beyond POSIX. POSIX does not allow
  103047. exit to be called more than once. */
  103048. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel6.c uClibc-git/test/nptl/tst-cancel6.c
  103049. --- uClibc-0.9.33.2/test/nptl/tst-cancel6.c 2012-05-15 09:20:09.000000000 +0200
  103050. +++ uClibc-git/test/nptl/tst-cancel6.c 2014-02-03 12:32:57.000000000 +0100
  103051. @@ -13,9 +13,8 @@
  103052. Lesser General Public License for more details.
  103053. You should have received a copy of the GNU Lesser General Public
  103054. - License along with the GNU C Library; if not, write to the Free
  103055. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103056. - 02111-1307 USA. */
  103057. + License along with the GNU C Library; if not, see
  103058. + <http://www.gnu.org/licenses/>. */
  103059. #include <pthread.h>
  103060. #include <stdio.h>
  103061. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel7.c uClibc-git/test/nptl/tst-cancel7.c
  103062. --- uClibc-0.9.33.2/test/nptl/tst-cancel7.c 2012-05-15 09:20:09.000000000 +0200
  103063. +++ uClibc-git/test/nptl/tst-cancel7.c 2014-02-03 12:32:57.000000000 +0100
  103064. @@ -13,9 +13,8 @@
  103065. Lesser General Public License for more details.
  103066. You should have received a copy of the GNU Lesser General Public
  103067. - License along with the GNU C Library; if not, write to the Free
  103068. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103069. - 02111-1307 USA. */
  103070. + License along with the GNU C Library; if not, see
  103071. + <http://www.gnu.org/licenses/>. */
  103072. #include <errno.h>
  103073. #include <fcntl.h>
  103074. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel8.c uClibc-git/test/nptl/tst-cancel8.c
  103075. --- uClibc-0.9.33.2/test/nptl/tst-cancel8.c 2012-05-15 09:20:09.000000000 +0200
  103076. +++ uClibc-git/test/nptl/tst-cancel8.c 2014-02-03 12:32:57.000000000 +0100
  103077. @@ -13,9 +13,8 @@
  103078. Lesser General Public License for more details.
  103079. You should have received a copy of the GNU Lesser General Public
  103080. - License along with the GNU C Library; if not, write to the Free
  103081. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103082. - 02111-1307 USA. */
  103083. + License along with the GNU C Library; if not, see
  103084. + <http://www.gnu.org/licenses/>. */
  103085. #include <pthread.h>
  103086. #include <stdio.h>
  103087. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cancel9.c uClibc-git/test/nptl/tst-cancel9.c
  103088. --- uClibc-0.9.33.2/test/nptl/tst-cancel9.c 2012-05-15 09:20:09.000000000 +0200
  103089. +++ uClibc-git/test/nptl/tst-cancel9.c 2014-02-03 12:32:57.000000000 +0100
  103090. @@ -13,9 +13,8 @@
  103091. Lesser General Public License for more details.
  103092. You should have received a copy of the GNU Lesser General Public
  103093. - License along with the GNU C Library; if not, write to the Free
  103094. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103095. - 02111-1307 USA. */
  103096. + License along with the GNU C Library; if not, see
  103097. + <http://www.gnu.org/licenses/>. */
  103098. #include <fcntl.h>
  103099. #include <pthread.h>
  103100. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup0.c uClibc-git/test/nptl/tst-cleanup0.c
  103101. --- uClibc-0.9.33.2/test/nptl/tst-cleanup0.c 2012-05-15 09:20:09.000000000 +0200
  103102. +++ uClibc-git/test/nptl/tst-cleanup0.c 2014-02-03 12:32:57.000000000 +0100
  103103. @@ -13,9 +13,8 @@
  103104. Lesser General Public License for more details.
  103105. You should have received a copy of the GNU Lesser General Public
  103106. - License along with the GNU C Library; if not, write to the Free
  103107. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103108. - 02111-1307 USA. */
  103109. + License along with the GNU C Library; if not, see
  103110. + <http://www.gnu.org/licenses/>. */
  103111. #include <pthread.h>
  103112. #include <stdio.h>
  103113. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup1.c uClibc-git/test/nptl/tst-cleanup1.c
  103114. --- uClibc-0.9.33.2/test/nptl/tst-cleanup1.c 2012-05-15 09:20:09.000000000 +0200
  103115. +++ uClibc-git/test/nptl/tst-cleanup1.c 2014-02-03 12:32:57.000000000 +0100
  103116. @@ -13,9 +13,8 @@
  103117. Lesser General Public License for more details.
  103118. You should have received a copy of the GNU Lesser General Public
  103119. - License along with the GNU C Library; if not, write to the Free
  103120. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103121. - 02111-1307 USA. */
  103122. + License along with the GNU C Library; if not, see
  103123. + <http://www.gnu.org/licenses/>. */
  103124. #include <pthread.h>
  103125. #include <stdio.h>
  103126. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup2.c uClibc-git/test/nptl/tst-cleanup2.c
  103127. --- uClibc-0.9.33.2/test/nptl/tst-cleanup2.c 2012-05-15 09:20:09.000000000 +0200
  103128. +++ uClibc-git/test/nptl/tst-cleanup2.c 2014-02-03 12:32:57.000000000 +0100
  103129. @@ -13,9 +13,8 @@
  103130. Lesser General Public License for more details.
  103131. You should have received a copy of the GNU Lesser General Public
  103132. - License along with the GNU C Library; if not, write to the Free
  103133. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103134. - 02111-1307 USA. */
  103135. + License along with the GNU C Library; if not, see
  103136. + <http://www.gnu.org/licenses/>. */
  103137. #include <setjmp.h>
  103138. #include <signal.h>
  103139. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup3.c uClibc-git/test/nptl/tst-cleanup3.c
  103140. --- uClibc-0.9.33.2/test/nptl/tst-cleanup3.c 2012-05-15 09:20:09.000000000 +0200
  103141. +++ uClibc-git/test/nptl/tst-cleanup3.c 2014-02-03 12:32:57.000000000 +0100
  103142. @@ -13,9 +13,8 @@
  103143. Lesser General Public License for more details.
  103144. You should have received a copy of the GNU Lesser General Public
  103145. - License along with the GNU C Library; if not, write to the Free
  103146. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103147. - 02111-1307 USA. */
  103148. + License along with the GNU C Library; if not, see
  103149. + <http://www.gnu.org/licenses/>. */
  103150. #include <pthread.h>
  103151. #include <stdio.h>
  103152. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup4aux.c uClibc-git/test/nptl/tst-cleanup4aux.c
  103153. --- uClibc-0.9.33.2/test/nptl/tst-cleanup4aux.c 2012-05-15 09:20:09.000000000 +0200
  103154. +++ uClibc-git/test/nptl/tst-cleanup4aux.c 2014-02-03 12:32:57.000000000 +0100
  103155. @@ -13,9 +13,8 @@
  103156. Lesser General Public License for more details.
  103157. You should have received a copy of the GNU Lesser General Public
  103158. - License along with the GNU C Library; if not, write to the Free
  103159. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103160. - 02111-1307 USA. */
  103161. + License along with the GNU C Library; if not, see
  103162. + <http://www.gnu.org/licenses/>. */
  103163. #include <pthread.h>
  103164. #include <stdio.h>
  103165. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cleanup4.c uClibc-git/test/nptl/tst-cleanup4.c
  103166. --- uClibc-0.9.33.2/test/nptl/tst-cleanup4.c 2012-05-15 09:20:09.000000000 +0200
  103167. +++ uClibc-git/test/nptl/tst-cleanup4.c 2014-02-03 12:32:57.000000000 +0100
  103168. @@ -13,9 +13,8 @@
  103169. Lesser General Public License for more details.
  103170. You should have received a copy of the GNU Lesser General Public
  103171. - License along with the GNU C Library; if not, write to the Free
  103172. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103173. - 02111-1307 USA. */
  103174. + License along with the GNU C Library; if not, see
  103175. + <http://www.gnu.org/licenses/>. */
  103176. #include <pthread.h>
  103177. #include <stdio.h>
  103178. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock1.c uClibc-git/test/nptl/tst-clock1.c
  103179. --- uClibc-0.9.33.2/test/nptl/tst-clock1.c 2012-05-15 09:20:09.000000000 +0200
  103180. +++ uClibc-git/test/nptl/tst-clock1.c 2014-02-03 12:32:57.000000000 +0100
  103181. @@ -13,9 +13,8 @@
  103182. Lesser General Public License for more details.
  103183. You should have received a copy of the GNU Lesser General Public
  103184. - License along with the GNU C Library; if not, write to the Free
  103185. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103186. - 02111-1307 USA. */
  103187. + License along with the GNU C Library; if not, see
  103188. + <http://www.gnu.org/licenses/>. */
  103189. #include <pthread.h>
  103190. #include <stdio.h>
  103191. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock2.c uClibc-git/test/nptl/tst-clock2.c
  103192. --- uClibc-0.9.33.2/test/nptl/tst-clock2.c 2012-05-15 09:20:09.000000000 +0200
  103193. +++ uClibc-git/test/nptl/tst-clock2.c 2014-02-03 12:32:57.000000000 +0100
  103194. @@ -13,9 +13,8 @@
  103195. Lesser General Public License for more details.
  103196. You should have received a copy of the GNU Lesser General Public
  103197. - License along with the GNU C Library; if not, write to the Free
  103198. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103199. - 02111-1307 USA. */
  103200. + License along with the GNU C Library; if not, see
  103201. + <http://www.gnu.org/licenses/>. */
  103202. #include <errno.h>
  103203. #include <pthread.h>
  103204. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock.c uClibc-git/test/nptl/tst-clock.c
  103205. --- uClibc-0.9.33.2/test/nptl/tst-clock.c 2012-05-15 09:20:09.000000000 +0200
  103206. +++ uClibc-git/test/nptl/tst-clock.c 2014-02-03 12:32:57.000000000 +0100
  103207. @@ -14,9 +14,8 @@
  103208. Lesser General Public License for more details.
  103209. You should have received a copy of the GNU Lesser General Public
  103210. - License along with the GNU C Library; if not, write to the Free
  103211. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103212. - 02111-1307 USA. */
  103213. + License along with the GNU C Library; if not, see
  103214. + <http://www.gnu.org/licenses/>. */
  103215. #include <stdio.h>
  103216. #include <string.h>
  103217. diff -Nur uClibc-0.9.33.2/test/nptl/tst-clock_nanosleep.c uClibc-git/test/nptl/tst-clock_nanosleep.c
  103218. --- uClibc-0.9.33.2/test/nptl/tst-clock_nanosleep.c 2012-05-15 09:20:09.000000000 +0200
  103219. +++ uClibc-git/test/nptl/tst-clock_nanosleep.c 2014-02-03 12:32:57.000000000 +0100
  103220. @@ -12,9 +12,8 @@
  103221. Lesser General Public License for more details.
  103222. You should have received a copy of the GNU Lesser General Public
  103223. - License along with the GNU C Library; if not, write to the Free
  103224. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103225. - 02111-1307 USA. */
  103226. + License along with the GNU C Library; if not, see
  103227. + <http://www.gnu.org/licenses/>. */
  103228. #include <errno.h>
  103229. #include <stdio.h>
  103230. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond10.c uClibc-git/test/nptl/tst-cond10.c
  103231. --- uClibc-0.9.33.2/test/nptl/tst-cond10.c 2012-05-15 09:20:09.000000000 +0200
  103232. +++ uClibc-git/test/nptl/tst-cond10.c 2014-02-03 12:32:57.000000000 +0100
  103233. @@ -13,9 +13,8 @@
  103234. Lesser General Public License for more details.
  103235. You should have received a copy of the GNU Lesser General Public
  103236. - License along with the GNU C Library; if not, write to the Free
  103237. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103238. - 02111-1307 USA. */
  103239. + License along with the GNU C Library; if not, see
  103240. + <http://www.gnu.org/licenses/>. */
  103241. #include <error.h>
  103242. #include <pthread.h>
  103243. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond11.c uClibc-git/test/nptl/tst-cond11.c
  103244. --- uClibc-0.9.33.2/test/nptl/tst-cond11.c 2012-05-15 09:20:09.000000000 +0200
  103245. +++ uClibc-git/test/nptl/tst-cond11.c 2014-02-03 12:32:57.000000000 +0100
  103246. @@ -13,9 +13,8 @@
  103247. Lesser General Public License for more details.
  103248. You should have received a copy of the GNU Lesser General Public
  103249. - License along with the GNU C Library; if not, write to the Free
  103250. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103251. - 02111-1307 USA. */
  103252. + License along with the GNU C Library; if not, see
  103253. + <http://www.gnu.org/licenses/>. */
  103254. #include <errno.h>
  103255. #include <pthread.h>
  103256. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond12.c uClibc-git/test/nptl/tst-cond12.c
  103257. --- uClibc-0.9.33.2/test/nptl/tst-cond12.c 2012-05-15 09:20:09.000000000 +0200
  103258. +++ uClibc-git/test/nptl/tst-cond12.c 2014-02-03 12:32:57.000000000 +0100
  103259. @@ -13,9 +13,8 @@
  103260. Lesser General Public License for more details.
  103261. You should have received a copy of the GNU Lesser General Public
  103262. - License along with the GNU C Library; if not, write to the Free
  103263. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103264. - 02111-1307 USA. */
  103265. + License along with the GNU C Library; if not, see
  103266. + <http://www.gnu.org/licenses/>. */
  103267. #include <errno.h>
  103268. #include <pthread.h>
  103269. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond14.c uClibc-git/test/nptl/tst-cond14.c
  103270. --- uClibc-0.9.33.2/test/nptl/tst-cond14.c 2012-05-15 09:20:09.000000000 +0200
  103271. +++ uClibc-git/test/nptl/tst-cond14.c 2014-02-03 12:32:57.000000000 +0100
  103272. @@ -13,9 +13,8 @@
  103273. Lesser General Public License for more details.
  103274. You should have received a copy of the GNU Lesser General Public
  103275. - License along with the GNU C Library; if not, write to the Free
  103276. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103277. - 02111-1307 USA. */
  103278. + License along with the GNU C Library; if not, see
  103279. + <http://www.gnu.org/licenses/>. */
  103280. #include <pthread.h>
  103281. #include <stdio.h>
  103282. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond15.c uClibc-git/test/nptl/tst-cond15.c
  103283. --- uClibc-0.9.33.2/test/nptl/tst-cond15.c 2012-05-15 09:20:09.000000000 +0200
  103284. +++ uClibc-git/test/nptl/tst-cond15.c 2014-02-03 12:32:57.000000000 +0100
  103285. @@ -13,9 +13,8 @@
  103286. Lesser General Public License for more details.
  103287. You should have received a copy of the GNU Lesser General Public
  103288. - License along with the GNU C Library; if not, write to the Free
  103289. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103290. - 02111-1307 USA. */
  103291. + License along with the GNU C Library; if not, see
  103292. + <http://www.gnu.org/licenses/>. */
  103293. #include <errno.h>
  103294. #include <pthread.h>
  103295. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond16.c uClibc-git/test/nptl/tst-cond16.c
  103296. --- uClibc-0.9.33.2/test/nptl/tst-cond16.c 2012-05-15 09:20:09.000000000 +0200
  103297. +++ uClibc-git/test/nptl/tst-cond16.c 2014-02-03 12:32:57.000000000 +0100
  103298. @@ -13,9 +13,8 @@
  103299. Lesser General Public License for more details.
  103300. You should have received a copy of the GNU Lesser General Public
  103301. - License along with the GNU C Library; if not, write to the Free
  103302. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103303. - 02111-1307 USA. */
  103304. + License along with the GNU C Library; if not, see
  103305. + <http://www.gnu.org/licenses/>. */
  103306. #include <errno.h>
  103307. #include <pthread.h>
  103308. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond18.c uClibc-git/test/nptl/tst-cond18.c
  103309. --- uClibc-0.9.33.2/test/nptl/tst-cond18.c 2012-05-15 09:20:09.000000000 +0200
  103310. +++ uClibc-git/test/nptl/tst-cond18.c 2014-02-03 12:32:57.000000000 +0100
  103311. @@ -13,9 +13,8 @@
  103312. Lesser General Public License for more details.
  103313. You should have received a copy of the GNU Lesser General Public
  103314. - License along with the GNU C Library; if not, write to the Free
  103315. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103316. - 02111-1307 USA. */
  103317. + License along with the GNU C Library; if not, see
  103318. + <http://www.gnu.org/licenses/>. */
  103319. #include <errno.h>
  103320. #include <fcntl.h>
  103321. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond19.c uClibc-git/test/nptl/tst-cond19.c
  103322. --- uClibc-0.9.33.2/test/nptl/tst-cond19.c 2012-05-15 09:20:09.000000000 +0200
  103323. +++ uClibc-git/test/nptl/tst-cond19.c 2014-02-03 12:32:57.000000000 +0100
  103324. @@ -13,9 +13,8 @@
  103325. Lesser General Public License for more details.
  103326. You should have received a copy of the GNU Lesser General Public
  103327. - License along with the GNU C Library; if not, write to the Free
  103328. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103329. - 02111-1307 USA. */
  103330. + License along with the GNU C Library; if not, see
  103331. + <http://www.gnu.org/licenses/>. */
  103332. #include <errno.h>
  103333. #include <pthread.h>
  103334. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond1.c uClibc-git/test/nptl/tst-cond1.c
  103335. --- uClibc-0.9.33.2/test/nptl/tst-cond1.c 2012-05-15 09:20:09.000000000 +0200
  103336. +++ uClibc-git/test/nptl/tst-cond1.c 2014-02-03 12:32:57.000000000 +0100
  103337. @@ -13,9 +13,8 @@
  103338. Lesser General Public License for more details.
  103339. You should have received a copy of the GNU Lesser General Public
  103340. - License along with the GNU C Library; if not, write to the Free
  103341. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103342. - 02111-1307 USA. */
  103343. + License along with the GNU C Library; if not, see
  103344. + <http://www.gnu.org/licenses/>. */
  103345. #include <error.h>
  103346. #include <pthread.h>
  103347. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond20.c uClibc-git/test/nptl/tst-cond20.c
  103348. --- uClibc-0.9.33.2/test/nptl/tst-cond20.c 2012-05-15 09:20:09.000000000 +0200
  103349. +++ uClibc-git/test/nptl/tst-cond20.c 2014-02-03 12:32:57.000000000 +0100
  103350. @@ -13,9 +13,8 @@
  103351. Lesser General Public License for more details.
  103352. You should have received a copy of the GNU Lesser General Public
  103353. - License along with the GNU C Library; if not, write to the Free
  103354. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103355. - 02111-1307 USA. */
  103356. + License along with the GNU C Library; if not, see
  103357. + <http://www.gnu.org/licenses/>. */
  103358. #include <pthread.h>
  103359. #include <stdio.h>
  103360. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond23.c uClibc-git/test/nptl/tst-cond23.c
  103361. --- uClibc-0.9.33.2/test/nptl/tst-cond23.c 2012-05-15 09:20:09.000000000 +0200
  103362. +++ uClibc-git/test/nptl/tst-cond23.c 2014-02-03 12:32:57.000000000 +0100
  103363. @@ -13,9 +13,8 @@
  103364. Lesser General Public License for more details.
  103365. You should have received a copy of the GNU Lesser General Public
  103366. - License along with the GNU C Library; if not, write to the Free
  103367. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103368. - 02111-1307 USA. */
  103369. + License along with the GNU C Library; if not, see
  103370. + <http://www.gnu.org/licenses/>. */
  103371. #include <errno.h>
  103372. #include <pthread.h>
  103373. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond2.c uClibc-git/test/nptl/tst-cond2.c
  103374. --- uClibc-0.9.33.2/test/nptl/tst-cond2.c 2012-05-15 09:20:09.000000000 +0200
  103375. +++ uClibc-git/test/nptl/tst-cond2.c 2014-02-03 12:32:57.000000000 +0100
  103376. @@ -13,9 +13,8 @@
  103377. Lesser General Public License for more details.
  103378. You should have received a copy of the GNU Lesser General Public
  103379. - License along with the GNU C Library; if not, write to the Free
  103380. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103381. - 02111-1307 USA. */
  103382. + License along with the GNU C Library; if not, see
  103383. + <http://www.gnu.org/licenses/>. */
  103384. #include <error.h>
  103385. #include <pthread.h>
  103386. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond3.c uClibc-git/test/nptl/tst-cond3.c
  103387. --- uClibc-0.9.33.2/test/nptl/tst-cond3.c 2012-05-15 09:20:09.000000000 +0200
  103388. +++ uClibc-git/test/nptl/tst-cond3.c 2014-02-03 12:32:57.000000000 +0100
  103389. @@ -13,9 +13,8 @@
  103390. Lesser General Public License for more details.
  103391. You should have received a copy of the GNU Lesser General Public
  103392. - License along with the GNU C Library; if not, write to the Free
  103393. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103394. - 02111-1307 USA. */
  103395. + License along with the GNU C Library; if not, see
  103396. + <http://www.gnu.org/licenses/>. */
  103397. #include <pthread.h>
  103398. #include <stdio.h>
  103399. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond4.c uClibc-git/test/nptl/tst-cond4.c
  103400. --- uClibc-0.9.33.2/test/nptl/tst-cond4.c 2012-05-15 09:20:09.000000000 +0200
  103401. +++ uClibc-git/test/nptl/tst-cond4.c 2014-02-03 12:32:57.000000000 +0100
  103402. @@ -13,9 +13,8 @@
  103403. Lesser General Public License for more details.
  103404. You should have received a copy of the GNU Lesser General Public
  103405. - License along with the GNU C Library; if not, write to the Free
  103406. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103407. - 02111-1307 USA. */
  103408. + License along with the GNU C Library; if not, see
  103409. + <http://www.gnu.org/licenses/>. */
  103410. #include <errno.h>
  103411. #include <pthread.h>
  103412. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond5.c uClibc-git/test/nptl/tst-cond5.c
  103413. --- uClibc-0.9.33.2/test/nptl/tst-cond5.c 2012-05-15 09:20:09.000000000 +0200
  103414. +++ uClibc-git/test/nptl/tst-cond5.c 2014-02-03 12:32:57.000000000 +0100
  103415. @@ -13,9 +13,8 @@
  103416. Lesser General Public License for more details.
  103417. You should have received a copy of the GNU Lesser General Public
  103418. - License along with the GNU C Library; if not, write to the Free
  103419. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103420. - 02111-1307 USA. */
  103421. + License along with the GNU C Library; if not, see
  103422. + <http://www.gnu.org/licenses/>. */
  103423. #include <errno.h>
  103424. #include <pthread.h>
  103425. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond6.c uClibc-git/test/nptl/tst-cond6.c
  103426. --- uClibc-0.9.33.2/test/nptl/tst-cond6.c 2012-05-15 09:20:09.000000000 +0200
  103427. +++ uClibc-git/test/nptl/tst-cond6.c 2014-02-03 12:32:57.000000000 +0100
  103428. @@ -13,9 +13,8 @@
  103429. Lesser General Public License for more details.
  103430. You should have received a copy of the GNU Lesser General Public
  103431. - License along with the GNU C Library; if not, write to the Free
  103432. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103433. - 02111-1307 USA. */
  103434. + License along with the GNU C Library; if not, see
  103435. + <http://www.gnu.org/licenses/>. */
  103436. #include <errno.h>
  103437. #include <pthread.h>
  103438. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond7.c uClibc-git/test/nptl/tst-cond7.c
  103439. --- uClibc-0.9.33.2/test/nptl/tst-cond7.c 2012-05-15 09:20:09.000000000 +0200
  103440. +++ uClibc-git/test/nptl/tst-cond7.c 2014-02-03 12:32:57.000000000 +0100
  103441. @@ -13,9 +13,8 @@
  103442. Lesser General Public License for more details.
  103443. You should have received a copy of the GNU Lesser General Public
  103444. - License along with the GNU C Library; if not, write to the Free
  103445. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103446. - 02111-1307 USA. */
  103447. + License along with the GNU C Library; if not, see
  103448. + <http://www.gnu.org/licenses/>. */
  103449. #include <errno.h>
  103450. #include <pthread.h>
  103451. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond8.c uClibc-git/test/nptl/tst-cond8.c
  103452. --- uClibc-0.9.33.2/test/nptl/tst-cond8.c 2012-05-15 09:20:09.000000000 +0200
  103453. +++ uClibc-git/test/nptl/tst-cond8.c 2014-02-03 12:32:57.000000000 +0100
  103454. @@ -13,9 +13,8 @@
  103455. Lesser General Public License for more details.
  103456. You should have received a copy of the GNU Lesser General Public
  103457. - License along with the GNU C Library; if not, write to the Free
  103458. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103459. - 02111-1307 USA. */
  103460. + License along with the GNU C Library; if not, see
  103461. + <http://www.gnu.org/licenses/>. */
  103462. #include <errno.h>
  103463. #include <pthread.h>
  103464. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cond9.c uClibc-git/test/nptl/tst-cond9.c
  103465. --- uClibc-0.9.33.2/test/nptl/tst-cond9.c 2012-05-15 09:20:09.000000000 +0200
  103466. +++ uClibc-git/test/nptl/tst-cond9.c 2014-02-03 12:32:57.000000000 +0100
  103467. @@ -13,9 +13,8 @@
  103468. Lesser General Public License for more details.
  103469. You should have received a copy of the GNU Lesser General Public
  103470. - License along with the GNU C Library; if not, write to the Free
  103471. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103472. - 02111-1307 USA. */
  103473. + License along with the GNU C Library; if not, see
  103474. + <http://www.gnu.org/licenses/>. */
  103475. #include <errno.h>
  103476. #include <pthread.h>
  103477. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cpuclock1.c uClibc-git/test/nptl/tst-cpuclock1.c
  103478. --- uClibc-0.9.33.2/test/nptl/tst-cpuclock1.c 2012-05-15 09:20:09.000000000 +0200
  103479. +++ uClibc-git/test/nptl/tst-cpuclock1.c 2014-02-03 12:32:57.000000000 +0100
  103480. @@ -13,9 +13,8 @@
  103481. Lesser General Public License for more details.
  103482. You should have received a copy of the GNU Lesser General Public
  103483. - License along with the GNU C Library; if not, write to the Free
  103484. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103485. - 02111-1307 USA. */
  103486. + License along with the GNU C Library; if not, see
  103487. + <http://www.gnu.org/licenses/>. */
  103488. #include <stdio.h>
  103489. #include <stdlib.h>
  103490. diff -Nur uClibc-0.9.33.2/test/nptl/tst-cpuclock2.c uClibc-git/test/nptl/tst-cpuclock2.c
  103491. --- uClibc-0.9.33.2/test/nptl/tst-cpuclock2.c 2012-05-15 09:20:09.000000000 +0200
  103492. +++ uClibc-git/test/nptl/tst-cpuclock2.c 2014-02-03 12:32:57.000000000 +0100
  103493. @@ -13,9 +13,8 @@
  103494. Lesser General Public License for more details.
  103495. You should have received a copy of the GNU Lesser General Public
  103496. - License along with the GNU C Library; if not, write to the Free
  103497. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103498. - 02111-1307 USA. */
  103499. + License along with the GNU C Library; if not, see
  103500. + <http://www.gnu.org/licenses/>. */
  103501. #include <unistd.h>
  103502. diff -Nur uClibc-0.9.33.2/test/nptl/tst-detach1.c uClibc-git/test/nptl/tst-detach1.c
  103503. --- uClibc-0.9.33.2/test/nptl/tst-detach1.c 2012-05-15 09:20:09.000000000 +0200
  103504. +++ uClibc-git/test/nptl/tst-detach1.c 2014-02-03 12:32:57.000000000 +0100
  103505. @@ -13,9 +13,8 @@
  103506. Lesser General Public License for more details.
  103507. You should have received a copy of the GNU Lesser General Public
  103508. - License along with the GNU C Library; if not, write to the Free
  103509. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103510. - 02111-1307 USA. */
  103511. + License along with the GNU C Library; if not, see
  103512. + <http://www.gnu.org/licenses/>. */
  103513. #include <pthread.h>
  103514. #include <stdio.h>
  103515. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr1.c uClibc-git/test/nptl/tst-eintr1.c
  103516. --- uClibc-0.9.33.2/test/nptl/tst-eintr1.c 2012-05-15 09:20:09.000000000 +0200
  103517. +++ uClibc-git/test/nptl/tst-eintr1.c 2014-02-03 12:32:57.000000000 +0100
  103518. @@ -13,9 +13,8 @@
  103519. Lesser General Public License for more details.
  103520. You should have received a copy of the GNU Lesser General Public
  103521. - License along with the GNU C Library; if not, write to the Free
  103522. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103523. - 02111-1307 USA. */
  103524. + License along with the GNU C Library; if not, see
  103525. + <http://www.gnu.org/licenses/>. */
  103526. #include <errno.h>
  103527. #include <pthread.h>
  103528. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr2.c uClibc-git/test/nptl/tst-eintr2.c
  103529. --- uClibc-0.9.33.2/test/nptl/tst-eintr2.c 2012-05-15 09:20:09.000000000 +0200
  103530. +++ uClibc-git/test/nptl/tst-eintr2.c 2014-02-03 12:32:57.000000000 +0100
  103531. @@ -13,9 +13,8 @@
  103532. Lesser General Public License for more details.
  103533. You should have received a copy of the GNU Lesser General Public
  103534. - License along with the GNU C Library; if not, write to the Free
  103535. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103536. - 02111-1307 USA. */
  103537. + License along with the GNU C Library; if not, see
  103538. + <http://www.gnu.org/licenses/>. */
  103539. #include <errno.h>
  103540. #include <pthread.h>
  103541. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr3.c uClibc-git/test/nptl/tst-eintr3.c
  103542. --- uClibc-0.9.33.2/test/nptl/tst-eintr3.c 2012-05-15 09:20:09.000000000 +0200
  103543. +++ uClibc-git/test/nptl/tst-eintr3.c 2014-02-03 12:32:57.000000000 +0100
  103544. @@ -13,9 +13,8 @@
  103545. Lesser General Public License for more details.
  103546. You should have received a copy of the GNU Lesser General Public
  103547. - License along with the GNU C Library; if not, write to the Free
  103548. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103549. - 02111-1307 USA. */
  103550. + License along with the GNU C Library; if not, see
  103551. + <http://www.gnu.org/licenses/>. */
  103552. #include <errno.h>
  103553. #include <pthread.h>
  103554. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr4.c uClibc-git/test/nptl/tst-eintr4.c
  103555. --- uClibc-0.9.33.2/test/nptl/tst-eintr4.c 2012-05-15 09:20:09.000000000 +0200
  103556. +++ uClibc-git/test/nptl/tst-eintr4.c 2014-02-03 12:32:57.000000000 +0100
  103557. @@ -13,9 +13,8 @@
  103558. Lesser General Public License for more details.
  103559. You should have received a copy of the GNU Lesser General Public
  103560. - License along with the GNU C Library; if not, write to the Free
  103561. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103562. - 02111-1307 USA. */
  103563. + License along with the GNU C Library; if not, see
  103564. + <http://www.gnu.org/licenses/>. */
  103565. #include <errno.h>
  103566. #include <pthread.h>
  103567. diff -Nur uClibc-0.9.33.2/test/nptl/tst-eintr5.c uClibc-git/test/nptl/tst-eintr5.c
  103568. --- uClibc-0.9.33.2/test/nptl/tst-eintr5.c 2012-05-15 09:20:09.000000000 +0200
  103569. +++ uClibc-git/test/nptl/tst-eintr5.c 2014-02-03 12:32:57.000000000 +0100
  103570. @@ -13,9 +13,8 @@
  103571. Lesser General Public License for more details.
  103572. You should have received a copy of the GNU Lesser General Public
  103573. - License along with the GNU C Library; if not, write to the Free
  103574. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103575. - 02111-1307 USA. */
  103576. + License along with the GNU C Library; if not, see
  103577. + <http://www.gnu.org/licenses/>. */
  103578. #include <errno.h>
  103579. #include <pthread.h>
  103580. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exec2.c uClibc-git/test/nptl/tst-exec2.c
  103581. --- uClibc-0.9.33.2/test/nptl/tst-exec2.c 2012-05-15 09:20:09.000000000 +0200
  103582. +++ uClibc-git/test/nptl/tst-exec2.c 2014-02-03 12:32:57.000000000 +0100
  103583. @@ -14,9 +14,8 @@
  103584. Lesser General Public License for more details.
  103585. You should have received a copy of the GNU Lesser General Public
  103586. - License along with the GNU C Library; if not, write to the Free
  103587. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103588. - 02111-1307 USA. */
  103589. + License along with the GNU C Library; if not, see
  103590. + <http://www.gnu.org/licenses/>. */
  103591. #include <errno.h>
  103592. #include <paths.h>
  103593. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exec3.c uClibc-git/test/nptl/tst-exec3.c
  103594. --- uClibc-0.9.33.2/test/nptl/tst-exec3.c 2012-05-15 09:20:09.000000000 +0200
  103595. +++ uClibc-git/test/nptl/tst-exec3.c 2014-02-03 12:32:57.000000000 +0100
  103596. @@ -14,9 +14,8 @@
  103597. Lesser General Public License for more details.
  103598. You should have received a copy of the GNU Lesser General Public
  103599. - License along with the GNU C Library; if not, write to the Free
  103600. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103601. - 02111-1307 USA. */
  103602. + License along with the GNU C Library; if not, see
  103603. + <http://www.gnu.org/licenses/>. */
  103604. #include <errno.h>
  103605. #include <paths.h>
  103606. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exec4.c uClibc-git/test/nptl/tst-exec4.c
  103607. --- uClibc-0.9.33.2/test/nptl/tst-exec4.c 2012-05-15 09:20:09.000000000 +0200
  103608. +++ uClibc-git/test/nptl/tst-exec4.c 2014-02-03 12:32:57.000000000 +0100
  103609. @@ -14,9 +14,8 @@
  103610. Lesser General Public License for more details.
  103611. You should have received a copy of the GNU Lesser General Public
  103612. - License along with the GNU C Library; if not, write to the Free
  103613. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103614. - 02111-1307 USA. */
  103615. + License along with the GNU C Library; if not, see
  103616. + <http://www.gnu.org/licenses/>. */
  103617. #include <pthread.h>
  103618. #include <signal.h>
  103619. diff -Nur uClibc-0.9.33.2/test/nptl/tst-exit1.c uClibc-git/test/nptl/tst-exit1.c
  103620. --- uClibc-0.9.33.2/test/nptl/tst-exit1.c 2012-05-15 09:20:09.000000000 +0200
  103621. +++ uClibc-git/test/nptl/tst-exit1.c 2014-02-03 12:32:57.000000000 +0100
  103622. @@ -13,9 +13,8 @@
  103623. Lesser General Public License for more details.
  103624. You should have received a copy of the GNU Lesser General Public
  103625. - License along with the GNU C Library; if not, write to the Free
  103626. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103627. - 02111-1307 USA. */
  103628. + License along with the GNU C Library; if not, see
  103629. + <http://www.gnu.org/licenses/>. */
  103630. /* NOTE: this tests functionality beyond POSIX. POSIX does not allow
  103631. exit to be called more than once. */
  103632. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fini1.c uClibc-git/test/nptl/tst-fini1.c
  103633. --- uClibc-0.9.33.2/test/nptl/tst-fini1.c 2012-05-15 09:20:09.000000000 +0200
  103634. +++ uClibc-git/test/nptl/tst-fini1.c 2014-02-03 12:32:57.000000000 +0100
  103635. @@ -13,9 +13,8 @@
  103636. Lesser General Public License for more details.
  103637. You should have received a copy of the GNU Lesser General Public
  103638. - License along with the GNU C Library; if not, write to the Free
  103639. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103640. - 02111-1307 USA. */
  103641. + License along with the GNU C Library; if not, see
  103642. + <http://www.gnu.org/licenses/>. */
  103643. #include <unistd.h>
  103644. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fini1mod.c uClibc-git/test/nptl/tst-fini1mod.c
  103645. --- uClibc-0.9.33.2/test/nptl/tst-fini1mod.c 2012-05-15 09:20:09.000000000 +0200
  103646. +++ uClibc-git/test/nptl/tst-fini1mod.c 2014-02-03 12:32:57.000000000 +0100
  103647. @@ -13,9 +13,8 @@
  103648. Lesser General Public License for more details.
  103649. You should have received a copy of the GNU Lesser General Public
  103650. - License along with the GNU C Library; if not, write to the Free
  103651. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103652. - 02111-1307 USA. */
  103653. + License along with the GNU C Library; if not, see
  103654. + <http://www.gnu.org/licenses/>. */
  103655. #include <pthread.h>
  103656. #include <stdio.h>
  103657. diff -Nur uClibc-0.9.33.2/test/nptl/tst-flock1.c uClibc-git/test/nptl/tst-flock1.c
  103658. --- uClibc-0.9.33.2/test/nptl/tst-flock1.c 2012-05-15 09:20:09.000000000 +0200
  103659. +++ uClibc-git/test/nptl/tst-flock1.c 2014-02-03 12:32:57.000000000 +0100
  103660. @@ -13,9 +13,8 @@
  103661. Lesser General Public License for more details.
  103662. You should have received a copy of the GNU Lesser General Public
  103663. - License along with the GNU C Library; if not, write to the Free
  103664. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103665. - 02111-1307 USA. */
  103666. + License along with the GNU C Library; if not, see
  103667. + <http://www.gnu.org/licenses/>. */
  103668. #include <pthread.h>
  103669. #include <stdio.h>
  103670. diff -Nur uClibc-0.9.33.2/test/nptl/tst-flock2.c uClibc-git/test/nptl/tst-flock2.c
  103671. --- uClibc-0.9.33.2/test/nptl/tst-flock2.c 2012-05-15 09:20:09.000000000 +0200
  103672. +++ uClibc-git/test/nptl/tst-flock2.c 2014-02-03 12:32:57.000000000 +0100
  103673. @@ -13,9 +13,8 @@
  103674. Lesser General Public License for more details.
  103675. You should have received a copy of the GNU Lesser General Public
  103676. - License along with the GNU C Library; if not, write to the Free
  103677. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103678. - 02111-1307 USA. */
  103679. + License along with the GNU C Library; if not, see
  103680. + <http://www.gnu.org/licenses/>. */
  103681. #include <errno.h>
  103682. #include <pthread.h>
  103683. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork1.c uClibc-git/test/nptl/tst-fork1.c
  103684. --- uClibc-0.9.33.2/test/nptl/tst-fork1.c 2012-05-15 09:20:09.000000000 +0200
  103685. +++ uClibc-git/test/nptl/tst-fork1.c 2014-02-03 12:32:57.000000000 +0100
  103686. @@ -13,9 +13,8 @@
  103687. Lesser General Public License for more details.
  103688. You should have received a copy of the GNU Lesser General Public
  103689. - License along with the GNU C Library; if not, write to the Free
  103690. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103691. - 02111-1307 USA. */
  103692. + License along with the GNU C Library; if not, see
  103693. + <http://www.gnu.org/licenses/>. */
  103694. #include <errno.h>
  103695. #include <pthread.h>
  103696. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork2.c uClibc-git/test/nptl/tst-fork2.c
  103697. --- uClibc-0.9.33.2/test/nptl/tst-fork2.c 2012-05-15 09:20:09.000000000 +0200
  103698. +++ uClibc-git/test/nptl/tst-fork2.c 2014-02-03 12:32:57.000000000 +0100
  103699. @@ -13,9 +13,8 @@
  103700. Lesser General Public License for more details.
  103701. You should have received a copy of the GNU Lesser General Public
  103702. - License along with the GNU C Library; if not, write to the Free
  103703. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103704. - 02111-1307 USA. */
  103705. + License along with the GNU C Library; if not, see
  103706. + <http://www.gnu.org/licenses/>. */
  103707. #include <errno.h>
  103708. #include <pthread.h>
  103709. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork3.c uClibc-git/test/nptl/tst-fork3.c
  103710. --- uClibc-0.9.33.2/test/nptl/tst-fork3.c 2012-05-15 09:20:09.000000000 +0200
  103711. +++ uClibc-git/test/nptl/tst-fork3.c 2014-02-03 12:32:57.000000000 +0100
  103712. @@ -13,9 +13,8 @@
  103713. Lesser General Public License for more details.
  103714. You should have received a copy of the GNU Lesser General Public
  103715. - License along with the GNU C Library; if not, write to the Free
  103716. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103717. - 02111-1307 USA. */
  103718. + License along with the GNU C Library; if not, see
  103719. + <http://www.gnu.org/licenses/>. */
  103720. #include <errno.h>
  103721. #include <pthread.h>
  103722. diff -Nur uClibc-0.9.33.2/test/nptl/tst-fork4.c uClibc-git/test/nptl/tst-fork4.c
  103723. --- uClibc-0.9.33.2/test/nptl/tst-fork4.c 2012-05-15 09:20:09.000000000 +0200
  103724. +++ uClibc-git/test/nptl/tst-fork4.c 2014-02-03 12:32:57.000000000 +0100
  103725. @@ -13,9 +13,8 @@
  103726. Lesser General Public License for more details.
  103727. You should have received a copy of the GNU Lesser General Public
  103728. - License along with the GNU C Library; if not, write to the Free
  103729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103730. - 02111-1307 USA. */
  103731. + License along with the GNU C Library; if not, see
  103732. + <http://www.gnu.org/licenses/>. */
  103733. #include <errno.h>
  103734. #include <pthread.h>
  103735. diff -Nur uClibc-0.9.33.2/test/nptl/tst-initializers1.c uClibc-git/test/nptl/tst-initializers1.c
  103736. --- uClibc-0.9.33.2/test/nptl/tst-initializers1.c 2012-05-15 09:20:09.000000000 +0200
  103737. +++ uClibc-git/test/nptl/tst-initializers1.c 2014-02-03 12:32:57.000000000 +0100
  103738. @@ -13,9 +13,8 @@
  103739. Lesser General Public License for more details.
  103740. You should have received a copy of the GNU Lesser General Public
  103741. - License along with the GNU C Library; if not, write to the Free
  103742. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103743. - 02111-1307 USA. */
  103744. + License along with the GNU C Library; if not, see
  103745. + <http://www.gnu.org/licenses/>. */
  103746. #include <pthread.h>
  103747. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join1.c uClibc-git/test/nptl/tst-join1.c
  103748. --- uClibc-0.9.33.2/test/nptl/tst-join1.c 2012-05-15 09:20:09.000000000 +0200
  103749. +++ uClibc-git/test/nptl/tst-join1.c 2014-02-03 12:32:57.000000000 +0100
  103750. @@ -13,9 +13,8 @@
  103751. Lesser General Public License for more details.
  103752. You should have received a copy of the GNU Lesser General Public
  103753. - License along with the GNU C Library; if not, write to the Free
  103754. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103755. - 02111-1307 USA. */
  103756. + License along with the GNU C Library; if not, see
  103757. + <http://www.gnu.org/licenses/>. */
  103758. #include <pthread.h>
  103759. #include <stdio.h>
  103760. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join2.c uClibc-git/test/nptl/tst-join2.c
  103761. --- uClibc-0.9.33.2/test/nptl/tst-join2.c 2012-05-15 09:20:09.000000000 +0200
  103762. +++ uClibc-git/test/nptl/tst-join2.c 2014-02-03 12:32:57.000000000 +0100
  103763. @@ -13,9 +13,8 @@
  103764. Lesser General Public License for more details.
  103765. You should have received a copy of the GNU Lesser General Public
  103766. - License along with the GNU C Library; if not, write to the Free
  103767. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103768. - 02111-1307 USA. */
  103769. + License along with the GNU C Library; if not, see
  103770. + <http://www.gnu.org/licenses/>. */
  103771. #include <errno.h>
  103772. #include <pthread.h>
  103773. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join3.c uClibc-git/test/nptl/tst-join3.c
  103774. --- uClibc-0.9.33.2/test/nptl/tst-join3.c 2012-05-15 09:20:09.000000000 +0200
  103775. +++ uClibc-git/test/nptl/tst-join3.c 2014-02-03 12:32:57.000000000 +0100
  103776. @@ -13,9 +13,8 @@
  103777. Lesser General Public License for more details.
  103778. You should have received a copy of the GNU Lesser General Public
  103779. - License along with the GNU C Library; if not, write to the Free
  103780. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103781. - 02111-1307 USA. */
  103782. + License along with the GNU C Library; if not, see
  103783. + <http://www.gnu.org/licenses/>. */
  103784. #include <errno.h>
  103785. #include <pthread.h>
  103786. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join4.c uClibc-git/test/nptl/tst-join4.c
  103787. --- uClibc-0.9.33.2/test/nptl/tst-join4.c 2012-05-15 09:20:09.000000000 +0200
  103788. +++ uClibc-git/test/nptl/tst-join4.c 2014-02-03 12:32:57.000000000 +0100
  103789. @@ -13,9 +13,8 @@
  103790. Lesser General Public License for more details.
  103791. You should have received a copy of the GNU Lesser General Public
  103792. - License along with the GNU C Library; if not, write to the Free
  103793. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103794. - 02111-1307 USA. */
  103795. + License along with the GNU C Library; if not, see
  103796. + <http://www.gnu.org/licenses/>. */
  103797. #include <errno.h>
  103798. #include <pthread.h>
  103799. diff -Nur uClibc-0.9.33.2/test/nptl/tst-join5.c uClibc-git/test/nptl/tst-join5.c
  103800. --- uClibc-0.9.33.2/test/nptl/tst-join5.c 2012-05-15 09:20:09.000000000 +0200
  103801. +++ uClibc-git/test/nptl/tst-join5.c 2014-02-03 12:32:57.000000000 +0100
  103802. @@ -13,9 +13,8 @@
  103803. Lesser General Public License for more details.
  103804. You should have received a copy of the GNU Lesser General Public
  103805. - License along with the GNU C Library; if not, write to the Free
  103806. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103807. - 02111-1307 USA. */
  103808. + License along with the GNU C Library; if not, see
  103809. + <http://www.gnu.org/licenses/>. */
  103810. #include <errno.h>
  103811. #include <pthread.h>
  103812. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key1.c uClibc-git/test/nptl/tst-key1.c
  103813. --- uClibc-0.9.33.2/test/nptl/tst-key1.c 2012-05-15 09:20:09.000000000 +0200
  103814. +++ uClibc-git/test/nptl/tst-key1.c 2014-02-03 12:32:57.000000000 +0100
  103815. @@ -13,9 +13,8 @@
  103816. Lesser General Public License for more details.
  103817. You should have received a copy of the GNU Lesser General Public
  103818. - License along with the GNU C Library; if not, write to the Free
  103819. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103820. - 02111-1307 USA. */
  103821. + License along with the GNU C Library; if not, see
  103822. + <http://www.gnu.org/licenses/>. */
  103823. #include <limits.h>
  103824. #include <pthread.h>
  103825. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key2.c uClibc-git/test/nptl/tst-key2.c
  103826. --- uClibc-0.9.33.2/test/nptl/tst-key2.c 2012-05-15 09:20:09.000000000 +0200
  103827. +++ uClibc-git/test/nptl/tst-key2.c 2014-02-03 12:32:57.000000000 +0100
  103828. @@ -13,9 +13,8 @@
  103829. Lesser General Public License for more details.
  103830. You should have received a copy of the GNU Lesser General Public
  103831. - License along with the GNU C Library; if not, write to the Free
  103832. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103833. - 02111-1307 USA. */
  103834. + License along with the GNU C Library; if not, see
  103835. + <http://www.gnu.org/licenses/>. */
  103836. #include <pthread.h>
  103837. #include <stdio.h>
  103838. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key3.c uClibc-git/test/nptl/tst-key3.c
  103839. --- uClibc-0.9.33.2/test/nptl/tst-key3.c 2012-05-15 09:20:09.000000000 +0200
  103840. +++ uClibc-git/test/nptl/tst-key3.c 2014-02-03 12:32:57.000000000 +0100
  103841. @@ -13,9 +13,8 @@
  103842. Lesser General Public License for more details.
  103843. You should have received a copy of the GNU Lesser General Public
  103844. - License along with the GNU C Library; if not, write to the Free
  103845. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103846. - 02111-1307 USA. */
  103847. + License along with the GNU C Library; if not, see
  103848. + <http://www.gnu.org/licenses/>. */
  103849. #include <pthread.h>
  103850. #include <stdio.h>
  103851. diff -Nur uClibc-0.9.33.2/test/nptl/tst-key4.c uClibc-git/test/nptl/tst-key4.c
  103852. --- uClibc-0.9.33.2/test/nptl/tst-key4.c 2012-05-15 09:20:09.000000000 +0200
  103853. +++ uClibc-git/test/nptl/tst-key4.c 2014-02-03 12:32:57.000000000 +0100
  103854. @@ -13,9 +13,8 @@
  103855. Lesser General Public License for more details.
  103856. You should have received a copy of the GNU Lesser General Public
  103857. - License along with the GNU C Library; if not, write to the Free
  103858. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103859. - 02111-1307 USA. */
  103860. + License along with the GNU C Library; if not, see
  103861. + <http://www.gnu.org/licenses/>. */
  103862. #include <limits.h>
  103863. #include <pthread.h>
  103864. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill1.c uClibc-git/test/nptl/tst-kill1.c
  103865. --- uClibc-0.9.33.2/test/nptl/tst-kill1.c 2012-05-15 09:20:09.000000000 +0200
  103866. +++ uClibc-git/test/nptl/tst-kill1.c 2014-02-03 12:32:57.000000000 +0100
  103867. @@ -13,9 +13,8 @@
  103868. Lesser General Public License for more details.
  103869. You should have received a copy of the GNU Lesser General Public
  103870. - License along with the GNU C Library; if not, write to the Free
  103871. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103872. - 02111-1307 USA. */
  103873. + License along with the GNU C Library; if not, see
  103874. + <http://www.gnu.org/licenses/>. */
  103875. #include <pthread.h>
  103876. #include <signal.h>
  103877. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill2.c uClibc-git/test/nptl/tst-kill2.c
  103878. --- uClibc-0.9.33.2/test/nptl/tst-kill2.c 2012-05-15 09:20:09.000000000 +0200
  103879. +++ uClibc-git/test/nptl/tst-kill2.c 2014-02-03 12:32:57.000000000 +0100
  103880. @@ -13,9 +13,8 @@
  103881. Lesser General Public License for more details.
  103882. You should have received a copy of the GNU Lesser General Public
  103883. - License along with the GNU C Library; if not, write to the Free
  103884. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103885. - 02111-1307 USA. */
  103886. + License along with the GNU C Library; if not, see
  103887. + <http://www.gnu.org/licenses/>. */
  103888. #include <errno.h>
  103889. #include <pthread.h>
  103890. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill3.c uClibc-git/test/nptl/tst-kill3.c
  103891. --- uClibc-0.9.33.2/test/nptl/tst-kill3.c 2012-05-15 09:20:09.000000000 +0200
  103892. +++ uClibc-git/test/nptl/tst-kill3.c 2014-02-03 12:32:57.000000000 +0100
  103893. @@ -13,9 +13,8 @@
  103894. Lesser General Public License for more details.
  103895. You should have received a copy of the GNU Lesser General Public
  103896. - License along with the GNU C Library; if not, write to the Free
  103897. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103898. - 02111-1307 USA. */
  103899. + License along with the GNU C Library; if not, see
  103900. + <http://www.gnu.org/licenses/>. */
  103901. #include <errno.h>
  103902. #include <pthread.h>
  103903. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill4.c uClibc-git/test/nptl/tst-kill4.c
  103904. --- uClibc-0.9.33.2/test/nptl/tst-kill4.c 2012-05-15 09:20:09.000000000 +0200
  103905. +++ uClibc-git/test/nptl/tst-kill4.c 2014-02-03 12:32:57.000000000 +0100
  103906. @@ -13,9 +13,8 @@
  103907. Lesser General Public License for more details.
  103908. You should have received a copy of the GNU Lesser General Public
  103909. - License along with the GNU C Library; if not, write to the Free
  103910. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103911. - 02111-1307 USA. */
  103912. + License along with the GNU C Library; if not, see
  103913. + <http://www.gnu.org/licenses/>. */
  103914. #include <errno.h>
  103915. #include <pthread.h>
  103916. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill5.c uClibc-git/test/nptl/tst-kill5.c
  103917. --- uClibc-0.9.33.2/test/nptl/tst-kill5.c 2012-05-15 09:20:09.000000000 +0200
  103918. +++ uClibc-git/test/nptl/tst-kill5.c 2014-02-03 12:32:57.000000000 +0100
  103919. @@ -13,9 +13,8 @@
  103920. Lesser General Public License for more details.
  103921. You should have received a copy of the GNU Lesser General Public
  103922. - License along with the GNU C Library; if not, write to the Free
  103923. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103924. - 02111-1307 USA. */
  103925. + License along with the GNU C Library; if not, see
  103926. + <http://www.gnu.org/licenses/>. */
  103927. #include <errno.h>
  103928. #include <pthread.h>
  103929. diff -Nur uClibc-0.9.33.2/test/nptl/tst-kill6.c uClibc-git/test/nptl/tst-kill6.c
  103930. --- uClibc-0.9.33.2/test/nptl/tst-kill6.c 2012-05-15 09:20:09.000000000 +0200
  103931. +++ uClibc-git/test/nptl/tst-kill6.c 2014-02-03 12:32:57.000000000 +0100
  103932. @@ -13,9 +13,8 @@
  103933. Lesser General Public License for more details.
  103934. You should have received a copy of the GNU Lesser General Public
  103935. - License along with the GNU C Library; if not, write to the Free
  103936. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103937. - 02111-1307 USA. */
  103938. + License along with the GNU C Library; if not, see
  103939. + <http://www.gnu.org/licenses/>. */
  103940. #include <errno.h>
  103941. #include <pthread.h>
  103942. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue1.c uClibc-git/test/nptl/tst-mqueue1.c
  103943. --- uClibc-0.9.33.2/test/nptl/tst-mqueue1.c 2012-05-15 09:20:09.000000000 +0200
  103944. +++ uClibc-git/test/nptl/tst-mqueue1.c 2014-02-03 12:32:57.000000000 +0100
  103945. @@ -14,9 +14,8 @@
  103946. Lesser General Public License for more details.
  103947. You should have received a copy of the GNU Lesser General Public
  103948. - License along with the GNU C Library; if not, write to the Free
  103949. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103950. - 02111-1307 USA. */
  103951. + License along with the GNU C Library; if not, see
  103952. + <http://www.gnu.org/licenses/>. */
  103953. #include <errno.h>
  103954. #include <fcntl.h>
  103955. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue2.c uClibc-git/test/nptl/tst-mqueue2.c
  103956. --- uClibc-0.9.33.2/test/nptl/tst-mqueue2.c 2012-05-15 09:20:09.000000000 +0200
  103957. +++ uClibc-git/test/nptl/tst-mqueue2.c 2014-02-03 12:32:57.000000000 +0100
  103958. @@ -14,9 +14,8 @@
  103959. Lesser General Public License for more details.
  103960. You should have received a copy of the GNU Lesser General Public
  103961. - License along with the GNU C Library; if not, write to the Free
  103962. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103963. - 02111-1307 USA. */
  103964. + License along with the GNU C Library; if not, see
  103965. + <http://www.gnu.org/licenses/>. */
  103966. #include <errno.h>
  103967. #include <fcntl.h>
  103968. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue3.c uClibc-git/test/nptl/tst-mqueue3.c
  103969. --- uClibc-0.9.33.2/test/nptl/tst-mqueue3.c 2012-05-15 09:20:09.000000000 +0200
  103970. +++ uClibc-git/test/nptl/tst-mqueue3.c 2014-02-03 12:32:57.000000000 +0100
  103971. @@ -14,9 +14,8 @@
  103972. Lesser General Public License for more details.
  103973. You should have received a copy of the GNU Lesser General Public
  103974. - License along with the GNU C Library; if not, write to the Free
  103975. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103976. - 02111-1307 USA. */
  103977. + License along with the GNU C Library; if not, see
  103978. + <http://www.gnu.org/licenses/>. */
  103979. #include <errno.h>
  103980. #include <mqueue.h>
  103981. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue4.c uClibc-git/test/nptl/tst-mqueue4.c
  103982. --- uClibc-0.9.33.2/test/nptl/tst-mqueue4.c 2012-05-15 09:20:09.000000000 +0200
  103983. +++ uClibc-git/test/nptl/tst-mqueue4.c 2014-02-03 12:32:57.000000000 +0100
  103984. @@ -14,9 +14,8 @@
  103985. Lesser General Public License for more details.
  103986. You should have received a copy of the GNU Lesser General Public
  103987. - License along with the GNU C Library; if not, write to the Free
  103988. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  103989. - 02111-1307 USA. */
  103990. + License along with the GNU C Library; if not, see
  103991. + <http://www.gnu.org/licenses/>. */
  103992. #include <errno.h>
  103993. #include <fcntl.h>
  103994. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue5.c uClibc-git/test/nptl/tst-mqueue5.c
  103995. --- uClibc-0.9.33.2/test/nptl/tst-mqueue5.c 2012-05-15 09:20:09.000000000 +0200
  103996. +++ uClibc-git/test/nptl/tst-mqueue5.c 2014-02-03 12:32:57.000000000 +0100
  103997. @@ -14,9 +14,8 @@
  103998. Lesser General Public License for more details.
  103999. You should have received a copy of the GNU Lesser General Public
  104000. - License along with the GNU C Library; if not, write to the Free
  104001. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104002. - 02111-1307 USA. */
  104003. + License along with the GNU C Library; if not, see
  104004. + <http://www.gnu.org/licenses/>. */
  104005. #include <errno.h>
  104006. #include <fcntl.h>
  104007. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue6.c uClibc-git/test/nptl/tst-mqueue6.c
  104008. --- uClibc-0.9.33.2/test/nptl/tst-mqueue6.c 2012-05-15 09:20:09.000000000 +0200
  104009. +++ uClibc-git/test/nptl/tst-mqueue6.c 2014-02-03 12:32:57.000000000 +0100
  104010. @@ -14,9 +14,8 @@
  104011. Lesser General Public License for more details.
  104012. You should have received a copy of the GNU Lesser General Public
  104013. - License along with the GNU C Library; if not, write to the Free
  104014. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104015. - 02111-1307 USA. */
  104016. + License along with the GNU C Library; if not, see
  104017. + <http://www.gnu.org/licenses/>. */
  104018. #include <errno.h>
  104019. #include <fcntl.h>
  104020. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue7.c uClibc-git/test/nptl/tst-mqueue7.c
  104021. --- uClibc-0.9.33.2/test/nptl/tst-mqueue7.c 2012-05-15 09:20:09.000000000 +0200
  104022. +++ uClibc-git/test/nptl/tst-mqueue7.c 2014-02-03 12:32:57.000000000 +0100
  104023. @@ -14,9 +14,8 @@
  104024. Lesser General Public License for more details.
  104025. You should have received a copy of the GNU Lesser General Public
  104026. - License along with the GNU C Library; if not, write to the Free
  104027. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104028. - 02111-1307 USA. */
  104029. + License along with the GNU C Library; if not, see
  104030. + <http://www.gnu.org/licenses/>. */
  104031. #include <errno.h>
  104032. #include <fcntl.h>
  104033. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue8.c uClibc-git/test/nptl/tst-mqueue8.c
  104034. --- uClibc-0.9.33.2/test/nptl/tst-mqueue8.c 2012-05-15 09:20:09.000000000 +0200
  104035. +++ uClibc-git/test/nptl/tst-mqueue8.c 2014-02-03 12:32:57.000000000 +0100
  104036. @@ -13,9 +13,8 @@
  104037. Lesser General Public License for more details.
  104038. You should have received a copy of the GNU Lesser General Public
  104039. - License along with the GNU C Library; if not, write to the Free
  104040. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104041. - 02111-1307 USA. */
  104042. + License along with the GNU C Library; if not, see
  104043. + <http://www.gnu.org/licenses/>. */
  104044. #include <errno.h>
  104045. #include <mqueue.h>
  104046. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue9.c uClibc-git/test/nptl/tst-mqueue9.c
  104047. --- uClibc-0.9.33.2/test/nptl/tst-mqueue9.c 2012-05-15 09:20:09.000000000 +0200
  104048. +++ uClibc-git/test/nptl/tst-mqueue9.c 2014-02-03 12:32:57.000000000 +0100
  104049. @@ -13,9 +13,8 @@
  104050. Lesser General Public License for more details.
  104051. You should have received a copy of the GNU Lesser General Public
  104052. - License along with the GNU C Library; if not, write to the Free
  104053. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104054. - 02111-1307 USA. */
  104055. + License along with the GNU C Library; if not, see
  104056. + <http://www.gnu.org/licenses/>. */
  104057. #include <errno.h>
  104058. #include <mqueue.h>
  104059. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mqueue.h uClibc-git/test/nptl/tst-mqueue.h
  104060. --- uClibc-0.9.33.2/test/nptl/tst-mqueue.h 2012-05-15 09:20:09.000000000 +0200
  104061. +++ uClibc-git/test/nptl/tst-mqueue.h 2014-02-03 12:32:57.000000000 +0100
  104062. @@ -14,9 +14,8 @@
  104063. Lesser General Public License for more details.
  104064. You should have received a copy of the GNU Lesser General Public
  104065. - License along with the GNU C Library; if not, write to the Free
  104066. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104067. - 02111-1307 USA. */
  104068. + License along with the GNU C Library; if not, see
  104069. + <http://www.gnu.org/licenses/>. */
  104070. #include <mqueue.h>
  104071. #include <search.h>
  104072. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex1.c uClibc-git/test/nptl/tst-mutex1.c
  104073. --- uClibc-0.9.33.2/test/nptl/tst-mutex1.c 2012-05-15 09:20:09.000000000 +0200
  104074. +++ uClibc-git/test/nptl/tst-mutex1.c 2014-02-03 12:32:57.000000000 +0100
  104075. @@ -13,9 +13,8 @@
  104076. Lesser General Public License for more details.
  104077. You should have received a copy of the GNU Lesser General Public
  104078. - License along with the GNU C Library; if not, write to the Free
  104079. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104080. - 02111-1307 USA. */
  104081. + License along with the GNU C Library; if not, see
  104082. + <http://www.gnu.org/licenses/>. */
  104083. #include <pthread.h>
  104084. #include <stdio.h>
  104085. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex2.c uClibc-git/test/nptl/tst-mutex2.c
  104086. --- uClibc-0.9.33.2/test/nptl/tst-mutex2.c 2012-05-15 09:20:09.000000000 +0200
  104087. +++ uClibc-git/test/nptl/tst-mutex2.c 2014-02-03 12:32:57.000000000 +0100
  104088. @@ -13,9 +13,8 @@
  104089. Lesser General Public License for more details.
  104090. You should have received a copy of the GNU Lesser General Public
  104091. - License along with the GNU C Library; if not, write to the Free
  104092. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104093. - 02111-1307 USA. */
  104094. + License along with the GNU C Library; if not, see
  104095. + <http://www.gnu.org/licenses/>. */
  104096. #include <errno.h>
  104097. #include <pthread.h>
  104098. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex3.c uClibc-git/test/nptl/tst-mutex3.c
  104099. --- uClibc-0.9.33.2/test/nptl/tst-mutex3.c 2012-05-15 09:20:09.000000000 +0200
  104100. +++ uClibc-git/test/nptl/tst-mutex3.c 2014-02-03 12:32:57.000000000 +0100
  104101. @@ -13,9 +13,8 @@
  104102. Lesser General Public License for more details.
  104103. You should have received a copy of the GNU Lesser General Public
  104104. - License along with the GNU C Library; if not, write to the Free
  104105. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104106. - 02111-1307 USA. */
  104107. + License along with the GNU C Library; if not, see
  104108. + <http://www.gnu.org/licenses/>. */
  104109. #include <errno.h>
  104110. #include <pthread.h>
  104111. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex4.c uClibc-git/test/nptl/tst-mutex4.c
  104112. --- uClibc-0.9.33.2/test/nptl/tst-mutex4.c 2012-05-15 09:20:09.000000000 +0200
  104113. +++ uClibc-git/test/nptl/tst-mutex4.c 2014-02-03 12:32:57.000000000 +0100
  104114. @@ -13,9 +13,8 @@
  104115. Lesser General Public License for more details.
  104116. You should have received a copy of the GNU Lesser General Public
  104117. - License along with the GNU C Library; if not, write to the Free
  104118. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104119. - 02111-1307 USA. */
  104120. + License along with the GNU C Library; if not, see
  104121. + <http://www.gnu.org/licenses/>. */
  104122. #include <errno.h>
  104123. #include <pthread.h>
  104124. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex5.c uClibc-git/test/nptl/tst-mutex5.c
  104125. --- uClibc-0.9.33.2/test/nptl/tst-mutex5.c 2012-05-15 09:20:09.000000000 +0200
  104126. +++ uClibc-git/test/nptl/tst-mutex5.c 2014-02-03 12:32:57.000000000 +0100
  104127. @@ -13,9 +13,8 @@
  104128. Lesser General Public License for more details.
  104129. You should have received a copy of the GNU Lesser General Public
  104130. - License along with the GNU C Library; if not, write to the Free
  104131. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104132. - 02111-1307 USA. */
  104133. + License along with the GNU C Library; if not, see
  104134. + <http://www.gnu.org/licenses/>. */
  104135. #include <errno.h>
  104136. #include <pthread.h>
  104137. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex6.c uClibc-git/test/nptl/tst-mutex6.c
  104138. --- uClibc-0.9.33.2/test/nptl/tst-mutex6.c 2012-05-15 09:20:09.000000000 +0200
  104139. +++ uClibc-git/test/nptl/tst-mutex6.c 2014-02-03 12:32:57.000000000 +0100
  104140. @@ -13,9 +13,8 @@
  104141. Lesser General Public License for more details.
  104142. You should have received a copy of the GNU Lesser General Public
  104143. - License along with the GNU C Library; if not, write to the Free
  104144. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104145. - 02111-1307 USA. */
  104146. + License along with the GNU C Library; if not, see
  104147. + <http://www.gnu.org/licenses/>. */
  104148. #include <pthread.h>
  104149. #include <signal.h>
  104150. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex7.c uClibc-git/test/nptl/tst-mutex7.c
  104151. --- uClibc-0.9.33.2/test/nptl/tst-mutex7.c 2012-05-15 09:20:09.000000000 +0200
  104152. +++ uClibc-git/test/nptl/tst-mutex7.c 2014-02-03 12:32:57.000000000 +0100
  104153. @@ -13,9 +13,8 @@
  104154. Lesser General Public License for more details.
  104155. You should have received a copy of the GNU Lesser General Public
  104156. - License along with the GNU C Library; if not, write to the Free
  104157. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104158. - 02111-1307 USA. */
  104159. + License along with the GNU C Library; if not, see
  104160. + <http://www.gnu.org/licenses/>. */
  104161. #include <pthread.h>
  104162. #include <stdio.h>
  104163. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex8.c uClibc-git/test/nptl/tst-mutex8.c
  104164. --- uClibc-0.9.33.2/test/nptl/tst-mutex8.c 2012-05-15 09:20:09.000000000 +0200
  104165. +++ uClibc-git/test/nptl/tst-mutex8.c 2014-02-03 12:32:57.000000000 +0100
  104166. @@ -13,9 +13,8 @@
  104167. Lesser General Public License for more details.
  104168. You should have received a copy of the GNU Lesser General Public
  104169. - License along with the GNU C Library; if not, write to the Free
  104170. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104171. - 02111-1307 USA. */
  104172. + License along with the GNU C Library; if not, see
  104173. + <http://www.gnu.org/licenses/>. */
  104174. /* This test checks behavior not required by POSIX. */
  104175. #include <errno.h>
  104176. diff -Nur uClibc-0.9.33.2/test/nptl/tst-mutex9.c uClibc-git/test/nptl/tst-mutex9.c
  104177. --- uClibc-0.9.33.2/test/nptl/tst-mutex9.c 2012-05-15 09:20:09.000000000 +0200
  104178. +++ uClibc-git/test/nptl/tst-mutex9.c 2014-02-03 12:32:57.000000000 +0100
  104179. @@ -13,9 +13,8 @@
  104180. Lesser General Public License for more details.
  104181. You should have received a copy of the GNU Lesser General Public
  104182. - License along with the GNU C Library; if not, write to the Free
  104183. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104184. - 02111-1307 USA. */
  104185. + License along with the GNU C Library; if not, see
  104186. + <http://www.gnu.org/licenses/>. */
  104187. #include <errno.h>
  104188. #include <pthread.h>
  104189. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once1.c uClibc-git/test/nptl/tst-once1.c
  104190. --- uClibc-0.9.33.2/test/nptl/tst-once1.c 2012-05-15 09:20:09.000000000 +0200
  104191. +++ uClibc-git/test/nptl/tst-once1.c 2014-02-03 12:32:57.000000000 +0100
  104192. @@ -13,9 +13,8 @@
  104193. Lesser General Public License for more details.
  104194. You should have received a copy of the GNU Lesser General Public
  104195. - License along with the GNU C Library; if not, write to the Free
  104196. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104197. - 02111-1307 USA. */
  104198. + License along with the GNU C Library; if not, see
  104199. + <http://www.gnu.org/licenses/>. */
  104200. #include <pthread.h>
  104201. #include <stdio.h>
  104202. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once2.c uClibc-git/test/nptl/tst-once2.c
  104203. --- uClibc-0.9.33.2/test/nptl/tst-once2.c 2012-05-15 09:20:09.000000000 +0200
  104204. +++ uClibc-git/test/nptl/tst-once2.c 2014-02-03 12:32:57.000000000 +0100
  104205. @@ -13,9 +13,8 @@
  104206. Lesser General Public License for more details.
  104207. You should have received a copy of the GNU Lesser General Public
  104208. - License along with the GNU C Library; if not, write to the Free
  104209. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104210. - 02111-1307 USA. */
  104211. + License along with the GNU C Library; if not, see
  104212. + <http://www.gnu.org/licenses/>. */
  104213. #include <pthread.h>
  104214. #include <stdio.h>
  104215. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once3.c uClibc-git/test/nptl/tst-once3.c
  104216. --- uClibc-0.9.33.2/test/nptl/tst-once3.c 2012-05-15 09:20:09.000000000 +0200
  104217. +++ uClibc-git/test/nptl/tst-once3.c 2014-02-03 12:32:57.000000000 +0100
  104218. @@ -13,9 +13,8 @@
  104219. Lesser General Public License for more details.
  104220. You should have received a copy of the GNU Lesser General Public
  104221. - License along with the GNU C Library; if not, write to the Free
  104222. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104223. - 02111-1307 USA. */
  104224. + License along with the GNU C Library; if not, see
  104225. + <http://www.gnu.org/licenses/>. */
  104226. #include <pthread.h>
  104227. #include <stdio.h>
  104228. diff -Nur uClibc-0.9.33.2/test/nptl/tst-once4.c uClibc-git/test/nptl/tst-once4.c
  104229. --- uClibc-0.9.33.2/test/nptl/tst-once4.c 2012-05-15 09:20:09.000000000 +0200
  104230. +++ uClibc-git/test/nptl/tst-once4.c 2014-02-03 12:32:57.000000000 +0100
  104231. @@ -13,9 +13,8 @@
  104232. Lesser General Public License for more details.
  104233. You should have received a copy of the GNU Lesser General Public
  104234. - License along with the GNU C Library; if not, write to the Free
  104235. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104236. - 02111-1307 USA. */
  104237. + License along with the GNU C Library; if not, see
  104238. + <http://www.gnu.org/licenses/>. */
  104239. #include <pthread.h>
  104240. #include <stdio.h>
  104241. diff -Nur uClibc-0.9.33.2/test/nptl/tst-popen1.c uClibc-git/test/nptl/tst-popen1.c
  104242. --- uClibc-0.9.33.2/test/nptl/tst-popen1.c 2012-05-15 09:20:09.000000000 +0200
  104243. +++ uClibc-git/test/nptl/tst-popen1.c 2014-02-03 12:32:57.000000000 +0100
  104244. @@ -13,9 +13,8 @@
  104245. Lesser General Public License for more details.
  104246. You should have received a copy of the GNU Lesser General Public
  104247. - License along with the GNU C Library; if not, write to the Free
  104248. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104249. - 02111-1307 USA. */
  104250. + License along with the GNU C Library; if not, see
  104251. + <http://www.gnu.org/licenses/>. */
  104252. #include <errno.h>
  104253. #include <error.h>
  104254. diff -Nur uClibc-0.9.33.2/test/nptl/tst-raise1.c uClibc-git/test/nptl/tst-raise1.c
  104255. --- uClibc-0.9.33.2/test/nptl/tst-raise1.c 2012-05-15 09:20:09.000000000 +0200
  104256. +++ uClibc-git/test/nptl/tst-raise1.c 2014-02-03 12:32:57.000000000 +0100
  104257. @@ -13,9 +13,8 @@
  104258. Lesser General Public License for more details.
  104259. You should have received a copy of the GNU Lesser General Public
  104260. - License along with the GNU C Library; if not, write to the Free
  104261. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104262. - 02111-1307 USA. */
  104263. + License along with the GNU C Library; if not, see
  104264. + <http://www.gnu.org/licenses/>. */
  104265. #include <errno.h>
  104266. #include <error.h>
  104267. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock10.c uClibc-git/test/nptl/tst-rwlock10.c
  104268. --- uClibc-0.9.33.2/test/nptl/tst-rwlock10.c 2012-05-15 09:20:09.000000000 +0200
  104269. +++ uClibc-git/test/nptl/tst-rwlock10.c 2014-02-03 12:32:57.000000000 +0100
  104270. @@ -13,9 +13,8 @@
  104271. Lesser General Public License for more details.
  104272. You should have received a copy of the GNU Lesser General Public
  104273. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  104274. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  104275. - Boston, MA 02111-1307, USA. */
  104276. + License along with the GNU C Library; see the file COPYING.LIB. If
  104277. + not, see <http://www.gnu.org/licenses/>. */
  104278. #define INIT PTHREAD_RWLOCK_INITIALIZER
  104279. #include "tst-rwlock8.c"
  104280. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock11.c uClibc-git/test/nptl/tst-rwlock11.c
  104281. --- uClibc-0.9.33.2/test/nptl/tst-rwlock11.c 2012-05-15 09:20:09.000000000 +0200
  104282. +++ uClibc-git/test/nptl/tst-rwlock11.c 2014-02-03 12:32:57.000000000 +0100
  104283. @@ -13,9 +13,8 @@
  104284. Lesser General Public License for more details.
  104285. You should have received a copy of the GNU Lesser General Public
  104286. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  104287. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  104288. - Boston, MA 02111-1307, USA. */
  104289. + License along with the GNU C Library; see the file COPYING.LIB. If
  104290. + not, see <http://www.gnu.org/licenses/>. */
  104291. #define INIT PTHREAD_RWLOCK_INITIALIZER
  104292. #include "tst-rwlock9.c"
  104293. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock12.c uClibc-git/test/nptl/tst-rwlock12.c
  104294. --- uClibc-0.9.33.2/test/nptl/tst-rwlock12.c 2012-05-15 09:20:09.000000000 +0200
  104295. +++ uClibc-git/test/nptl/tst-rwlock12.c 2014-02-03 12:32:57.000000000 +0100
  104296. @@ -13,9 +13,8 @@
  104297. Lesser General Public License for more details.
  104298. You should have received a copy of the GNU Lesser General Public
  104299. - License along with the GNU C Library; if not, write to the Free
  104300. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104301. - 02111-1307 USA. */
  104302. + License along with the GNU C Library; if not, see
  104303. + <http://www.gnu.org/licenses/>. */
  104304. #include <errno.h>
  104305. #include <pthread.h>
  104306. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock13.c uClibc-git/test/nptl/tst-rwlock13.c
  104307. --- uClibc-0.9.33.2/test/nptl/tst-rwlock13.c 2012-05-15 09:20:09.000000000 +0200
  104308. +++ uClibc-git/test/nptl/tst-rwlock13.c 2014-02-03 12:32:57.000000000 +0100
  104309. @@ -12,9 +12,8 @@
  104310. Lesser General Public License for more details.
  104311. You should have received a copy of the GNU Lesser General Public
  104312. - License along with the GNU C Library; if not, write to the Free
  104313. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104314. - 02111-1307 USA. */
  104315. + License along with the GNU C Library; if not, see
  104316. + <http://www.gnu.org/licenses/>. */
  104317. #include <pthread.h>
  104318. #include <stdio.h>
  104319. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock14.c uClibc-git/test/nptl/tst-rwlock14.c
  104320. --- uClibc-0.9.33.2/test/nptl/tst-rwlock14.c 2012-05-15 09:20:09.000000000 +0200
  104321. +++ uClibc-git/test/nptl/tst-rwlock14.c 2014-02-03 12:32:57.000000000 +0100
  104322. @@ -13,9 +13,8 @@
  104323. Lesser General Public License for more details.
  104324. You should have received a copy of the GNU Lesser General Public
  104325. - License along with the GNU C Library; if not, write to the Free
  104326. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104327. - 02111-1307 USA. */
  104328. + License along with the GNU C Library; if not, see
  104329. + <http://www.gnu.org/licenses/>. */
  104330. #include <errno.h>
  104331. #include <pthread.h>
  104332. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock1.c uClibc-git/test/nptl/tst-rwlock1.c
  104333. --- uClibc-0.9.33.2/test/nptl/tst-rwlock1.c 2012-05-15 09:20:09.000000000 +0200
  104334. +++ uClibc-git/test/nptl/tst-rwlock1.c 2014-02-03 12:32:57.000000000 +0100
  104335. @@ -13,9 +13,8 @@
  104336. Lesser General Public License for more details.
  104337. You should have received a copy of the GNU Lesser General Public
  104338. - License along with the GNU C Library; if not, write to the Free
  104339. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104340. - 02111-1307 USA. */
  104341. + License along with the GNU C Library; if not, see
  104342. + <http://www.gnu.org/licenses/>. */
  104343. #include <pthread.h>
  104344. #include <stdio.h>
  104345. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock2.c uClibc-git/test/nptl/tst-rwlock2.c
  104346. --- uClibc-0.9.33.2/test/nptl/tst-rwlock2.c 2012-05-15 09:20:09.000000000 +0200
  104347. +++ uClibc-git/test/nptl/tst-rwlock2.c 2014-02-03 12:32:57.000000000 +0100
  104348. @@ -13,9 +13,8 @@
  104349. Lesser General Public License for more details.
  104350. You should have received a copy of the GNU Lesser General Public
  104351. - License along with the GNU C Library; if not, write to the Free
  104352. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104353. - 02111-1307 USA. */
  104354. + License along with the GNU C Library; if not, see
  104355. + <http://www.gnu.org/licenses/>. */
  104356. #include <errno.h>
  104357. #include <pthread.h>
  104358. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock3.c uClibc-git/test/nptl/tst-rwlock3.c
  104359. --- uClibc-0.9.33.2/test/nptl/tst-rwlock3.c 2012-05-15 09:20:09.000000000 +0200
  104360. +++ uClibc-git/test/nptl/tst-rwlock3.c 2014-02-03 12:32:57.000000000 +0100
  104361. @@ -13,9 +13,8 @@
  104362. Lesser General Public License for more details.
  104363. You should have received a copy of the GNU Lesser General Public
  104364. - License along with the GNU C Library; if not, write to the Free
  104365. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104366. - 02111-1307 USA. */
  104367. + License along with the GNU C Library; if not, see
  104368. + <http://www.gnu.org/licenses/>. */
  104369. /* This test case checks more than standard compliance. An
  104370. implementation may provide this service but it is not required to
  104371. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock4.c uClibc-git/test/nptl/tst-rwlock4.c
  104372. --- uClibc-0.9.33.2/test/nptl/tst-rwlock4.c 2012-05-15 09:20:09.000000000 +0200
  104373. +++ uClibc-git/test/nptl/tst-rwlock4.c 2014-02-03 12:32:57.000000000 +0100
  104374. @@ -13,9 +13,8 @@
  104375. Lesser General Public License for more details.
  104376. You should have received a copy of the GNU Lesser General Public
  104377. - License along with the GNU C Library; if not, write to the Free
  104378. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104379. - 02111-1307 USA. */
  104380. + License along with the GNU C Library; if not, see
  104381. + <http://www.gnu.org/licenses/>. */
  104382. #include <errno.h>
  104383. #include <pthread.h>
  104384. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock5.c uClibc-git/test/nptl/tst-rwlock5.c
  104385. --- uClibc-0.9.33.2/test/nptl/tst-rwlock5.c 2012-05-15 09:20:09.000000000 +0200
  104386. +++ uClibc-git/test/nptl/tst-rwlock5.c 2014-02-03 12:32:57.000000000 +0100
  104387. @@ -13,9 +13,8 @@
  104388. Lesser General Public License for more details.
  104389. You should have received a copy of the GNU Lesser General Public
  104390. - License along with the GNU C Library; if not, write to the Free
  104391. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104392. - 02111-1307 USA. */
  104393. + License along with the GNU C Library; if not, see
  104394. + <http://www.gnu.org/licenses/>. */
  104395. #include <pthread.h>
  104396. #include <signal.h>
  104397. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock6.c uClibc-git/test/nptl/tst-rwlock6.c
  104398. --- uClibc-0.9.33.2/test/nptl/tst-rwlock6.c 2012-05-15 09:20:09.000000000 +0200
  104399. +++ uClibc-git/test/nptl/tst-rwlock6.c 2014-02-03 12:32:57.000000000 +0100
  104400. @@ -13,9 +13,8 @@
  104401. Lesser General Public License for more details.
  104402. You should have received a copy of the GNU Lesser General Public
  104403. - License along with the GNU C Library; if not, write to the Free
  104404. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104405. - 02111-1307 USA. */
  104406. + License along with the GNU C Library; if not, see
  104407. + <http://www.gnu.org/licenses/>. */
  104408. #include <errno.h>
  104409. #include <pthread.h>
  104410. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock7.c uClibc-git/test/nptl/tst-rwlock7.c
  104411. --- uClibc-0.9.33.2/test/nptl/tst-rwlock7.c 2012-05-15 09:20:09.000000000 +0200
  104412. +++ uClibc-git/test/nptl/tst-rwlock7.c 2014-02-03 12:32:57.000000000 +0100
  104413. @@ -13,9 +13,8 @@
  104414. Lesser General Public License for more details.
  104415. You should have received a copy of the GNU Lesser General Public
  104416. - License along with the GNU C Library; if not, write to the Free
  104417. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104418. - 02111-1307 USA. */
  104419. + License along with the GNU C Library; if not, see
  104420. + <http://www.gnu.org/licenses/>. */
  104421. #include <errno.h>
  104422. #include <pthread.h>
  104423. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock8.c uClibc-git/test/nptl/tst-rwlock8.c
  104424. --- uClibc-0.9.33.2/test/nptl/tst-rwlock8.c 2012-05-15 09:20:09.000000000 +0200
  104425. +++ uClibc-git/test/nptl/tst-rwlock8.c 2014-02-03 12:32:57.000000000 +0100
  104426. @@ -13,9 +13,8 @@
  104427. Lesser General Public License for more details.
  104428. You should have received a copy of the GNU Lesser General Public
  104429. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  104430. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  104431. - Boston, MA 02111-1307, USA. */
  104432. + License along with the GNU C Library; see the file COPYING.LIB. If
  104433. + not, see <http://www.gnu.org/licenses/>. */
  104434. #include <errno.h>
  104435. #include <error.h>
  104436. diff -Nur uClibc-0.9.33.2/test/nptl/tst-rwlock9.c uClibc-git/test/nptl/tst-rwlock9.c
  104437. --- uClibc-0.9.33.2/test/nptl/tst-rwlock9.c 2012-05-15 09:20:09.000000000 +0200
  104438. +++ uClibc-git/test/nptl/tst-rwlock9.c 2014-02-03 12:32:57.000000000 +0100
  104439. @@ -13,9 +13,8 @@
  104440. Lesser General Public License for more details.
  104441. You should have received a copy of the GNU Lesser General Public
  104442. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  104443. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  104444. - Boston, MA 02111-1307, USA. */
  104445. + License along with the GNU C Library; see the file COPYING.LIB. If
  104446. + not, see <http://www.gnu.org/licenses/>. */
  104447. #include <errno.h>
  104448. #include <error.h>
  104449. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sched1.c uClibc-git/test/nptl/tst-sched1.c
  104450. --- uClibc-0.9.33.2/test/nptl/tst-sched1.c 2012-05-15 09:20:09.000000000 +0200
  104451. +++ uClibc-git/test/nptl/tst-sched1.c 2014-02-03 12:32:57.000000000 +0100
  104452. @@ -13,9 +13,8 @@
  104453. Lesser General Public License for more details.
  104454. You should have received a copy of the GNU Lesser General Public
  104455. - License along with the GNU C Library; if not, write to the Free
  104456. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104457. - 02111-1307 USA. */
  104458. + License along with the GNU C Library; if not, see
  104459. + <http://www.gnu.org/licenses/>. */
  104460. #include <pthread.h>
  104461. #include <stdio.h>
  104462. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem10.c uClibc-git/test/nptl/tst-sem10.c
  104463. --- uClibc-0.9.33.2/test/nptl/tst-sem10.c 2012-05-15 09:20:09.000000000 +0200
  104464. +++ uClibc-git/test/nptl/tst-sem10.c 2014-02-03 12:32:57.000000000 +0100
  104465. @@ -13,9 +13,8 @@
  104466. Lesser General Public License for more details.
  104467. You should have received a copy of the GNU Lesser General Public
  104468. - License along with the GNU C Library; if not, write to the Free
  104469. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104470. - 02111-1307 USA. */
  104471. + License along with the GNU C Library; if not, see
  104472. + <http://www.gnu.org/licenses/>. */
  104473. #include <errno.h>
  104474. #include <pthread.h>
  104475. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem1.c uClibc-git/test/nptl/tst-sem1.c
  104476. --- uClibc-0.9.33.2/test/nptl/tst-sem1.c 2012-05-15 09:20:09.000000000 +0200
  104477. +++ uClibc-git/test/nptl/tst-sem1.c 2014-02-03 12:32:57.000000000 +0100
  104478. @@ -13,9 +13,8 @@
  104479. Lesser General Public License for more details.
  104480. You should have received a copy of the GNU Lesser General Public
  104481. - License along with the GNU C Library; if not, write to the Free
  104482. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104483. - 02111-1307 USA. */
  104484. + License along with the GNU C Library; if not, see
  104485. + <http://www.gnu.org/licenses/>. */
  104486. #include <errno.h>
  104487. #include <semaphore.h>
  104488. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem2.c uClibc-git/test/nptl/tst-sem2.c
  104489. --- uClibc-0.9.33.2/test/nptl/tst-sem2.c 2012-05-15 09:20:09.000000000 +0200
  104490. +++ uClibc-git/test/nptl/tst-sem2.c 2014-02-03 12:32:57.000000000 +0100
  104491. @@ -13,9 +13,8 @@
  104492. Lesser General Public License for more details.
  104493. You should have received a copy of the GNU Lesser General Public
  104494. - License along with the GNU C Library; if not, write to the Free
  104495. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104496. - 02111-1307 USA. */
  104497. + License along with the GNU C Library; if not, see
  104498. + <http://www.gnu.org/licenses/>. */
  104499. #include <errno.h>
  104500. #include <semaphore.h>
  104501. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem3.c uClibc-git/test/nptl/tst-sem3.c
  104502. --- uClibc-0.9.33.2/test/nptl/tst-sem3.c 2012-05-15 09:20:09.000000000 +0200
  104503. +++ uClibc-git/test/nptl/tst-sem3.c 2014-02-03 12:32:57.000000000 +0100
  104504. @@ -13,9 +13,8 @@
  104505. Lesser General Public License for more details.
  104506. You should have received a copy of the GNU Lesser General Public
  104507. - License along with the GNU C Library; if not, write to the Free
  104508. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104509. - 02111-1307 USA. */
  104510. + License along with the GNU C Library; if not, see
  104511. + <http://www.gnu.org/licenses/>. */
  104512. #include <errno.h>
  104513. #include <semaphore.h>
  104514. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem4.c uClibc-git/test/nptl/tst-sem4.c
  104515. --- uClibc-0.9.33.2/test/nptl/tst-sem4.c 2012-05-15 09:20:09.000000000 +0200
  104516. +++ uClibc-git/test/nptl/tst-sem4.c 2014-02-03 12:32:57.000000000 +0100
  104517. @@ -13,9 +13,8 @@
  104518. Lesser General Public License for more details.
  104519. You should have received a copy of the GNU Lesser General Public
  104520. - License along with the GNU C Library; if not, write to the Free
  104521. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104522. - 02111-1307 USA. */
  104523. + License along with the GNU C Library; if not, see
  104524. + <http://www.gnu.org/licenses/>. */
  104525. #include <errno.h>
  104526. #include <fcntl.h>
  104527. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem5.c uClibc-git/test/nptl/tst-sem5.c
  104528. --- uClibc-0.9.33.2/test/nptl/tst-sem5.c 2012-05-15 09:20:09.000000000 +0200
  104529. +++ uClibc-git/test/nptl/tst-sem5.c 2014-02-03 12:32:57.000000000 +0100
  104530. @@ -13,9 +13,8 @@
  104531. Lesser General Public License for more details.
  104532. You should have received a copy of the GNU Lesser General Public
  104533. - License along with the GNU C Library; if not, write to the Free
  104534. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104535. - 02111-1307 USA. */
  104536. + License along with the GNU C Library; if not, see
  104537. + <http://www.gnu.org/licenses/>. */
  104538. #include <errno.h>
  104539. #include <semaphore.h>
  104540. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem6.c uClibc-git/test/nptl/tst-sem6.c
  104541. --- uClibc-0.9.33.2/test/nptl/tst-sem6.c 2012-05-15 09:20:09.000000000 +0200
  104542. +++ uClibc-git/test/nptl/tst-sem6.c 2014-02-03 12:32:57.000000000 +0100
  104543. @@ -13,9 +13,8 @@
  104544. Lesser General Public License for more details.
  104545. You should have received a copy of the GNU Lesser General Public
  104546. - License along with the GNU C Library; if not, write to the Free
  104547. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104548. - 02111-1307 USA. */
  104549. + License along with the GNU C Library; if not, see
  104550. + <http://www.gnu.org/licenses/>. */
  104551. #include <errno.h>
  104552. #include <semaphore.h>
  104553. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem7.c uClibc-git/test/nptl/tst-sem7.c
  104554. --- uClibc-0.9.33.2/test/nptl/tst-sem7.c 2012-05-15 09:20:09.000000000 +0200
  104555. +++ uClibc-git/test/nptl/tst-sem7.c 2014-02-03 12:32:57.000000000 +0100
  104556. @@ -13,9 +13,8 @@
  104557. Lesser General Public License for more details.
  104558. You should have received a copy of the GNU Lesser General Public
  104559. - License along with the GNU C Library; if not, write to the Free
  104560. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104561. - 02111-1307 USA. */
  104562. + License along with the GNU C Library; if not, see
  104563. + <http://www.gnu.org/licenses/>. */
  104564. #include <errno.h>
  104565. #include <fcntl.h>
  104566. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem8.c uClibc-git/test/nptl/tst-sem8.c
  104567. --- uClibc-0.9.33.2/test/nptl/tst-sem8.c 2012-05-15 09:20:09.000000000 +0200
  104568. +++ uClibc-git/test/nptl/tst-sem8.c 2014-02-03 12:32:57.000000000 +0100
  104569. @@ -13,9 +13,8 @@
  104570. Lesser General Public License for more details.
  104571. You should have received a copy of the GNU Lesser General Public
  104572. - License along with the GNU C Library; if not, write to the Free
  104573. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104574. - 02111-1307 USA. */
  104575. + License along with the GNU C Library; if not, see
  104576. + <http://www.gnu.org/licenses/>. */
  104577. #include <errno.h>
  104578. #include <fcntl.h>
  104579. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sem9.c uClibc-git/test/nptl/tst-sem9.c
  104580. --- uClibc-0.9.33.2/test/nptl/tst-sem9.c 2012-05-15 09:20:09.000000000 +0200
  104581. +++ uClibc-git/test/nptl/tst-sem9.c 2014-02-03 12:32:57.000000000 +0100
  104582. @@ -13,9 +13,8 @@
  104583. Lesser General Public License for more details.
  104584. You should have received a copy of the GNU Lesser General Public
  104585. - License along with the GNU C Library; if not, write to the Free
  104586. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104587. - 02111-1307 USA. */
  104588. + License along with the GNU C Library; if not, see
  104589. + <http://www.gnu.org/licenses/>. */
  104590. #include <errno.h>
  104591. #include <fcntl.h>
  104592. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal1.c uClibc-git/test/nptl/tst-signal1.c
  104593. --- uClibc-0.9.33.2/test/nptl/tst-signal1.c 2012-05-15 09:20:09.000000000 +0200
  104594. +++ uClibc-git/test/nptl/tst-signal1.c 2014-02-03 12:32:57.000000000 +0100
  104595. @@ -13,9 +13,8 @@
  104596. Lesser General Public License for more details.
  104597. You should have received a copy of the GNU Lesser General Public
  104598. - License along with the GNU C Library; if not, write to the Free
  104599. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104600. - 02111-1307 USA. */
  104601. + License along with the GNU C Library; if not, see
  104602. + <http://www.gnu.org/licenses/>. */
  104603. #include <errno.h>
  104604. #include <pthread.h>
  104605. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal2.c uClibc-git/test/nptl/tst-signal2.c
  104606. --- uClibc-0.9.33.2/test/nptl/tst-signal2.c 2012-05-15 09:20:09.000000000 +0200
  104607. +++ uClibc-git/test/nptl/tst-signal2.c 2014-02-03 12:32:57.000000000 +0100
  104608. @@ -13,9 +13,8 @@
  104609. Lesser General Public License for more details.
  104610. You should have received a copy of the GNU Lesser General Public
  104611. - License along with the GNU C Library; if not, write to the Free
  104612. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104613. - 02111-1307 USA. */
  104614. + License along with the GNU C Library; if not, see
  104615. + <http://www.gnu.org/licenses/>. */
  104616. #include <errno.h>
  104617. #include <pthread.h>
  104618. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal3.c uClibc-git/test/nptl/tst-signal3.c
  104619. --- uClibc-0.9.33.2/test/nptl/tst-signal3.c 2012-05-15 09:20:09.000000000 +0200
  104620. +++ uClibc-git/test/nptl/tst-signal3.c 2014-02-03 12:32:57.000000000 +0100
  104621. @@ -13,9 +13,8 @@
  104622. Lesser General Public License for more details.
  104623. You should have received a copy of the GNU Lesser General Public
  104624. - License along with the GNU C Library; if not, write to the Free
  104625. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104626. - 02111-1307 USA. */
  104627. + License along with the GNU C Library; if not, see
  104628. + <http://www.gnu.org/licenses/>. */
  104629. #include <errno.h>
  104630. #include <pthread.h>
  104631. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal4.c uClibc-git/test/nptl/tst-signal4.c
  104632. --- uClibc-0.9.33.2/test/nptl/tst-signal4.c 2012-05-15 09:20:09.000000000 +0200
  104633. +++ uClibc-git/test/nptl/tst-signal4.c 2014-02-03 12:32:57.000000000 +0100
  104634. @@ -13,9 +13,8 @@
  104635. Lesser General Public License for more details.
  104636. You should have received a copy of the GNU Lesser General Public
  104637. - License along with the GNU C Library; if not, write to the Free
  104638. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104639. - 02111-1307 USA. */
  104640. + License along with the GNU C Library; if not, see
  104641. + <http://www.gnu.org/licenses/>. */
  104642. #include <errno.h>
  104643. #include <pthread.h>
  104644. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal5.c uClibc-git/test/nptl/tst-signal5.c
  104645. --- uClibc-0.9.33.2/test/nptl/tst-signal5.c 2012-05-15 09:20:09.000000000 +0200
  104646. +++ uClibc-git/test/nptl/tst-signal5.c 2014-02-03 12:32:57.000000000 +0100
  104647. @@ -13,9 +13,8 @@
  104648. Lesser General Public License for more details.
  104649. You should have received a copy of the GNU Lesser General Public
  104650. - License along with the GNU C Library; if not, write to the Free
  104651. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104652. - 02111-1307 USA. */
  104653. + License along with the GNU C Library; if not, see
  104654. + <http://www.gnu.org/licenses/>. */
  104655. #include <errno.h>
  104656. #include <pthread.h>
  104657. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal6.c uClibc-git/test/nptl/tst-signal6.c
  104658. --- uClibc-0.9.33.2/test/nptl/tst-signal6.c 2012-05-15 09:20:09.000000000 +0200
  104659. +++ uClibc-git/test/nptl/tst-signal6.c 2014-02-03 12:32:57.000000000 +0100
  104660. @@ -13,9 +13,8 @@
  104661. Lesser General Public License for more details.
  104662. You should have received a copy of the GNU Lesser General Public
  104663. - License along with the GNU C Library; if not, write to the Free
  104664. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104665. - 02111-1307 USA. */
  104666. + License along with the GNU C Library; if not, see
  104667. + <http://www.gnu.org/licenses/>. */
  104668. #include <pthread.h>
  104669. #include <signal.h>
  104670. diff -Nur uClibc-0.9.33.2/test/nptl/tst-signal7.c uClibc-git/test/nptl/tst-signal7.c
  104671. --- uClibc-0.9.33.2/test/nptl/tst-signal7.c 2012-05-15 09:20:09.000000000 +0200
  104672. +++ uClibc-git/test/nptl/tst-signal7.c 2014-02-03 12:32:57.000000000 +0100
  104673. @@ -13,9 +13,8 @@
  104674. Lesser General Public License for more details.
  104675. You should have received a copy of the GNU Lesser General Public
  104676. - License along with the GNU C Library; if not, write to the Free
  104677. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104678. - 02111-1307 USA. */
  104679. + License along with the GNU C Library; if not, see
  104680. + <http://www.gnu.org/licenses/>. */
  104681. #include <errno.h>
  104682. #include <pthreadP.h>
  104683. diff -Nur uClibc-0.9.33.2/test/nptl/tst-spin1.c uClibc-git/test/nptl/tst-spin1.c
  104684. --- uClibc-0.9.33.2/test/nptl/tst-spin1.c 2012-05-15 09:20:09.000000000 +0200
  104685. +++ uClibc-git/test/nptl/tst-spin1.c 2014-02-03 12:32:57.000000000 +0100
  104686. @@ -13,9 +13,8 @@
  104687. Lesser General Public License for more details.
  104688. You should have received a copy of the GNU Lesser General Public
  104689. - License along with the GNU C Library; if not, write to the Free
  104690. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104691. - 02111-1307 USA. */
  104692. + License along with the GNU C Library; if not, see
  104693. + <http://www.gnu.org/licenses/>. */
  104694. #include <pthread.h>
  104695. #include <stdio.h>
  104696. diff -Nur uClibc-0.9.33.2/test/nptl/tst-spin2.c uClibc-git/test/nptl/tst-spin2.c
  104697. --- uClibc-0.9.33.2/test/nptl/tst-spin2.c 2012-05-15 09:20:09.000000000 +0200
  104698. +++ uClibc-git/test/nptl/tst-spin2.c 2014-02-03 12:32:57.000000000 +0100
  104699. @@ -13,9 +13,8 @@
  104700. Lesser General Public License for more details.
  104701. You should have received a copy of the GNU Lesser General Public
  104702. - License along with the GNU C Library; if not, write to the Free
  104703. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104704. - 02111-1307 USA. */
  104705. + License along with the GNU C Library; if not, see
  104706. + <http://www.gnu.org/licenses/>. */
  104707. #include <errno.h>
  104708. #include <pthread.h>
  104709. diff -Nur uClibc-0.9.33.2/test/nptl/tst-spin3.c uClibc-git/test/nptl/tst-spin3.c
  104710. --- uClibc-0.9.33.2/test/nptl/tst-spin3.c 2012-05-15 09:20:09.000000000 +0200
  104711. +++ uClibc-git/test/nptl/tst-spin3.c 2014-02-03 12:32:57.000000000 +0100
  104712. @@ -13,9 +13,8 @@
  104713. Lesser General Public License for more details.
  104714. You should have received a copy of the GNU Lesser General Public
  104715. - License along with the GNU C Library; if not, write to the Free
  104716. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104717. - 02111-1307 USA. */
  104718. + License along with the GNU C Library; if not, see
  104719. + <http://www.gnu.org/licenses/>. */
  104720. #include <pthread.h>
  104721. #include <signal.h>
  104722. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stack1.c uClibc-git/test/nptl/tst-stack1.c
  104723. --- uClibc-0.9.33.2/test/nptl/tst-stack1.c 2012-05-15 09:20:09.000000000 +0200
  104724. +++ uClibc-git/test/nptl/tst-stack1.c 2014-02-03 12:32:57.000000000 +0100
  104725. @@ -13,9 +13,8 @@
  104726. Lesser General Public License for more details.
  104727. You should have received a copy of the GNU Lesser General Public
  104728. - License along with the GNU C Library; if not, write to the Free
  104729. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104730. - 02111-1307 USA. */
  104731. + License along with the GNU C Library; if not, see
  104732. + <http://www.gnu.org/licenses/>. */
  104733. #include <limits.h>
  104734. #include <pthread.h>
  104735. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stack2.c uClibc-git/test/nptl/tst-stack2.c
  104736. --- uClibc-0.9.33.2/test/nptl/tst-stack2.c 2012-05-15 09:20:09.000000000 +0200
  104737. +++ uClibc-git/test/nptl/tst-stack2.c 2014-02-03 12:32:57.000000000 +0100
  104738. @@ -13,9 +13,8 @@
  104739. Lesser General Public License for more details.
  104740. You should have received a copy of the GNU Lesser General Public
  104741. - License along with the GNU C Library; if not, write to the Free
  104742. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104743. - 02111-1307 USA. */
  104744. + License along with the GNU C Library; if not, see
  104745. + <http://www.gnu.org/licenses/>. */
  104746. /* Test whether it is possible to create a thread with PTHREAD_STACK_MIN
  104747. stack size. */
  104748. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stack-align.h uClibc-git/test/nptl/tst-stack-align.h
  104749. --- uClibc-0.9.33.2/test/nptl/tst-stack-align.h 2012-05-15 09:20:09.000000000 +0200
  104750. +++ uClibc-git/test/nptl/tst-stack-align.h 2014-02-03 12:32:57.000000000 +0100
  104751. @@ -12,9 +12,8 @@
  104752. Lesser General Public License for more details.
  104753. You should have received a copy of the GNU Lesser General Public
  104754. - License along with the GNU C Library; if not, write to the Free
  104755. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104756. - 02111-1307 USA. */
  104757. + License along with the GNU C Library; if not, see
  104758. + <http://www.gnu.org/licenses/>. */
  104759. #include <stdio.h>
  104760. #include <stdint.h>
  104761. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stdio1.c uClibc-git/test/nptl/tst-stdio1.c
  104762. --- uClibc-0.9.33.2/test/nptl/tst-stdio1.c 2012-05-15 09:20:09.000000000 +0200
  104763. +++ uClibc-git/test/nptl/tst-stdio1.c 2014-02-03 12:32:57.000000000 +0100
  104764. @@ -13,9 +13,8 @@
  104765. Lesser General Public License for more details.
  104766. You should have received a copy of the GNU Lesser General Public
  104767. - License along with the GNU C Library; if not, write to the Free
  104768. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104769. - 02111-1307 USA. */
  104770. + License along with the GNU C Library; if not, see
  104771. + <http://www.gnu.org/licenses/>. */
  104772. #include <pthread.h>
  104773. #include <signal.h>
  104774. diff -Nur uClibc-0.9.33.2/test/nptl/tst-stdio2.c uClibc-git/test/nptl/tst-stdio2.c
  104775. --- uClibc-0.9.33.2/test/nptl/tst-stdio2.c 2012-05-15 09:20:09.000000000 +0200
  104776. +++ uClibc-git/test/nptl/tst-stdio2.c 2014-02-03 12:32:57.000000000 +0100
  104777. @@ -13,9 +13,8 @@
  104778. Lesser General Public License for more details.
  104779. You should have received a copy of the GNU Lesser General Public
  104780. - License along with the GNU C Library; if not, write to the Free
  104781. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104782. - 02111-1307 USA. */
  104783. + License along with the GNU C Library; if not, see
  104784. + <http://www.gnu.org/licenses/>. */
  104785. #include <pthread.h>
  104786. #include <signal.h>
  104787. diff -Nur uClibc-0.9.33.2/test/nptl/tst-sysconf.c uClibc-git/test/nptl/tst-sysconf.c
  104788. --- uClibc-0.9.33.2/test/nptl/tst-sysconf.c 2012-05-15 09:20:09.000000000 +0200
  104789. +++ uClibc-git/test/nptl/tst-sysconf.c 2014-02-03 12:32:57.000000000 +0100
  104790. @@ -13,9 +13,8 @@
  104791. Lesser General Public License for more details.
  104792. You should have received a copy of the GNU Lesser General Public
  104793. - License along with the GNU C Library; if not, write to the Free
  104794. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104795. - 02111-1307 USA. */
  104796. + License along with the GNU C Library; if not, see
  104797. + <http://www.gnu.org/licenses/>. */
  104798. #include <pthread.h>
  104799. #include <stdio.h>
  104800. diff -Nur uClibc-0.9.33.2/test/nptl/tst-timer4.c uClibc-git/test/nptl/tst-timer4.c
  104801. --- uClibc-0.9.33.2/test/nptl/tst-timer4.c 2012-05-15 09:20:09.000000000 +0200
  104802. +++ uClibc-git/test/nptl/tst-timer4.c 2014-02-03 12:32:57.000000000 +0100
  104803. @@ -14,9 +14,8 @@
  104804. Lesser General Public License for more details.
  104805. You should have received a copy of the GNU Lesser General Public
  104806. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  104807. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  104808. - Boston, MA 02111-1307, USA. */
  104809. + License along with the GNU C Library; see the file COPYING.LIB. If
  104810. + not, see <http://www.gnu.org/licenses/>. */
  104811. #include <errno.h>
  104812. #include <signal.h>
  104813. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls1.c uClibc-git/test/nptl/tst-tls1.c
  104814. --- uClibc-0.9.33.2/test/nptl/tst-tls1.c 2012-05-15 09:20:09.000000000 +0200
  104815. +++ uClibc-git/test/nptl/tst-tls1.c 2014-02-03 12:32:57.000000000 +0100
  104816. @@ -13,9 +13,8 @@
  104817. Lesser General Public License for more details.
  104818. You should have received a copy of the GNU Lesser General Public
  104819. - License along with the GNU C Library; if not, write to the Free
  104820. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104821. - 02111-1307 USA. */
  104822. + License along with the GNU C Library; if not, see
  104823. + <http://www.gnu.org/licenses/>. */
  104824. #include <pthread.h>
  104825. #include <stdio.h>
  104826. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls2.c uClibc-git/test/nptl/tst-tls2.c
  104827. --- uClibc-0.9.33.2/test/nptl/tst-tls2.c 2012-05-15 09:20:09.000000000 +0200
  104828. +++ uClibc-git/test/nptl/tst-tls2.c 2014-02-03 12:32:57.000000000 +0100
  104829. @@ -13,9 +13,8 @@
  104830. Lesser General Public License for more details.
  104831. You should have received a copy of the GNU Lesser General Public
  104832. - License along with the GNU C Library; if not, write to the Free
  104833. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104834. - 02111-1307 USA. */
  104835. + License along with the GNU C Library; if not, see
  104836. + <http://www.gnu.org/licenses/>. */
  104837. #include <errno.h>
  104838. #include <pthread.h>
  104839. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls3.c uClibc-git/test/nptl/tst-tls3.c
  104840. --- uClibc-0.9.33.2/test/nptl/tst-tls3.c 2012-05-15 09:20:09.000000000 +0200
  104841. +++ uClibc-git/test/nptl/tst-tls3.c 2014-02-03 12:32:57.000000000 +0100
  104842. @@ -13,9 +13,8 @@
  104843. Lesser General Public License for more details.
  104844. You should have received a copy of the GNU Lesser General Public
  104845. - License along with the GNU C Library; if not, write to the Free
  104846. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104847. - 02111-1307 USA. */
  104848. + License along with the GNU C Library; if not, see
  104849. + <http://www.gnu.org/licenses/>. */
  104850. #include <dlfcn.h>
  104851. #include <errno.h>
  104852. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls3mod.c uClibc-git/test/nptl/tst-tls3mod.c
  104853. --- uClibc-0.9.33.2/test/nptl/tst-tls3mod.c 2012-05-15 09:20:09.000000000 +0200
  104854. +++ uClibc-git/test/nptl/tst-tls3mod.c 2014-02-03 12:32:57.000000000 +0100
  104855. @@ -13,9 +13,8 @@
  104856. Lesser General Public License for more details.
  104857. You should have received a copy of the GNU Lesser General Public
  104858. - License along with the GNU C Library; if not, write to the Free
  104859. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104860. - 02111-1307 USA. */
  104861. + License along with the GNU C Library; if not, see
  104862. + <http://www.gnu.org/licenses/>. */
  104863. #include <pthread.h>
  104864. #include <semaphore.h>
  104865. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls4.c uClibc-git/test/nptl/tst-tls4.c
  104866. --- uClibc-0.9.33.2/test/nptl/tst-tls4.c 2012-05-15 09:20:09.000000000 +0200
  104867. +++ uClibc-git/test/nptl/tst-tls4.c 2014-02-03 12:32:57.000000000 +0100
  104868. @@ -13,9 +13,8 @@
  104869. Lesser General Public License for more details.
  104870. You should have received a copy of the GNU Lesser General Public
  104871. - License along with the GNU C Library; if not, write to the Free
  104872. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104873. - 02111-1307 USA. */
  104874. + License along with the GNU C Library; if not, see
  104875. + <http://www.gnu.org/licenses/>. */
  104876. #include <dlfcn.h>
  104877. #include <errno.h>
  104878. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls4moda.c uClibc-git/test/nptl/tst-tls4moda.c
  104879. --- uClibc-0.9.33.2/test/nptl/tst-tls4moda.c 2012-05-15 09:20:09.000000000 +0200
  104880. +++ uClibc-git/test/nptl/tst-tls4moda.c 2014-02-03 12:32:57.000000000 +0100
  104881. @@ -13,9 +13,8 @@
  104882. Lesser General Public License for more details.
  104883. You should have received a copy of the GNU Lesser General Public
  104884. - License along with the GNU C Library; if not, write to the Free
  104885. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104886. - 02111-1307 USA. */
  104887. + License along with the GNU C Library; if not, see
  104888. + <http://www.gnu.org/licenses/>. */
  104889. #include <stdio.h>
  104890. #include <stdlib.h>
  104891. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls4modb.c uClibc-git/test/nptl/tst-tls4modb.c
  104892. --- uClibc-0.9.33.2/test/nptl/tst-tls4modb.c 2012-05-15 09:20:09.000000000 +0200
  104893. +++ uClibc-git/test/nptl/tst-tls4modb.c 2014-02-03 12:32:57.000000000 +0100
  104894. @@ -13,9 +13,8 @@
  104895. Lesser General Public License for more details.
  104896. You should have received a copy of the GNU Lesser General Public
  104897. - License along with the GNU C Library; if not, write to the Free
  104898. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104899. - 02111-1307 USA. */
  104900. + License along with the GNU C Library; if not, see
  104901. + <http://www.gnu.org/licenses/>. */
  104902. #include <stdio.h>
  104903. #include <stdlib.h>
  104904. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tls5.c uClibc-git/test/nptl/tst-tls5.c
  104905. --- uClibc-0.9.33.2/test/nptl/tst-tls5.c 2012-05-15 09:20:09.000000000 +0200
  104906. +++ uClibc-git/test/nptl/tst-tls5.c 2014-02-03 12:32:57.000000000 +0100
  104907. @@ -13,9 +13,8 @@
  104908. Lesser General Public License for more details.
  104909. You should have received a copy of the GNU Lesser General Public
  104910. - License along with the GNU C Library; if not, write to the Free
  104911. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104912. - 02111-1307 USA. */
  104913. + License along with the GNU C Library; if not, see
  104914. + <http://www.gnu.org/licenses/>. */
  104915. /* Check alignment, overlapping and layout of TLS variables. */
  104916. #include <stdint.h>
  104917. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd1.c uClibc-git/test/nptl/tst-tsd1.c
  104918. --- uClibc-0.9.33.2/test/nptl/tst-tsd1.c 2012-05-15 09:20:09.000000000 +0200
  104919. +++ uClibc-git/test/nptl/tst-tsd1.c 2014-02-03 12:32:57.000000000 +0100
  104920. @@ -13,9 +13,8 @@
  104921. Lesser General Public License for more details.
  104922. You should have received a copy of the GNU Lesser General Public
  104923. - License along with the GNU C Library; if not, write to the Free
  104924. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104925. - 02111-1307 USA. */
  104926. + License along with the GNU C Library; if not, see
  104927. + <http://www.gnu.org/licenses/>. */
  104928. #include <pthread.h>
  104929. #include <stdio.h>
  104930. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd2.c uClibc-git/test/nptl/tst-tsd2.c
  104931. --- uClibc-0.9.33.2/test/nptl/tst-tsd2.c 2012-05-15 09:20:09.000000000 +0200
  104932. +++ uClibc-git/test/nptl/tst-tsd2.c 2014-02-03 12:32:57.000000000 +0100
  104933. @@ -13,9 +13,8 @@
  104934. Lesser General Public License for more details.
  104935. You should have received a copy of the GNU Lesser General Public
  104936. - License along with the GNU C Library; if not, write to the Free
  104937. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104938. - 02111-1307 USA. */
  104939. + License along with the GNU C Library; if not, see
  104940. + <http://www.gnu.org/licenses/>. */
  104941. #include <pthread.h>
  104942. #include <stdio.h>
  104943. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd3.c uClibc-git/test/nptl/tst-tsd3.c
  104944. --- uClibc-0.9.33.2/test/nptl/tst-tsd3.c 2012-05-15 09:20:09.000000000 +0200
  104945. +++ uClibc-git/test/nptl/tst-tsd3.c 2014-02-03 12:32:57.000000000 +0100
  104946. @@ -13,9 +13,8 @@
  104947. Lesser General Public License for more details.
  104948. You should have received a copy of the GNU Lesser General Public
  104949. - License along with the GNU C Library; if not, write to the Free
  104950. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104951. - 02111-1307 USA. */
  104952. + License along with the GNU C Library; if not, see
  104953. + <http://www.gnu.org/licenses/>. */
  104954. #include <limits.h>
  104955. #include <pthread.h>
  104956. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd4.c uClibc-git/test/nptl/tst-tsd4.c
  104957. --- uClibc-0.9.33.2/test/nptl/tst-tsd4.c 2012-05-15 09:20:09.000000000 +0200
  104958. +++ uClibc-git/test/nptl/tst-tsd4.c 2014-02-03 12:32:57.000000000 +0100
  104959. @@ -13,9 +13,8 @@
  104960. Lesser General Public License for more details.
  104961. You should have received a copy of the GNU Lesser General Public
  104962. - License along with the GNU C Library; if not, write to the Free
  104963. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104964. - 02111-1307 USA. */
  104965. + License along with the GNU C Library; if not, see
  104966. + <http://www.gnu.org/licenses/>. */
  104967. #include <limits.h>
  104968. #include <pthread.h>
  104969. diff -Nur uClibc-0.9.33.2/test/nptl/tst-tsd5.c uClibc-git/test/nptl/tst-tsd5.c
  104970. --- uClibc-0.9.33.2/test/nptl/tst-tsd5.c 2012-05-15 09:20:09.000000000 +0200
  104971. +++ uClibc-git/test/nptl/tst-tsd5.c 2014-02-03 12:32:57.000000000 +0100
  104972. @@ -13,9 +13,8 @@
  104973. Lesser General Public License for more details.
  104974. You should have received a copy of the GNU Lesser General Public
  104975. - License along with the GNU C Library; if not, write to the Free
  104976. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104977. - 02111-1307 USA. */
  104978. + License along with the GNU C Library; if not, see
  104979. + <http://www.gnu.org/licenses/>. */
  104980. #include <pthread.h>
  104981. #include <stdio.h>
  104982. diff -Nur uClibc-0.9.33.2/test/nptl/tst-typesizes.c uClibc-git/test/nptl/tst-typesizes.c
  104983. --- uClibc-0.9.33.2/test/nptl/tst-typesizes.c 2012-05-15 09:20:09.000000000 +0200
  104984. +++ uClibc-git/test/nptl/tst-typesizes.c 2014-02-03 12:32:57.000000000 +0100
  104985. @@ -13,9 +13,8 @@
  104986. Lesser General Public License for more details.
  104987. You should have received a copy of the GNU Lesser General Public
  104988. - License along with the GNU C Library; if not, write to the Free
  104989. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  104990. - 02111-1307 USA. */
  104991. + License along with the GNU C Library; if not, see
  104992. + <http://www.gnu.org/licenses/>. */
  104993. #include <stdio.h>
  104994. #include <pthreadP.h>
  104995. diff -Nur uClibc-0.9.33.2/test/nptl/tst-umask1.c uClibc-git/test/nptl/tst-umask1.c
  104996. --- uClibc-0.9.33.2/test/nptl/tst-umask1.c 2012-05-15 09:20:09.000000000 +0200
  104997. +++ uClibc-git/test/nptl/tst-umask1.c 2014-02-03 12:32:57.000000000 +0100
  104998. @@ -13,9 +13,8 @@
  104999. Lesser General Public License for more details.
  105000. You should have received a copy of the GNU Lesser General Public
  105001. - License along with the GNU C Library; if not, write to the Free
  105002. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105003. - 02111-1307 USA. */
  105004. + License along with the GNU C Library; if not, see
  105005. + <http://www.gnu.org/licenses/>. */
  105006. #include <fcntl.h>
  105007. #include <pthread.h>
  105008. diff -Nur uClibc-0.9.33.2/test/nptl/tst-unload.c uClibc-git/test/nptl/tst-unload.c
  105009. --- uClibc-0.9.33.2/test/nptl/tst-unload.c 2012-05-15 09:20:09.000000000 +0200
  105010. +++ uClibc-git/test/nptl/tst-unload.c 2014-02-03 12:32:57.000000000 +0100
  105011. @@ -13,9 +13,8 @@
  105012. Lesser General Public License for more details.
  105013. You should have received a copy of the GNU Lesser General Public
  105014. - License along with the GNU C Library; see the file COPYING.LIB. If not,
  105015. - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  105016. - Boston, MA 02111-1307, USA. */
  105017. + License along with the GNU C Library; see the file COPYING.LIB. If
  105018. + not, see <http://www.gnu.org/licenses/>. */
  105019. #include <dlfcn.h>
  105020. #include <stdio.h>
  105021. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork1.c uClibc-git/test/nptl/tst-vfork1.c
  105022. --- uClibc-0.9.33.2/test/nptl/tst-vfork1.c 2012-05-15 09:20:09.000000000 +0200
  105023. +++ uClibc-git/test/nptl/tst-vfork1.c 2014-02-03 12:32:57.000000000 +0100
  105024. @@ -14,9 +14,8 @@
  105025. Lesser General Public License for more details.
  105026. You should have received a copy of the GNU Lesser General Public
  105027. - License along with the GNU C Library; if not, write to the Free
  105028. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105029. - 02111-1307 USA. */
  105030. + License along with the GNU C Library; if not, see
  105031. + <http://www.gnu.org/licenses/>. */
  105032. #include <errno.h>
  105033. #include <stdio.h>
  105034. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork1x.c uClibc-git/test/nptl/tst-vfork1x.c
  105035. --- uClibc-0.9.33.2/test/nptl/tst-vfork1x.c 2012-05-15 09:20:09.000000000 +0200
  105036. +++ uClibc-git/test/nptl/tst-vfork1x.c 2014-02-03 12:32:57.000000000 +0100
  105037. @@ -14,9 +14,8 @@
  105038. Lesser General Public License for more details.
  105039. You should have received a copy of the GNU Lesser General Public
  105040. - License along with the GNU C Library; if not, write to the Free
  105041. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105042. - 02111-1307 USA. */
  105043. + License along with the GNU C Library; if not, see
  105044. + <http://www.gnu.org/licenses/>. */
  105045. #include <errno.h>
  105046. #include <stdio.h>
  105047. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork2.c uClibc-git/test/nptl/tst-vfork2.c
  105048. --- uClibc-0.9.33.2/test/nptl/tst-vfork2.c 2012-05-15 09:20:09.000000000 +0200
  105049. +++ uClibc-git/test/nptl/tst-vfork2.c 2014-02-03 12:32:57.000000000 +0100
  105050. @@ -14,9 +14,8 @@
  105051. Lesser General Public License for more details.
  105052. You should have received a copy of the GNU Lesser General Public
  105053. - License along with the GNU C Library; if not, write to the Free
  105054. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105055. - 02111-1307 USA. */
  105056. + License along with the GNU C Library; if not, see
  105057. + <http://www.gnu.org/licenses/>. */
  105058. #include <errno.h>
  105059. #include <signal.h>
  105060. diff -Nur uClibc-0.9.33.2/test/nptl/tst-vfork2x.c uClibc-git/test/nptl/tst-vfork2x.c
  105061. --- uClibc-0.9.33.2/test/nptl/tst-vfork2x.c 2012-05-15 09:20:09.000000000 +0200
  105062. +++ uClibc-git/test/nptl/tst-vfork2x.c 2014-02-03 12:32:57.000000000 +0100
  105063. @@ -14,9 +14,8 @@
  105064. Lesser General Public License for more details.
  105065. You should have received a copy of the GNU Lesser General Public
  105066. - License along with the GNU C Library; if not, write to the Free
  105067. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105068. - 02111-1307 USA. */
  105069. + License along with the GNU C Library; if not, see
  105070. + <http://www.gnu.org/licenses/>. */
  105071. #include <errno.h>
  105072. #include <signal.h>
  105073. diff -Nur uClibc-0.9.33.2/test/pthread/Makefile uClibc-git/test/pthread/Makefile
  105074. --- uClibc-0.9.33.2/test/pthread/Makefile 2012-05-15 09:20:09.000000000 +0200
  105075. +++ uClibc-git/test/pthread/Makefile 2014-02-03 12:32:57.000000000 +0100
  105076. @@ -2,6 +2,7 @@
  105077. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105078. top_builddir=../../
  105079. +top_srcdir=../../
  105080. include ../Rules.mak
  105081. -include Makefile.in
  105082. include ../Test.mak
  105083. diff -Nur uClibc-0.9.33.2/test/pwd_grp/Makefile uClibc-git/test/pwd_grp/Makefile
  105084. --- uClibc-0.9.33.2/test/pwd_grp/Makefile 2012-05-15 09:20:09.000000000 +0200
  105085. +++ uClibc-git/test/pwd_grp/Makefile 2014-02-03 12:32:57.000000000 +0100
  105086. @@ -2,6 +2,7 @@
  105087. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105088. top_builddir=../../
  105089. +top_srcdir=../../
  105090. include ../Rules.mak
  105091. -include Makefile.in
  105092. include ../Test.mak
  105093. diff -Nur uClibc-0.9.33.2/test/regex/Makefile uClibc-git/test/regex/Makefile
  105094. --- uClibc-0.9.33.2/test/regex/Makefile 2012-05-15 09:20:09.000000000 +0200
  105095. +++ uClibc-git/test/regex/Makefile 2014-02-03 12:32:57.000000000 +0100
  105096. @@ -2,6 +2,7 @@
  105097. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105098. top_builddir=../../
  105099. +top_srcdir=../../
  105100. include ../Rules.mak
  105101. -include Makefile.in
  105102. include ../Test.mak
  105103. diff -Nur uClibc-0.9.33.2/test/regex/tst-regexloc.c uClibc-git/test/regex/tst-regexloc.c
  105104. --- uClibc-0.9.33.2/test/regex/tst-regexloc.c 2012-05-15 09:20:09.000000000 +0200
  105105. +++ uClibc-git/test/regex/tst-regexloc.c 2014-02-03 12:32:57.000000000 +0100
  105106. @@ -12,9 +12,8 @@
  105107. Lesser General Public License for more details.
  105108. You should have received a copy of the GNU Lesser General Public
  105109. - License along with the GNU C Library; if not, write to the Free
  105110. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105111. - 02111-1307 USA. */
  105112. + License along with the GNU C Library; if not, see
  105113. + <http://www.gnu.org/licenses/>. */
  105114. #include <sys/types.h>
  105115. #include <regex.h>
  105116. diff -Nur uClibc-0.9.33.2/test/rpc/Makefile uClibc-git/test/rpc/Makefile
  105117. --- uClibc-0.9.33.2/test/rpc/Makefile 2012-05-15 09:20:09.000000000 +0200
  105118. +++ uClibc-git/test/rpc/Makefile 2014-02-03 12:32:57.000000000 +0100
  105119. @@ -2,6 +2,7 @@
  105120. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105121. top_builddir=../../
  105122. +top_srcdir=../../
  105123. include ../Rules.mak
  105124. -include Makefile.in
  105125. include ../Test.mak
  105126. diff -Nur uClibc-0.9.33.2/test/Rules.mak uClibc-git/test/Rules.mak
  105127. --- uClibc-0.9.33.2/test/Rules.mak 2012-05-15 09:20:09.000000000 +0200
  105128. +++ uClibc-git/test/Rules.mak 2014-02-03 12:32:57.000000000 +0100
  105129. @@ -8,18 +8,34 @@
  105130. .SUFFIXES:
  105131. top_builddir ?= ../
  105132. +abs_top_builddir ?= $(shell cd $(top_builddir); pwd)/
  105133. TESTDIR=$(top_builddir)test/
  105134. -include $(top_builddir)/Rules.mak
  105135. -ifndef TEST_INSTALLED_UCLIBC
  105136. +include $(top_srcdir)Rules.mak
  105137. +ifeq ($(filter $(clean_targets) CLEAN_%,$(MAKECMDGOALS)),)
  105138. +ifeq ($(HAVE_DOT_CONFIG),)
  105139. +$(error no HAVE_DOT_CONFIG, failed to read .config)
  105140. +endif
  105141. +endif
  105142. +
  105143. ifdef UCLIBC_LDSO
  105144. ifeq (,$(findstring /,$(UCLIBC_LDSO)))
  105145. -UCLIBC_LDSO := $(top_builddir)lib/$(UCLIBC_LDSO)
  105146. +UCLIBC_LDSO := $(UCLIBC_LDSO)
  105147. +else
  105148. +UCLIBC_LDSO := $(notdir $(UCLIBC_LDSO))
  105149. endif
  105150. else
  105151. -UCLIBC_LDSO := $(firstword $(wildcard $(top_builddir)lib/ld*))
  105152. +UCLIBC_LDSO := $(notdir $(firstword $(wildcard $(top_builddir)lib/ld*)))
  105153. endif
  105154. +ifndef TEST_INSTALLED_UCLIBC
  105155. +ifeq ($(LDSO_SAFE_RUNPATH),y)
  105156. +UCLIBC_PATH := $(abs_top_builddir)lib
  105157. +else
  105158. +UCLIBC_PATH := $(top_builddir)lib
  105159. +endif
  105160. +else
  105161. +UCLIBC_PATH := $(RUNTIME_PREFIX)$(MULTILIB_DIR)
  105162. endif
  105163. #--------------------------------------------------------
  105164. # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.
  105165. @@ -81,15 +97,14 @@
  105166. LDFLAGS += -Wl,-static -static-libgcc
  105167. endif
  105168. -LDFLAGS += -B$(top_builddir)lib -Wl,-rpath,$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib
  105169. -UCLIBC_LDSO_ABSPATH=$(shell pwd)
  105170. -ifdef TEST_INSTALLED_UCLIBC
  105171. -LDFLAGS += -Wl,-rpath,./
  105172. -UCLIBC_LDSO_ABSPATH=$(RUNTIME_PREFIX)$(MULTILIB_DIR)
  105173. +ifndef TEST_INSTALLED_UCLIBC
  105174. +LDFLAGS += -B$(UCLIBC_PATH) -Wl,-rpath,$(UCLIBC_PATH):$(shell pwd) -Wl,-rpath-link,$(UCLIBC_PATH):$(shell pwd)
  105175. +else
  105176. +LDFLAGS += -Wl,-rpath,$(shell pwd)
  105177. endif
  105178. ifeq ($(findstring -static,$(LDFLAGS)),)
  105179. -LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_LDSO_ABSPATH)/$(UCLIBC_LDSO)
  105180. +LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_PATH)/$(UCLIBC_LDSO)
  105181. endif
  105182. ifeq ($(LDSO_GNU_HASH_SUPPORT),y)
  105183. diff -Nur uClibc-0.9.33.2/test/setjmp/bug269-setjmp.c uClibc-git/test/setjmp/bug269-setjmp.c
  105184. --- uClibc-0.9.33.2/test/setjmp/bug269-setjmp.c 2012-05-15 09:20:09.000000000 +0200
  105185. +++ uClibc-git/test/setjmp/bug269-setjmp.c 2014-02-03 12:32:57.000000000 +0100
  105186. @@ -12,9 +12,8 @@
  105187. Lesser General Public License for more details.
  105188. You should have received a copy of the GNU Lesser General Public
  105189. - License along with the GNU C Library; if not, write to the Free
  105190. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105191. - 02111-1307 USA. */ ;
  105192. + License along with the GNU C Library; If not, see
  105193. + <http://www.gnu.org/licenses/>. */
  105194. /* Test case for Bugzilla # 269 */
  105195. diff -Nur uClibc-0.9.33.2/test/setjmp/Makefile uClibc-git/test/setjmp/Makefile
  105196. --- uClibc-0.9.33.2/test/setjmp/Makefile 2012-05-15 09:20:09.000000000 +0200
  105197. +++ uClibc-git/test/setjmp/Makefile 2014-02-03 12:32:57.000000000 +0100
  105198. @@ -2,6 +2,7 @@
  105199. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105200. top_builddir=../../
  105201. +top_srcdir=../../
  105202. include ../Rules.mak
  105203. -include Makefile.in
  105204. include ../Test.mak
  105205. diff -Nur uClibc-0.9.33.2/test/setjmp/tst-setjmp.c uClibc-git/test/setjmp/tst-setjmp.c
  105206. --- uClibc-0.9.33.2/test/setjmp/tst-setjmp.c 2012-05-15 09:20:09.000000000 +0200
  105207. +++ uClibc-git/test/setjmp/tst-setjmp.c 2014-02-03 12:32:57.000000000 +0100
  105208. @@ -12,9 +12,8 @@
  105209. Lesser General Public License for more details.
  105210. You should have received a copy of the GNU Lesser General Public
  105211. - License along with the GNU C Library; if not, write to the Free
  105212. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105213. - 02111-1307 USA. */
  105214. + License along with the GNU C Library; if not, see
  105215. + <http://www.gnu.org/licenses/>. */
  105216. #include <stdio.h>
  105217. #include <setjmp.h>
  105218. diff -Nur uClibc-0.9.33.2/test/signal/Makefile uClibc-git/test/signal/Makefile
  105219. --- uClibc-0.9.33.2/test/signal/Makefile 2012-05-15 09:20:09.000000000 +0200
  105220. +++ uClibc-git/test/signal/Makefile 2014-02-03 12:32:57.000000000 +0100
  105221. @@ -2,6 +2,7 @@
  105222. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105223. top_builddir=../../
  105224. +top_srcdir=../../
  105225. include ../Rules.mak
  105226. -include Makefile.in
  105227. include ../Test.mak
  105228. diff -Nur uClibc-0.9.33.2/test/signal/tst-raise.c uClibc-git/test/signal/tst-raise.c
  105229. --- uClibc-0.9.33.2/test/signal/tst-raise.c 2012-05-15 09:20:09.000000000 +0200
  105230. +++ uClibc-git/test/signal/tst-raise.c 2014-02-03 12:32:57.000000000 +0100
  105231. @@ -13,9 +13,8 @@
  105232. Lesser General Public License for more details.
  105233. You should have received a copy of the GNU Lesser General Public
  105234. - License along with the GNU C Library; if not, write to the Free
  105235. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105236. - 02111-1307 USA. */
  105237. + License along with the GNU C Library; if not, see
  105238. + <http://www.gnu.org/licenses/>. */
  105239. #include <errno.h>
  105240. #include <string.h>
  105241. diff -Nur uClibc-0.9.33.2/test/signal/tst-signalfd.c uClibc-git/test/signal/tst-signalfd.c
  105242. --- uClibc-0.9.33.2/test/signal/tst-signalfd.c 1970-01-01 01:00:00.000000000 +0100
  105243. +++ uClibc-git/test/signal/tst-signalfd.c 2014-02-03 12:32:57.000000000 +0100
  105244. @@ -0,0 +1,63 @@
  105245. +/* vi: set sw=4 ts=4 sts=4: */
  105246. +/*
  105247. + * signalfd test for uClibc
  105248. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  105249. + *
  105250. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105251. + */
  105252. +
  105253. +#include <stdio.h>
  105254. +#include <stdlib.h>
  105255. +#include <string.h>
  105256. +#include <unistd.h>
  105257. +#include <errno.h>
  105258. +#include <error.h>
  105259. +#include <signal.h>
  105260. +#include <sys/signalfd.h>
  105261. +#include <sys/fcntl.h>
  105262. +
  105263. +static int
  105264. +do_test(void)
  105265. +{
  105266. + int fd, ret, result = 0;
  105267. + struct signalfd_siginfo ssi;
  105268. + sigset_t mask;
  105269. +
  105270. + sigemptyset(&mask);
  105271. + sigaddset(&mask, SIGUSR1);
  105272. + sigprocmask(SIG_BLOCK, &mask, NULL);
  105273. +
  105274. + fd = signalfd(-1, &mask, SFD_NONBLOCK);
  105275. + if (fd < 0) {
  105276. + printf("signalfd() failed: %s\n", strerror(errno));
  105277. + result = 1;
  105278. + }
  105279. +
  105280. + /* this should return immediately with EAGAIN due to SFD_NONBLOCK */
  105281. + memset(&ssi, 0, sizeof(ssi));
  105282. + ret = read(fd, &ssi, sizeof(ssi));
  105283. + if (ret != -1 || errno != EAGAIN) {
  105284. + error(0, 0, "first read() returned %d", ret);
  105285. + result = 1;
  105286. + }
  105287. +
  105288. + kill(getpid(), SIGUSR1);
  105289. +
  105290. + /* this should return a struct ssi indicating receipt of SIGUSR1 */
  105291. + ret = read(fd, &ssi, sizeof(ssi));
  105292. + if (ret != sizeof(ssi)) {
  105293. + error(0, 0, "second read() returned %d", ret);
  105294. + result = 1;
  105295. + }
  105296. +
  105297. + if (ssi.ssi_signo != SIGUSR1) {
  105298. + error(0, 0, "ssi contains bogus signo");
  105299. + result = 1;
  105300. + }
  105301. +
  105302. + return result;
  105303. +}
  105304. +
  105305. +#define TIMEOUT 5
  105306. +#define TEST_FUNCTION do_test ()
  105307. +#include "../test-skeleton.c"
  105308. diff -Nur uClibc-0.9.33.2/test/signal/tst-sigsimple.c uClibc-git/test/signal/tst-sigsimple.c
  105309. --- uClibc-0.9.33.2/test/signal/tst-sigsimple.c 2012-05-15 09:20:09.000000000 +0200
  105310. +++ uClibc-git/test/signal/tst-sigsimple.c 2014-02-03 12:32:57.000000000 +0100
  105311. @@ -13,9 +13,8 @@
  105312. Lesser General Public License for more details.
  105313. You should have received a copy of the GNU Lesser General Public
  105314. - License along with the GNU C Library; if not, write to the Free
  105315. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105316. - 02111-1307 USA. */
  105317. + License along with the GNU C Library; if not, see
  105318. + <http://www.gnu.org/licenses/>. */
  105319. #include <errno.h>
  105320. #include <signal.h>
  105321. diff -Nur uClibc-0.9.33.2/test/silly/Makefile uClibc-git/test/silly/Makefile
  105322. --- uClibc-0.9.33.2/test/silly/Makefile 2012-05-15 09:20:09.000000000 +0200
  105323. +++ uClibc-git/test/silly/Makefile 2014-02-03 12:32:57.000000000 +0100
  105324. @@ -2,6 +2,7 @@
  105325. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105326. top_builddir=../../
  105327. +top_srcdir=../../
  105328. include ../Rules.mak
  105329. -include Makefile.in
  105330. include ../Test.mak
  105331. diff -Nur uClibc-0.9.33.2/test/stat/Makefile uClibc-git/test/stat/Makefile
  105332. --- uClibc-0.9.33.2/test/stat/Makefile 2012-05-15 09:20:09.000000000 +0200
  105333. +++ uClibc-git/test/stat/Makefile 2014-02-03 12:32:57.000000000 +0100
  105334. @@ -2,6 +2,7 @@
  105335. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105336. top_builddir=../../
  105337. +top_srcdir=../../
  105338. include ../Rules.mak
  105339. -include Makefile.in
  105340. include ../Test.mak
  105341. diff -Nur uClibc-0.9.33.2/test/stdio/Makefile uClibc-git/test/stdio/Makefile
  105342. --- uClibc-0.9.33.2/test/stdio/Makefile 2012-05-15 09:20:09.000000000 +0200
  105343. +++ uClibc-git/test/stdio/Makefile 2014-02-03 12:32:57.000000000 +0100
  105344. @@ -2,6 +2,7 @@
  105345. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105346. top_builddir=../../
  105347. +top_srcdir=../../
  105348. include ../Rules.mak
  105349. -include Makefile.in
  105350. include ../Test.mak
  105351. diff -Nur uClibc-0.9.33.2/test/stdlib/Makefile uClibc-git/test/stdlib/Makefile
  105352. --- uClibc-0.9.33.2/test/stdlib/Makefile 2012-05-15 09:20:09.000000000 +0200
  105353. +++ uClibc-git/test/stdlib/Makefile 2014-02-03 12:32:57.000000000 +0100
  105354. @@ -2,6 +2,7 @@
  105355. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105356. top_builddir=../../
  105357. +top_srcdir=../../
  105358. include ../Rules.mak
  105359. -include Makefile.in
  105360. include ../Test.mak
  105361. diff -Nur uClibc-0.9.33.2/test/stdlib/testarc4random.c uClibc-git/test/stdlib/testarc4random.c
  105362. --- uClibc-0.9.33.2/test/stdlib/testarc4random.c 1970-01-01 01:00:00.000000000 +0100
  105363. +++ uClibc-git/test/stdlib/testarc4random.c 2014-02-03 12:32:57.000000000 +0100
  105364. @@ -0,0 +1,12 @@
  105365. +#include <stdlib.h>
  105366. +#include <stdio.h>
  105367. +
  105368. +int main(void)
  105369. +{
  105370. +#ifdef __UCLIBC_HAS_ARC4RANDOM__
  105371. + int random_number;
  105372. + random_number = arc4random() % 65536;
  105373. + printf("%d\n", random_number);
  105374. +#endif
  105375. + return 0;
  105376. +}
  105377. diff -Nur uClibc-0.9.33.2/test/stdlib/test-canon2.c uClibc-git/test/stdlib/test-canon2.c
  105378. --- uClibc-0.9.33.2/test/stdlib/test-canon2.c 2012-05-15 09:20:09.000000000 +0200
  105379. +++ uClibc-git/test/stdlib/test-canon2.c 2014-02-03 12:32:57.000000000 +0100
  105380. @@ -14,9 +14,8 @@
  105381. Lesser General Public License for more details.
  105382. You should have received a copy of the GNU Lesser General Public
  105383. - License along with the GNU C Library; if not, write to the Free
  105384. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105385. - 02111-1307 USA. */
  105386. + License along with the GNU C Library; if not, see
  105387. + <http://www.gnu.org/licenses/>. */
  105388. #include <errno.h>
  105389. #include <string.h>
  105390. diff -Nur uClibc-0.9.33.2/test/stdlib/test-canon.c uClibc-git/test/stdlib/test-canon.c
  105391. --- uClibc-0.9.33.2/test/stdlib/test-canon.c 2012-05-15 09:20:09.000000000 +0200
  105392. +++ uClibc-git/test/stdlib/test-canon.c 2014-02-03 12:32:57.000000000 +0100
  105393. @@ -15,9 +15,8 @@
  105394. Lesser General Public License for more details.
  105395. You should have received a copy of the GNU Lesser General Public
  105396. - License along with the GNU C Library; if not, write to the Free
  105397. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105398. - 02111-1307 USA. */
  105399. + License along with the GNU C Library; if not, see
  105400. + <http://www.gnu.org/licenses/>. */
  105401. /* This file must be run from within a directory called "stdlib". */
  105402. diff -Nur uClibc-0.9.33.2/test/string/Makefile uClibc-git/test/string/Makefile
  105403. --- uClibc-0.9.33.2/test/string/Makefile 2012-05-15 09:20:09.000000000 +0200
  105404. +++ uClibc-git/test/string/Makefile 2014-02-03 12:32:57.000000000 +0100
  105405. @@ -2,6 +2,7 @@
  105406. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105407. top_builddir=../../
  105408. +top_srcdir=../../
  105409. include ../Rules.mak
  105410. -include Makefile.in
  105411. include ../Test.mak
  105412. diff -Nur uClibc-0.9.33.2/test/string/stratcliff.c uClibc-git/test/string/stratcliff.c
  105413. --- uClibc-0.9.33.2/test/string/stratcliff.c 2012-05-15 09:20:09.000000000 +0200
  105414. +++ uClibc-git/test/string/stratcliff.c 2014-02-03 12:32:57.000000000 +0100
  105415. @@ -14,9 +14,8 @@
  105416. Lesser General Public License for more details.
  105417. You should have received a copy of the GNU Lesser General Public
  105418. - License along with the GNU C Library; if not, write to the Free
  105419. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105420. - 02111-1307 USA. */
  105421. + License along with the GNU C Library; if not, see
  105422. + <http://www.gnu.org/licenses/>. */
  105423. #define _GNU_SOURCE 1
  105424. diff -Nur uClibc-0.9.33.2/test/string/testcopy.c uClibc-git/test/string/testcopy.c
  105425. --- uClibc-0.9.33.2/test/string/testcopy.c 2012-05-15 09:20:09.000000000 +0200
  105426. +++ uClibc-git/test/string/testcopy.c 2014-02-03 12:32:57.000000000 +0100
  105427. @@ -13,9 +13,8 @@
  105428. Lesser General Public License for more details.
  105429. You should have received a copy of the GNU Lesser General Public
  105430. - License along with the GNU C Library; if not, write to the Free
  105431. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105432. - 02111-1307 USA. */
  105433. + License along with the GNU C Library; if not, see
  105434. + <http://www.gnu.org/licenses/>. */
  105435. #include <stdlib.h>
  105436. #include <stdio.h>
  105437. diff -Nur uClibc-0.9.33.2/test/string/tester.c uClibc-git/test/string/tester.c
  105438. --- uClibc-0.9.33.2/test/string/tester.c 2012-05-15 09:20:09.000000000 +0200
  105439. +++ uClibc-git/test/string/tester.c 2014-02-03 12:32:57.000000000 +0100
  105440. @@ -13,9 +13,8 @@
  105441. Lesser General Public License for more details.
  105442. You should have received a copy of the GNU Lesser General Public
  105443. - License along with the GNU C Library; if not, write to the Free
  105444. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105445. - 02111-1307 USA. */
  105446. + License along with the GNU C Library; if not, see
  105447. + <http://www.gnu.org/licenses/>. */
  105448. #ifndef _GNU_SOURCE
  105449. #define _GNU_SOURCE
  105450. diff -Nur uClibc-0.9.33.2/test/string/test-ffs.c uClibc-git/test/string/test-ffs.c
  105451. --- uClibc-0.9.33.2/test/string/test-ffs.c 2012-05-15 09:20:09.000000000 +0200
  105452. +++ uClibc-git/test/string/test-ffs.c 2014-02-03 12:32:57.000000000 +0100
  105453. @@ -14,9 +14,8 @@
  105454. Lesser General Public License for more details.
  105455. You should have received a copy of the GNU Lesser General Public
  105456. - License along with the GNU C Library; if not, write to the Free
  105457. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105458. - 02111-1307 USA. */
  105459. + License along with the GNU C Library; if not, see
  105460. + <http://www.gnu.org/licenses/>. */
  105461. #include <stdlib.h>
  105462. #include <stdio.h>
  105463. diff -Nur uClibc-0.9.33.2/test/string/tst-bswap.c uClibc-git/test/string/tst-bswap.c
  105464. --- uClibc-0.9.33.2/test/string/tst-bswap.c 2012-05-15 09:20:09.000000000 +0200
  105465. +++ uClibc-git/test/string/tst-bswap.c 2014-02-03 12:32:57.000000000 +0100
  105466. @@ -13,9 +13,8 @@
  105467. Lesser General Public License for more details.
  105468. You should have received a copy of the GNU Lesser General Public
  105469. - License along with the GNU C Library; if not, write to the Free
  105470. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105471. - 02111-1307 USA. */
  105472. + License along with the GNU C Library; if not, see
  105473. + <http://www.gnu.org/licenses/>. */
  105474. #include <byteswap.h>
  105475. #include <stdio.h>
  105476. diff -Nur uClibc-0.9.33.2/test/string/tst-inlcall.c uClibc-git/test/string/tst-inlcall.c
  105477. --- uClibc-0.9.33.2/test/string/tst-inlcall.c 2012-05-15 09:20:09.000000000 +0200
  105478. +++ uClibc-git/test/string/tst-inlcall.c 2014-02-03 12:32:57.000000000 +0100
  105479. @@ -13,9 +13,8 @@
  105480. Lesser General Public License for more details.
  105481. You should have received a copy of the GNU Lesser General Public
  105482. - License along with the GNU C Library; if not, write to the Free
  105483. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105484. - 02111-1307 USA. */
  105485. + License along with the GNU C Library; if not, see
  105486. + <http://www.gnu.org/licenses/>. */
  105487. #ifndef _GNU_SOURCE
  105488. #define _GNU_SOURCE
  105489. diff -Nur uClibc-0.9.33.2/test/termios/Makefile uClibc-git/test/termios/Makefile
  105490. --- uClibc-0.9.33.2/test/termios/Makefile 2012-05-15 09:20:09.000000000 +0200
  105491. +++ uClibc-git/test/termios/Makefile 2014-02-03 12:32:57.000000000 +0100
  105492. @@ -2,6 +2,7 @@
  105493. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105494. top_builddir=../../
  105495. +top_srcdir=../../
  105496. include ../Rules.mak
  105497. -include Makefile.in
  105498. include ../Test.mak
  105499. diff -Nur uClibc-0.9.33.2/test/Test.mak uClibc-git/test/Test.mak
  105500. --- uClibc-0.9.33.2/test/Test.mak 2012-05-15 09:20:09.000000000 +0200
  105501. +++ uClibc-git/test/Test.mak 2014-02-03 12:32:57.000000000 +0100
  105502. @@ -35,7 +35,9 @@
  105503. CLEAN_TARGETS := $(U_TARGETS) $(G_TARGETS)
  105504. CLEAN_TARGETS += $(TESTS_DISABLED) $(addsuffix _glibc,$(TESTS_DISABLED)) $(GLIBC_TESTS_DISABLED)
  105505. COMPILE_TARGETS := $(TARGETS)
  105506. -RUN_TARGETS := $(addsuffix .exe,$(TARGETS))
  105507. +# We sort the targets so uClibc and host-libc tests are run adjacent
  105508. +RUN_TARGETS := $(sort $(addsuffix .exe,$(TARGETS)))
  105509. +COMPILE_TARGETS := $(sort $(COMPILE_TARGETS))
  105510. # provide build rules even for disabled tests:
  105511. U_TARGETS += $(TESTS_DISABLED)
  105512. G_TARGETS += $(addsuffix _glibc,$(TESTS_DISABLED)) $(GLIBC_TESTS_DISABLED)
  105513. @@ -99,13 +101,15 @@
  105514. $(U_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)
  105515. $(showlink)
  105516. - $(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$@) -c $@.c -o $@.o
  105517. + $(Q)$(CC) $(filter-out $(CFLAGS-OMIT-$@),$(CFLAGS)) $(EXTRA_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$@) -c $@.c -o $@.o
  105518. $(Q)$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$@)
  105519. $(G_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)
  105520. $(showlink)
  105521. - $(Q)$(HOSTCC) $(HOST_CFLAGS) $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) -c $(patsubst %_glibc,%,$@).c -o $@.o
  105522. - $(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@))
  105523. + $(Q)$(HOSTCC) $(filter-out $(HOST_CFLAGS-OMIT-$(patsubst %_glibc,%,$@)),$(HOST_CFLAGS)) \
  105524. + $(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) \
  105525. + -c $(patsubst %_glibc,%,$@).c -o $@.o
  105526. + $(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@)) $(LDFLAGS_$@)
  105527. shell_%:
  105528. @@ -117,9 +121,11 @@
  105529. %.so: %.c
  105530. $(showlink)
  105531. $(Q)$(CC) \
  105532. - $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(patsubst %_glibc,%,$@)) \
  105533. + $(filter-out $(CFLAGS-OMIT-$<),$(CFLAGS)) $(EXTRA_CFLAGS) \
  105534. + $(CFLAGS_$(patsubst %_glibc,%,$@)) \
  105535. -fPIC -shared $< -o $@ -Wl,-soname,$@ \
  105536. - $(LDFLAGS) $(EXTRA_LIBS) $(LDFLAGS_$(patsubst %_glibc,%,$@))
  105537. + $(filter-out $(LDFLAGS-OMIT-$<),$(LDFLAGS)) $(EXTRA_LIBS) \
  105538. + $(LDFLAGS_$(patsubst %_glibc,%,$@))
  105539. clean:
  105540. $(showclean)
  105541. diff -Nur uClibc-0.9.33.2/test/test-skeleton.c uClibc-git/test/test-skeleton.c
  105542. --- uClibc-0.9.33.2/test/test-skeleton.c 2012-05-15 09:20:09.000000000 +0200
  105543. +++ uClibc-git/test/test-skeleton.c 2014-02-03 12:32:57.000000000 +0100
  105544. @@ -14,9 +14,8 @@
  105545. Lesser General Public License for more details.
  105546. You should have received a copy of the GNU Lesser General Public
  105547. - License along with the GNU C Library; if not, write to the Free
  105548. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105549. - 02111-1307 USA. */
  105550. + License along with the GNU C Library; if not, see
  105551. + <http://www.gnu.org/licenses/>. */
  105552. #include <errno.h>
  105553. #include <getopt.h>
  105554. @@ -104,7 +103,7 @@
  105555. create_temp_file (const char *base, char **filename)
  105556. {
  105557. char *fname;
  105558. - int fd;
  105559. + int _fd;
  105560. fname = (char *) malloc (strlen (test_dir) + 1 + strlen (base)
  105561. + sizeof ("XXXXXX"));
  105562. @@ -115,8 +114,8 @@
  105563. }
  105564. strcpy (stpcpy (stpcpy (stpcpy (fname, test_dir), "/"), base), "XXXXXX");
  105565. - fd = mkstemp (fname);
  105566. - if (fd == -1)
  105567. + _fd = mkstemp (fname);
  105568. + if (_fd == -1)
  105569. {
  105570. printf ("cannot open temporary file '%s': %s\n", fname, strerror(errno));
  105571. free (fname);
  105572. @@ -127,13 +126,13 @@
  105573. if (filename != NULL)
  105574. *filename = fname;
  105575. - return fd;
  105576. + return _fd;
  105577. }
  105578. /* Timeout handler. We kill the child and exit with an error. */
  105579. static void
  105580. __attribute__ ((noreturn))
  105581. -timeout_handler (int sig __attribute__ ((unused)))
  105582. +signal_handler (int sig __attribute__ ((unused)))
  105583. {
  105584. int killed = 0;
  105585. int status;
  105586. @@ -168,6 +167,12 @@
  105587. CLEANUP_HANDLER;
  105588. #endif
  105589. + if (sig == SIGINT)
  105590. + {
  105591. + signal (sig, SIG_DFL);
  105592. + raise (sig);
  105593. + }
  105594. +
  105595. /* If we expected this signal: good! */
  105596. #ifdef EXPECTED_SIGNAL
  105597. if (EXPECTED_SIGNAL == SIGALRM)
  105598. @@ -190,6 +195,7 @@
  105599. exit (1);
  105600. }
  105601. +#ifdef __XXX_HANDLE_CTRL_C
  105602. static void
  105603. __attribute__ ((noreturn))
  105604. handler_killpid(int sig)
  105605. @@ -199,6 +205,7 @@
  105606. raise(sig); /* kill ourself */
  105607. _exit(128 + sig); /* paranoia */
  105608. }
  105609. +#endif
  105610. /* We provide the entry point here. */
  105611. int
  105612. @@ -345,18 +352,23 @@
  105613. exit (1);
  105614. }
  105615. +#ifdef __XXX_HANDLE_CTRL_C
  105616. signal (SIGTERM, handler_killpid);
  105617. signal (SIGINT, handler_killpid);
  105618. signal (SIGQUIT, handler_killpid);
  105619. +#endif
  105620. /* Set timeout. */
  105621. #ifndef TIMEOUT
  105622. /* Default timeout is two seconds. */
  105623. # define TIMEOUT 2
  105624. #endif
  105625. - signal (SIGALRM, timeout_handler);
  105626. + signal (SIGALRM, signal_handler);
  105627. alarm (TIMEOUT * timeoutfactor);
  105628. + /* Make sure we clean up if the wrapper gets interrupted. */
  105629. + signal (SIGINT, signal_handler);
  105630. +
  105631. /* Wait for the regular termination. */
  105632. termpid = TEMP_FAILURE_RETRY (waitpid (pid, &status, 0));
  105633. if (termpid == -1)
  105634. diff -Nur uClibc-0.9.33.2/test/testsuite.h uClibc-git/test/testsuite.h
  105635. --- uClibc-0.9.33.2/test/testsuite.h 2012-05-15 09:20:09.000000000 +0200
  105636. +++ uClibc-git/test/testsuite.h 2014-02-03 12:32:57.000000000 +0100
  105637. @@ -27,11 +27,12 @@
  105638. {
  105639. failures++;
  105640. - printf("\nFAILED TEST %lu: \n\t%s\n", (unsigned long)test_number, command);
  105641. + printf("\nFAILED TEST %lu: \n\t%s\nResult: %d",
  105642. + (unsigned long)test_number, command, result);
  105643. printf("AT LINE: %d, FILE: %s\n\n", line, file);
  105644. }
  105645. -void success_msg(int result, const char* command)
  105646. +void success_msg(int result __attribute__((unused)), const char* command __attribute__((unused)))
  105647. {
  105648. #if 0
  105649. printf("passed test: %s == 0\n", command);
  105650. diff -Nur uClibc-0.9.33.2/test/time/Makefile uClibc-git/test/time/Makefile
  105651. --- uClibc-0.9.33.2/test/time/Makefile 2012-05-15 09:20:09.000000000 +0200
  105652. +++ uClibc-git/test/time/Makefile 2014-02-03 12:32:57.000000000 +0100
  105653. @@ -2,6 +2,7 @@
  105654. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105655. top_builddir=../../
  105656. +top_srcdir=../../
  105657. include ../Rules.mak
  105658. -include Makefile.in
  105659. include ../Test.mak
  105660. diff -Nur uClibc-0.9.33.2/test/time/test_time.c uClibc-git/test/time/test_time.c
  105661. --- uClibc-0.9.33.2/test/time/test_time.c 2012-05-15 09:20:09.000000000 +0200
  105662. +++ uClibc-git/test/time/test_time.c 2014-02-03 12:32:57.000000000 +0100
  105663. @@ -12,9 +12,8 @@
  105664. Lesser General Public License for more details.
  105665. You should have received a copy of the GNU Lesser General Public
  105666. - License along with the GNU C Library; if not, write to the Free
  105667. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105668. - 02111-1307 USA. */
  105669. + License along with the GNU C Library; if not, see
  105670. + <http://www.gnu.org/licenses/>. */
  105671. #include <stdio.h>
  105672. #include <stdlib.h>
  105673. diff -Nur uClibc-0.9.33.2/test/time/tst-strptime.c uClibc-git/test/time/tst-strptime.c
  105674. --- uClibc-0.9.33.2/test/time/tst-strptime.c 2012-05-15 09:20:09.000000000 +0200
  105675. +++ uClibc-git/test/time/tst-strptime.c 2014-02-03 12:32:57.000000000 +0100
  105676. @@ -14,9 +14,8 @@
  105677. Lesser General Public License for more details.
  105678. You should have received a copy of the GNU Lesser General Public
  105679. - License along with the GNU C Library; if not, write to the Free
  105680. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105681. - 02111-1307 USA. */
  105682. + License along with the GNU C Library; if not, see
  105683. + <http://www.gnu.org/licenses/>. */
  105684. #include <locale.h>
  105685. #include <stdio.h>
  105686. diff -Nur uClibc-0.9.33.2/test/time/tst-timerfd.c uClibc-git/test/time/tst-timerfd.c
  105687. --- uClibc-0.9.33.2/test/time/tst-timerfd.c 1970-01-01 01:00:00.000000000 +0100
  105688. +++ uClibc-git/test/time/tst-timerfd.c 2014-02-03 12:32:57.000000000 +0100
  105689. @@ -0,0 +1,71 @@
  105690. +/* vi: set sw=4 ts=4 sts=4: */
  105691. +/*
  105692. + * timerfd test for uClibc
  105693. + * Copyright (C) 2012 by Kevin Cernekee <cernekee@gmail.com>
  105694. + *
  105695. + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105696. + */
  105697. +
  105698. +#include <stdio.h>
  105699. +#include <stdlib.h>
  105700. +#include <string.h>
  105701. +#include <unistd.h>
  105702. +#include <errno.h>
  105703. +#include <error.h>
  105704. +#include <signal.h>
  105705. +#include <stdint.h>
  105706. +#include <inttypes.h>
  105707. +#include <time.h>
  105708. +#include <sys/timerfd.h>
  105709. +#include <sys/fcntl.h>
  105710. +
  105711. +static int
  105712. +do_test(void)
  105713. +{
  105714. + int fd, ret, result = 0;
  105715. + struct itimerspec s;
  105716. + uint64_t val;
  105717. + time_t start, now;
  105718. +
  105719. + fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK);
  105720. + if (fd < 0) {
  105721. + perror("timerfd() failed");
  105722. + result = 1;
  105723. + }
  105724. + s.it_value.tv_sec = 1;
  105725. + s.it_value.tv_nsec = 0;
  105726. + s.it_interval.tv_sec = 0;
  105727. + s.it_interval.tv_nsec = 0;
  105728. + timerfd_settime(fd, 0, &s, NULL);
  105729. + start = time(NULL);
  105730. +
  105731. + /* this should return immediately with EAGAIN due to TFD_NONBLOCK */
  105732. + ret = read(fd, &val, sizeof(val));
  105733. + if (ret != -1 || errno != EAGAIN) {
  105734. + error(0, 0, "first read() returned %d", ret);
  105735. + result = 1;
  105736. + }
  105737. +
  105738. + /* let the timer expire, then check it again */
  105739. + do {
  105740. + now = time(NULL);
  105741. + } while (now - start < 2);
  105742. +
  105743. + ret = read(fd, &val, sizeof(val));
  105744. + if (ret != sizeof(val)) {
  105745. + error(0, 0, "second read() returned %d", ret);
  105746. + result = 1;
  105747. + }
  105748. +
  105749. + /* we are expecting a single expiration, since it_interval is 0 */
  105750. + if (val != 1) {
  105751. + error(0, 0, "wrong number of expirations: %" PRIx64, val);
  105752. + result = 1;
  105753. + }
  105754. +
  105755. + return result;
  105756. +}
  105757. +
  105758. +#define TIMEOUT 5
  105759. +#define TEST_FUNCTION do_test ()
  105760. +#include "../test-skeleton.c"
  105761. diff -Nur uClibc-0.9.33.2/test/time/tst-timezone.c uClibc-git/test/time/tst-timezone.c
  105762. --- uClibc-0.9.33.2/test/time/tst-timezone.c 2012-05-15 09:20:09.000000000 +0200
  105763. +++ uClibc-git/test/time/tst-timezone.c 2014-02-03 12:32:57.000000000 +0100
  105764. @@ -13,9 +13,8 @@
  105765. Lesser General Public License for more details.
  105766. You should have received a copy of the GNU Lesser General Public
  105767. - License along with the GNU C Library; if not, write to the Free
  105768. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  105769. - 02111-1307 USA. */
  105770. + License along with the GNU C Library; if not, see
  105771. + <http://www.gnu.org/licenses/>. */
  105772. #include <time.h>
  105773. #include <stdio.h>
  105774. diff -Nur uClibc-0.9.33.2/test/tls/Makefile.in uClibc-git/test/tls/Makefile.in
  105775. --- uClibc-0.9.33.2/test/tls/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  105776. +++ uClibc-git/test/tls/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  105777. @@ -102,9 +102,9 @@
  105778. LDFLAGS_tst-tls7 := -ldl
  105779. LDFLAGS_tst-tls8 := -ldl
  105780. LDFLAGS_tst-tls9 := -ldl
  105781. -LDFLAGS_tst-tls10 := -Wl,-rpath-link=. tst-tlsmod8.so
  105782. -LDFLAGS_tst-tls11 := -Wl,-rpath-link=. tst-tlsmod10.so
  105783. -LDFLAGS_tst-tls12 := -Wl,-rpath-link=. tst-tlsmod12.so
  105784. +LDFLAGS_tst-tls10 := -Wl,-rpath-link=. tst-tlsmod8.so tst-tlsmod7.so
  105785. +LDFLAGS_tst-tls11 := -Wl,-rpath-link=. tst-tlsmod9.so tst-tlsmod10.so
  105786. +LDFLAGS_tst-tls12 := -Wl,-rpath-link=. tst-tlsmod11.so tst-tlsmod12.so
  105787. LDFLAGS_tst-tls13 := -ldl -Wl,-rpath-link=.
  105788. LDFLAGS_tst-tls14 := -ldl -Wl,-rpath-link=. tst-tlsmod14a.so
  105789. LDFLAGS_tst-tls15 := -ldl -Wl,-rpath-link=.
  105790. diff -Nur uClibc-0.9.33.2/test/tls/tst-tls6.c uClibc-git/test/tls/tst-tls6.c
  105791. --- uClibc-0.9.33.2/test/tls/tst-tls6.c 2012-05-15 09:20:09.000000000 +0200
  105792. +++ uClibc-git/test/tls/tst-tls6.c 2014-02-15 14:18:15.000000000 +0100
  105793. @@ -38,13 +38,12 @@
  105794. time. The value of the first round is used. */
  105795. #ifdef __UCLIBC__
  105796. if (modid == -1)
  105797. - modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
  105798. - else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
  105799. - != (size_t) modid)
  105800. + modid = ((struct dyn_elf *) h)->dyn->l_tls_modid;
  105801. + else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid)
  105802. {
  105803. printf ("round %d: modid now %zu, initially %d\n",
  105804. i,
  105805. - ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
  105806. + ((struct dyn_elf *)h)->dyn->l_tls_modid,
  105807. modid);
  105808. result = 1;
  105809. }
  105810. diff -Nur uClibc-0.9.33.2/test/tls/tst-tls7.c uClibc-git/test/tls/tst-tls7.c
  105811. --- uClibc-0.9.33.2/test/tls/tst-tls7.c 2012-05-15 09:20:09.000000000 +0200
  105812. +++ uClibc-git/test/tls/tst-tls7.c 2014-02-15 14:18:15.000000000 +0100
  105813. @@ -36,13 +36,12 @@
  105814. time. The value of the first round is used. */
  105815. #ifdef __UCLIBC__
  105816. if (modid == -1)
  105817. - modid = ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid;
  105818. - else if (((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid
  105819. - != (size_t) modid)
  105820. + modid = ((struct dyn_elf *) h)->dyn->l_tls_modid;
  105821. + else if (((struct dyn_elf *)h)->dyn->l_tls_modid != (size_t) modid)
  105822. {
  105823. printf ("round %d: modid now %zu, initially %d\n",
  105824. i,
  105825. - ((struct link_map *)((struct dyn_elf *)h)->dyn)->l_tls_modid,
  105826. + ((struct dyn_elf *)h)->dyn->l_tls_modid,
  105827. modid);
  105828. result = 1;
  105829. }
  105830. diff -Nur uClibc-0.9.33.2/test/tls/tst-tls8.c uClibc-git/test/tls/tst-tls8.c
  105831. --- uClibc-0.9.33.2/test/tls/tst-tls8.c 2012-05-15 09:20:09.000000000 +0200
  105832. +++ uClibc-git/test/tls/tst-tls8.c 2014-02-15 14:18:15.000000000 +0100
  105833. @@ -41,13 +41,12 @@
  105834. time. The value of the first round is used. */
  105835. #ifdef __UCLIBC__
  105836. if (modid1 == (size_t) -1)
  105837. - modid1 = ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid;
  105838. - else if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  105839. - != (size_t) modid1)
  105840. + modid1 = ((struct dyn_elf *) h1)->dyn->l_tls_modid;
  105841. + else if (((struct dyn_elf *)h1)->dyn->l_tls_modid != (size_t) modid1)
  105842. {
  105843. printf ("round %d: modid now %zd, initially %zd\n",
  105844. i,
  105845. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  105846. + ((struct dyn_elf *)h1)->dyn->l_tls_modid,
  105847. modid1);
  105848. result = 1;
  105849. }
  105850. @@ -85,23 +84,23 @@
  105851. time. The value of the first round is used. */
  105852. #ifdef __UCLIBC__
  105853. if (modid2 == (size_t) -1)
  105854. - modid2 = ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid;
  105855. - else if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  105856. + modid2 = ((struct dyn_elf *)h2)->dyn->l_tls_modid;
  105857. + else if (((struct dyn_elf *)h2)->dyn->l_tls_modid
  105858. != (size_t) modid2)
  105859. {
  105860. printf ("round %d: modid now %zd, initially %zd\n",
  105861. i,
  105862. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  105863. + ((struct dyn_elf *)h2)->dyn->l_tls_modid,
  105864. modid2);
  105865. result = 1;
  105866. }
  105867. #else
  105868. if (modid2 == (size_t) -1)
  105869. - modid2 = ((struct link_map *) h1)->l_tls_modid;
  105870. - else if (((struct link_map *) h1)->l_tls_modid != modid2)
  105871. + modid2 = ((struct link_map *) h2)->l_tls_modid;
  105872. + else if (((struct link_map *) h2)->l_tls_modid != modid2)
  105873. {
  105874. printf ("round %d: modid now %zd, initially %zd\n",
  105875. - i, ((struct link_map *) h1)->l_tls_modid, modid2);
  105876. + i, ((struct link_map *) h2)->l_tls_modid, modid2);
  105877. result = 1;
  105878. }
  105879. #endif
  105880. @@ -139,12 +138,12 @@
  105881. We make sure that the module gets assigned the same ID every
  105882. time. The value of the first round is used. */
  105883. #ifdef __UCLIBC__
  105884. - if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  105885. + if (((struct dyn_elf *)h1)->dyn->l_tls_modid
  105886. != modid1)
  105887. {
  105888. printf ("round %d: modid now %zd, initially %zd\n",
  105889. i,
  105890. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  105891. + ((struct dyn_elf *)h1)->dyn->l_tls_modid,
  105892. modid1);
  105893. result = 1;
  105894. }
  105895. @@ -179,20 +178,20 @@
  105896. We make sure that the module gets assigned the same ID every
  105897. time. The value of the first round is used. */
  105898. #ifdef __UCLIBC__
  105899. - if (((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid
  105900. + if (((struct dyn_elf *)h2)->dyn->l_tls_modid
  105901. != modid2)
  105902. {
  105903. printf ("round %d: modid now %zd, initially %zd\n",
  105904. i,
  105905. - ((struct link_map *)((struct dyn_elf *)h1)->dyn)->l_tls_modid,
  105906. + ((struct dyn_elf *)h2)->dyn->l_tls_modid,
  105907. modid2);
  105908. result = 1;
  105909. }
  105910. #else
  105911. - if (((struct link_map *) h1)->l_tls_modid != modid2)
  105912. + if (((struct link_map *) h2)->l_tls_modid != modid2)
  105913. {
  105914. printf ("round %d: modid now %zd, initially %zd\n",
  105915. - i, ((struct link_map *) h1)->l_tls_modid, modid2);
  105916. + i, ((struct link_map *) h2)->l_tls_modid, modid2);
  105917. result = 1;
  105918. }
  105919. #endif
  105920. diff -Nur uClibc-0.9.33.2/test/unistd/Makefile uClibc-git/test/unistd/Makefile
  105921. --- uClibc-0.9.33.2/test/unistd/Makefile 2012-05-15 09:20:09.000000000 +0200
  105922. +++ uClibc-git/test/unistd/Makefile 2014-02-03 12:32:57.000000000 +0100
  105923. @@ -2,6 +2,7 @@
  105924. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105925. top_builddir=../../
  105926. +top_srcdir=../../
  105927. include ../Rules.mak
  105928. -include Makefile.in
  105929. include ../Test.mak
  105930. diff -Nur uClibc-0.9.33.2/test/unistd/Makefile.in uClibc-git/test/unistd/Makefile.in
  105931. --- uClibc-0.9.33.2/test/unistd/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  105932. +++ uClibc-git/test/unistd/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  105933. @@ -2,7 +2,10 @@
  105934. # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  105935. ifeq ($(UCLIBC_HAS_LFS),)
  105936. -TESTS_DISABLED := tst-preadwrite64
  105937. +TESTS_DISABLED := tst-preadwrite64 tst-posix_fallocate64
  105938. +endif
  105939. +ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),)
  105940. +TESTS_DISABLED += tst-posix_fallocate
  105941. endif
  105942. OPTS_getopt := -abcXXX -9
  105943. OPTS_getopt_long := --add XXX --delete YYY --verbose
  105944. diff -Nur uClibc-0.9.33.2/test/unistd/tst-posix_fallocate64.c uClibc-git/test/unistd/tst-posix_fallocate64.c
  105945. --- uClibc-0.9.33.2/test/unistd/tst-posix_fallocate64.c 1970-01-01 01:00:00.000000000 +0100
  105946. +++ uClibc-git/test/unistd/tst-posix_fallocate64.c 2014-02-03 12:32:57.000000000 +0100
  105947. @@ -0,0 +1,2 @@
  105948. +#define TST_POSIX_FALLOCATE64
  105949. +#include "tst-posix_fallocate.c"
  105950. diff -Nur uClibc-0.9.33.2/test/unistd/tst-posix_fallocate.c uClibc-git/test/unistd/tst-posix_fallocate.c
  105951. --- uClibc-0.9.33.2/test/unistd/tst-posix_fallocate.c 1970-01-01 01:00:00.000000000 +0100
  105952. +++ uClibc-git/test/unistd/tst-posix_fallocate.c 2014-02-03 12:32:57.000000000 +0100
  105953. @@ -0,0 +1,127 @@
  105954. +#include <fcntl.h>
  105955. +#include <sys/stat.h>
  105956. +
  105957. +#ifndef TST_POSIX_FALLOCATE64
  105958. +# define stat64 stat
  105959. +# define fstat64 fstat
  105960. +# else
  105961. +# ifndef O_LARGEFILE
  105962. +# error no O_LARGEFILE but you want to test with LFS enabled
  105963. +# endif
  105964. +#endif
  105965. +
  105966. +static void do_prepare (void);
  105967. +#define PREPARE(argc, argv) do_prepare ()
  105968. +static int do_test (void);
  105969. +#define TEST_FUNCTION do_test ()
  105970. +#include <test-skeleton.c>
  105971. +
  105972. +static int fd;
  105973. +static void
  105974. +do_prepare (void)
  105975. +{
  105976. + fd = create_temp_file ("tst-posix_fallocate.", NULL);
  105977. + if (fd == -1)
  105978. + {
  105979. + printf ("cannot create temporary file: %m\n");
  105980. + exit (1);
  105981. + }
  105982. +}
  105983. +
  105984. +
  105985. +static int
  105986. +do_test (void)
  105987. +{
  105988. + struct stat64 st;
  105989. +
  105990. + if (fstat64 (fd, &st) != 0)
  105991. + {
  105992. + puts ("1st fstat failed");
  105993. + return 1;
  105994. + }
  105995. +
  105996. + if (st.st_size != 0)
  105997. + {
  105998. + puts ("file not created with size 0");
  105999. + return 1;
  106000. + }
  106001. +
  106002. + if (posix_fallocate (fd, 512, 768) != 0)
  106003. + {
  106004. + puts ("1st posix_fallocate call failed");
  106005. + return 1;
  106006. + }
  106007. +
  106008. + if (fstat64 (fd, &st) != 0)
  106009. + {
  106010. + puts ("2nd fstat failed");
  106011. + return 1;
  106012. + }
  106013. +
  106014. + if (st.st_size != 512 + 768)
  106015. + {
  106016. + printf ("file size after 1st posix_fallocate call is %llu, expected %u\n",
  106017. + (unsigned long long int) st.st_size, 512u + 768u);
  106018. + return 1;
  106019. + }
  106020. +
  106021. + if (posix_fallocate (fd, 0, 1024) != 0)
  106022. + {
  106023. + puts ("2nd posix_fallocate call failed");
  106024. + return 1;
  106025. + }
  106026. +
  106027. + if (fstat64 (fd, &st) != 0)
  106028. + {
  106029. + puts ("3rd fstat failed");
  106030. + return 1;
  106031. + }
  106032. +
  106033. + if (st.st_size != 512 + 768)
  106034. + {
  106035. + puts ("file size changed in 2nd posix_fallocate");
  106036. + return 1;
  106037. + }
  106038. +
  106039. + if (posix_fallocate (fd, 2048, 64) != 0)
  106040. + {
  106041. + puts ("3rd posix_fallocate call failed");
  106042. + return 1;
  106043. + }
  106044. +
  106045. + if (fstat64 (fd, &st) != 0)
  106046. + {
  106047. + puts ("4th fstat failed");
  106048. + return 1;
  106049. + }
  106050. +
  106051. + if (st.st_size != 2048 + 64)
  106052. + {
  106053. + printf ("file size after 3rd posix_fallocate call is %llu, expected %u\n",
  106054. + (unsigned long long int) st.st_size, 2048u + 64u);
  106055. + return 1;
  106056. + }
  106057. +#ifdef TST_POSIX_FALLOCATE64
  106058. + if (posix_fallocate64 (fd, 4097ULL, 4294967295ULL + 2ULL) != 0)
  106059. + {
  106060. + puts ("4th posix_fallocate call failed");
  106061. + return 1;
  106062. + }
  106063. +
  106064. + if (fstat64 (fd, &st) != 0)
  106065. + {
  106066. + puts ("5th fstat failed");
  106067. + return 1;
  106068. + }
  106069. +
  106070. + if (st.st_size != 4097ULL + 4294967295ULL + 2ULL)
  106071. + {
  106072. + printf ("file size after 4th posix_fallocate call is %llu, expected %llu\n",
  106073. + (unsigned long long int) st.st_size, 4097ULL + 4294967295ULL + 2ULL);
  106074. + return 1;
  106075. + }
  106076. +#endif
  106077. + close (fd);
  106078. +
  106079. + return 0;
  106080. +}
  106081. diff -Nur uClibc-0.9.33.2/test/unistd/tst-preadwrite64.c uClibc-git/test/unistd/tst-preadwrite64.c
  106082. --- uClibc-0.9.33.2/test/unistd/tst-preadwrite64.c 2012-05-15 09:20:09.000000000 +0200
  106083. +++ uClibc-git/test/unistd/tst-preadwrite64.c 2014-02-03 12:32:57.000000000 +0100
  106084. @@ -14,9 +14,8 @@
  106085. Lesser General Public License for more details.
  106086. You should have received a copy of the GNU Lesser General Public
  106087. - License along with the GNU C Library; if not, write to the Free
  106088. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106089. - 02111-1307 USA. */
  106090. + License along with the GNU C Library; if not, see
  106091. + <http://www.gnu.org/licenses/>. */
  106092. #define PREAD pread64
  106093. #define PWRITE pwrite64
  106094. diff -Nur uClibc-0.9.33.2/test/unistd/tst-preadwrite.c uClibc-git/test/unistd/tst-preadwrite.c
  106095. --- uClibc-0.9.33.2/test/unistd/tst-preadwrite.c 2012-05-15 09:20:09.000000000 +0200
  106096. +++ uClibc-git/test/unistd/tst-preadwrite.c 2014-02-03 12:32:57.000000000 +0100
  106097. @@ -14,9 +14,8 @@
  106098. Lesser General Public License for more details.
  106099. You should have received a copy of the GNU Lesser General Public
  106100. - License along with the GNU C Library; if not, write to the Free
  106101. - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  106102. - 02111-1307 USA. */
  106103. + License along with the GNU C Library; if not, see
  106104. + <http://www.gnu.org/licenses/>. */
  106105. #include <errno.h>
  106106. #include <error.h>
  106107. diff -Nur uClibc-0.9.33.2/TODO uClibc-git/TODO
  106108. --- uClibc-0.9.33.2/TODO 2012-05-15 09:20:09.000000000 +0200
  106109. +++ uClibc-git/TODO 2014-02-03 12:32:56.000000000 +0100
  106110. @@ -88,6 +88,11 @@
  106111. *) Cleanup/scrub all the Makefile copyright junk
  106112. *) Fix dlopen, for both static and dynamic cases, and make it
  106113. fully comply with SuSv3
  106114. + *) check if sched_getcpu is only pulled in where it should be
  106115. + *) remove HANDLE_OLDER_RLIMIT, NEW_GETRLIMIT (conditionalize on
  106116. + ugetrlimit, it seems, else use the modern variant)
  106117. + *) simplify exec*() in the light of execvpe (perhaps single internal
  106118. + impl); USE_GNU for execvpe (and other GNU extensions, see psm).
  106119. TODO list for AFTER the uClibc 1.0.0 release:
  106120. @@ -180,3 +185,4 @@
  106121. b) Write a space-efficient gettext substitute, to avoid storing large amounts
  106122. of redundant data.
  106123. +
  106124. diff -Nur uClibc-0.9.33.2/utils/chroot_realpath.c uClibc-git/utils/chroot_realpath.c
  106125. --- uClibc-0.9.33.2/utils/chroot_realpath.c 2012-05-15 09:20:09.000000000 +0200
  106126. +++ uClibc-git/utils/chroot_realpath.c 2014-02-03 12:32:57.000000000 +0100
  106127. @@ -14,8 +14,7 @@
  106128. *
  106129. * You should have received a copy of the GNU Lesser General Public
  106130. * License along with this library; see the file COPYING.LIB. If not,
  106131. - * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  106132. - * Boston, MA 02111-1307, USA.
  106133. + * see <http://www.gnu.org/licenses/>.
  106134. *
  106135. * 2005/09/12: Dan Howell (modified from realpath.c to emulate chroot)
  106136. */
  106137. diff -Nur uClibc-0.9.33.2/utils/getconf.c uClibc-git/utils/getconf.c
  106138. --- uClibc-0.9.33.2/utils/getconf.c 2012-05-15 09:20:09.000000000 +0200
  106139. +++ uClibc-git/utils/getconf.c 2014-02-03 12:32:57.000000000 +0100
  106140. @@ -12,10 +12,10 @@
  106141. GNU General Public License for more details.
  106142. You should have received a copy of the GNU General Public License
  106143. - along with this program; if not, write to the Free Software Foundation,
  106144. - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  106145. + along with this program; if not, see <http://www.gnu.org/licenses/>. */
  106146. #define _GNU_SOURCE 1
  106147. +#include "porting.h"
  106148. #include <unistd.h>
  106149. #include <errno.h>
  106150. #include <string.h>
  106151. @@ -1052,13 +1052,11 @@
  106152. };
  106153. static const int nspecs = sizeof (specs) / sizeof (specs[0]);
  106154. -#ifdef __UCLIBC_HAS___PROGNAME__
  106155. -extern const char *__progname;
  106156. -#else
  106157. -#define __progname "foo"
  106158. +#ifndef __UCLIBC_HAS___PROGNAME__
  106159. +static const char *__progname = "getconf";
  106160. #endif
  106161. -static void
  106162. +static attribute_noreturn void
  106163. usage (void)
  106164. {
  106165. fprintf (stderr,
  106166. @@ -1070,7 +1068,7 @@
  106167. }
  106168. -static void
  106169. +static attribute_noreturn void
  106170. print_all (const char *path)
  106171. {
  106172. register const struct conf *c;
  106173. diff -Nur uClibc-0.9.33.2/utils/iconv.c uClibc-git/utils/iconv.c
  106174. --- uClibc-0.9.33.2/utils/iconv.c 2012-05-15 09:20:09.000000000 +0200
  106175. +++ uClibc-git/utils/iconv.c 2014-02-03 12:32:57.000000000 +0100
  106176. @@ -12,8 +12,8 @@
  106177. * Library General Public License for more details.
  106178. *
  106179. * You should have received a copy of the GNU Library General Public
  106180. - * License along with this library; if not, write to the Free
  106181. - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  106182. + * License along with this library; if not, see
  106183. + * <http://www.gnu.org/licenses/>.
  106184. */
  106185. /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
  106186. @@ -98,15 +98,22 @@
  106187. * Manuel
  106188. */
  106189. +/* keep libgen before string.h - and porting.h to use the
  106190. + * XPG version of basename */
  106191. +#include <libgen.h>
  106192. #include "porting.h"
  106193. #include <string.h>
  106194. #include <iconv.h>
  106195. #include <stdarg.h>
  106196. -#include <libgen.h>
  106197. #include <wchar.h>
  106198. #include "wchar.c" /* for _UC_iconv_t and __iconv_codesets */
  106199. -extern const unsigned char __iconv_codesets[];
  106200. +#ifdef L_iconv_main
  106201. +static
  106202. +#else
  106203. +extern
  106204. +#endif
  106205. +const unsigned char __iconv_codesets[];
  106206. #define IBUF BUFSIZ
  106207. #define OBUF BUFSIZ
  106208. diff -Nur uClibc-0.9.33.2/utils/ldconfig.c uClibc-git/utils/ldconfig.c
  106209. --- uClibc-0.9.33.2/utils/ldconfig.c 2012-05-15 09:20:09.000000000 +0200
  106210. +++ uClibc-git/utils/ldconfig.c 2014-02-03 12:32:57.000000000 +0100
  106211. @@ -57,8 +57,6 @@
  106212. /* Code indicating core file. */
  106213. #define CMAGIC 0421
  106214. -char *___strtok = NULL;
  106215. -
  106216. char *prog = NULL;
  106217. int debug = 0; /* debug mode */
  106218. int verbose = 0; /* verbose mode */
  106219. @@ -96,6 +94,7 @@
  106220. extern char *chroot_realpath(const char *chroot, const char *path,
  106221. char resolved_path[]);
  106222. +#if defined __UCLIBC_STATIC_LDCONFIG__ || !defined __UCLIBC_HAS_BSD_ERR__
  106223. /* These two are used internally -- you shouldn't need to use them */
  106224. static void verror_msg(const char *s, va_list p)
  106225. {
  106226. @@ -114,8 +113,7 @@
  106227. fprintf(stderr, "\n");
  106228. }
  106229. -static void err(int errnum, const char *s, ...) attribute_noreturn;
  106230. -static void err(int errnum, const char *s, ...)
  106231. +static attribute_noreturn void err(int errnum, const char *s, ...)
  106232. {
  106233. va_list p;
  106234. @@ -146,6 +144,9 @@
  106235. vperror_msg(s, p);
  106236. va_end(p);
  106237. }
  106238. +#else
  106239. +# include <err.h>
  106240. +#endif
  106241. static void *xmalloc(size_t size)
  106242. {
  106243. @@ -257,10 +258,10 @@
  106244. && N_MAGIC_SWAP(exec) != QMAGIC) {
  106245. elf_hdr = (ElfW(Ehdr) *) & exec;
  106246. if (elf_hdr->e_ident[0] != 0x7f ||
  106247. - strncmp((char *)elf_hdr->e_ident + 1, "ELF", 3) != 0)
  106248. + strncmp((const char *)elf_hdr->e_ident + 1, "ELF", 3) != 0)
  106249. {
  106250. /* silently ignore linker scripts */
  106251. - if (strncmp((char *)&exec, "/* GNU ld", 9) != 0)
  106252. + if (strncmp((const char *)&exec, "/* GNU ld", 9) != 0)
  106253. warnx("%s is not a shared library, skipping", buff);
  106254. } else {
  106255. /* always call readsoname to update type */
  106256. @@ -282,7 +283,7 @@
  106257. /* if the soname does not match the filename,
  106258. issue a warning, but only in debug mode. */
  106259. int len = strlen(good);
  106260. - if (debug && (strncmp(good, name, len) != 0
  106261. + if (debug && (strncmp((const char *)good, name, len) != 0
  106262. || (name[len] != '\0' && name[len] != '.')))
  106263. warnx("%s has inconsistent soname (%s)", buff, good);
  106264. }
  106265. @@ -784,8 +785,7 @@
  106266. }
  106267. #endif
  106268. -static void usage(void) attribute_noreturn;
  106269. -static void usage(void)
  106270. +static attribute_noreturn void usage(void)
  106271. {
  106272. fprintf(stderr,
  106273. #ifdef __LDSO_CACHE_SUPPORT__
  106274. diff -Nur uClibc-0.9.33.2/utils/ldd.c uClibc-git/utils/ldd.c
  106275. --- uClibc-0.9.33.2/utils/ldd.c 2012-05-15 09:20:09.000000000 +0200
  106276. +++ uClibc-git/utils/ldd.c 2014-02-03 12:32:57.000000000 +0100
  106277. @@ -20,6 +20,11 @@
  106278. #define ELFCLASSM ELFCLASS64
  106279. #endif
  106280. +#if defined(__arc__)
  106281. +#define MATCH_MACHINE(x) (x == EM_ARCOMPACT)
  106282. +#define ELFCLASSM ELFCLASS32
  106283. +#endif
  106284. +
  106285. #if defined(__arm__) || defined(__thumb__)
  106286. #define MATCH_MACHINE(x) (x == EM_ARM)
  106287. #define ELFCLASSM ELFCLASS32
  106288. @@ -63,6 +68,11 @@
  106289. #define ELFCLASSM ELFCLASS32
  106290. #endif
  106291. +#if defined(__metag__)
  106292. +#define MATCH_MACHINE(x) (x == EM_METAG)
  106293. +#define ELFCLASSM ELFCLASS32
  106294. +#endif
  106295. +
  106296. #if defined(__mips__)
  106297. #define MATCH_MACHINE(x) (x == EM_MIPS || x == EM_MIPS_RS3_LE)
  106298. #define ELFCLASSM ELFCLASS32
  106299. @@ -106,6 +116,11 @@
  106300. #define ELFCLASSM ELFCLASS32
  106301. #endif
  106302. +#if defined(__xtensa__)
  106303. +#define MATCH_MACHINE(x) (x == EM_XTENSA)
  106304. +#define ELFCLASSM ELFCLASS32
  106305. +#endif
  106306. +
  106307. #ifndef MATCH_MACHINE
  106308. # ifdef __linux__
  106309. # include <asm/elf.h>
  106310. @@ -127,7 +142,6 @@
  106311. #define ELFDATAM ELFDATA2MSB
  106312. #endif
  106313. -#define ARRAY_SIZE(v) (sizeof(v) / sizeof(*v))
  106314. #define TRUSTED_LDSO UCLIBC_RUNTIME_PREFIX "lib/" UCLIBC_LDSO
  106315. struct library {
  106316. @@ -145,7 +159,7 @@
  106317. static __inline__ uint32_t byteswap32_to_host(uint32_t value)
  106318. {
  106319. - if (byteswap == 1) {
  106320. + if (byteswap) {
  106321. return (bswap_32(value));
  106322. } else {
  106323. return (value);
  106324. @@ -153,7 +167,7 @@
  106325. }
  106326. static __inline__ uint64_t byteswap64_to_host(uint64_t value)
  106327. {
  106328. - if (byteswap == 1) {
  106329. + if (byteswap) {
  106330. return (bswap_64(value));
  106331. } else {
  106332. return (value);
  106333. @@ -232,14 +246,7 @@
  106334. }
  106335. /* Check if the target endianness matches the host's endianness */
  106336. - byteswap = 0;
  106337. - if (UCLIBC_ENDIAN_HOST == UCLIBC_ENDIAN_LITTLE) {
  106338. - if (ehdr->e_ident[5] == ELFDATA2MSB)
  106339. - byteswap = 1;
  106340. - } else if (UCLIBC_ENDIAN_HOST == UCLIBC_ENDIAN_BIG) {
  106341. - if (ehdr->e_ident[5] == ELFDATA2LSB)
  106342. - byteswap = 1;
  106343. - }
  106344. + byteswap = !(ehdr->e_ident[5] == ELFDATAM);
  106345. /* Be very lazy, and only byteswap the stuff we use */
  106346. if (byteswap) {
  106347. @@ -707,6 +714,7 @@
  106348. };
  106349. # ifdef __LDSO_STANDALONE_SUPPORT__
  106350. char * lib_path = getenv("LD_LIBRARY_PATH");
  106351. +
  106352. /* The 'extended' environment inclusing the LD_LIBRARY_PATH */
  106353. static char *ext_environment[ARRAY_SIZE(environment) + 1];
  106354. char **envp = (char **) environment;
  106355. diff -Nur uClibc-0.9.33.2/utils/Makefile.in uClibc-git/utils/Makefile.in
  106356. --- uClibc-0.9.33.2/utils/Makefile.in 2012-05-15 09:20:09.000000000 +0200
  106357. +++ uClibc-git/utils/Makefile.in 2014-02-03 12:32:57.000000000 +0100
  106358. @@ -10,6 +10,7 @@
  106359. CFLAGS-utils := \
  106360. $(SSP_ALL_CFLAGS) \
  106361. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  106362. -I$(top_srcdir)ldso/include \
  106363. -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
  106364. -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" \
  106365. @@ -36,8 +37,7 @@
  106366. # Need CFLAGS-utils explicitly, because the source file is not located in utils
  106367. CFLAGS-iconv := $(CFLAGS-utils) \
  106368. $(CFLAGS-utils-shared) \
  106369. - -I$(top_srcdir)libc/misc/wchar \
  106370. - -DL_iconv_main \
  106371. + -I$(top_srcdir)libc/misc/wchar
  106372. CFLAGS-locale := $(CFLAGS-utils)
  106373. CFLAGS-getconf :=$(CFLAGS-utils) \
  106374. @@ -56,9 +56,11 @@
  106375. $(UTILS_CONFIG_FLAGS-y)
  106376. BUILD_CFLAGS-ldconfig.host := \
  106377. -DBUILDING_LINKAGE \
  106378. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  106379. -I$(top_srcdir)ldso/include
  106380. BUILD_CFLAGS-ldd.host := \
  106381. -DBUILDING_LINKAGE \
  106382. + -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \
  106383. -I$(top_srcdir)ldso/include \
  106384. -include $(top_srcdir)include/elf.h
  106385. BUILD_CFLAGS-locale.host := \